One-stop overview (long-form → short-form → dual-format info)
This Skill completes three major stages in one go, with 3 STOP checkpointsin between, and each checkpoint muststop and wait for the user to make the call; do not rush ahead automatically:
階段 1 長片:剪口播 → 轉字幕 → 🛑STOP1 疑慮字幕確認 → 時間碼硬關卡 → 標題 → 封面 → 長片 metadata → 打包
階段 2 短片:讀完整字幕 → 亮點偵測 → 🛑STOP2 三候選確認 → 切片組片 → 短片 metadata → 打包
(標題候選為 🛑STOP3,已含在各階段內)
- 🛑 STOP 1(Stage 1 step 3): list questionable terms and wait for the user to correct them; only proceed after applying them.
- 🛑 STOP 2(Stage 2): wait for the user to choose the number for one of the 3 candidate short versions.
- 🛑 STOP 3(step 4 / short step): wait for the user to choose among title candidates.
- Hard checkpoint:
validate_srt.pydoes not pass (inconsistent segment count / timecodes do not match) → abort delivery and report back, must not force output. - Prevent broken words: subtitle sentence splitting relies on
resegment.pycut-point priority order; short clips must always align to subtitle paragraph boundaries,must not cut in the middle of a sentence。
The short-form stage is not mandatory: if the user does not want shorts, stop at the end of Stage 1. Only proceed to Stage 2 if shorts are wanted.
Read first
HANDOFF.mdAGENTS.mdassets/style/reference-thumbnails.pngassets/style/cover-style.mdassets/persona/三師爸人物形象照.png
Codex-specific rules
- Thumbnails use Codex built-in Image2 for image generation; no OpenAI API Key is needed.
- Do not call
skills/cover-image/draw.py; that is the Claude Code / API route. - Every thumbnail must newly reference
assets/persona/三師爸人物形象照.png, and must not carry over the person from the previous thumbnail or a derivative image. - The Codex edition's signature colors are bright blue / electric cyan:
#00D4FF、#0099FF, with a small amount of purple glow#9D4EDD。 - Codex output folders always have the
[Codex]suffix added. - If built-in Image2 cannot actually pass a reference image, you can only constrain the person's features via prompt; if the person does not look like the real person, clearly report the limitation and regenerate or switch to a process that supports image reference.
Process
-
Intake
- Find
raw/'s new videos. - Create
working/<video-id>/。
- Find
-
Cut talking-head
- Read
skills/smart-cut/SKILL.md。 - Run
skills/smart-cut/scripts/smart_cut.py。 - Suggested starting parameters:
--threshold 0.05; for many pauses you can use0.06; for short demo videos you can use--margin "0sec,0.1sec"。 - Output
working/<video-id>/<video-id>.cut.mp4。
- Read
-
Transcribe subtitles
- First use ffmpeg to extract 16kHz mono audio from the cut video.
- Read
skills/audio-to-srt/SKILL.md。 - Process: Groq transcription → resegment → apply_vocab → personally clean the text segment by segment (do not touch timecodes, segment count unchanged) → 🛑 STOP 1 questionable term confirmation(see below) → validate_srt [hard checkpoint] → srt_to_txt.
- If resuming from an intermediate file, first create
_subtitles/;resegment.pywill not automatically create the output folder. - 🛑 STOP 1: questionable term confirmation (must not be skipped)
- Run
python skills/video-editing-and-subtitles/scripts/find_dubious_terms.py "working/<video-id>/_subtitles/<video-id>.vocab.srt" --out "working/<video-id>/_subtitles/dubious_terms.md", to pull out proper nouns and passages with common transliteration errors. - Read
dubious_terms.md, list the questionable passages in the conversation, and stop to ask the user how to change them, don't guess on your own and continue. - After the user replies, use
python skills/video-editing-and-subtitles/scripts/finalize_subtitles.py "<vocab.srt>" --out "<clean.srt>" --replace "舊->新" --replace "段號:舊->新"to apply corrections (for specific paragraphs, use only the390:AGE->Agentformat).
- Run
- Timecode hard gate:
validate_srt.py --raw <vocab.srt> --clean <clean.srt>If the segment count is inconsistent or the timecodes don't match → abort, report the discrepancy, do not deliver。 - Output
working/<video-id>/<video-id>.srtand.txt。
-
Generate titles and pause
- After reading the cleaned text,
.txt。 - generate 10 title candidates to
working/<video-id>/titles.md。 - report the title list, stop and wait for the user to choose a number.
- After reading the cleaned text,
-
Create the Codex output folder
- Clean Windows-illegal characters from the title:
?!:/\?!:/\\<>|"*。 - Create
output/<清洗後標題> [Codex]/。 - Do not add
[Codex]。
- Clean Windows-illegal characters from the title:
-
Generate cover
- Re-read the character reference photo and style guide; do not reuse the old cover.
- Prompt must include:
- Character features: short black hair with a small amount of gray, black rectangular glasses, black long windbreaker hooded jacket, black top, natural smile, teacher demeanor.
- Codex primary colors: bright blue / electric cyan; do not use Claude orange as the primary light.
- Tech teaching style: deep navy blue background, data streams, circuits, AI Agent, lesson plan table.
- Copy the latest image produced by the built-in Image2 to the output folder, named
cover.png。
-
Write metadata (per marketing spec)
- First Read
references/marketing-spec.md(the merged version of the txt v1.5 main spec + channel supplementary fields); always use it as the standard. - UseAfter cleaning the text,
.txttranscriptgenerate; the material must echo the actual subtitle content. Long videometadata.mdmust include at least:- 10 title candidates(alternating curiosity/value/pain-point styles)
- Video description ≤300 characters: Hook + 3 key knowledge points as bullet points + CTA; the first paragraph's emotion should echo the title type selected by the user.
- Social post(FB / IG / Threads):Emoji strictly prohibited, each paragraph ≤3 lines, long video 150–200 characters, sincere teacher tone, end with an interactive question.
- SEO keywords 15–20 + "paste all at once" integrated version tags(separated by half-width commas).
- Chapter timecodes(based on subtitle segments, suggested nature).
- Pre-publish checklist。
- Detailed formatting and short-video override rules are entirely based on
references/marketing-spec.md.
- First Read
-
Package and check
- The output folder should contain:
<標題>.mp4<標題>.srt<標題>.txtcover.pngmetadata.md
- When PowerShell checks paths containing
[Codex], use-LiteralPath。
- The output folder should contain:
-
Update handoff
- Update
HANDOFF.md: completed items, output location, cover status, pending review items, next steps.
- Update
Stage 2: Short video highlights (only run if a short video is needed)
After the long video is finished (already has cut.mp4 + clean.srt), if the user wants a short video,take over skills/short-video-workflow/SKILL.md the complete process. Key gates:
- Mandatory complete read
working/<video-id>/<video-id>.srt: Before extracting highlights, you must first watch the entire subtitle file and understand the timecodes; do not grab snippets without reviewing the whole thing. - Highlight detection: Score each segment 0–3 based on a checklist such as pain points/rhetorical questions/numeric promises/strong assertions/reveal twists.
- 🛑 STOP 2: Confirm three candidate versions
- Assemble 3 versions (A pain-point type / B curiosity type / C promise-type hook), each with a three-act structure, ≤120s, written into
working/<video-id>/shorts-candidates.md。 - List the three versions' timecodes and three-act scripts for the user, stop and wait for the user to choose A/B/C(or the user provides their own timecodes). Do not choose on your own.
- Assemble 3 versions (A pain-point type / B curiosity type / C promise-type hook), each with a three-act structure, ≤120s, written into
- Slice and assemble clips:
clip_cut.pySlice (align to subtitle paragraph boundaries, do not cut in the middle of a sentence) → confirm ≤120s →add_end_card.pyending title card →burn_subtitles.pyburn subtitles →make_vertical.pyproduce a 9:16 vertical version. - Short video title (🛑 STOP 3): Provide 3 shorter, more sensational candidates and wait for the user to choose.
- Short video metadata: Likewise Read
references/marketing-spec.md, apply the "C. Short video differences" overrides (3 titles, description ≤150 characters,#Shortsrequired, add at the end of tagsShorts,短影片)。
Specs: 16:9 editing, ≤120s, primary colors Codex bright blue / electric cyan, output output/<短片標題> [Codex] (Short)/, use Codex built-in Image2 for the cover, do not call draw.py.
Every short video must also have a 9:16 vertical version produced(for YouTube Shorts publishing): after burning subtitles, run skills/short-video-workflow/scripts/make_vertical.py(blurred background fill, content not cropped, 1080×1920), output filename <短片標題>_直式9x16.mp4, 7 files total in the short video folder.
Pitfalls
- The Python used by Codex may differ from Claude Code; if
auto-editoror other packages are missing, install into the currentpython。 auto-editor.exenot being in PATH is okay, as long aspython -m auto_editoris available.- Groq transcription will upload audio to a third-party service; if explicit authorization is required, stop first.
- Chinese filenames, spaces,
[Codex]paths need quotes and-LiteralPath。