elliotttate / elliotttate/SpliceKit

Add native URL import workflow for direct media and YouTube ingest

Open
#39 0 comments 1 reaction 1 assignee Claimed by @JT-Apps View on GitHub
feature request
Dominant language
Objective-C
Stars
144
Forks
26
PR merge metrics
No merged PRs in 30d

Description

I’m not deeply technical on the Final Cut internals side, so I may not be framing this perfectly, but I did get a working prototype of this flow running locally and wanted to share it because I think it would be genuinely useful in SpliceKit for everyone. Not really versed in PRs, etc, so tried to make this as clear as possible and provide my solution but maybe you could tighten up/simplify this working modification.

## Objective

Add a native URL import workflow for direct media and YouTube ingest.

## Proposal

SpliceKit already has the right architecture for direct in-process Final Cut Pro automation, but it is currently missing a native ingest path for remote video URLs.

I’d like to propose a built-in URL import workflow that lets a user paste a supported URL, download the media locally, import it into Final Cut Pro, and optionally place it in the active timeline.

## Why this fits SpliceKit

This feels like a natural extension of the current architecture:

- Command Palette actions
- JSON-RPC / MCP surfaces
- embedded Lua scripting
- timeline-aware editing actions

Right now there is strong control over Final Cut once media is already present, but there is no first-class path from:

`remote URL -> usable media in Final Cut`

This proposal fills that gap.

## Proposed user-facing commands

- `Import URL to Library`
- `Import URL to Timeline`

These can share one underlying workflow with different defaults:

- library-first import
- timeline-first import with placement options

## Proposed workflow

1. User pastes a supported URL
2. SpliceKit validates and classifies the source
3. Media downloads asynchronously
4. Media is normalized or converted if needed
5. Asset is imported into the current library or event
6. User can optionally place the imported clip into the active timeline

## Suggested v1 scope

### Must support

- direct media URLs such as `.mp4`, `.mov`, `.m4v`, `.webm`

### Should support

- YouTube VOD-style URLs

### Explicit non-goals for v1

- DRM-protected content
- login-required providers
- arbitrary scraping
- treating live streams as finished downloadable media

## Suggested architecture

### New core service

- `SpliceKitURLImport.h`
- `SpliceKitURLImport.m`

Responsibilities:

- URL validation and classification
- resolver selection
- provider-backed download orchestration
- progress tracking
- structured result state
- import handoff into Final Cut

### Existing surfaces to wire into

- `SpliceKitCommandPalette.m`
- `SpliceKitServer.m`
- `SpliceKitLua.m`
- `mcp/server.py`

## Why this is valuable

- makes remote-media ingest feel native instead of external
- improves Command Palette usefulness
- expands what Lua and MCP can automate
- creates a stronger bridge between web discovery and editorial workflows

## Prototype package

I’m attaching a working prototype package with:

- a patch file
- the touched source files
- a writeup of the proposed architecture

Included files:

- `Makefile`
- `Sources/SpliceKitCommandPalette.m`
- `Sources/SpliceKitLua.m`
- `Sources/SpliceKitServer.m`
- `Sources/SpliceKitURLImport.h`
- `Sources/SpliceKitURLImport.m`
- `mcp/server.py`
- `tests/test_mcp_endpoints.py`

I know this may not match the exact upstream implementation approach you’d want long-term, but I wanted to share a real working prototype because I think the feature itself would be a strong addition to SpliceKit. This was a long time 'want' of mine but a third party plugin could never directly add it to the timeline so I am stoked it can be done!

[YouTube_URL_Import_Suggestion.zip](https://github.com/user-attachments/files/26648493/YouTube_URL_Import_Suggestion.zip)

[url-import-youtube-current.patch](https://github.com/user-attachments/files/26648494/url-import-youtube-current.patch)

Image

Image

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.