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-Import

Prerequisites

Installation

bash
pip install praisonai openai

Quick Start

CLI Usage

bash
# 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-fcpxml

Python API

python
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.

FlagDescription
--instruction, -iNatural language editing instruction
--instruction-file, -fPath to file containing instruction
--media, -mMedia file path (repeatable)
--project-name, -nProject name (default: “Untitled Project”)
--formatFormat preset (default: “1080p25”)
--dry-runGenerate without injecting
--print-intentPrint EditIntent JSON
--print-fcpxmlPrint generated FCPXML
--simpleUse simple concatenation (no LLM)
--modelOpenAI model (default: “gpt-4o”)

praisonai fcp doctor

Run health checks for FCP integration.

bash
praisonai fcp doctor

Output:

============================================================
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.

bash
praisonai fcp bootstrap-commandpost

praisonai fcp daemon

Manage the injection daemon for batch processing.

bash
# Start daemon
praisonai fcp daemon start

# Check status
praisonai fcp daemon status

# Stop daemon
praisonai fcp daemon stop

Format Presets

PresetResolutionFPS
1080p251920×108025
1080p301920×108030
1080p241920×108024
1080p501920×108050
1080p601920×108060
4k253840×216025
4k303840×216030
4k243840×216024
720p251280×72025
720p301280×72030

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:

json
{
  "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:

bash
praisonai run fcp-autoedit "Create a 30-second highlight reel" \
  --media /videos/clip1.mov \
  --media /videos/clip2.mov

Troubleshooting

CommandPost not found

  1. Download CommandPost from commandpost.io
  2. Move to /Applications/CommandPost.app
  3. Launch CommandPost at least once
  4. Run praisonai fcp bootstrap-commandpost

Auto-import not working

  1. Ensure CommandPost is running
  2. Check watch folder exists: ls ~/.praisonai/fcp/watch/fcpxml
  3. Verify auto-import is enabled in CommandPost preferences
  4. Run praisonai fcp doctor for diagnostics

FCPXML import errors

  1. Use --print-fcpxml to inspect the generated XML
  2. Validate with --validate-dtd flag
  3. Check media file paths are absolute and files exist