Communitygithub.com

raisaksham377-bot/youtube-shorts-ai-editor

Step 2 of the AI Video Editor pipeline — build the visual beats (Remotion TSX shots) over a project's master cut and bake a composited preview. Use when the user wants to add/edit overlays or full-screen animation segments, "make a shot / beat", implement an edit plan or a v2 update, retime a beat to the narration, re-render shots, or re-bake the video-N preview in this repo. Covers reading the plan + edited-transcript + brand + reusable kit, authoring shots library-first, syncing reveals to word times, updating timeline.json (cutaway vs overlay), rendering, verifying by screenshot, and baking with tools/bake.py. Defers raw TSX authoring rules to vidtsx-2d-generator and the cut itself to clean-cut.

youtube-shorts-ai-editor 是什麼?

youtube-shorts-ai-editor is a Claude Code agent skill that step 2 of the AI Video Editor pipeline — build the visual beats (Remotion TSX shots) over a project's master cut and bake a composited preview. Use when the user wants to add/edit overlays or full-screen animation segments, "make a shot / beat", implement an edit plan or a v2 update, retime a beat to the narration, re-render shots, or re-bake the video-N preview in this repo. Covers reading the plan + edited-transcript + brand + reusable kit, authoring shots library-first, syncing reveals to word times, updating timeline.json (cutaway vs overlay), rendering, verifying by screenshot, and baking with tools/bake.py. Defers raw TSX authoring rules to vidtsx-2d-generator and the cut itself to clean-cut.

相容平台✓Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/raisaksham377-bot/youtube-shorts-ai-editor/tree/HEAD/.claude/skills/make-tsx

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

make-tsx — build the visual beats over the master

Step 2 of the pipeline: take an approved master cut and its timing spine and produce the animated beats — UI/browser mockups, full-screen statements, diagrams, image reveals — then composite them over the master into a preview. Work collaboratively and beat-by-beat; the user gives notes per beat.

This is the project orchestration. For the low-level rules of writing a single crash-free Remotion file (frame-based only, monotonic interpolate, Easing.bezier, no useState/useEffect, import gotchas), use the vidtsx-2d-generator skill — shots here follow those rules.

Inputs (read these first, every session)

  • The plan — videos/video-N/work/edit-plan.md (or a change list like v2-update-plan.md). The source of truth for what to build. If there's a change list from a review, that overrides; apply it, don't re-litigate settled beats.
  • videos/video-N/work/timeline.json — maps each shot → its span on the master + type. You edit this. (Schema below.)
  • videos/video-N/work/edited-transcript.json — word-level times in master timeline (ms). Everything syncs to these.
  • brand.md — colors/fonts/motion/delivery tokens. Every shot reads the brand so all videos feel like one channel.
  • remotion/src/lib/kit.tsx (+ lib/vscode.tsx, lib/browser.tsx) — the reusable component library; src/brand.ts, src/fonts.ts; existing shots in remotion/src/shots/video-N/.

Workflow

  1. Read the plan + timeline + transcript + brand + kit. Pull the exact word times for each cue you must hit (grep edited-transcript.json for the phrase → start/end ms → local frame = (cue_s − shot.master_in_s) × fps).
  2. Ask only what's genuinely open at the start (a small batch), then build. Don't re-ask settled decisions.
  3. Library-first. Reuse a kit component before writing UI from scratch. If you build something reusable (a window chrome, a browser frame, a card slot), put it in lib/ so later shots and videos get it. Promote good patterns back into the library.
  4. Author / edit the shot as a vidtsx-format .tsx in remotion/src/shots/video-N/ (auto-registered by scripts/gen-registry.mjs). One shot per file. Follow the brand tokens and the principles below.
  5. Sync to the words (see principles). Time each sub-element's entrance to its transcript cue; never show a thing before it's said or after the point has passed.
  6. Update timeline.json — add/replace/retime the beat's span and type. Leave a clear note when a slot is a placeholder (e.g. a pending screen recording).
  7. Render + VERIFY BY SCREENSHOT (never skip): cd remotion && node scripts/render-all.mjs --scale=1 <ShotIds> (opaque → out/<id>.mp4, transparent overlays → .mov). Validate with a still first (--still); for word-synced reveals/scrolls, render the clip and pull a frame at each cue (ffmpeg -ss <t> -i out/<id>.mp4 -frames:v 1 f.jpg) — one 60% still is not enough.
  8. Bake the preview: python tools/bake.py (reads timeline.json → videos/video-N/output/video-N-preview.mp4, 1080p30). --end SECONDS to bake a prefix while iterating.
  9. Spot-check composited frames from the baked mp4 at the changed beats (the shot over the real master), not just the isolated shot.

timeline.json (the compositing map)

{
  "master": "videos/video-1/reference/master.mp4", "master_fps": 60,
  "remotion_out": "remotion/out",
  "shots": [
    { "id": "CreditsStat", "type": "cutaway", "master_in_s": 170.0, "master_out_s": 179.0, "cue": "..." }
  ],
  "preview": { "end_s": 329.6, "out": "videos/video-1/output/video-1-preview.mp4", "width": 1920, "height": 1080, "fps": 30 }
}
  • type: "cutaway" — the shot's .mp4 REPLACES the master video for [master_in_s, master_out_s]. Master audio always continues underneath.
  • type: "overlay" — a transparent shot (ProRes 4444 .mov, transparent: true in its compositionConfig) is composited OVER the master for that span. For small persistent CTAs/badges in the top/bottom band.
  • bake.py splits [0, end] at every shot boundary, renders each segment (cutaway from the shot, overlay = master+alpha, else master pass-through), concats, and muxes master audio 0..end. Frame-accurate; a shot's file must exist in remotion/out/ first.
  • Design shots at 1920×1080; render-all --scale=2 → 4K for final. Preview bakes 1080p30; final delivery is 4K60.

Principles (the house style — apply them)

  • Sync to the words (P1). Reveal sub-elements on their narration cue, timed from edited-transcript.json. "Show everything then hold" is a smell.
  • Don't pre-empt (P2). Never put on screen a thing mentioned later (don't show "skill" before the skill is introduced; don't show example tiles before "more examples").
  • Real assets over generic icons — the DEFAULT (P3, brand.md §6). Any beat naming a real-world thing (a company, a person, a city/country, a real app/product, a real job posting) shows a REAL photo or REAL screenshot of it, not a lucide-icon graphic or a hand-drawn clone — icons are the fallback only for abstract concepts (a stat, a process step) with nothing real to show. Two cases:
    • Real website / app / page → capture it LIVE with tools/capture_web.py (Playwright — see requirements.txt) pointed at the real public URL, saved to media/projects/<video>/real/; frame it in WebBrowserFrame (single static page) or replay it with /fake-screencast (a walkthrough with simulated cursor/scroll/click). This is a real state capture, not a redrawn mockup.
    • Real photo / logo / person / place → WebSearch/the Browser tool to find the actual asset (the entity's own site, Wikipedia, Wikimedia Commons, a YC/LinkedIn-style profile), then curl/download it into media/projects/<video>/real/. Never redraw a logo or skyline from memory — fetch the real file. Animate it with Ken Burns (slow scale 1.0→1.12 + a small translate drift over the beat's hold) rather than showing it static.
    • Prefer official/openly-licensed sources over random image-search hits, especially for anything leaving the machine (a pitch sent to the real company, a public upload). Pair the reveal with the camera-snap SFX cue (brand.md §10).
  • Config/setup → real UI (P4). Keys, dashboards, .env, skill folders → the actual VS Code / dashboard UI, not an abstract graphic.
  • Real results in the real editor (P5). A generated result is shown opened inside the real editor (image in a pane next to the chat), not floating on a brand card.
  • Full-screen vs overlay. Concept beats = full-screen cutaways (cut away from the talking head). Overlays only for small persistent CTAs/badges in the top/bottom band; never cover the center-framed talking head.
  • Real UI realism. UI clones match the real product (Claude Code = dark + coral, real logos), not the indigo brand. Brand indigo is for overlays/full-screen beats.
  • Recording vs TSX. TSX when you want controlled highlight/scroll/zoom; a real screen recording only when the point is genuine PROOF (real output, real speed). Leave a clearly-noted placeholder slot for recordings the user will provide.
  • On-screen text follows the brand voice — no em-dashes (the site copy avoids them; keep it out of overlays too).

Those are the full principle set. When a video's plan calls for a revision pass, record what changed and why in videos/<project>/work/v2-update-plan.md so the next pass inherits the reasoning.

Tooling quick reference

  • Register shots: node remotion/scripts/gen-registry.mjs (auto-runs discovery; needed after adding a file).
  • Render: node remotion/scripts/render-all.mjs [--still] [--scale=1|2] <ShotIds...>.
  • Bake: python tools/bake.py [timeline.json] [--end S] [--keep].
  • Scratch renders/frames go in the scratchpad, not the project.

Done = the changed beats render, you have looked at stills/frames at each cue, the preview is re-baked, and composited frames are spot-checked. Update the plan/timeline and any relevant memory when the pass is complete.

Individual skills in this repo

This repo contains 8 individual skills — each has its own dedicated page.

raisaksham377-bot/youtube-shorts-ai-editor

Makes this repo's videos look like YOUR channel instead of the house default — interviews you for palette, fonts, wordmark, motion energy, delivery specs and SFX taste, then rewrites brand.md + remotion/src/brand.ts + remotion/src/fonts.ts together and renders a proof card so you SEE it. Use whenever the user wants to set up or change their brand, rebrand the repo, "make it my colors/fonts", change the accent color, set their wordmark, adjust the motion feel, or asks why their videos look like someone else's. Run it once before the first video. Not for per-video art direction (that is /make-tsx) and not for thumbnails, which are deliberately louder than the brand (that is /packaging).

raisaksham377-bot/youtube-shorts-ai-editor

Build a split-frame vertical Short/Reel (1080x1920) from talking-head footage — real face cropped into the bottom half throughout, bespoke motion-graphic beats + word-by-word captions in the top half. Use when the user wants a "vertical short", "reel", "9:16 video", "split-frame" format, asks to keep their face on screen the whole time while graphics play above it, wants an in-context app/UI mockup moment (like clicking a button in a browser) without cutting away from their face, or hits caption-pill-covers-my-face / no-GPU-rendering / audio-duration-mismatch problems while building one. Covers the crop-offset technique for framing the face, the caption-pill safe zone, the top-half-only UI-mockup scene pattern, the full pipeline from raw footage to final SFX mix, and the environment gotchas (no NVIDIA GPU, AAC priming gap, comp-native transcode). Topic-agnostic — this is a layout/technique skill, not tied to any one video's content. Builds on /clean-cut, /make-tsx conventions, and /suggest-sfx; doesn't rep...

raisaksham377-bot/youtube-shorts-ai-editor

Voice/audio cleanup step of the AI Video Editor pipeline — diagnose a video's background noise, pick the right denoise method, and produce a cleaned master (voice isolated, levels preserved, video stream copied). Use when the user wants to "clean the audio / voice", "remove background noise", "denoise", "isolate voice", fix outdoor/room/water/hum/hiss noise, run ElevenLabs Voice Isolator or local RNNoise, A/B denoise methods, or produce a cleaned master for a video-N in this repo. Covers diagnosing the noise (spectrogram + levels), choosing eleven vs rnnoise by noise type, the sample A/B, tools/clean_voice.py, preserving levels (RMS-match, not LUFS), and rewiring the pipeline to the clean master. Not the SFX/music mix (that is /suggest-sfx + the final-mix step) and not the cut (that is /clean-cut).

raisaksham377-bot/youtube-shorts-ai-editor

Step 1 of the AI Video Editor pipeline — turn raw talking-head footage into a clean master cut. Use when the user wants to "clean cut", "cut the raw footage", "remove filler / dead air / bad takes", "tighten the pacing", produce cuts.json, run the cut editor, or render a cleaned preview/master for a video-N project in this repo. Covers audio extraction, AssemblyAI transcription, authoring cuts.json (keeps/cuts/fluff categorized), the cut policy (content-aggressive, pause-natural ~0.5s), QA + review docs, the local cut-editor UI, tight/natural previews, the final 4K60 render, and producing edited-transcript.json as the handoff to /make-tsx. Not for building TSX overlays (that is /make-tsx) or the raw TSX authoring rules (that is vidtsx-2d-generator).

raisaksham377-bot/youtube-shorts-ai-editor

Turn static SCREENSHOTS into a simulated screen recording (TSX) — a fake screencast with an animated cursor that eases to targets and clicks, a browser URL bar that updates per page, hard-cut navigations, in-page filter crossfades, smooth scroll, and a ken-burns zoom onto the payoff. Use when a beat needs to show a walkthrough of a web app / dashboard / settings page and you'd rather build it from screenshots than get (or ask for) a real screen recording — "fake a screen recording", "turn these screenshots into a screencast", "simulate clicking through the dashboard", "animate this UI walkthrough", "cursor moving through the app". Built on remotion/src/lib/screencast.tsx. This is a technique WITHIN step 2 (make-tsx): defer timeline/render/bake orchestration to make-tsx and raw crash-free TSX rules to vidtsx-2d-generator. Not for a single static page clone (use WebBrowserFrame directly) and not when the point is genuine proof of real speed/output (use a real recording).

raisaksham377-bot/youtube-shorts-ai-editor

Generates click-optimized YouTube packaging — 3 thumbnail bets under one fixed title, engineered for YouTube's built-in A/B/C thumbnail test, plus a value-forward description, then renders the thumbnails as real images. Use this whenever you want to package a long-form video or turn a video idea into titles and thumbnails. Triggers include how would you package this, title ideas for, thumbnail concept, package this video, A/B variations, and make this clickable. Calibrates to your channel's own CTR data if you have it. Long-form only, never Shorts. Not for non-YouTube copywriting.

raisaksham377-bot/youtube-shorts-ai-editor

Step 4 of the AI Video Editor pipeline — the SFX pass. Analyze a video's beats + narration and propose tasteful sound effects synced to them, drawing from (and growing) a shared, reusable SFX library, then render an SFX-mixed audition preview. Use when the user wants to "add SFX / sound effects", "suggest sfx", "score the transitions", "sound-design this beat", generate/source sound effects, build or extend the sfx library/catalog, author or audit a sfx-plan, or mix SFX over a video-N preview in this repo. Covers reading timeline + edited-transcript + brand §10, the library-first flow, generating misses with the ElevenLabs Sound Effects API, the per-video sfx-plan.json, the hard user-audit gate, and mixing with tools/mix_sfx.py (light voice ducking). Not the music bed (that is the final-mix step) and not the visual beats (that is /make-tsx).

raisaksham377-bot/youtube-shorts-ai-editor

Generate production-ready 2D TSX video files for VidTSX (Remotion-based) from a shot, scene, or video description. Use whenever the user wants to create or generate a VidTSX video, a 2D TSX shot or scene, an animated clip, title card, or rendered motion graphic — including when they describe a visual animation they want built, or say "make a shot", "build this scene", "generate the TSX", or "turn this into a video". Covers the mandatory file structure and composition config, dimension presets (horizontal/vertical/square), six style presets (minimalist, memphis, neo-brutalism, glassmorphism, neon, corporate), and the hard rules that keep renders from crashing, covering frame-based animation only (no useState/useEffect/setTimeout), strictly monotonic interpolate ranges, Easing.bezier not wrapper syntax, and the chroma-js and @remotion/paths import gotchas. Not for 3D/three.js compositions, general React work, or editing video files.

相關技能