skills/novel-to-short-video/SKILL.md
Convert novel text into a loopable short-form video by extracting the single most compelling story segment, generating images and voiceover, and assembling a Remotion render. Use when users ask to turn novels or chapters into a 50-60 second narrative short, teaser reel, or looping story clip that feels self-contained yet leaves strong lingering curiosity.
npx skillsauth add laitszkin/apollo-toolkit novel-to-short-videoInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
openai-text-to-image-storyboard, docs-to-voice, and remotion-best-practices in that order.roles.json, then generate images, narration, and the final render in sequence.Collect the minimum required inputs before execution:
project_dir (absolute path)content_name (output folder/video name)If critical inputs are missing, ask concise follow-up questions.
titlesource_excerptcore_conflicttension_arc (setup -> escalation -> climax -> aftershock)standalone_story_basislingering_questionvisual_beatsnarration_key_line<project_dir>/docs/plans/<project_dir>/docs/plans/<YYYY-MM-DD>-<chapter_slug>.mdchapter_slug should come from the chapter name/number and be filesystem-safe.assets/plan-template.md[fill_this]).If producing multiple short videos in one request, enforce the same 50-60 second duration for each output.
roles.json for recurring character prompts (required)roles.json, read:
references/roles-json.md<project_dir>/roles/roles.json under:
<project_dir>/roles/roles.jsonroles.json does not exist, create it first before any prompts.json planning or generation.roles.json already exists, read existing role prompts first and reuse matching roles.references/roles-json.md.roles.json with {"characters": []}.openai-text-to-image-storyboard)prompts.json under:
<project_dir>/pictures/<content_name>/prompts.jsonopenai-text-to-image-storyboard.characters from the final roles.json (reused + newly appended roles), then build beat-aligned scenes in narrative order.references/generate-storyboard-images.md,並執行 apltk generate-storyboard-images --help,以 live CLI 指引確認參數。apltk generate-storyboard-images \
--project-dir "<project_dir>" \
--env-file ~/.codex/skills/openai-text-to-image-storyboard/.env \
--content-name "<content_name>" \
--prompts-file "<project_dir>/pictures/<content_name>/prompts.json"
docs-to-voice)references/docs-to-voice.md,並執行 apltk docs-to-voice --help,以 live CLI 指引確認參數。apltk docs-to-voice \
--project-dir "<project_dir>" \
--project-name "<content_name>" \
--text "<loop_narration_script>"
audio_duration_seconds from generated .timeline.json.chars_per_second = cjk_char_count(loop_narration_script) / audio_duration_seconds.say mode: tune --rate (increase when <3.0, decrease when >4.0).api mode: keep voice/model fixed and adjust script length to pull pacing back into range.remotion-best-practices)<project_dir>/video/<content_name>/remotion/rules/compositions.mdrules/audio.mdrules/subtitles.mdrules/transitions.mdrules/animations.mdrules/text-animations.mdrules/light-leaks.md<project_dir>/video/<content_name>/renders/.gitignorePreserve Remotion project sources for user revisions. Do not delete project files after rendering.
Ensure <project_dir>/video/<content_name>/remotion/.gitignore includes at least:
node_modules/
out/
dist/
.cache/
*.log
.DS_Store
Return:
<project_dir>/docs/plans/<YYYY-MM-DD>-<chapter_slug>.md)<project_dir>/roles/roles.json)<project_dir>/pictures/<content_name>/prompts.json)char_count, audio_duration_seconds, chars_per_second)Before finishing, verify all conditions:
docs/plans/ with date + chapter namingassets/plan-template.mdroles.json exists and follows references/roles-json.mdprompts.json uses structured mode and reuses role IDs from roles.json.gitignore is configuredreferences/generate-storyboard-images.md — apltk generate-storyboard-images 工具參考;仍必須以 apltk generate-storyboard-images --help 的 live 輸出確認最新用法。references/docs-to-voice.md — apltk docs-to-voice 工具參考;仍必須以 apltk docs-to-voice --help 的 live 輸出確認最新用法。references/roles-json.md — roles.json 的 schema 與角色一致性規則。development
Guides the agent through creating a new Agent Skill from scratch. Use when the user wants to build a skill, create a new skill, scaffold a skill directory, or author a SKILL.md. Do NOT use for optimising or rewriting existing skills — use 'optimise-skill' for that. Do NOT use for editing files that are already part of a skill. Do NOT use for creating non-skill content like documentation, scripts, or project files.
development
Guides the agent through creating a new Agent Skill from scratch. Use when the user wants to build a skill, create a new skill, scaffold a skill directory, or author a SKILL.md. Do NOT use for optimising or rewriting existing skills — use 'optimise-skill' for that. Do NOT use for editing files that are already part of a skill. Do NOT use for creating non-skill content like documentation, scripts, or project files.
development
Review a pull request — interactive PR selection via `gh`, 4-dimension code review (hallucinated code, architecture, performance, test validity), then post severity-graded comments with fix suggestions on the PR. Not for spec-based review — use `review` instead.
tools
協助完成自動化版本發佈。同步文檔、更新版本號、推送 tag 並建立 GitHub Release。