Final Cut Pro Integration
AI-powered video editing automation for Final Cut Pro
Final Cut Pro Integration
PraisonAI provides seamless integration with Final Cut Pro through FCPXML generation and CommandPost automation. Convert natural language editing instructions to professional video edits with zero manual import steps.
Overview
The FCP integration pipeline:
Instruction → EditIntent JSON → FCPXML → CommandPost Watch Folder → FCP Auto-ImportPrerequisites
Required for Final Cut Pro
Final Cut ProApple’s professional video editing software
CommandPostDownload from commandpost.io
OpenAI API KeySet OPENAI_API_KEY environment variable
Installation
pip install praisonai openaiQuick Start
CLI Usage
# Simple concatenation (no LLM required)
praisonai fcp autoedit --simple \
--media /path/to/clip1.mov \
--media /path/to/clip2.mov
# AI-powered editing
praisonai fcp autoedit \
--instruction "Create a highlight reel with the best moments" \
--media /path/to/clip1.mov \
--media /path/to/clip2.mov
# Dry run (generate without importing)
praisonai fcp autoedit \
--instruction "Add background music" \
--media /path/to/video.mov \
--media /path/to/music.mp3 \
--dry-run --print-fcpxmlPython API
from praisonai.integrations.fcp import (
generate_edit_intent,
FCPXMLGenerator,
Injector,
)
# Generate EditIntent from natural language
intent, warnings = generate_edit_intent(
instruction="Concatenate all clips with crossfades",
media_paths=["/path/to/clip1.mov", "/path/to/clip2.mov"],
project_name="My Project",
format_preset="1080p25",
)
# Generate FCPXML
generator = FCPXMLGenerator(intent)
fcpxml = generator.generate()
# Inject into Final Cut Pro
injector = Injector()
job_id, path, messages = injector.inject_one_shot(fcpxml)
print(f"Injected: {job_id}")Commands
praisonai fcp autoedit
Generate and inject FCPXML from natural language instructions.
| Flag | Description |
|---|---|
--instruction, -i | Natural language editing instruction |
--instruction-file, -f | Path to file containing instruction |
--media, -m | Media file path (repeatable) |
--project-name, -n | Project name (default: “Untitled Project”) |
--format | Format preset (default: “1080p25”) |
--dry-run | Generate without injecting |
--print-intent | Print EditIntent JSON |
--print-fcpxml | Print generated FCPXML |
--simple | Use simple concatenation (no LLM) |
--model | OpenAI model (default: “gpt-4o”) |
praisonai fcp doctor
Run health checks for FCP integration.
praisonai fcp doctorOutput:
============================================================
FCP Integration Health Check
============================================================
✓ macOS: Running on macOS 14.0
✓ Final Cut Pro: Found at /Applications/Final Cut Pro.app
✓ CommandPost App: Found at /Applications/CommandPost.app
✓ cmdpost CLI: Found at /Applications/CommandPost.app/...
✓ Watch Folder: Exists at ~/.praisonai/fcp/watch/fcpxml
✓ Auto-Import: Enabled in CommandPost
✓ OpenAI API Key: Set (ending in ...abc1)
============================================================
All checks passed! FCP integration is ready.
============================================================praisonai fcp bootstrap-commandpost
One-time setup for CommandPost integration.
praisonai fcp bootstrap-commandpostpraisonai fcp daemon
Manage the injection daemon for batch processing.
# Start daemon
praisonai fcp daemon start
# Check status
praisonai fcp daemon status
# Stop daemon
praisonai fcp daemon stopFormat Presets
| Preset | Resolution | FPS |
|---|---|---|
1080p25 | 1920×1080 | 25 |
1080p30 | 1920×1080 | 30 |
1080p24 | 1920×1080 | 24 |
1080p50 | 1920×1080 | 50 |
1080p60 | 1920×1080 | 60 |
4k25 | 3840×2160 | 25 |
4k30 | 3840×2160 | 30 |
4k24 | 3840×2160 | 24 |
720p25 | 1280×720 | 25 |
720p30 | 1280×720 | 30 |
Supported Operations
Implemented (v1)
- ✅ Create projects with primary storyline
- ✅ Place asset clips in sequence
- ✅ Set audio roles (dialogue, music, effects)
- ✅ Add chapter markers
- ✅ Basic volume adjustments
Planned
- ⏳ Silence/pause removal
- ⏳ Audio normalization (LUFS)
- ⏳ Zoom/Ken Burns effects
- ⏳ Transitions
EditIntent Schema
The EditIntent JSON schema defines the structure for video editing instructions:
{
"version": "1",
"project": {
"name": "My Project",
"format": {"width": 1920, "height": 1080, "fps": 25.0},
"audio": {"layout": "stereo", "rate": 48000, "channels": 2}
},
"assets": [
{
"id": "r2",
"name": "interview",
"path": "/path/to/interview.mov",
"has_video": true,
"has_audio": true
}
],
"timeline": {
"segments": [
{
"asset_id": "r2",
"offset": "0/2500s",
"start": "0/2500s",
"duration": "5000/2500s",
"role": "dialogue"
}
],
"markers": []
}
}Agent Recipe
Use the fcp-autoedit recipe for multi-agent workflows:
praisonai run fcp-autoedit "Create a 30-second highlight reel" \
--media /videos/clip1.mov \
--media /videos/clip2.movTroubleshooting
CommandPost not found
- Download CommandPost from commandpost.io
- Move to
/Applications/CommandPost.app - Launch CommandPost at least once
- Run
praisonai fcp bootstrap-commandpost
Auto-import not working
- Ensure CommandPost is running
- Check watch folder exists:
ls ~/.praisonai/fcp/watch/fcpxml - Verify auto-import is enabled in CommandPost preferences
- Run
praisonai fcp doctorfor diagnostics
FCPXML import errors
- Use
--print-fcpxmlto inspect the generated XML - Validate with
--validate-dtdflag - Check media file paths are absolute and files exist