AI 视频创作 Skill
Role
Act as the director layer above the existing video skills. Route the job, define
the acceptance standard, then coordinate production and QC. Do not replace
hyperframes, remotion, ra-audio-to-subtitles, skill-captions, embedded-captions, graphic-overlays,
ra-video-download, 视频转写, tts-skill, heygen-digital-avatar, or ai-video-qc-delivery; load those
skills only when their lane is selected.
If the user provides a source video URL or local file and asks for 视频洗稿,
视频二创, or 洗稿并制作视频, route to ra-video-wash-pipeline before this
skill so extraction and rewrite happen first.
待制作 Queue Intake
If the input is a handoff project folder under
01-内容生产/视频工作台/待制作/<日期-主题>/ (contract file 交接稿.md at its
root; or the user says 制作待制作队列, 按交接稿制作, or points at a queued
script):
- the 交接稿.md frontmatter is the binding production contract — platform, ratio,
duration_target_s,word_count,voice,caption_style,visual,illustration_skill,typographyoverride intake defaults and must never be replaced by an execution skill's own defaults (e.g. HyperFrames TTS voices are not a substitute for the contract voice) - before starting work, set
status: 制作中in 交接稿.md and move the whole project folder to01-内容生产/视频工作台/制作中/<日期-主题>/, so the other machine does not double-produce; all engineering happens inside that folder - the script segments in the handoff file are the scene units; do not re-split or re-flow the narration
- skip intake questions the contract already answers
Hard Rules
- Define the output standard before production: original video, pixel-level alignment, visual replica, style-inspired creation, captioned footage, narrated explainer, product promo, website tour, or motion graphic.
- Do not claim pixel-level alignment for a hand-authored HyperFrames/Remotion
rebuild. Pixel-level requires source-stream reuse, original project assets,
or hard metrics such as matching hash,
cmp, PSNR infinity, or SSIM 1.0. - Keep source projects and intermediates under
<WORKSPACE>/01-内容生产/视频工作台/制作中/; the workbench01-内容生产/视频工作台/holds only handoffs, transcripts, and archives. - Final deliverables stay inside the vault. Every video produced by this
system — queue or non-queue, transcript-direct, practical long-form,
translated/repackaged, or ad hoc — delivers to
01-内容生产/视频工作台/已制作/<月上旬|月下旬>/<日期-主题>/成片/, with key QC images in the sibling质检/. Use the delivery date: days 1-15 go toX月上旬and days 16 through month-end go toX月下旬.已制作/6月历史成片库/(封存只读) and the desktop<WORKSPACE>/legacy-archive/are retired legacy history — do not write new deliverables there. - Publish titles are not production work for 待制作 queue jobs:
ra-video-titlealready wrote 8-12 candidates into the handoff 标题候选 section at wash time, and the final title is chosen manually by the user at publish time. Do not generate or apply publish titles and do not create视频标题.mdfor queue jobs (on-page scene titles from the script are unaffected). Only for non-queue jobs (no handoff contract) generate 8-12 candidates withra-video-titleafter QC and let the user choose before saving视频标题.mdnext to the final MP4. - A video is not complete until media specs, visual checks, and archive
paths are confirmed. The selected-title-file requirement applies to
non-queue jobs only; queue jobs finish without
视频标题.md(title selection stays manual with the user). - If the user explicitly names a visual or illustration skill, load and follow that skill before designing the visual layer. Do not replace a requested illustration skill with hand-coded shapes, CSS drawings, or "style-like" approximations unless the user explicitly approves that substitution.
- When full AI narration is required, final deliverables must use local
IndexTTS2 through
tts-skill, voice idpluvio-indextts2-calm-v1, and the canonical lossless WAV declared inautomation/config/tts-routing.json. MiniMax is reserved for public article/tutorial relay examples and is forbidden for local video narration. Do not silently fall back to macOSsay, browser speech, MiniMax, or another generic/cloud voice. If the local model or canonical WAV is missing, repair the IndexTTS2 lane or stop before final render. - For jobs taken from the
待制作queue, delivery is not complete untilpython3 automation/scripts/check_delivery.py <交接文件> <项目目录> <成片.mp4>exits 0, the 制作端回执 in the handoff file is filled (paths + checker output),statusis set to已完成, and the per-project archive folder01-内容生产/视频工作台/已制作/<月上旬|月下旬>/<日期-主题>/(folder name = the project folder name) is assembled by moving the cleaned project folder from制作中/:交接稿.mdat its root, the final MP4 in成片/, key QC frames in质检/, minimal engineering in工程/. Non-queue jobs assemble the same dated archive structure using a clear topic slug; copy a production note/script/plan into the archive root when available. No job copies a new final into已制作/6月历史成片库/(封存只读). - The 图文工作台 queue follows the same contract pattern: take
01-内容生产/图文工作台/待制作/<file>.md(frontmatter contract: card_count, ratio, style, illustration_skill, image_skill), setstatus: 制作中on start, produce the image cards without rewriting the copy and without generating or applying publish titles, deliver to01-内容生产/图文工作台/已制作/<日期-主题>/(handoff file moved in + finished cards under图/), setstatus: 已完成, and register the item under 待修改 in01-内容生产/发布看板.md. The source-privacy wall applies unchanged. - 实操长片 projects follow the unified engineering layout under
01-内容生产/视频工作台/制作中/<日期-主题>/; do not create a separate planning directory under视频工作台/. the 策划稿 frontmatterstatusis the only handoff signal, and the user handles 录制 and 剪映融合 stages personally. Codex owns three stages: (a)status: 待粗剪— default tora-local-talking-head-cut: Seed ASR word timestamps, terminology/uncertainty review, and a source-timeline pre-cut SRT. Stop for explicit user approval; no EDL or render is allowed before approval. Then perform semantic cleanup, adaptive pauses, source-size/source-fps rendering, dialogue loudness, media QC, and final- media subtitle generation with caption QC PASS. Usevideo-useas the multiple-take evidence/selection layer; useAgentchengfeng/chengfeng-videocut-skillsonly for word-level web review or an intentionally aggressive comparison; chooseAI剪口播when the user wants waveform review and an FCPXML timeline for 剪映/Final Cut Pro. The default MP4 workflow delivers粗剪/口播-粗剪.mp4and setsstatus: 融合中; the FCPXML workflow moves forward only after the editor timeline is accepted; (b)status: 待字幕— runra-audio-to-subtitlesagainst the user's final merged cut, require word-timestamp QC to pass, then runskill-captionswith the contractcaption_style(defaultanchor-dark) to preview, burn, and validate the phrase captions; save the matching.srtand passingcaption-render-qc.json, then setstatus: 待动画; (c)status: 待动画— add Remotion component overlays ONLY to the 全身出镜 segments listed in the 策划稿 frontmatter, composite, deliver the final MP4 to视频工作台/已制作/<月上旬|月下旬>/<日期-主题>/成片/, put key QC in the sibling质检/, register on 发布看板, setstatus: 成片. All rough-cut tools are rough-cut-only in this workspace: never use any rough- cut tool's subtitle output as the production subtitle timeline. - For any narrated final video, the final concatenated audio or final merged
video is the only subtitle timing source. Run
ra-audio-to-subtitlesafter audio is locked; archivecaptions_words.json,captions.json,captions.srt, andcaption-qc.json. Character-count interpolation, scene-duration interpolation, and fixed-delay caption timing are preview- only and must never enter a recommended final. - Whenever a video component, video background, or reference-video replica
reaches a rendered, QC-passed final, stop before adding it to
05-视频组件/and explicitly ask the user: whether it should enter the component library, which existing category should contain it, and whether a new category is needed. Do not infer placement or create a category before the user answers. If the user declines, use only the normal finished-video archive. If the user approves, treat the confirmed05-视频组件/<中文分类>/<中文组件名>/names as canonical and make the component directory self-contained in the same task: portable MP4,manifest.json,质检/, and工程/(the sole editable source, stripped of node_modules/renders). No engineering mirrors, symlinks, or second copies exist anywhere else; register the component in05-视频组件/CATALOG.mdbefore reporting completion. - Whenever the user asks for a HeyGen/digital-human/avatar video, or a video
production contract calls for the existing Pluviobyte digital human, load
heygen-digital-avatarbefore generation. Its original Digital Twin look, CLI OAuth subscription billing, Avatar III default, local IndexTTS2 audio, one-master reuse, and approvedheadroom_08lower-left circle layout are binding. Only an explicit request for全屏数字人may bypass the circle layout. - Treat any decorative focus frame enclosing over 40% of the canvas or multiple content groups as an entrance cue only. Its total visibility must not exceed the shorter of 2 seconds or 15% of the scene, and it must exit before the steady information state. Persistent frames require explicit semantic purpose and must tightly bound one local target.
Default Visual System
When the user says to make a video with this skill and does not provide a conflicting visual direction, use a white-first visual system:
- background: pure white or warm white, with generous blank space
- for white-first AI/tool tutorials, page-based explainers, and white motion
graphics, read
references/perspective-grid-v5.mdand start from the workspace component05-视频组件/视频背景/透视网格背景/. The bundledassets/perspective-grid-v5/copy is the same-hash Skill mirror and fallback, not a second independently editable baseline. Use the approved V5 loop as the bottom-most visual layer at its native playback rate: 1920x1080, 30fps, 7.3 seconds / 219 frames, three complete grid cells per loop, and a 2.433-second single-cell period. Preserve its geometry, asymmetric color plate, center fog, phase, and seamless-loop timing. Do not rebuild it from an older version or an ad-hoc CSS grid. - disable the V5 grid only when source footage, full-screen talking head, dense UI, readability, a handoff contract, or an explicit reference conflicts with it. Record the reason in the production note.
- primary marks: black text, black line art, and restrained dark UI elements
- accents: use only small amounts of red, orange, or blue for emphasis, warnings, arrows, feedback, or state
- captions: for narrated explainers over footage, screenshots, the V5 grid, or
variable backgrounds, run
skill-captionsand use itsanchor-darkshrink-wrapped panel by default. A handoffcaption_styleor explicit user style overrides it; frameless captions require a controlled uniform light caption zone and a recorded reason. - avoid defaulting to dark, purple, neon, or SaaS-magic styling unless the user explicitly asks for it or the selected route requires it
- use
ian-xiaohei-illustrationsas the default illustration source for page-based or scene-based videos. Prefer the active project-local copies under.agents/skills/ian-xiaohei-illustrations/,.codex/skills/ian-xiaohei-illustrations/, and.claude/skills/ian-xiaohei-illustrations/; the shared library path<WORKSPACE>/.claude/skills/ian-xiaohei-illustrationsis only a source of truth to repair from when the project copy is missing. - give every page or scene a meaningful Xiaohei illustration whenever possible; skip only when footage, screenshots, dense UI, or readability would clearly be harmed
- each illustration must explain the page's core claim, process, contrast, or state; Xiaohei should perform the core action, not appear as decoration
- if the plan says "Xiaohei" or "小黑配图", create real image assets with
ian-xiaohei-illustrationsand save them into the project. A CSS/HTML approximation of Xiaohei does not satisfy this requirement. - for page-based 16:9 Xiaohei videos, use the
xiaohei-16x9-layoutcontract before writing the composition. The contract fixes the page skeleton first: left-top title, left-middle note card, right-middle Xiaohei illustration, and lower caption. Do not invent a fresh layout unless the user asks for a different visual system.
Page-Based Explainer Defaults
For AI/tool tutorials, page-based narrated explainers, and long-form Chinese teaching videos, apply these defaults unless the user gives a conflicting reference:
- For 16:9 Xiaohei explainers, read
references/xiaohei-16x9-layout.mdbefore building. Copy or adapt the template asset inassets/xiaohei-16x9-template/when the project is a HyperFrames page-based video. - Treat the layout as a contract, not a loose suggestion. The right-side Xiaohei image belongs to the right-middle area, not the upper-right corner. The left note card belongs to the left-middle area, not the lower-left area. Captions must stay below the content zones with a clear bottom safe margin.
- Select a page variant before writing HTML:
standard,long-title,wide-visual, orclose. Uselong-titlefor titles that would produce awkward automatic breaks; usewide-visualfor horizontal illustrations; useclosefor final action or summary pages. - Manually plan title and subtitle line breaks for every page. Do not rely on automatic wrapping when a Chinese title is long enough to create orphan characters, single-word lines, or large gaps.
- Use the
mobile-readabletypography scale inreferences/xiaohei-16x9-layout.mdas the default for 16:9 Xiaohei page videos. Most distribution is phone-first, and horizontal pages become small on mobile. Only use the smallerdesktop-compactexception for explicit desktop demos, projection, course-screen playback, or similarly large-screen viewing. Do not shrink all text to make crowded pages fit; first shorten copy, split lines manually, or choose a layout variant. - Use a light white-first layout by default: white background, black text, meaningful Xiaohei illustrations, and small red/orange/blue accents only for emphasis, warnings, arrows, feedback, or state. Do not drift into dark, neon, purple, or SaaS-promo styling by default.
- Treat Xiaohei illustrations as explanation, not decoration. Each page's illustration must show the core action or concept being explained, such as fact-checking, division of labor, orchestration, memory, handoff, or acceptance.
- Do not let a repeated page template leave a persistent empty lower-left or lower-middle area just because the Xiaohei illustration sits on the right. For teaching videos, first consider adding useful light content there rather than simply scaling the illustration larger. Good fillers are role notes, input/action/output cards, anti-pattern reminders, acceptance criteria, priority lists, or "next time use this" prompts.
- Keep these filler modules compact and information-bearing. They should help the viewer remember or apply the current page, not act as decorative labels. If the content does not add a useful judgment, leave the space intentional instead of filling it mechanically.
- Reserve non-overlapping zones for narrated pages: upper content and lower captions. Captions must not cover body content.
- Use
skill-captionsand itsanchor-darkpanel by default. It must wrap the text rather than span the frame, keep one fixed bottom anchor, scale from the 1080p baseline, and avoid text stroke, heavy shadow, and live blur. - Avoid moving, zooming, drifting, or shaking the entire page just to create motion. A stable page base is more important than constant camera movement.
- Put motion on components: title, eyebrow, accent line, cards, bullets, Xiaohei image, and captions may enter or settle while the page base, and content frame remain fixed.
- Reveal necessary components progressively with the narration. Do not show all page content at once when the voiceover is still introducing pieces. Prefer a sequence such as eyebrow -> title -> accent -> illustration -> bullets/cards.
- For every narrated hero term, name, number, or reveal, derive its semantic
cue from the final word timestamps and apply the semantic-cue micro-sweep in
references/delivery-gates.md. The hero must become readable on the spoken cue and finish settling while that phrase is still active; a scene midpoint alone is not enough evidence. - Prefer reveal, wipe, fade-in, and subtle settle motion. Motion should make the explanation feel spoken into view, not make the page perform for its own sake.
- Element variation is a hard requirement, not taste: adjacent pages must not present an identical set of info components, and every page must show at least one component-level change (a new element entering, an emphasis, or a state switch) within its own duration. Long videos must avoid extended PPT-like stillness.
- Page density floor: a
standardpage carries at least two info components besides the title and the Xiaohei illustration (note card, bullets, cards, labels, chapter cue). If a page intentionally stays sparser, record the reason in the project note. - For substantial style, caption, or motion changes, render a 10-second sample first and get approval before rendering the full video.
- For any page-based Xiaohei video, create a pre-render contact sheet from page midpoints before the final full render. Fix layout failures at this stage, not after the final MP4. The contact sheet must be checked for visual center, title breaks, note-card position, illustration position, caption weight, and content/caption clearance.
- Generate subtitles only after the final narration has been concatenated.
Page renderers must consume
media/captions/captions.jsondirectly and must refuse a final build whencaption-qc.jsonis absent or failed.
Workflow
1. Intake
Capture these decisions in plain language:
- goal: teach, promote, recreate, translate, caption, package, or test
- source: brief, script, URL, reference video, existing footage, audio, deck, PR
- platform and ratio: 16:9, 9:16, 1:1, or user-specified; when neither the user nor a handoff contract specifies one, default to Douyin horizontal 16:9
- required tool: HyperFrames, Remotion, ffmpeg, or no preference
- fidelity: pixel-level, visual-level, style-level, or original creative
- visual direction, defaulting to the white-first Xiaohei system above
- final archive slug and expected delivery path
Ask only if the missing answer changes the production path. Otherwise make a conservative assumption and proceed.
2. Route
Read references/routing.md and select the narrowest workflow. Prefer an
existing specialized skill over a broad one.
Common routes:
- custom multi-scene HyperFrames video ->
general-video+hyperframes - short unnarrated motion piece ->
motion-graphics - product or SaaS promo ->
product-launch-video - website showcase ->
website-to-video - final-audio subtitle timeline / SRT / VTT ->
ra-audio-to-subtitles - existing Pluviobyte digital human / HeyGen avatar ->
heygen-digital-avatar - designed captions on talking-head footage ->
embedded-captions - designed overlay cards on footage ->
graphic-overlays - source download ->
ra-video-download - transcription or translation ->
视频转写 - final archive and QC ->
ai-video-qc-delivery
3. Plan Before Build
Create a production note in the project directory for non-trivial work. Include:
- scene list and timing
- asset list and source paths
- page-by-page Xiaohei illustration plan, unless the route does not use pages or illustrations
- page-by-page layout variant plan, including
standard,long-title,wide-visual, orclose, plus manual title/subtitle line breaks where needed - page-by-page content-density plan, including how persistent blank areas such as the left-lower quadrant will be used or intentionally preserved
- illustration provenance: which skill will generate each image, where the generated originals live, and where the project-local copies will be saved
- asset-text inventory: visible words, labels, badges, stamps, and UI text already embedded in images, screenshots, and footage; planned overlays must not repeat the same semantic label unless the repetition is intentional and documented
- audio/caption plan, including the exact final media passed to
ra-audio-to-subtitlesand the canonical caption artifact directory - voice plan: exact provider, voice id, script path, and whether fallback is
forbidden for the final render. The workspace default is local IndexTTS2
voice
pluvio-indextts2-calm-v1using the canonical lossless WAV inautomation/config/tts-routing.json; MiniMax.envvalues never override this local-video route. - platform typography plan: use
mobile-readableby default, or document the explicit large-screen reason fordesktop-compact; list pages that need shorter copy or manual line breaks - caption safe zones and the selected caption mode; default to
anchor-darkfromskill-captions, or record the reason for a frameless exception - chapter grouping and real start-time boundaries for scene planning
- component-level animation plan for each page, including the order in which key components appear with the narration
- semantic-cue plan for every hero term, name, number, or reveal, using final word timestamps rather than estimated scene timing
- pre-render layout preview plan: exact timestamps or scene midpoints for a contact sheet before full rendering
- 10-second sample plan before full rendering when the visual or motion style is not yet approved
- acceptance checks
- known risks or unavailable source assets
For reference-video work, the timing table must come from extracted frames, not from memory.
4. Build
Use the selected execution skill. Keep edits scoped to the project. Do not add music, captions, scenes, or visual embellishment unless the user's goal needs them or the selected workflow requires them.
Before building a page-based Xiaohei video, generate the Xiaohei images first,
store them under a project asset directory such as
assets/xiaohei-illustrations/, then make the HyperFrames/Remotion layer load
those image files directly. Do not start from a CSS-drawn Xiaohei placeholder
when the requested deliverable is a Xiaohei-skill illustration video.
For 16:9 HyperFrames Xiaohei explainers, start from the template asset in
assets/xiaohei-16x9-template/ or reproduce its same layout contract. Keep the
template coordinates stable unless a page variant needs a documented
adjustment. If you adjust them, generate a fresh midpoint contact sheet and
verify the page still passes the layout gate before rendering the final MP4.
For ordinary use of the V5 perspective-grid background, copy the canonical
rendered loop from 05-视频组件/视频背景/透视网格背景/ into the project's own
assets and loop it continuously as the bottom layer. Verify its SHA-256 against
the bundled assets/perspective-grid-v5/ mirror. Keep playback at 1× and
retain one continuous phase across scene boundaries; do not restart the loop on
every page. Fork the editable source only when ratio, palette, geometry, or
speed must change. A fork is a new background version and must repeat seam,
geometry, contact-sheet, and media-spec QC before becoming a recommended
baseline.
For page-based explainers, keep the base page stable and animate only the necessary components. If the result feels like the whole page is floating, drifting, or shaking, revise before rendering the full video.
After the final narration is concatenated, run ra-audio-to-subtitles before
building the final composition. Render captions from its captions.json; do
not derive subtitle timing from voice_manifest.json segment durations. A
missing or failed caption-qc.json blocks the final render.
Before authoring the caption layer, load skill-captions, read its registered
style contract, and consume the approved captions.json timestamps directly.
Use anchor-dark unless the handoff or user selects another style. Preserve
its shrink-wrap, fixed bottom anchor, native 4K redraw, and no-heavy-shadow
constraints, and test it over both source footage and the lightest page
background. A substantial caption-style change requires a short sample before
the full render.
5. QC And Archive
Read references/delivery-gates.md. At minimum verify:
- for 待制作 queue jobs:
automation/scripts/check_delivery.pyexits 0 against the handoff file, project dir, and final MP4; its output is pasted into the handoff file's 制作端回执,statusbecomes已完成, and01-内容生产/视频工作台/已制作/<月上旬|月下旬>/<日期-主题>/is assembled with the handoff file, the final MP4 copy under成片/, and key QC frames under质检/ - final MP4 exists in the unified workbench delivery location:
视频工作台/已制作/<月上旬|月下旬>/<日期-主题>/成片/for every production route - width, height, frame rate, duration, video codec, audio codec, channels
- representative contact sheets or side-by-side comparisons
- page/scene coverage: every page has a useful illustration or a stated reason for skipping it
- for page-based 16:9 Xiaohei videos, the pre-render contact sheet passes the
xiaohei-16x9-layoutgate: right visual centered, left note card centered, no awkward title wrapping, captions below content, and no persistent bottom-heavy page - for 16:9 Xiaohei page videos, the contact sheet and representative single
frames use the
mobile-readabletypography scale by default and remain readable without zooming when reviewed at reduced size; anydesktop-compactexception must be explicitly justified in the project note - Xiaohei provenance: when Xiaohei is requested or selected by default, the project contains the generated image assets, the render references those assets directly, and a contact sheet confirms the assets appear in the final scenes
- captions do not cover content; the default
anchor-darkpanel fromskill-captionswraps the text, preserves one fixed baseline, remains inside the lower safe zone, and introduces no heavy-filter warning or full-width lower-third - caption artifacts come from
ra-audio-to-subtitles,caption-qc.jsonreportsstatus: pass, timing source isvolcengine-word-timestamps, and alignment coverage meets the contract (0.90 by default) - component order and animation are visible in extracted frames
- asset-embedded text has been compared with authored overlays/chrome and no accidental duplicate semantic label remains
- every narrated hero term, name, number, or reveal passes the semantic-cue
micro-sweep defined in
references/delivery-gates.md - subtitles/audio sync when captions or narration exist
- voice provenance: final narration must identify local IndexTTS2, voice id
pluvio-indextts2-calm-v1, and the canonical reference WAV SHA-256. If the manifest showssay, browser/generic speech, MiniMax, another cloud provider, or any fallback segment, the MP4 is a draft and must not be archived as the recommended final. - reference alignment report when a reference video exists
- when the V5 perspective grid is active: the project uses the canonical loop
at
1×, the phase remains continuous across scene boundaries, and foreground content does not destroy the intentional center whitespace or reduce text readability - publish-title handoff: queue jobs skip this entirely — candidates already
live in the handoff file's 标题候选 section and the user picks manually at
publish time; do not create
视频标题.md. Only for non-queue jobs, usera-video-titleto produce 8-12 candidates after QC, return them for user selection, then create or update视频标题.mdnext to the final MP4. Do not silently overwrite an existing title unless the user has selected the replacement.
Contact sheets and QC frames are required for review. Keep full QC in the
engineering project and copy the key frames into the unified archive at
已制作/<月上旬|月下旬>/<日期-主题>/质检/ for every production route.
Output
Return the recommended final MP4 path, the key QC artifact path, confirmed
specs, and any limitation that remains. For 待制作 queue jobs, also return the
updated handoff file path under 已制作/ with the checker result. Keep the
response concise.