HyperDeck Integration
MediaMagic CRM integrates with Blackmagic HyperDeck devices for professional video recording workflows.
Overview
The HyperDeck integration allows automated control of recording filenames via Keyboard Maestro triggers.
API Endpoint
Set Recording Filename
Configure the filename for the next HyperDeck recording.
Endpoint: POST /api/hyperdeck/filename
Request Body:
{
"filename": "S02E15_Interview_JohnSmith"
}Response:
{
"success": true,
"filename": "S02E15_Interview_JohnSmith"
}Keyboard Maestro Setup
Create a Keyboard Maestro macro that triggers before recording:
- Trigger: Hotkey (e.g.,
⌘⌥H) - Action: Execute Shell Scriptbash
curl -X POST http://localhost:3100/api/hyperdeck/filename \ -H "Content-Type: application/json" \ -d '{"filename": "'"$KMVAR_EpisodeName"'"}' - Action: Display notification "HyperDeck filename set"
Episode Integration
The HyperDeck filename handler is integrated with episode records:
Frontend Handler
Location: espocrm/custom/client/src/handlers/cepisode-hyperdeck.js
// Automatically called when episode is opened
onLoad() {
const episodeName = this.model.get('name');
const filename = this.generateFilename(episodeName);
this.setHyperdeckFilename(filename);
}Filename Generation
Filenames are automatically generated from episode metadata:
generateFilename(episodeName) {
// Format: YYYYMMDD_EpisodeName
const date = new Date().toISOString().split('T')[0].replace(/-/g, '');
const sanitized = episodeName
.replace(/[^a-zA-Z0-9]/g, '_')
.replace(/_+/g, '_');
return `${date}_${sanitized}`;
}Use Cases
1. Episode Recording Setup
When opening an episode detail page:
- Episode loads in EspoCRM
- Handler automatically sets HyperDeck filename
- Producer starts recording with pre-configured filename
- Recording file matches episode in CRM
2. Multi-Camera Workflows
For productions with multiple HyperDeck units:
- Each camera can have unique filename prefix
- Episode handler sets base filename
- Camera operators append camera identifiers
- Example:
20260209_Interview_CAM1.mov
3. Batch Recording Sessions
When recording multiple episodes:
- Open Episode A → Filename set to
EpisodeA - Record Episode A
- Open Episode B → Filename set to
EpisodeB - Record Episode B
- Files automatically organized by episode
Bridge Route
The HyperDeck route is minimal and stateless:
// bridge/routes/hyperdeck.js
router.post('/filename', (req, res) => {
const { filename } = req.body;
// Save to state/config for reference
global.hyperdeckFilename = filename;
res.json({
success: true,
filename
});
});Future Enhancements
Planned features for the HyperDeck integration:
- [ ] Direct HyperDeck SDK integration (TCP control)
- [ ] Start/stop recording via CRM
- [ ] Recording status monitoring
- [ ] Automatic file upload after recording
- [ ] Multi-camera synchronization
- [ ] Timecode integration
Related
- Bridge API — Core API documentation
- Episode Entity — Episode schema
- Publishing Workflow — Content publishing pipeline