| name | personal-brand-youtube-video-editing |
| description | This skill should be used when the user asks to "edit my video", "edit my recording in Descript", "run the video edit pipeline", "descript edit my video", "remove retakes from my video", or wants to turn a raw Descript talking-head recording into the finished long-form YouTube edit. Drives the Descript MCP Underlord agent through the validated pipeline - duplicate-first safety, script-diffed retake removal with human cut approval, scoped filler cleanup, Studio Sound and Eye Contact, brand stat cards and lower-third from the brand package, 1.28x zoom punch-ins with Smart Transition glides, verification after every destructive pass. Not for audio podcasts - use podcast-edit for that. Not for generating vertical shorts - use personal-brand-youtube-shorts-generation for that. Not for writing the teleprompter script - use personal-brand-youtube-script-generation for that. |
| version | 1.4.0 |
YouTube Video Editing
Turn a raw Descript talking-head recording into the finished long-form edit by driving Descript's Underlord agent over MCP: clean the take down to the script, polish audio and gaze, lay brand stat cards and a lower-third over the right moments, punch in on the peaks, and verify every pass. The skill ends at the human-reviewed edit; export, thumbnails, and publishing are outside its scope.
Intent
- Recoverability > edit progress: prefer the operation that can be undone in seconds. An edit state that cannot be rolled back — a hard delete, an edited original — is wrong even when the visible result looks correct.
- The script is the editorial authority: an objectively "cleaner" edit that strips scripted voice (conversational fillers, intentional repetition) is a worse edit, and card content derives from the script with the same authority. When the recording deviates from the script beyond simple retakes, or no script line clearly anchors a card, ask rather than infer or invent.
- When the Underlord agent declares a goal impossible and one alternative native mechanism has also failed, present options to the user — deciding to change the goal belongs to the owner, not to another retry.
- Credit thrift > retry convenience: when a multi-concern job fails, the pressure to re-run it unchanged is how credits burn fastest.
- Peak moments only for zooms: a stat reveal, a direct claim, or an emotional beat — never a setup sentence or a transition. When no moment is clearly peak, skip the zoom rather than punch in on a weak beat.
- Brand contract > per-video convenience: styling changes belong in the brand-package sources; per-video copies change content slots only, and a hand-edited render is never shipped, even as a quick fix.
- "Good" = the exported transcript matches the script minus approved deviations, every destructive pass passed both verification channels, and every visual element survived a device check under the taste rules (cards placed 2-3 seconds into their paragraph and held about 5 seconds, no entrance sound effects, no music bed, zoom glides visible on the peaks they were placed for). "Good enough" = the user signs off on the device check; remaining polish becomes targeted corrective jobs, not a reason to keep the edit open.
Prerequisites
- The claude.ai Descript MCP connector is connected (
mcp__claude_ai_Descript__* tools available). MCP tools load at session start; connecting mid-session requires a restart.
- A Descript project containing the finished talking-head recording.
- The teleprompter script the recording was read from (file path from the user). The script is the editorial source of truth: cuts, filler scope, card content, and zoom peaks all derive from it.
- The brand-package video kit at
<brand-package>/sources/ (video-stat-cards.html, video-lower-third.html, brand.css).
Tell the user upfront: a full edit consumes roughly 245 Underlord AI credits.
Workflow
Full per-phase playbook with prompt patterns and verification steps: references/pipeline-phases.md. Phase order is load-bearing: finish all word-level cuts before any timestamp-anchored placement, because cuts shift every downstream timestamp.
Phase essentials:
Phase 0. Locate and readiness — resolve project and composition via list_projects/get_project; poll export_transcript until real text appears (media metadata shows up while transcription still runs, and an empty [00:00:00] transcript is not an error state).
Phase 1. Duplicate first — the original composition is never edited. Duplicate it (name the duplicate "EDIT") and record both UUIDs and the starting duration.
Phase 2. Retake removal — diff the transcript against the script; for repeated or abandoned lines keep the last take, and drop off-script segments; whole lines only, one cut per contiguous false start (within-line stumbles wait for the filler pass — retake-vs-stumble classification test in references/pipeline-phases.md); propose cuts quoted with 10-15 words of context; run the cut-plan review gate; apply only after user approval, as reversible ignores, never hard deletes.
Phase 3. Filler pass — remove within-line unscripted stumbles only (um, uh, partial words, mid-sentence restarts, unintended repeats). Scripted conversational fillers are a deliberate style choice and stay; anything present in the script survives. Never run a blanket filler-word removal.
Phase 4. Studio Sound + Eye Contact — default-strength Studio Sound on the voice track; Eye Contact to correct the teleprompter gaze.
Phase 5. Brand overlays — derive card content from the script's stat lines, author from the brand-package video kit, render and upload with the bundled scripts, place each card full-frame starting 2-3 seconds after its paragraph begins for about 5 seconds; lower-third at the self-introduction. No entrance sound effects; no music bed on talking-head videos. Sub-workflow: references/brand-stat-cards.md.
Phase 6. Zooms — 1.28x punch-ins on peak moments only (1.13x is invisible on a talking head). Smooth glides come from Smart Transitions with 0.45 s ease-in-and-out applied at the zoom scene boundaries; keyframing contentScale does not glide.
Phase 7. Review loop — human device check; one small targeted corrective job per change type until sign-off.
Screen-layer recordings
Some videos carry a screen layer — a Loom-style walkthrough (for example a Miro board) with the camera in a corner bubble. The pipeline applies unchanged, with these adjustments:
- Recording guidance (relay to the user before they record): capture screen and camera in one continuous Descript session, including the talking-head portions — what is visible in any scene is a layout decision made in the edit, not at recording time, and a single session keeps one transcript with cuts rippling both layers in sync. Put the board in presentation or full-screen mode so no tool UI is captured. The flub protocol is unchanged.
- Scene partition: every scene is either camera-full or screen-dominant (content with a camera bubble). Eye Contact applies to camera-full scenes only — during screen scenes the gaze belongs on the content. Zoom punch-ins, stat cards, and the lower-third also belong to camera-full scenes only; in screen scenes the content itself is the visual event.
- Retake scope: the Phase 2 script diff covers scripted passages; speech over the screen content is improvised, so retakes there are caught by the repeated-phrase keep-last heuristic without a script anchor.
- Bubble style: one consistent camera-bubble treatment (position, size, shape) applies across all videos — agree it with the user at the first screen-layer edit and reuse it as part of the house style rather than restyling per video.
- Layout changes are directed like every other visual pass: targeted agent jobs anchored on spoken words, device check after. The validated per-scene mechanism (scene boundaries + per-layer track properties, with pixel-verified geometry) is in
references/descript-mcp-operations.md, Layout control on screen-layer recordings.
Multiple languages in one recording
A single continuous recording that interleaves two languages splits into one video per language by keeping that language's takes and ignoring the rest. This holds for the first language; the second language's takes fall later and more scattered, and the interleaved cut desyncs through the agent. Record each language as its own continuous pass, or apply the second language's cuts in the app. Transcription of the mixed-language audio is not the constraint; the interleaved cut is.
Verification protocol
After every destructive pass, verify through both channels before proceeding (details in references/pipeline-phases.md, Standard verification block):
- Composition duration delta via
get_project against the recorded pre-pass duration.
- Transcript re-export via
export_transcript — removed spans gone, kept text intact.
The two channels above confirm content only; neither reveals audio and video drifting out of sync. A human device check is required after every cut, not only after visual changes, and is the only reliable confirmation of synchronization — most important on screen-layer edits, where a cut must ripple the camera and screen tracks together. Compressed or out-of-order paragraph timecodes in the re-exported transcript are a sign of desync.
After every visual change: a human check on the target device. The Underlord agent's self-QC is not authoritative in either direction — it reports broken output as perfect, and it declares achievable goals impossible. When it says impossible, reframe through a different native Descript mechanism (the zoom-glide case in references/pipeline-phases.md is the model); when it says verified, still device-check.
Operating the Underlord agent
Mechanics, gotchas, and the agent trust model: references/descript-mcp-operations.md. The non-negotiables:
- Fresh agent conversation per phase; reused conversations accumulate history and eventually fail jobs outright.
- Serialize jobs within one project; parallelize only across projects. Run local work (rendering, diffing) while Descript jobs run.
wait_for_job connection drops are harmless; the job continues server-side — call it again.
- One concern per agent job; small targeted prompts keep failures localizable and retries cheap.
- Upload local files via
import_media signed URLs and scripts/upload_media.py (python3 urllib PUT). Never use curl; it is deny-listed in this environment.
Review gates and human gates
Sub-agent review gates (adversarial, structured findings, maximum 2 fix-and-re-review cycles, then escalate to the user):
- Cut-plan gate before user approval — prompt template in
references/pipeline-phases.md.
- Card-copy gate before rendering — prompt template in
references/brand-stat-cards.md.
Human gates that are never skipped:
- Cut plan approval before any cut is applied.
- Device check after every cut and every visual change (cards, captions, zooms, overlays).
- Final sign-off on the complete edit.
Bundled scripts
scripts/render_html_to_png.py — headless-Chrome HTML-to-PNG renderer (1920x1080 at device-scale 2 by default; --alpha for transparent overlays with RGBA verification; --help for usage).
scripts/upload_media.py — PUTs local files to Descript signed upload URLs from a JSON map (--help for usage).
Both fail loudly with non-zero exits; treat any script failure as a stop, not a warning.
Testing this skill
Never exercise this skill against a production composition. The safety pattern for any test, demo, or regression run:
- Pick a project whose owner has confirmed it is safe to test in.
- Duplicate a composition into a fresh one named with a
test- prefix; touch only that duplicate.
- Keep operations minimal — every Underlord job costs credits; a readiness check plus a duplicate plus one small reversible edit proves the pipeline.
- Leave originals and any composition not named
test-* untouched. Ask the user to delete test compositions afterwards in the Descript app — the agent cannot delete compositions.
Additional resources
references/pipeline-phases.md — per-phase playbook: prompt patterns, verification steps, cut-plan review gate.
references/descript-mcp-operations.md — MCP tool map, wait-for-transcript gotcha, upload flow, job and conversation discipline, agent trust model, credit expectations.
references/brand-stat-cards.md — card derivation, card-copy review gate, authoring from the brand package, render/upload commands, placement rules.