@oh-story/dsh 0.1.14 → 0.1.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -10
- package/lib/drama/manifest.json +284 -364
- package/lib/drama/skills/short-drama/SKILL.md +13 -14
- package/lib/drama/skills/short-drama/agents/openai.yaml +1 -1
- package/lib/drama/skills/short-drama/references/audience-reveal.md +4 -4
- package/lib/drama/skills/short-drama/references/contract-and-ownership.md +2 -2
- package/lib/drama/skills/short-drama/references/creator-documents.md +12 -10
- package/lib/drama/skills/short-drama/references/creator-workflow.md +6 -5
- package/lib/drama/skills/short-drama/references/form-cards/Q/347/211/210/350/241/250/350/276/276.md +8 -8
- package/lib/drama/skills/short-drama/references/form-cards//344/272/214/347/273/264/345/212/250/346/200/201/346/274/253.md +5 -5
- package/lib/drama/skills/short-drama/references/form-cards//345/233/275/346/274/253/344/272/214/346/254/241/345/205/203.md +5 -6
- package/lib/drama/skills/short-drama/references/form-cards//345/256/236/346/213/215.md +6 -7
- package/lib/drama/skills/short-drama/references/form-cards//346/260/264/345/242/250/347/254/224/350/247/246.md +2 -3
- package/lib/drama/skills/short-drama/references/form-cards//351/243/216/346/240/274/345/214/226/344/270/211/347/273/264.md +6 -7
- package/lib/drama/skills/short-drama/references/knowhow-index.md +6 -7
- package/lib/drama/skills/short-drama/references/look-development.md +5 -7
- package/lib/drama/skills/short-drama/references/pickup-and-alternate.md +6 -3
- package/lib/drama/skills/short-drama/references/production-form-profiles.md +14 -16
- package/lib/drama/skills/short-drama/references/reference-roles.md +5 -3
- package/lib/drama/skills/short-drama/references/runtime-preflight.md +2 -1
- package/lib/drama/skills/short-drama-assets/SKILL.md +8 -8
- package/lib/drama/skills/short-drama-assets/agents/openai.yaml +1 -1
- package/lib/drama/skills/short-drama-assets/references/asset-review-checklist.md +26 -27
- package/lib/drama/skills/short-drama-assets/references/character-and-look.md +22 -22
- package/lib/drama/skills/short-drama-assets/references/continuity-delta.md +4 -4
- package/lib/drama/skills/short-drama-assets/references/continuity-lock.md +4 -4
- package/lib/drama/skills/short-drama-assets/references/era-anchors.md +3 -3
- package/lib/drama/skills/short-drama-assets/references/identity-vs-variant.md +5 -5
- package/lib/drama/skills/short-drama-assets/references/location-and-view.md +6 -7
- package/lib/drama/skills/short-drama-assets/references/occurrence-extraction.md +8 -9
- package/lib/drama/skills/short-drama-assets/references/prop-and-state.md +8 -11
- package/lib/drama/skills/short-drama-assets/references/voice-direction.md +22 -22
- package/lib/drama/skills/short-drama-develop/SKILL.md +6 -6
- package/lib/drama/skills/short-drama-develop/agents/openai.yaml +1 -1
- package/lib/drama/skills/short-drama-develop/assets/creative-brief.md +2 -2
- package/lib/drama/skills/short-drama-develop/assets/story-engine.md +2 -2
- package/lib/drama/skills/short-drama-develop/references/adaptation-craft.md +13 -12
- package/lib/drama/skills/short-drama-develop/references/creative-reference-intake.md +7 -7
- package/lib/drama/skills/short-drama-develop/references/director-brief-craft.md +7 -8
- package/lib/drama/skills/short-drama-develop/references/episode-design.md +20 -24
- package/lib/drama/skills/short-drama-develop/references/genre-and-hook-playbook.md +7 -7
- package/lib/drama/skills/short-drama-develop/references/genre-cards//344/272/262/345/255/220/351/232/220/347/247/230.md +4 -5
- package/lib/drama/skills/short-drama-develop/references/genre-cards//344/273/231/344/276/240/344/277/256/347/234/237.md +2 -2
- package/lib/drama/skills/short-drama-develop/references/genre-cards//345/212/250/344/275/234/344/273/273/345/212/241.md +1 -1
- package/lib/drama/skills/short-drama-develop/references/genre-cards//345/217/244/350/243/205/346/235/203/350/260/213.md +2 -2
- package/lib/drama/skills/short-drama-develop/references/genre-cards//345/244/215/344/273/207/346/211/223/350/204/270.md +1 -1
- package/lib/drama/skills/short-drama-develop/references/genre-cards//345/256/266/345/272/255/345/205/263/347/263/273.md +1 -1
- package/lib/drama/skills/short-drama-develop/references/genre-cards//346/202/254/347/226/221/350/247/204/345/210/231.md +1 -1
- package/lib/drama/skills/short-drama-develop/references/genre-cards//347/224/237/346/264/273/346/265/201.md +1 -1
- package/lib/drama/skills/short-drama-develop/references/genre-cards//347/240/264/351/225/234/351/207/215/345/234/206.md +4 -5
- package/lib/drama/skills/short-drama-develop/references/genre-cards//350/261/252/351/227/250/345/251/232/346/201/213.md +1 -1
- package/lib/drama/skills/short-drama-develop/references/genre-cards//350/272/253/344/273/275/351/224/231/344/275/215.md +1 -1
- package/lib/drama/skills/short-drama-develop/references/genre-cards//351/200/206/350/242/255.md +1 -1
- package/lib/drama/skills/short-drama-develop/references/genre-cards//351/207/215/347/224/237/347/251/277/350/266/212.md +2 -2
- package/lib/drama/skills/short-drama-develop/references/genre-cards.md +4 -4
- package/lib/drama/skills/short-drama-develop/references/mechanism-loop.md +6 -7
- package/lib/drama/skills/short-drama-develop/references/multi-episode-intake.md +19 -17
- package/lib/drama/skills/short-drama-develop/references/premise-devices.md +5 -5
- package/lib/drama/skills/short-drama-develop/references/reveal-reversal-payoff.md +6 -5
- package/lib/drama/skills/short-drama-develop/references/serial-character-and-memory.md +3 -4
- package/lib/drama/skills/short-drama-develop/references/stage-contract.md +7 -9
- package/lib/drama/skills/short-drama-develop/references/story-craft.md +8 -10
- package/lib/drama/skills/short-drama-edit/SKILL.md +11 -14
- package/lib/drama/skills/short-drama-edit/assets/remotion/README.md +12 -19
- package/lib/drama/skills/short-drama-edit/assets//345/211/252/350/276/221/345/215/225.md +2 -2
- package/lib/drama/skills/short-drama-edit/references/cut-craft.md +5 -4
- package/lib/drama/skills/short-drama-edit/references/generated-footage.md +1 -1
- package/lib/drama/skills/short-drama-edit/references/sound-and-subtitles.md +6 -4
- package/lib/drama/skills/short-drama-edit/references/stage-contract.md +5 -5
- package/lib/drama/skills/short-drama-edit/references/still-cuts.md +1 -1
- package/lib/drama/skills/short-drama-image-prompts/SKILL.md +7 -2
- package/lib/drama/skills/short-drama-image-prompts/agents/openai.yaml +1 -1
- package/lib/drama/skills/short-drama-image-prompts/references/character-and-look.md +4 -5
- package/lib/drama/skills/short-drama-image-prompts/references/common-recipe.md +17 -17
- package/lib/drama/skills/short-drama-image-prompts/references/edit-and-revision.md +10 -9
- package/lib/drama/skills/short-drama-image-prompts/references/location-plate.md +11 -12
- package/lib/drama/skills/short-drama-image-prompts/references/look-and-state-variant.md +6 -5
- package/lib/drama/skills/short-drama-image-prompts/references/lookdev-frame.md +2 -2
- package/lib/drama/skills/short-drama-image-prompts/references/production-sheet-recipes.md +6 -6
- package/lib/drama/skills/short-drama-image-prompts/references/prop-plate.md +8 -8
- package/lib/drama/skills/short-drama-image-prompts/references/review-and-fixtures.md +5 -4
- package/lib/drama/skills/short-drama-novel-analyze/SKILL.md +17 -24
- package/lib/drama/skills/short-drama-novel-analyze/references/adaptation-triage.md +3 -4
- package/lib/drama/skills/short-drama-novel-analyze/references/adaptation-value.md +5 -10
- package/lib/drama/skills/short-drama-novel-analyze/references/aggregation-and-entities.md +4 -6
- package/lib/drama/skills/short-drama-novel-analyze/references/chapter-extraction.md +9 -13
- package/lib/drama/skills/short-drama-novel-analyze/references/stage-contract.md +3 -7
- package/lib/drama/skills/short-drama-produce/SKILL.md +43 -42
- package/lib/drama/skills/short-drama-produce/agents/openai.yaml +1 -1
- package/lib/drama/skills/short-drama-produce/references/adapter-contract.md +31 -18
- package/lib/drama/skills/short-drama-produce/references/providers/gpt-image-2.md +1 -1
- package/lib/drama/skills/short-drama-produce/references/providers/minimax-h3-video.md +11 -6
- package/lib/drama/skills/short-drama-produce/references/providers/minimax-music.md +2 -2
- package/lib/drama/skills/short-drama-produce/references/providers/minimax-speech.md +7 -5
- package/lib/drama/skills/short-drama-produce/references/providers/seedance.md +14 -8
- package/lib/drama/skills/short-drama-review/SKILL.md +9 -9
- package/lib/drama/skills/short-drama-review/agents/openai.yaml +1 -1
- package/lib/drama/skills/short-drama-review/references/anti-template-repair.md +10 -11
- package/lib/drama/skills/short-drama-review/references/production-quality-gates.md +24 -23
- package/lib/drama/skills/short-drama-review/references/project-calibration.md +17 -16
- package/lib/drama/skills/short-drama-review/references/review-method.md +8 -6
- package/lib/drama/skills/short-drama-review/references/rubric-assets-prompts.md +7 -6
- package/lib/drama/skills/short-drama-review/references/rubric-source-analysis.md +17 -10
- package/lib/drama/skills/short-drama-review/references/rubric-story-script.md +29 -25
- package/lib/drama/skills/short-drama-review/references/rubric-visual-motion.md +11 -11
- package/lib/drama/skills/short-drama-review/references/stage-contract.md +3 -2
- package/lib/drama/skills/short-drama-storyboard/SKILL.md +8 -10
- package/lib/drama/skills/short-drama-storyboard/agents/openai.yaml +1 -1
- package/lib/drama/skills/short-drama-storyboard/references/blocking-playbooks.md +8 -11
- package/lib/drama/skills/short-drama-storyboard/references/comic-keyframe-lexicon.md +11 -12
- package/lib/drama/skills/short-drama-storyboard/references/coverage-audition.md +4 -5
- package/lib/drama/skills/short-drama-storyboard/references/keyframe-craft.md +19 -24
- package/lib/drama/skills/short-drama-storyboard/references/lighting-craft.md +1 -1
- package/lib/drama/skills/short-drama-storyboard/references/production-shot-grammar.md +26 -29
- package/lib/drama/skills/short-drama-storyboard/references/review-and-fixtures.md +6 -5
- package/lib/drama/skills/short-drama-storyboard/references/scene-visual-plan.md +2 -2
- package/lib/drama/skills/short-drama-storyboard/references/screenplay-to-keyframe-example.md +4 -4
- package/lib/drama/skills/short-drama-storyboard/references/shot-craft.md +8 -8
- package/lib/drama/skills/short-drama-storyboard/references/shot-revision-identity.md +3 -3
- package/lib/drama/skills/short-drama-video-prompts/SKILL.md +10 -7
- package/lib/drama/skills/short-drama-video-prompts/agents/openai.yaml +1 -1
- package/lib/drama/skills/short-drama-video-prompts/references/camera-audio-continuity.md +63 -61
- package/lib/drama/skills/short-drama-video-prompts/references/delivery-profile.md +20 -18
- package/lib/drama/skills/short-drama-video-prompts/references/generability.md +12 -12
- package/lib/drama/skills/short-drama-video-prompts/references/minimax-h3.md +4 -3
- package/lib/drama/skills/short-drama-video-prompts/references/motion-recipe.md +38 -40
- package/lib/drama/skills/short-drama-video-prompts/references/performance-action-timing.md +36 -36
- package/lib/drama/skills/short-drama-video-prompts/references/production-prompt-grammar.md +17 -21
- package/lib/drama/skills/short-drama-video-prompts/references/review-and-fixtures.md +10 -11
- package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.0.md +1 -1
- package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.5.md +2 -2
- package/lib/drama/skills/short-drama-video-prompts/references/target-model-profile.md +6 -12
- package/lib/drama/skills/short-drama-video-prompts/references/wan-3.0.md +2 -1
- package/lib/drama/skills/short-drama-write/SKILL.md +15 -15
- package/lib/drama/skills/short-drama-write/agents/openai.yaml +1 -1
- package/lib/drama/skills/short-drama-write/assets/screenplay.md +3 -4
- package/lib/drama/skills/short-drama-write/references/dialogue-craft.md +20 -22
- package/lib/drama/skills/short-drama-write/references/production-format-dialect.md +20 -22
- package/lib/drama/skills/short-drama-write/references/scene-handoff-capsule.md +10 -10
- package/lib/drama/skills/short-drama-write/references/scene-sound-dramaturgy.md +11 -9
- package/lib/drama/skills/short-drama-write/references/screenplay-format.md +11 -10
- package/lib/drama/skills/short-drama-write/references/script-craft.md +41 -47
- package/lib/drama/skills/short-drama-write/references/stage-contract.md +7 -5
- package/lib/drama/skills/short-drama-write/references/substitutable-realization.md +19 -25
- package/lib/index.js +80 -17
- package/lib/index.js.map +3 -3
- package/lib/novel-to-game/README.md +8 -9
- package/lib/novel-to-game/README_ZH.md +12 -13
- package/lib/novel-to-game/manifest.json +19 -19
- package/lib/novel-to-game/skills/game-art-direction/SKILL.md +2 -2
- package/lib/novel-to-game/skills/game-build/SKILL.md +2 -0
- package/lib/novel-to-game/skills/game-concept/SKILL.md +1 -1
- package/lib/novel-to-game/skills/game-qa/references/test-design-method.md +1 -1
- package/lib/novel-to-game/skills/game-world-design/SKILL.md +1 -1
- package/lib/novel-to-game/skills/game-world-design/agents/openai.yaml +1 -1
- package/lib/novel-to-game/skills/novel-to-game/references/intake-method.md +4 -4
- package/lib/oh-story/manifest.json +676 -676
- package/lib/oh-story/roles/chapter-extractor.md +10 -10
- package/lib/oh-story/roles/character-designer.md +8 -24
- package/lib/oh-story/roles/consistency-checker.md +3 -5
- package/lib/oh-story/roles/narrative-writer.md +16 -16
- package/lib/oh-story/roles/story-architect.md +8 -11
- package/lib/oh-story/roles/story-explorer.md +7 -9
- package/lib/oh-story/roles/story-researcher.md +8 -8
- package/lib/oh-story/skills/browser-cdp/SKILL.md +19 -18
- package/lib/oh-story/skills/story/SKILL.md +15 -20
- package/lib/oh-story/skills/story/VERSION +1 -1
- package/lib/oh-story/skills/story-cover/SKILL.md +17 -26
- package/lib/oh-story/skills/story-cover/references/cover-styles.md +12 -10
- package/lib/oh-story/skills/story-deslop/SKILL.md +69 -211
- package/lib/oh-story/skills/story-deslop/references/agent-calls.md +17 -3
- package/lib/oh-story/skills/story-deslop/references/banned-words.md +63 -151
- package/lib/oh-story/skills/story-deslop/references/deslop-gates.md +23 -160
- package/lib/oh-story/skills/story-deslop/references/expression.md +76 -0
- package/lib/oh-story/skills/story-deslop/references/narrative-focus.md +63 -0
- package/lib/oh-story/skills/story-deslop/references/story-logic.md +65 -0
- package/lib/oh-story/skills/story-deslop/references/style-resolution.md +5 -5
- package/lib/oh-story/skills/story-import/SKILL.md +8 -13
- package/lib/oh-story/skills/story-import/references/character-state-reverse.md +9 -8
- package/lib/oh-story/skills/story-import/references/deep-analysis.md +5 -5
- package/lib/oh-story/skills/story-import/references/format-and-structure.md +11 -11
- package/lib/oh-story/skills/story-import/references/import-report.md +5 -5
- package/lib/oh-story/skills/story-import/references/import-special-cases.md +4 -4
- package/lib/oh-story/skills/story-import/references/import-tracking.md +5 -5
- package/lib/oh-story/skills/story-import/references/length-routing.md +12 -20
- package/lib/oh-story/skills/story-import/references/outline-reverse-rules.md +3 -3
- package/lib/oh-story/skills/story-import/references/outline-reverse.md +2 -2
- package/lib/oh-story/skills/story-import/references/state-tracking.md +5 -3
- package/lib/oh-story/skills/story-import/references/structure-mapping-long.md +13 -13
- package/lib/oh-story/skills/story-import/references/structure-mapping-short.md +10 -14
- package/lib/oh-story/skills/story-import/references/tracking-initialization.md +2 -2
- package/lib/oh-story/skills/story-import/references/tracking-transaction.md +2 -2
- package/lib/oh-story/skills/story-long-analyze/SKILL.md +8 -8
- package/lib/oh-story/skills/story-long-analyze/references/author-facing.md +9 -9
- package/lib/oh-story/skills/story-long-analyze/references/deconstruction-notes.md +22 -22
- package/lib/oh-story/skills/story-long-analyze/references/final-checks.md +5 -4
- package/lib/oh-story/skills/story-long-analyze/references/index-rebuild.md +9 -3
- package/lib/oh-story/skills/story-long-analyze/references/inspiration-library.md +7 -7
- package/lib/oh-story/skills/story-long-analyze/references/pipeline-ops.md +8 -9
- package/lib/oh-story/skills/story-long-analyze/references/semantic-acceptance-fixtures.md +2 -2
- package/lib/oh-story/skills/story-long-analyze/references/stage1-golden-chapters.md +8 -8
- package/lib/oh-story/skills/story-long-analyze/references/stage2-extraction.md +9 -9
- package/lib/oh-story/skills/story-long-analyze/references/stage3-plot-rhythm.md +15 -15
- package/lib/oh-story/skills/story-long-analyze/references/stage4-characters-settings.md +17 -15
- package/lib/oh-story/skills/story-long-analyze/references/stage5-report.md +8 -6
- package/lib/oh-story/skills/story-long-analyze/references/style-profile-generator.md +19 -16
- package/lib/oh-story/skills/story-long-analyze/references/style-profile-protocol.md +8 -8
- package/lib/oh-story/skills/story-long-analyze/references/synthesis-inputs.md +6 -6
- package/lib/oh-story/skills/story-long-scan/SKILL.md +24 -34
- package/lib/oh-story/skills/story-long-scan/references/genre-trends.md +30 -44
- package/lib/oh-story/skills/story-long-scan/references/platform-ciweimao.md +6 -4
- package/lib/oh-story/skills/story-long-scan/references/platform-fanqie.md +5 -5
- package/lib/oh-story/skills/story-long-scan/references/platform-jjwxc.md +7 -7
- package/lib/oh-story/skills/story-long-scan/references/platform-qidian.md +17 -7
- package/lib/oh-story/skills/story-long-scan/references/platform-qimao.md +16 -4
- package/lib/oh-story/skills/story-long-scan/references/publishing-guide.md +16 -29
- package/lib/oh-story/skills/story-long-scan/references/reader-profiling.md +26 -39
- package/lib/oh-story/skills/story-long-scan/references/topic-decision.md +10 -11
- package/lib/oh-story/skills/story-long-write/SKILL.md +9 -10
- package/lib/oh-story/skills/story-long-write/references/agent-calls.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/artifact-protocols.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/author-memory-maintenance.md +11 -9
- package/lib/oh-story/skills/story-long-write/references/author-memory.md +8 -8
- package/lib/oh-story/skills/story-long-write/references/banned-words.md +63 -151
- package/lib/oh-story/skills/story-long-write/references/benchmark-recall.md +2 -2
- package/lib/oh-story/skills/story-long-write/references/character-basics.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/character-design-methods.md +4 -4
- package/lib/oh-story/skills/story-long-write/references/character-relations.md +4 -4
- package/lib/oh-story/skills/story-long-write/references/commercial-core-methods.md +7 -6
- package/lib/oh-story/skills/story-long-write/references/cross-book-recall.md +1 -1
- package/lib/oh-story/skills/story-long-write/references/deslop-gates.md +23 -160
- package/lib/oh-story/skills/story-long-write/references/dialogue-mastery.md +19 -22
- package/lib/oh-story/skills/story-long-write/references/emotion-on-page.md +2 -2
- package/lib/oh-story/skills/story-long-write/references/emotional-arc-design.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/emotional-methods.md +28 -27
- package/lib/oh-story/skills/story-long-write/references/expression.md +76 -0
- package/lib/oh-story/skills/story-long-write/references/female-audience-writing.md +3 -4
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//344/270/234/346/226/271/344/273/231/344/276/240.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//344/274/240/347/273/237/347/216/204/345/271/273.md +2 -2
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//345/216/206/345/217/262/345/217/244/344/273/243.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//345/216/206/345/217/262/350/204/221/346/264/236.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//345/217/214/347/224/267/344/270/273.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//345/217/244/350/250/200/350/204/221/346/264/236.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//345/217/244/351/243/216/344/270/226/346/203/205.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//345/245/263/351/242/221/346/202/254/347/226/221.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//345/245/263/351/242/221/347/247/215/347/224/260.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//345/256/253/346/226/227/345/256/205/346/226/227.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//345/271/264/344/273/243.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//345/277/253/347/251/277.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//346/202/254/347/226/221/347/201/265/345/274/202.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//346/202/254/347/226/221/350/204/221/346/264/236.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//346/210/230/347/245/236/350/265/230/345/251/277.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//346/212/227/346/210/230/350/260/215/346/210/230.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//346/230/237/345/205/211/347/222/200/347/222/250.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//346/260/221/345/233/275/350/250/200/346/203/205.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//346/270/270/346/210/217/344/275/223/350/202/262.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//347/216/204/345/271/273/350/204/221/346/264/236.md +4 -4
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//347/216/204/345/271/273/350/250/200/346/203/205.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//347/216/260/350/250/200/350/204/221/346/264/236.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//347/247/221/345/271/273/346/234/253/344/270/226.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//350/201/214/345/234/272/345/251/232/346/201/213.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//350/245/277/346/226/271/345/245/207/345/271/273.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//350/261/252/351/227/250/346/200/273/350/243/201.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//351/203/275/345/270/202/344/277/256/347/234/237.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//351/203/275/345/270/202/346/227/245/345/270/270.md +2 -2
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//351/203/275/345/270/202/347/247/215/347/224/260.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//351/203/275/345/270/202/350/204/221/346/264/236.md +4 -4
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//351/203/275/345/270/202/351/253/230/346/255/246.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//351/235/222/346/230/245/347/224/234/345/256/240.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards.md +7 -7
- package/lib/oh-story/skills/story-long-write/references/genre-readers.md +32 -39
- package/lib/oh-story/skills/story-long-write/references/long-chapter-hooks.md +1 -1
- package/lib/oh-story/skills/story-long-write/references/long-chapter-quality.md +2 -2
- package/lib/oh-story/skills/story-long-write/references/long-format.md +2 -2
- package/lib/oh-story/skills/story-long-write/references/long-genre-catalog.md +13 -13
- package/lib/oh-story/skills/story-long-write/references/long-genre-mechanics.md +2 -2
- package/lib/oh-story/skills/story-long-write/references/long-reversal.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/long-suspense.md +3 -5
- package/lib/oh-story/skills/story-long-write/references/narrative-focus.md +63 -0
- package/lib/oh-story/skills/story-long-write/references/opening-design.md +4 -4
- package/lib/oh-story/skills/story-long-write/references/outline-conflict.md +4 -4
- package/lib/oh-story/skills/story-long-write/references/outline-methods.md +4 -4
- package/lib/oh-story/skills/story-long-write/references/outline-rhythm.md +2 -2
- package/lib/oh-story/skills/story-long-write/references/outline-structure-theory.md +10 -11
- package/lib/oh-story/skills/story-long-write/references/plot-core-methods.md +5 -5
- package/lib/oh-story/skills/story-long-write/references/plot-emotion-system.md +8 -8
- package/lib/oh-story/skills/story-long-write/references/plot-frameworks.md +5 -6
- package/lib/oh-story/skills/story-long-write/references/plot-special-topics.md +7 -5
- package/lib/oh-story/skills/story-long-write/references/project-files.md +4 -4
- package/lib/oh-story/skills/story-long-write/references/reader-contract-and-progression.md +1 -1
- package/lib/oh-story/skills/story-long-write/references/reference-index.md +3 -5
- package/lib/oh-story/skills/story-long-write/references/stop-and-fix.md +1 -1
- package/lib/oh-story/skills/story-long-write/references/story-logic.md +65 -0
- package/lib/oh-story/skills/story-long-write/references/style-combat-face.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/style-craft.md +8 -29
- package/lib/oh-story/skills/story-long-write/references/style-genre-modules.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/style-resolution.md +5 -5
- package/lib/oh-story/skills/story-long-write/references/tracking-initialization.md +2 -2
- package/lib/oh-story/skills/story-long-write/references/tracking-transaction.md +2 -2
- package/lib/oh-story/skills/story-long-write/references/workflow-chapter.md +5 -4
- package/lib/oh-story/skills/story-long-write/references/workflow-daily.md +3 -2
- package/lib/oh-story/skills/story-long-write/references/workflow-outline.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/workflow-revision.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/workflow-setup.md +1 -1
- package/lib/oh-story/skills/story-long-write/references/workflow-volume.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/writer-prompt-fallback.md +2 -2
- package/lib/oh-story/skills/story-long-write/references/writing-craft.md +25 -24
- package/lib/oh-story/skills/story-long-write/scripts/author_memory_commit.py +61 -58
- package/lib/oh-story/skills/story-long-write/scripts/build_writer_prompt.py +87 -20
- package/lib/oh-story/skills/story-review/SKILL.md +16 -31
- package/lib/oh-story/skills/story-review/references/agent-prompts.md +10 -12
- package/lib/oh-story/skills/story-review/references/banned-words.md +63 -151
- package/lib/oh-story/skills/story-review/references/batch-review.md +4 -4
- package/lib/oh-story/skills/story-review/references/character-relations.md +4 -4
- package/lib/oh-story/skills/story-review/references/dialogue-mastery.md +19 -22
- package/lib/oh-story/skills/story-review/references/expression.md +76 -0
- package/lib/oh-story/skills/story-review/references/narrative-focus.md +63 -0
- package/lib/oh-story/skills/story-review/references/plot-core-methods.md +5 -5
- package/lib/oh-story/skills/story-review/references/quality-rubric.md +5 -5
- package/lib/oh-story/skills/story-review/references/review-quality.md +16 -19
- package/lib/oh-story/skills/story-review/references/review-tracking.md +5 -5
- package/lib/oh-story/skills/story-review/references/rubrics/fanqie.md +6 -5
- package/lib/oh-story/skills/story-review/references/rubrics/qidian.md +6 -5
- package/lib/oh-story/skills/story-review/references/rubrics/zhihu.md +7 -8
- package/lib/oh-story/skills/story-review/references/solo.md +5 -5
- package/lib/oh-story/skills/story-review/references/story-logic.md +65 -0
- package/lib/oh-story/skills/story-review/references/style-resolution.md +5 -5
- package/lib/oh-story/skills/story-review/references/tracking-initialization.md +2 -2
- package/lib/oh-story/skills/story-review/references/tracking-transaction.md +2 -2
- package/lib/oh-story/skills/story-setup/SKILL.md +18 -18
- package/lib/oh-story/skills/story-setup/references/agent-references/agent-quality.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/agent-reference-profiles.md +3 -4
- package/lib/oh-story/skills/story-setup/references/agent-references/banned-words.md +63 -151
- package/lib/oh-story/skills/story-setup/references/agent-references/benchmark-style-load.md +9 -9
- package/lib/oh-story/skills/story-setup/references/agent-references/character-basics.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/character-design-methods.md +4 -4
- package/lib/oh-story/skills/story-setup/references/agent-references/character-relations.md +4 -4
- package/lib/oh-story/skills/story-setup/references/agent-references/deslop-gates.md +23 -160
- package/lib/oh-story/skills/story-setup/references/agent-references/dialogue-mastery.md +19 -22
- package/lib/oh-story/skills/story-setup/references/agent-references/emotion-on-page.md +2 -2
- package/lib/oh-story/skills/story-setup/references/agent-references/emotional-arc-design.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/expression.md +76 -0
- package/lib/oh-story/skills/story-setup/references/agent-references/format-and-structure.md +11 -11
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//344/270/234/346/226/271/344/273/231/344/276/240.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//344/274/240/347/273/237/347/216/204/345/271/273.md +2 -2
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//345/216/206/345/217/262/345/217/244/344/273/243.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//345/216/206/345/217/262/350/204/221/346/264/236.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//345/217/214/347/224/267/344/270/273.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//345/217/244/350/250/200/350/204/221/346/264/236.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//345/217/244/351/243/216/344/270/226/346/203/205.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//345/245/263/351/242/221/346/202/254/347/226/221.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//345/245/263/351/242/221/347/247/215/347/224/260.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//345/256/253/346/226/227/345/256/205/346/226/227.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//345/271/264/344/273/243.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//345/277/253/347/251/277.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//346/202/254/347/226/221/347/201/265/345/274/202.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//346/202/254/347/226/221/350/204/221/346/264/236.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//346/210/230/347/245/236/350/265/230/345/251/277.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//346/212/227/346/210/230/350/260/215/346/210/230.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//346/230/237/345/205/211/347/222/200/347/222/250.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//346/260/221/345/233/275/350/250/200/346/203/205.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//346/270/270/346/210/217/344/275/223/350/202/262.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//347/216/204/345/271/273/350/204/221/346/264/236.md +4 -4
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//347/216/204/345/271/273/350/250/200/346/203/205.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//347/216/260/350/250/200/350/204/221/346/264/236.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//347/247/221/345/271/273/346/234/253/344/270/226.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//350/201/214/345/234/272/345/251/232/346/201/213.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//350/245/277/346/226/271/345/245/207/345/271/273.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//350/261/252/351/227/250/346/200/273/350/243/201.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//351/203/275/345/270/202/344/277/256/347/234/237.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//351/203/275/345/270/202/346/227/245/345/270/270.md +2 -2
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//351/203/275/345/270/202/347/247/215/347/224/260.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//351/203/275/345/270/202/350/204/221/346/264/236.md +4 -4
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//351/203/275/345/270/202/351/253/230/346/255/246.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//351/235/222/346/230/245/347/224/234/345/256/240.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards.md +7 -7
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-readers.md +33 -41
- package/lib/oh-story/skills/story-setup/references/agent-references/long-chapter-hooks.md +1 -1
- package/lib/oh-story/skills/story-setup/references/agent-references/long-emotional-methods.md +28 -27
- package/lib/oh-story/skills/story-setup/references/agent-references/long-genre-catalog.md +13 -13
- package/lib/oh-story/skills/story-setup/references/agent-references/long-genre-mechanics.md +2 -2
- package/lib/oh-story/skills/story-setup/references/agent-references/long-quality.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/long-reversal.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/long-suspense.md +3 -5
- package/lib/oh-story/skills/story-setup/references/agent-references/narrative-focus.md +63 -0
- package/lib/oh-story/skills/story-setup/references/agent-references/opening-design.md +4 -4
- package/lib/oh-story/skills/story-setup/references/agent-references/outline-conflict.md +4 -4
- package/lib/oh-story/skills/story-setup/references/agent-references/outline-methods.md +4 -4
- package/lib/oh-story/skills/story-setup/references/agent-references/outline-rhythm.md +2 -2
- package/lib/oh-story/skills/story-setup/references/agent-references/plot-core-methods.md +5 -5
- package/lib/oh-story/skills/story-setup/references/agent-references/short-chapter-hooks.md +14 -34
- package/lib/oh-story/skills/story-setup/references/agent-references/short-emotional-methods.md +7 -9
- package/lib/oh-story/skills/story-setup/references/agent-references/short-genre-formulas.md +8 -10
- package/lib/oh-story/skills/story-setup/references/agent-references/short-paragraph-hooks.md +11 -12
- package/lib/oh-story/skills/story-setup/references/agent-references/short-quality.md +6 -4
- package/lib/oh-story/skills/story-setup/references/agent-references/short-reversal.md +11 -11
- package/lib/oh-story/skills/story-setup/references/agent-references/story-logic.md +65 -0
- package/lib/oh-story/skills/story-setup/references/agent-references/style-combat-face.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/style-genre-modules.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/style-resolution.md +5 -5
- package/lib/oh-story/skills/story-setup/references/agent-references/writing-craft.md +25 -24
- package/lib/oh-story/skills/story-setup/references/diagnostics.md +4 -4
- package/lib/oh-story/skills/story-short-analyze/SKILL.md +5 -15
- package/lib/oh-story/skills/story-short-analyze/references/analysis-character-basics.md +91 -111
- package/lib/oh-story/skills/story-short-analyze/references/analysis-character-design.md +85 -97
- package/lib/oh-story/skills/story-short-analyze/references/analysis-character-relations.md +72 -83
- package/lib/oh-story/skills/story-short-analyze/references/analysis-method.md +7 -7
- package/lib/oh-story/skills/story-short-analyze/references/analysis-paragraph-hooks.md +28 -30
- package/lib/oh-story/skills/story-short-analyze/references/analysis-reader-profile.md +59 -66
- package/lib/oh-story/skills/story-short-analyze/references/analysis-report-style.md +1 -3
- package/lib/oh-story/skills/story-short-analyze/references/analysis-short-genres.md +2 -2
- package/lib/oh-story/skills/story-short-analyze/references/analysis-short-hooks.md +3 -3
- package/lib/oh-story/skills/story-short-analyze/references/analysis-short-mechanics.md +3 -3
- package/lib/oh-story/skills/story-short-analyze/references/analysis-short-patterns.md +2 -2
- package/lib/oh-story/skills/story-short-analyze/references/analysis-short-suspense.md +2 -2
- package/lib/oh-story/skills/story-short-analyze/references/analysis-writing-techniques.md +76 -89
- package/lib/oh-story/skills/story-short-analyze/references/deconstruction-examples.md +5 -5
- package/lib/oh-story/skills/story-short-analyze/references/optional-modules.md +3 -3
- package/lib/oh-story/skills/story-short-analyze/references/output-contract.md +13 -24
- package/lib/oh-story/skills/story-short-analyze/references/quality-checklist.md +3 -3
- package/lib/oh-story/skills/story-short-analyze/references/real-market-data.md +24 -25
- package/lib/oh-story/skills/story-short-analyze/references/source-story-quality.md +44 -46
- package/lib/oh-story/skills/story-short-analyze/references/stage2-3-structure-emotion.md +14 -12
- package/lib/oh-story/skills/story-short-analyze/references/stage4-6-reversal-summary.md +17 -17
- package/lib/oh-story/skills/story-short-analyze/references/zhihu-style.md +11 -11
- package/lib/oh-story/skills/story-short-scan/SKILL.md +22 -29
- package/lib/oh-story/skills/story-short-scan/references/manual-rank-input.md +3 -3
- package/lib/oh-story/skills/story-short-scan/references/platform-dianzhong.md +2 -2
- package/lib/oh-story/skills/story-short-scan/references/platform-heiyan.md +2 -2
- package/lib/oh-story/skills/story-short-scan/references/real-market-data.md +24 -25
- package/lib/oh-story/skills/story-short-scan/references/topic-match.md +3 -3
- package/lib/oh-story/skills/story-short-write/SKILL.md +20 -23
- package/lib/oh-story/skills/story-short-write/references/agent-calls.md +4 -4
- package/lib/oh-story/skills/story-short-write/references/author-memory-maintenance.md +11 -9
- package/lib/oh-story/skills/story-short-write/references/author-memory.md +8 -8
- package/lib/oh-story/skills/story-short-write/references/banned-words.md +63 -151
- package/lib/oh-story/skills/story-short-write/references/benchmark-recall.md +8 -8
- package/lib/oh-story/skills/story-short-write/references/cross-book-recall.md +11 -11
- package/lib/oh-story/skills/story-short-write/references/deslop-gates.md +34 -0
- package/lib/oh-story/skills/story-short-write/references/dialogue-mastery.md +19 -22
- package/lib/oh-story/skills/story-short-write/references/emotional-methods.md +7 -9
- package/lib/oh-story/skills/story-short-write/references/expression.md +76 -0
- package/lib/oh-story/skills/story-short-write/references/genre-styles//344/270/226/346/203/205/346/211/223/350/204/270.md +9 -9
- package/lib/oh-story/skills/story-short-write/references/genre-styles//345/217/214/347/224/267/344/270/273.md +15 -15
- package/lib/oh-story/skills/story-short-write/references/genre-styles//345/244/215/344/273/207/346/211/223/350/204/270.md +9 -9
- package/lib/oh-story/skills/story-short-write/references/genre-styles//345/256/205/346/226/227/345/256/253/346/226/227.md +14 -14
- package/lib/oh-story/skills/story-short-write/references/genre-styles//346/200/273/350/243/201/350/261/252/351/227/250.md +11 -11
- package/lib/oh-story/skills/story-short-write/references/genre-styles//346/202/254/347/226/221.md +9 -9
- package/lib/oh-story/skills/story-short-write/references/genre-styles//346/260/221/344/277/227/346/200/252/350/260/210.md +14 -13
- package/lib/oh-story/skills/story-short-write/references/genre-styles//346/262/231/351/233/225/350/204/221/346/264/236.md +12 -12
- package/lib/oh-story/skills/story-short-write/references/genre-styles//347/224/234/345/256/240.md +8 -8
- package/lib/oh-story/skills/story-short-write/references/genre-styles//350/277/275/345/246/273/347/201/253/350/221/254/345/234/272.md +12 -12
- package/lib/oh-story/skills/story-short-write/references/genre-writing-formulas.md +8 -10
- package/lib/oh-story/skills/story-short-write/references/hooks-chapter.md +14 -34
- package/lib/oh-story/skills/story-short-write/references/hooks-paragraph.md +11 -12
- package/lib/oh-story/skills/story-short-write/references/narrative-focus.md +63 -0
- package/lib/oh-story/skills/story-short-write/references/output-contract.md +13 -24
- package/lib/oh-story/skills/story-short-write/references/reference-index.md +3 -4
- package/lib/oh-story/skills/story-short-write/references/scene-craft.md +8 -7
- package/lib/oh-story/skills/story-short-write/references/short-craft.md +16 -18
- package/lib/oh-story/skills/story-short-write/references/short-deslop.md +12 -125
- package/lib/oh-story/skills/story-short-write/references/short-format.md +9 -13
- package/lib/oh-story/skills/story-short-write/references/short-prose-quality.md +18 -35
- package/lib/oh-story/skills/story-short-write/references/short-reversal.md +11 -11
- package/lib/oh-story/skills/story-short-write/references/story-logic.md +65 -0
- package/lib/oh-story/skills/story-short-write/references/style-resolution.md +5 -5
- package/lib/oh-story/skills/story-short-write/references/submission-craft.md +8 -8
- package/lib/oh-story/skills/story-short-write/references/villain-and-reveal.md +11 -13
- package/lib/oh-story/skills/story-short-write/references/workflow-design.md +11 -9
- package/lib/oh-story/skills/story-short-write/references/workflow-draft.md +10 -10
- package/lib/oh-story/skills/story-short-write/references/workflow-revision.md +10 -9
- package/lib/oh-story/skills/story-short-write/references/writing-workflow.md +4 -4
- package/lib/oh-story/skills/story-short-write/scripts/author_memory_commit.py +61 -58
- package/lib/types/role-tool.d.ts +42 -2
- package/lib/types/role-tool.d.ts.map +1 -1
- package/lib/types/skill-provider.d.ts.map +1 -1
- package/lib/video-recap/CHANGELOG.md +8 -0
- package/lib/video-recap/README.en.md +8 -10
- package/lib/video-recap/README.md +8 -8
- package/lib/video-recap/manifest.json +48 -48
- package/lib/video-recap/skills/video-assemble/SKILL.md +5 -8
- package/lib/video-recap/skills/video-assemble/references/audio-modes.md +3 -3
- package/lib/video-recap/skills/video-assemble/references/jianying/SOURCE.md +1 -2
- package/lib/video-recap/skills/video-assemble/references/packaging.md +1 -2
- package/lib/video-recap/skills/video-assemble/references/source-score.md +5 -6
- package/lib/video-recap/skills/video-cut/SKILL.md +3 -7
- package/lib/video-recap/skills/video-cut/references/shot-review.md +1 -1
- package/lib/video-recap/skills/video-recap/SKILL.md +7 -11
- package/lib/video-recap/skills/video-recap/references/audio-routing.md +1 -2
- package/lib/video-recap/skills/video-recap/references/config-playbook.md +5 -7
- package/lib/video-recap/skills/video-recap/references/data-schema.md +8 -8
- package/lib/video-recap/skills/video-recap/references/resource-library.md +2 -2
- package/lib/video-recap/skills/video-reference/SKILL.md +4 -8
- package/lib/video-recap/skills/video-reference/references/reference-schema.md +1 -1
- package/lib/video-recap/skills/video-script/SKILL.md +4 -13
- package/lib/video-recap/skills/video-script/references/creative-editing-playbook.md +2 -2
- package/lib/video-recap/skills/video-understanding/SKILL.md +10 -6
- package/lib/video-recap/skills/video-understanding/references/data-schema.md +2 -2
- package/lib/video-recap/skills/video-voiceover/SKILL.md +3 -11
- package/lib/video-recap/skills/video-voiceover/references/index-tts.md +1 -2
- package/package.json +25 -24
- package/lib/drama/skills/short-drama-image-prompts/assets/image-prompt-spec.jsonl.md +0 -187
- package/lib/drama/skills/short-drama-image-prompts/assets/image-prompts.md +0 -42
- package/lib/drama/skills/short-drama-image-prompts/assets/lookdev-frame-spec.jsonl.md +0 -128
- package/lib/drama/skills/short-drama-image-prompts/assets/lookdev-prompts.md +0 -34
- package/lib/drama/skills/short-drama-storyboard/assets/coverage-template.json +0 -49
- package/lib/drama/skills/short-drama-storyboard/assets/keyframe-prompts.md +0 -36
- package/lib/drama/skills/short-drama-storyboard/assets/keyframe-template.jsonl +0 -2
- package/lib/drama/skills/short-drama-storyboard/assets/shot-template.jsonl +0 -2
- package/lib/drama/skills/short-drama-video-prompts/assets/delivery-container.jsonl.md +0 -101
- package/lib/drama/skills/short-drama-video-prompts/assets/motion-spec.jsonl.md +0 -217
- package/lib/drama/skills/short-drama-video-prompts/assets/music-spec.jsonl.md +0 -31
- package/lib/drama/skills/short-drama-video-prompts/assets/video-prompts.md +0 -67
- package/lib/drama/skills/short-drama-write/assets/beats.jsonl +0 -2
- package/lib/drama/skills/short-drama-write/assets/episode-card-standalone.json +0 -120
- package/lib/drama/skills/short-drama-write/assets/episode-card.json +0 -55
- package/lib/drama/skills/short-drama-write/assets/voice-record-sheet.jsonl.md +0 -89
- package/lib/oh-story/skills/story/references/author-memory-maintenance.md +0 -75
- package/lib/oh-story/skills/story/references/author-memory.md +0 -117
- package/lib/oh-story/skills/story/scripts/author_memory_commit.py +0 -1635
- package/lib/oh-story/skills/story-deslop/references/anti-ai-writing.md +0 -556
- package/lib/oh-story/skills/story-deslop/references/author-memory-maintenance.md +0 -75
- package/lib/oh-story/skills/story-deslop/references/author-memory.md +0 -117
- package/lib/oh-story/skills/story-deslop/scripts/author_memory_commit.py +0 -1635
- package/lib/oh-story/skills/story-long-write/references/anti-ai-writing.md +0 -556
- package/lib/oh-story/skills/story-review/references/anti-ai-writing.md +0 -556
- package/lib/oh-story/skills/story-review/references/author-memory-maintenance.md +0 -75
- package/lib/oh-story/skills/story-review/references/author-memory.md +0 -117
- package/lib/oh-story/skills/story-review/scripts/author_memory_commit.py +0 -1635
- package/lib/oh-story/skills/story-setup/references/agent-references/anti-ai-writing.md +0 -556
- package/lib/oh-story/skills/story-setup/references/agent-references/short-suspense.md +0 -352
- package/lib/oh-story/skills/story-short-write/references/genre-writing-techniques.md +0 -490
- package/lib/oh-story/skills/story-short-write/references/short-suspense.md +0 -352
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
<!-- Last synced with README.md: 2026-09-20 -->
|
|
2
|
-
|
|
3
1
|
<p align="center">
|
|
4
2
|
<img src="https://zenstory.ai/brand/zenstory-ai-mark.svg" alt="" width="76" height="76">
|
|
5
3
|
</p>
|
|
@@ -23,7 +21,7 @@
|
|
|
23
21
|
<p align="center">
|
|
24
22
|
<a href="https://github.com/zenstory-ai/video-recap-skills/stargazers"><img alt="Stars" src="https://img.shields.io/github/stars/zenstory-ai/video-recap-skills?style=flat-square&color=22D3EE&logo=github&logoColor=white&label=Stars"></a>
|
|
25
23
|
<a href="https://github.com/zenstory-ai/video-recap-skills/releases/latest"><img alt="Release" src="https://img.shields.io/github/v/release/zenstory-ai/video-recap-skills?style=flat-square&color=081431&label=Release"></a>
|
|
26
|
-
<img alt="Skills
|
|
24
|
+
<img alt="Skills 7" src="https://img.shields.io/badge/Skills-7-081431?style=flat-square">
|
|
27
25
|
<a href="https://www.python.org/"><img alt="Python 3.10%2B" src="https://img.shields.io/badge/Python-3.10%2B-3776AB?style=flat-square&logo=python&logoColor=white"></a>
|
|
28
26
|
<a href="https://github.com/zenstory-ai/video-recap-skills/actions/workflows/skill-validate.yml"><img alt="CI" src="https://img.shields.io/github/actions/workflow/status/zenstory-ai/video-recap-skills/skill-validate.yml?style=flat-square&label=CI"></a>
|
|
29
27
|
<a href="https://platform.xiaomimimo.com"><img alt="AI Xiaomi%20MiMo" src="https://img.shields.io/badge/AI-Xiaomi%20MiMo-34A853?style=flat-square"></a>
|
|
@@ -43,16 +41,16 @@ The 59-second landscape recap above, *Guohuo (这一秒过火)*, is the final de
|
|
|
43
41
|
Seven skills (six for production plus one on-demand reference skill) install into Claude Code, Codex CLI, OpenCode, or OpenClaw. You give the video paths and the recap you want in plain language; the agent understands picture and dialogue, decides the story and audiovisual plan, cuts, writes, voices, mixes, and subtitles. Supported inputs: `.mp4 / .mov / .mkv / .webm`.
|
|
44
42
|
|
|
45
43
|
- **One key, ffmpeg locally.** ASR, VLM, and TTS all go through [Xiaomi MiMo](https://platform.xiaomimimo.com); the local runtime is Python's standard library plus `ffmpeg`, with no GPU, no `pip install`, and no model downloads. Voiceover can switch to Fish Audio, which replaces only that stage.
|
|
46
|
-
- **The editorial decision comes before the sound allocation.**
|
|
47
|
-
- **Cut first, narrate second, so the timeline is aligned by construction.** Cut mode renders the shortened video first and writes narration against that output timeline; feed several videos at once and pick ranges by `source_id` to cut one story spine;
|
|
44
|
+
- **The editorial decision comes before the sound allocation.** For a new concept, the agent compares viable edit directions; for a directed task or viewing feedback, it follows the current decisions. It records the viewer promise, POV, dramatic question, and change-based beats in `recap_story_plan.json`, then assigns each beat a picture job and an audio owner: narration is voiced as a block only when it has a defined job, and strong dialogue, action sound, or silence may own an entire beat.
|
|
45
|
+
- **Cut first, narrate second, so the timeline is aligned by construction.** Cut mode renders the shortened video first and writes narration against that output timeline; feed several videos at once and pick ranges by `source_id` to cut one story spine; analysis can be saved to a filesystem material library and reused when the source and settings match.
|
|
48
46
|
- **Keep editing after the render.** The multi-track `timeline.json` exports to a JianYing draft with editable source clips, narration, BGM, subtitles, and image overlays; drop in an accurate subtitle file and it becomes the preferred source for original-dialogue captions.
|
|
49
|
-
- **Every step leaves a record you can check.** Narration lint, assembly QC,
|
|
47
|
+
- **Every step leaves a record you can check.** Narration lint, assembly QC, and final QC produce machine-readable reports. Viewing revisions can separately record changes, frozen items, and verification.
|
|
50
48
|
|
|
51
49
|
## Install
|
|
52
50
|
|
|
53
51
|
### ClawHub
|
|
54
52
|
|
|
55
|
-
ClawHub
|
|
53
|
+
ClawHub entries and dependencies are governed by the [explicit publish inventory](.clawhub/publish.json). The `video-recap` orchestrator remains `blocked` pending verification of companion installation under one skills root. For the complete workflow, install the plugin bundle or source checkout below.
|
|
56
54
|
|
|
57
55
|
|
|
58
56
|
Prerequisites: Python 3.10 or newer, `ffmpeg` on `PATH`, and one [Xiaomi MiMo](https://platform.xiaomimimo.com) API key. Subtitles are burned in by default, which needs an ffmpeg with libass. Homebrew's stock `ffmpeg` has no libass: the default run then skips the burn, ships a same-name `.srt` sidecar next to the recap, and records a warning in `final_qc.json` (an explicit `--burn-subtitles` stops before the run starts instead). Narration that adds on-screen text overlays (`visual_overlays`) also needs an ffmpeg with drawtext, and stops before voiceover without it. To burn subtitles on macOS, use `brew install ffmpeg-full` (keg-only: put its `bin` first on `PATH`).
|
|
@@ -329,7 +327,7 @@ Use /path/to/ep1.mp4 and /path/to/ep2.mp4 to make one ten-minute recap with a sh
|
|
|
329
327
|
|
|
330
328
|
> I have permission to use 〈local video〉 and am supplying checked picture and dialogue records for it. Propose only the sound handoff for this material: which full dialogue line, action sound or pause to preserve, where narration is needed, and which record supports each choice. List missing evidence rather than inventing motives or unseen events. Return beat notes and necessary narration drafts without calling TTS or rendering.
|
|
331
329
|
|
|
332
|
-
|
|
330
|
+
For a complete production request, the agent handles understanding, story and audiovisual planning, cutting, scripting, voiceover, and assembly. A text-only handoff stops at the requested scope. In cut mode it first chooses the footage, renders the shortened video, and only then writes narration on the output timeline; the internal pauses and resumes are the agent's job too.
|
|
333
331
|
|
|
334
332
|
## Workflow and the seven skills
|
|
335
333
|
|
|
@@ -408,7 +406,7 @@ Use /path/to/library as the resource library: register this BGM, this font and t
|
|
|
408
406
|
template for 1080x1920 for me to adopt, then render this series with /path/to/series/recap_project.json binding them.
|
|
409
407
|
```
|
|
410
408
|
|
|
411
|
-
Resources, templates and sample films are JSON records in your own directory; licence and "adopted" status are only ever set by you. A binding that conflicts with an explicit setting, or a template whose canvas differs from the output, stops the run before voicing. Each
|
|
409
|
+
Resources, templates and sample films are JSON records in your own directory; licence and "adopted" status are only ever set by you. A binding that conflicts with an explicit setting, or a template whose canvas differs from the output, stops the run before voicing. Each run writes `work_dir/resource_lock.json`, listing what it actually used and whether the licences are clear. Format: [resource library, templates and samples](skills/video-recap/references/resource-library.md).
|
|
412
410
|
|
|
413
411
|
**Browse projects, runs and the library in a local page (read-only):**
|
|
414
412
|
|
|
@@ -432,7 +430,7 @@ Yes. Understanding relies on the VLM reading the picture and does not require ex
|
|
|
432
430
|
|
|
433
431
|
### A long video hit a 429 or was interrupted halfway. Do I start over?
|
|
434
432
|
|
|
435
|
-
|
|
433
|
+
VLM analysis saves completed scenes and retries suspected rate limits once with lower concurrency. Persistent failures remain visible. After addressing the cause, repeat the same command to reuse matching scene caches and continue. Use the original command after writing `narration.json` too. In cut mode, `recap_phase.json` binds narration to its clip plan; a changed plan requires checking or rewriting the narration. Resuming requires the same source video and parameters.
|
|
436
434
|
|
|
437
435
|
### The VLM can't tell who is who and the narration is all "a man in black"?
|
|
438
436
|
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
<p align="center">
|
|
22
22
|
<a href="https://github.com/zenstory-ai/video-recap-skills/stargazers"><img alt="Stars" src="https://img.shields.io/github/stars/zenstory-ai/video-recap-skills?style=flat-square&color=22D3EE&logo=github&logoColor=white&label=Stars"></a>
|
|
23
23
|
<a href="https://github.com/zenstory-ai/video-recap-skills/releases/latest"><img alt="Release" src="https://img.shields.io/github/v/release/zenstory-ai/video-recap-skills?style=flat-square&color=081431&label=Release"></a>
|
|
24
|
-
<img alt="Skills
|
|
24
|
+
<img alt="Skills 7" src="https://img.shields.io/badge/Skills-7-081431?style=flat-square">
|
|
25
25
|
<a href="https://www.python.org/"><img alt="Python 3.10%2B" src="https://img.shields.io/badge/Python-3.10%2B-3776AB?style=flat-square&logo=python&logoColor=white"></a>
|
|
26
26
|
<a href="https://github.com/zenstory-ai/video-recap-skills/actions/workflows/skill-validate.yml"><img alt="CI" src="https://img.shields.io/github/actions/workflow/status/zenstory-ai/video-recap-skills/skill-validate.yml?style=flat-square&label=CI"></a>
|
|
27
27
|
<a href="https://platform.xiaomimimo.com"><img alt="AI Xiaomi%20MiMo" src="https://img.shields.io/badge/AI-Xiaomi%20MiMo-34A853?style=flat-square"></a>
|
|
@@ -44,16 +44,16 @@
|
|
|
44
44
|
决定故事与视听方案、剪辑、写稿、配音、混音和字幕。支持 `.mp4 / .mov / .mkv / .webm`。
|
|
45
45
|
|
|
46
46
|
- **一个 key,本地只要 ffmpeg。** ASR、VLM、TTS 都走[小米 MiMo](https://platform.xiaomimimo.com),本地只用 Python 标准库和 `ffmpeg`,不需要 GPU,不需要 `pip install`,也不下载模型。配音可以换成 Fish Audio,只替换配音这一段。
|
|
47
|
-
- **先做创作决定,再分配声音。** Agent
|
|
48
|
-
- **先剪后配,时间轴天然对齐。** 剪辑模式先把长视频剪成成片,再对着成片写解说;一次可以传多个视频,按 `source_id`
|
|
47
|
+
- **先做创作决定,再分配声音。** 首次策划时,Agent 比较可行的剪辑方向;已有指定结构或看片反馈时,按当前决定修订。观众承诺、POV、戏剧问题和每拍变化写进 `recap_story_plan.json`,再给每一拍指定画面任务和声音归属:旁白只在有明确任务时整块配音,强对白、动作声或沉默可以完整主导一拍。
|
|
48
|
+
- **先剪后配,时间轴天然对齐。** 剪辑模式先把长视频剪成成片,再对着成片写解说;一次可以传多个视频,按 `source_id` 选段剪成一条主线;视频分析可按需保存到文件系统素材库,后续在来源和设置匹配时复用。
|
|
49
49
|
- **成片之外还能继续改。** 多轨时间线 `timeline.json` 可一键导出剪映草稿,原片、解说、BGM、字幕、图片叠层都可编辑;自带一份准确字幕文件就会被当作原声字幕的首选来源。
|
|
50
|
-
- **每一步都留下可核对的记录。** 旁白 lint、组装 QC
|
|
50
|
+
- **每一步都留下可核对的记录。** 旁白 lint、组装 QC 与最终 QC 会生成机器可读报告;看片修改可另记录本轮改动、冻结项与验证结果。
|
|
51
51
|
|
|
52
52
|
## 安装
|
|
53
53
|
|
|
54
54
|
### ClawHub
|
|
55
55
|
|
|
56
|
-
ClawHub
|
|
56
|
+
ClawHub 条目与依赖由 [显式发布清单](.clawhub/publish.json) 管理。编排器 `video-recap` 当前仍因同根安装验证未完成而标为 `blocked`;使用完整流程请按下方方式安装整套插件或源码。
|
|
57
57
|
|
|
58
58
|
|
|
59
59
|
前提:Python 3.10 或更新版本,`PATH` 上有 `ffmpeg`,以及一个[小米 MiMo](https://platform.xiaomimimo.com) API Key。默认把字幕烧录进画面,这需要带 libass 的 ffmpeg;Homebrew 自带的 `ffmpeg` 没有 libass,这时默认运行不烧录,在成片旁输出同名 `.srt` 外挂字幕并在 `final_qc.json` 里记一条警告(显式传 `--burn-subtitles` 则在开跑前报错)。旁白里写了画面文字叠加(`visual_overlays`)时还需要带 drawtext 的 ffmpeg,缺了会在配音前报错。要在 macOS 上烧录字幕,可用 `brew install ffmpeg-full`(keg-only,需把它的 `bin` 放到 `PATH` 前面)。
|
|
@@ -318,7 +318,7 @@ Agent 在剪任何一刀之前先写 [`recap_story_plan.json`](examples/guohuo-6
|
|
|
318
318
|
|
|
319
319
|
> 我有权使用〈本地视频〉,并提供了对应的已核对画面与对白记录。先只给这段素材的声音分工建议:哪句对白、哪个动作声或停顿应完整保留,哪里确需旁白,依据是哪条记录。缺证据就列待核对项,不补人物动机或没出现的事件。交付分拍说明和必要的旁白草案,不调用配音或渲染。
|
|
320
320
|
|
|
321
|
-
Agent
|
|
321
|
+
完整制作请求由 Agent 完成理解、故事与视听规划、剪辑、写稿、配音和合成;只做文字交接的请求按指定范围停止。剪辑模式内部会先确定保留片段、生成剪后成片,再按输出时间轴写旁白;这些暂停和续跑也由 Agent 处理。
|
|
322
322
|
|
|
323
323
|
## 流程与七个技能
|
|
324
324
|
|
|
@@ -398,7 +398,7 @@ flowchart LR
|
|
|
398
398
|
```
|
|
399
399
|
|
|
400
400
|
资源、模板和样片是你自己目录里的 JSON 记录,授权与"已采用"状态只由你确认;绑定与显式设置冲突、模板画布与成片不符时,会在配音之前停下。
|
|
401
|
-
|
|
401
|
+
每次运行的 `work_dir/resource_lock.json` 记下这次实际用了哪些资源、授权是否清楚。格式见 [资源库、模板与样片](skills/video-recap/references/resource-library.md)。
|
|
402
402
|
|
|
403
403
|
**在浏览器里看项目、运行和资源库(只读):**
|
|
404
404
|
|
|
@@ -422,7 +422,7 @@ flowchart LR
|
|
|
422
422
|
|
|
423
423
|
### 长视频跑到一半报 429 或中断了,要从头再来吗?
|
|
424
424
|
|
|
425
|
-
|
|
425
|
+
VLM 会保存已完成的场景;遇到疑似限流会降低并发重试一轮,仍失败时保留错误供处理。解决原因后重复同一条命令,可以复用匹配的场景缓存并继续。写好 `narration.json` 后也用原命令续跑;剪辑模式用 `recap_phase.json` 绑定写稿时的计划,改了计划需重新核对或重写解说。续跑只接受同一源视频、同一组参数的工作目录。
|
|
426
426
|
|
|
427
427
|
### VLM 认不出谁是谁,解说里全是"黑衣男子"?
|
|
428
428
|
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"upstream": {
|
|
4
4
|
"repository": "https://github.com/zenstory-ai/video-recap-skills.git",
|
|
5
|
-
"commit": "
|
|
5
|
+
"commit": "5785c33d8b5172cfa2837a8a0d57eb4b87837475",
|
|
6
6
|
"releaseVersion": "0.6.2"
|
|
7
7
|
},
|
|
8
|
-
"generatedAt": "2026-10-
|
|
8
|
+
"generatedAt": "2026-10-15T09:51:04.161Z",
|
|
9
9
|
"skills": [
|
|
10
10
|
"video-assemble",
|
|
11
11
|
"video-cut",
|
|
@@ -18,8 +18,8 @@
|
|
|
18
18
|
"files": [
|
|
19
19
|
{
|
|
20
20
|
"path": "CHANGELOG.md",
|
|
21
|
-
"sha256": "
|
|
22
|
-
"bytes":
|
|
21
|
+
"sha256": "3557aac67f3d50d1f08045e648d40c5cf5fd6a9b7af8e88f9b8fb8443b400580",
|
|
22
|
+
"bytes": 108052
|
|
23
23
|
},
|
|
24
24
|
{
|
|
25
25
|
"path": "LICENSE",
|
|
@@ -28,23 +28,23 @@
|
|
|
28
28
|
},
|
|
29
29
|
{
|
|
30
30
|
"path": "README.en.md",
|
|
31
|
-
"sha256": "
|
|
32
|
-
"bytes":
|
|
31
|
+
"sha256": "0404dc0dee26a81ecf1595a662a3b74ea7a9edc5df90362518bb0ce4a314a950",
|
|
32
|
+
"bytes": 31281
|
|
33
33
|
},
|
|
34
34
|
{
|
|
35
35
|
"path": "README.md",
|
|
36
|
-
"sha256": "
|
|
37
|
-
"bytes":
|
|
36
|
+
"sha256": "a159253fc336a3cea2c6ae7716fd726940a7925c617a1485897fd6de07808f43",
|
|
37
|
+
"bytes": 27093
|
|
38
38
|
},
|
|
39
39
|
{
|
|
40
40
|
"path": "skills/video-assemble/SKILL.md",
|
|
41
|
-
"sha256": "
|
|
42
|
-
"bytes":
|
|
41
|
+
"sha256": "88ab7ae6de32321e1bdb1858a132e7968b3f5f20a8b549378f727dfe0d3db2ce",
|
|
42
|
+
"bytes": 12364
|
|
43
43
|
},
|
|
44
44
|
{
|
|
45
45
|
"path": "skills/video-assemble/references/audio-modes.md",
|
|
46
|
-
"sha256": "
|
|
47
|
-
"bytes":
|
|
46
|
+
"sha256": "e6d93e29367a3cae24da1bd1b5719810b3d9d3b587062031887b0eb1150f001c",
|
|
47
|
+
"bytes": 3509
|
|
48
48
|
},
|
|
49
49
|
{
|
|
50
50
|
"path": "skills/video-assemble/references/explicit-audio-mix.md",
|
|
@@ -58,8 +58,8 @@
|
|
|
58
58
|
},
|
|
59
59
|
{
|
|
60
60
|
"path": "skills/video-assemble/references/jianying/SOURCE.md",
|
|
61
|
-
"sha256": "
|
|
62
|
-
"bytes":
|
|
61
|
+
"sha256": "43dd440f97b8b07153aeeb66fda3722096b059b297dde356fd6d4f5ef2d1fc00",
|
|
62
|
+
"bytes": 703
|
|
63
63
|
},
|
|
64
64
|
{
|
|
65
65
|
"path": "skills/video-assemble/references/jianying/empty_draft_meta_info.json",
|
|
@@ -108,13 +108,13 @@
|
|
|
108
108
|
},
|
|
109
109
|
{
|
|
110
110
|
"path": "skills/video-assemble/references/packaging.md",
|
|
111
|
-
"sha256": "
|
|
112
|
-
"bytes":
|
|
111
|
+
"sha256": "b9d294ea26c7a359d3dae969fe824c9d9904ec51ad92dd502c1a7a9bc7f3fb53",
|
|
112
|
+
"bytes": 2801
|
|
113
113
|
},
|
|
114
114
|
{
|
|
115
115
|
"path": "skills/video-assemble/references/source-score.md",
|
|
116
|
-
"sha256": "
|
|
117
|
-
"bytes":
|
|
116
|
+
"sha256": "7d33561851dd9a39fb9c60e91979faa95f54321301acf9a6d4d4a12444556437",
|
|
117
|
+
"bytes": 6869
|
|
118
118
|
},
|
|
119
119
|
{
|
|
120
120
|
"path": "skills/video-assemble/references/subtitle-track.md",
|
|
@@ -328,13 +328,13 @@
|
|
|
328
328
|
},
|
|
329
329
|
{
|
|
330
330
|
"path": "skills/video-cut/SKILL.md",
|
|
331
|
-
"sha256": "
|
|
332
|
-
"bytes":
|
|
331
|
+
"sha256": "063eef0a661dd72cdcd987dbf7b59785094a32a69f0fbfded6e5675f01947dea",
|
|
332
|
+
"bytes": 11734
|
|
333
333
|
},
|
|
334
334
|
{
|
|
335
335
|
"path": "skills/video-cut/references/shot-review.md",
|
|
336
|
-
"sha256": "
|
|
337
|
-
"bytes":
|
|
336
|
+
"sha256": "12dd50bcdb2ecb15cbd961f017d94cdca1f73bb042581cb73770f913ab0957f7",
|
|
337
|
+
"bytes": 5570
|
|
338
338
|
},
|
|
339
339
|
{
|
|
340
340
|
"path": "skills/video-cut/scripts/cut.py",
|
|
@@ -398,28 +398,28 @@
|
|
|
398
398
|
},
|
|
399
399
|
{
|
|
400
400
|
"path": "skills/video-recap/SKILL.md",
|
|
401
|
-
"sha256": "
|
|
402
|
-
"bytes":
|
|
401
|
+
"sha256": "e321596c52db87ef347f66d6782d2548c2516b8415f1aa89e4bc460d58f18240",
|
|
402
|
+
"bytes": 17221
|
|
403
403
|
},
|
|
404
404
|
{
|
|
405
405
|
"path": "skills/video-recap/references/audio-routing.md",
|
|
406
|
-
"sha256": "
|
|
407
|
-
"bytes":
|
|
406
|
+
"sha256": "b13bddf5212d9a576b9dc518e09ae9da827dc48f791b9813c7fa48147190b991",
|
|
407
|
+
"bytes": 7245
|
|
408
408
|
},
|
|
409
409
|
{
|
|
410
410
|
"path": "skills/video-recap/references/config-playbook.md",
|
|
411
|
-
"sha256": "
|
|
412
|
-
"bytes":
|
|
411
|
+
"sha256": "7e6d02f53564238799cb34d9909fd250007042ca86625a3722469b35475c8f60",
|
|
412
|
+
"bytes": 13079
|
|
413
413
|
},
|
|
414
414
|
{
|
|
415
415
|
"path": "skills/video-recap/references/data-schema.md",
|
|
416
|
-
"sha256": "
|
|
417
|
-
"bytes":
|
|
416
|
+
"sha256": "6741b2abbce4c6e38baebc4f97f863dbc632d759dd63eb9111134309f1f1b78e",
|
|
417
|
+
"bytes": 36172
|
|
418
418
|
},
|
|
419
419
|
{
|
|
420
420
|
"path": "skills/video-recap/references/resource-library.md",
|
|
421
|
-
"sha256": "
|
|
422
|
-
"bytes":
|
|
421
|
+
"sha256": "86cbdcb95d2381f573513906ce2250713c6ae34df2909918f9487d164491e80b",
|
|
422
|
+
"bytes": 10146
|
|
423
423
|
},
|
|
424
424
|
{
|
|
425
425
|
"path": "skills/video-recap/scripts/doctor.py",
|
|
@@ -508,13 +508,13 @@
|
|
|
508
508
|
},
|
|
509
509
|
{
|
|
510
510
|
"path": "skills/video-reference/SKILL.md",
|
|
511
|
-
"sha256": "
|
|
512
|
-
"bytes":
|
|
511
|
+
"sha256": "eba7399c9021d3ad218a4f4f5cfd4e1f02538c0d31c3670a6a5531487aa927e9",
|
|
512
|
+
"bytes": 9672
|
|
513
513
|
},
|
|
514
514
|
{
|
|
515
515
|
"path": "skills/video-reference/references/reference-schema.md",
|
|
516
|
-
"sha256": "
|
|
517
|
-
"bytes":
|
|
516
|
+
"sha256": "1a0315d268fd449460fe0ff9e89040b873bca88e6ae890683678e8108d620724",
|
|
517
|
+
"bytes": 9258
|
|
518
518
|
},
|
|
519
519
|
{
|
|
520
520
|
"path": "skills/video-reference/scripts/lib.py",
|
|
@@ -548,13 +548,13 @@
|
|
|
548
548
|
},
|
|
549
549
|
{
|
|
550
550
|
"path": "skills/video-script/SKILL.md",
|
|
551
|
-
"sha256": "
|
|
552
|
-
"bytes":
|
|
551
|
+
"sha256": "02f231df44d60985f23b6cd2ee1c731ca234f5a6cfe1233418535f44919ea405",
|
|
552
|
+
"bytes": 18362
|
|
553
553
|
},
|
|
554
554
|
{
|
|
555
555
|
"path": "skills/video-script/references/creative-editing-playbook.md",
|
|
556
|
-
"sha256": "
|
|
557
|
-
"bytes":
|
|
556
|
+
"sha256": "26269189312abf42f83e275de960866c3b21e7c2d26f00e65d61165b324dde3d",
|
|
557
|
+
"bytes": 13952
|
|
558
558
|
},
|
|
559
559
|
{
|
|
560
560
|
"path": "skills/video-script/references/promotional-copy.md",
|
|
@@ -633,13 +633,13 @@
|
|
|
633
633
|
},
|
|
634
634
|
{
|
|
635
635
|
"path": "skills/video-understanding/SKILL.md",
|
|
636
|
-
"sha256": "
|
|
637
|
-
"bytes":
|
|
636
|
+
"sha256": "e0a9612667bf2fdff0b50252daa18d3546c1a88cb53bca61544317dea86736b5",
|
|
637
|
+
"bytes": 8117
|
|
638
638
|
},
|
|
639
639
|
{
|
|
640
640
|
"path": "skills/video-understanding/references/data-schema.md",
|
|
641
|
-
"sha256": "
|
|
642
|
-
"bytes":
|
|
641
|
+
"sha256": "997beda5d80510520a50e84c332f0f25b03216eff5f4b2a480be8e438b410ece",
|
|
642
|
+
"bytes": 6218
|
|
643
643
|
},
|
|
644
644
|
{
|
|
645
645
|
"path": "skills/video-understanding/references/prompt-templates.md",
|
|
@@ -758,13 +758,13 @@
|
|
|
758
758
|
},
|
|
759
759
|
{
|
|
760
760
|
"path": "skills/video-voiceover/SKILL.md",
|
|
761
|
-
"sha256": "
|
|
762
|
-
"bytes":
|
|
761
|
+
"sha256": "80f1ecf4c26ca9fd93f121fcfd68886d7bbeaccd7a8783b998fc1a42f851a354",
|
|
762
|
+
"bytes": 11341
|
|
763
763
|
},
|
|
764
764
|
{
|
|
765
765
|
"path": "skills/video-voiceover/references/index-tts.md",
|
|
766
|
-
"sha256": "
|
|
767
|
-
"bytes":
|
|
766
|
+
"sha256": "485ac7c63c244b60b3b11b9d3b9a8e0158d8dccc057a7e982ab71d570b23f4ea",
|
|
767
|
+
"bytes": 1553
|
|
768
768
|
},
|
|
769
769
|
{
|
|
770
770
|
"path": "skills/video-voiceover/scripts/approved_text_policy.py",
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: video-assemble
|
|
3
3
|
user-invocable: false
|
|
4
|
-
description:
|
|
5
|
-
合成视频解说最终成片:把旁白音频铺到源视频上,按旁白窗口压低原声,生成 SRT / ASS 字幕并可烧录,
|
|
6
|
-
最后做响度标准化。作为最终合成阶段使用。输入源视频、tts_meta.json 与旁白位置;
|
|
7
|
-
输出 recap 成片和字幕。触发词:视频合成、混音、字幕、压字幕、assemble video、mux、ducking、subtitles、成片。
|
|
4
|
+
description: 合成视频解说最终成片:把旁白音频铺到源视频上,按旁白窗口压低原声,生成 SRT / ASS 字幕并可烧录, 最后做响度标准化。作为最终合成阶段使用。输入源视频、tts_meta.json 与旁白位置; 输出 recap 成片和字幕。触发词:视频合成、混音、字幕、压字幕、assemble video、mux、ducking、subtitles、成片。
|
|
8
5
|
---
|
|
9
6
|
|
|
10
7
|
## 1. 定位
|
|
@@ -27,7 +24,7 @@ description: >
|
|
|
27
24
|
- `silence`
|
|
28
25
|
- `narration`
|
|
29
26
|
|
|
30
|
-
|
|
27
|
+
旁白间隙按已选声音分工保留。只在确有任务时加入 BGM,并保住必须听见的台词与有意义的沉默。
|
|
31
28
|
|
|
32
29
|
当前渲染器不解析 `visual_audio_board.json`;Agent 通过旁白时间、`overlaps_speech`、原声留白与现有混音参数落实这些决定。
|
|
33
30
|
|
|
@@ -73,7 +70,7 @@ python3 scripts/assemble.py <video> --work-dir <work_dir> \
|
|
|
73
70
|
- 段落首块(与上一块作者留白超过 1.6 秒)从写的 `start` 放置,但不早于上一块实际结尾加它的 `pause_after_ms`,上一块超时会把它往后推;段落内后续块紧接上一块的实际结尾(间隔 0.35 秒),最多比写的 `start` 提前 1.2 秒。这一提前发生在旁白校验之后,所以提前的那一段不能进入原声对白:有对白时最多提前到最后一段对白结束处。真的提前了的块在 `source_entry_status` 记 `paragraph_tightened`,并在 `written_start` 记写的 `start`。
|
|
74
71
|
- 旁白不做任何容差裁尾;温和加速后仍放不下即 `no_safe_fit`。每段 `_placed_*.wav`
|
|
75
72
|
必须与序列化后的时间线区间等长或更短,否则 `timeline_audio_mismatch` 阻断。
|
|
76
|
-
-
|
|
73
|
+
- 已采用配音按其 `tempo_policy` 执行:保守默认是原速且禁止段内适速,也可显式采用符合范围要求的其他速度策略;环境默认 1.15 倍速不能覆盖采用决定。显式完整声音混音分支固定原速,不做自动适配。放不下就修订安排,不裁尾。严格运行使用新工作目录与新输出路径;输入/实际混音来源变动或 QC 失败时,不发布候选成片。没有采用文件时仍可按默认旁白路径合成,但消费记录为 `UNADOPTED`。
|
|
77
74
|
- 原声在旁白结束后最多再压低 3 秒,等这段时间内的下一个句末锚点:压到它的 `pause_start`,只在实测停顿内渐强,
|
|
78
75
|
于 `source_restore_at` 回满(锚点为 `unverified` 时状态记 `sentence_boundary_unverified`)。3 秒内没有锚点时,
|
|
79
76
|
离时间线末端不足 3 秒就压到末端(`held_to_timeline_end`),否则在旁白结束处直接回满(`bounded_release`),
|
|
@@ -84,7 +81,7 @@ python3 scripts/assemble.py <video> --work-dir <work_dir> \
|
|
|
84
81
|
- 导出只接受 `schema_version: 2` 的 `timeline.json`,只映射视频、音频、字幕和图片叠层(`scale` / `position`);变速、转场、蒙版、富文本、特效轨等手写扩展字段会被明确拒绝。
|
|
85
82
|
- 剪映草稿引用未烧录的源视频,因此原片硬字幕仍会保留,必要时在剪映内另行遮罩。
|
|
86
83
|
- 字幕外观可用 `SUBTITLE_FONT_SIZE`、`SUBTITLE_MARGIN_V`、`SUBTITLE_MAX_CHARS` 等控制。
|
|
87
|
-
- `SUBTITLE_Y_TOP/BOT` 把 ASS 基线放到测得的原片字幕区域,坐标为显示画布上的半开 `[top, bot)`,只接受方形或近方形像素(SAR 与 1:1 相差不超过 2%,未标注的 `0:1`
|
|
84
|
+
- `SUBTITLE_Y_TOP/BOT` 把 ASS 基线放到测得的原片字幕区域,坐标为显示画布上的半开 `[top, bot)`,只接受方形或近方形像素(SAR 与 1:1 相差不超过 2%,未标注的 `0:1` 按方形);比例遮罩默认 `SUBTITLE_MASK_OPACITY=0.6`;显式指定实测字幕带时默认不透明,除非另设该变量。`SOURCE_SUBTITLE_MASK_TIMING` 默认是 `narration`。
|
|
88
85
|
- 原声在旁白间隙回到 `IDLE_ORIG_VOLUME`,旁白下压到 `SPEECH_DUCKING_VOLUME`;`DUCK_FADE_SECONDS` 控制过渡。还可配置 `DUCK_BRIDGE_SECONDS`、`ZONE_DUCKING_VOLUME`、`FINAL_LOUDNORM`、`TARGET_LUFS` 与 `LOUDNESS_LIMITER_MAX_DB`。
|
|
89
86
|
- 可通过 `BGM_PATH` 指定 BGM;它会循环到成片长度,并按 `BGM_VOLUME` / `BGM_DUCKING_VOLUME` 混音。不要在没有创作依据时设置通用 BGM。
|
|
90
87
|
- 烧录字幕需要带 `subtitles` / libass 的 ffmpeg,合成阶段在渲染前预检。显式要求烧录(`--burn-subtitles` 或环境变量 `BURN_SUBTITLES`)时缺 libass 直接失败;只是默认开启时降级:不烧录,交付外挂 `.srt`(留白里的 `「」` 原声对白仅在有 `user_subtitles.*` 时照常写进去;原本由遮罩触发的对白随遮罩一起关闭,原片硬字幕可见),`visual_qc.json` 的 `warnings` 与 `assembly_manifest.json` 的 `warnings` 记一条 `subtitle_burn_degraded`,`subtitles.burn_degraded_reason` 写原因。降级后遮罩照旧关闭(`mask.trigger` 为 `burn_subtitles_degraded`)。
|
|
@@ -92,7 +89,7 @@ python3 scripts/assemble.py <video> --work-dir <work_dir> \
|
|
|
92
89
|
- 成片画面一律是 H.264 8-bit 4:2:0 并带 `+faststart`:不需要滤镜、且源画面已是 H.264 8-bit 4:2:0(`yuv420p`,或全范围的 `yuvj420p`)、宽高为偶数时才流复制,原样交付;否则重编码为 `yuv420p`。色彩标记:源未标记或已是 BT.709 时标为 BT.709(`-colorspace/-color_primaries/-color_trc bt709`),其它已声明的色彩空间原样保留;全范围(`pc`)源保留 `pc`,其余标 `tv`。YUV 源只改标记,不转换像素;RGB 源(ffprobe 报 `gbr`,如 PNG/QuickTime RLE 封装的 MOV)没有 YUV 矩阵可保留,按 BT.709 limited 转换。结果记在 `assembly_qc.json` 的 `delivery_qc.color_tags`(RGB 源多一个 `from_rgb: true`)。
|
|
93
90
|
- 原声留白中的对白字幕优先读取 Agent 校对的 `original_subtitles.json`;否则保守映射 ASR。只有遮罩覆盖留白或用户字幕明确要求替换时才烧录原声对白,并用 `「」` 与旁白区分。
|
|
94
91
|
|
|
95
|
-
###
|
|
92
|
+
### 按原片区间准备声音底轨
|
|
96
93
|
|
|
97
94
|
已有多段原声取舍和独立 BGM 决定时,先用 `references/source-score.md` 的独立
|
|
98
95
|
`source_score.py` 从原片声音流按精确帧区间重建原声轨、音乐轨及两者之和;它只输出
|
|
@@ -6,7 +6,7 @@ zero-based audio ordinal used by FFmpeg's `0:a:N` selector.
|
|
|
6
6
|
|
|
7
7
|
## `narration`
|
|
8
8
|
|
|
9
|
-
- Requires non-empty `tts_meta.json` segments
|
|
9
|
+
- Requires non-empty `tts_meta.json` segments.
|
|
10
10
|
- Builds/places narration WAV, performs source ducking and optional BGM mix,
|
|
11
11
|
then applies the configured final loudness/limiter stage and AAC encoding.
|
|
12
12
|
- Missing source audio may use the existing synthetic-silence fallback.
|
|
@@ -21,8 +21,8 @@ zero-based audio ordinal used by FFmpeg's `0:a:N` selector.
|
|
|
21
21
|
- Uses the selected input audio stream, applies `IDLE_ORIG_VOLUME`, mixes a
|
|
22
22
|
declared `BGM_PATH` when present, and runs the configured final
|
|
23
23
|
loudness/limiter stage before AAC encoding.
|
|
24
|
-
- A declared but missing `BGM_PATH` is an error in
|
|
25
|
-
|
|
24
|
+
- A declared but missing `BGM_PATH` is an error in source-mix mode. Narration
|
|
25
|
+
mode warns and skips the missing music.
|
|
26
26
|
- This is a processed mix, not frozen audio. `assembly_qc.json` reports the
|
|
27
27
|
operations that actually ran.
|
|
28
28
|
|
|
@@ -5,8 +5,7 @@ These JSON protocol templates are pinned to
|
|
|
5
5
|
`ef4eb46c823910553f901649f2f13fd7575e748f`, under its MIT license. They are
|
|
6
6
|
data/schema baselines, not executable upstream code. Runtime builders deep-copy
|
|
7
7
|
the templates and replace authored values such as IDs, paths, timings, and canvas
|
|
8
|
-
dimensions.
|
|
9
|
-
compound-draft templates were dropped together with green-screen export.
|
|
8
|
+
dimensions. The directory contains only templates used by the exporter.
|
|
10
9
|
|
|
11
10
|
The required copyright and permission notice is preserved in
|
|
12
11
|
`LICENSE.duo-video` in this directory.
|
|
@@ -13,8 +13,7 @@
|
|
|
13
13
|
4. 渲染完整透明字幕层,再 overlay 到锁定母版;合成后确认音轨未被意外改写。
|
|
14
14
|
5. 完整播放实际最终文件,并复查字幕遮脸、跳字、断行、首尾帧和边界处残影。
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
近似品牌样式;本技能不提供逐帧前景合成命令。合成时音轨按流复制,合成后核对帧率、时长与音轨未被改写,
|
|
16
|
+
已有项目级渲染器时,由该项目把透明层合成到锁定母版,以保留已确认的包装样式;本技能不提供逐帧前景合成命令。合成时音轨按流复制,合成后核对帧率、时长与音轨未被改写,
|
|
18
17
|
再写入新文件。片名卡有渐显或动画时须渲染完整序列,不能冻结最后一张图代替。
|
|
19
18
|
|
|
20
19
|
## 静态包装图层 `packaging_layers.json`
|
|
@@ -73,8 +73,9 @@ Each unique selected source stream is decoded from its actual PTS clock to canon
|
|
|
73
73
|
48 kHz stereo exactly once. All authored intervals are then cut from that canonical
|
|
74
74
|
sample array—never independently decoded or `-ss`-seeked per edit.
|
|
75
75
|
|
|
76
|
-
The source segment
|
|
77
|
-
Its output end is derived
|
|
76
|
+
The source segment length is the difference between the rounded start and end
|
|
77
|
+
sample positions described above. Its output end is derived from that integer
|
|
78
|
+
length, not declared or rounded from the duration again. Source segments and explicit silence ranges
|
|
78
79
|
must form an exact, nonoverlapping partition of `[0,total_samples)`. There are no
|
|
79
80
|
implicit gaps. Supported roles are `protected_original` and
|
|
80
81
|
`mixed_original_under_narration`; their gains and labels are retained unchanged.
|
|
@@ -131,9 +132,7 @@ directory cannot publish final-named beds or a receipt.
|
|
|
131
132
|
Diagnostic command/log/intermediate files may remain in the unique failed directory.
|
|
132
133
|
|
|
133
134
|
To consume a completed receipt with explicitly adopted narration, use the strict
|
|
134
|
-
`--audio-mix-adoption` path in `explicit-audio-mix.md`.
|
|
135
|
-
prepared bed without narration, a dedicated prepared-audio renderer will follow in a
|
|
136
|
-
later release. Do not feed `prepared_bed.wav` through legacy source ducking or
|
|
135
|
+
`--audio-mix-adoption` path in `explicit-audio-mix.md`. This path does not render a final video from a prepared bed alone. Do not feed `prepared_bed.wav` through legacy source ducking or
|
|
137
136
|
ambient BGM/loudness settings.
|
|
138
137
|
|
|
139
138
|
## 与旧入口的关系(中文摘要)
|
|
@@ -143,5 +142,5 @@ ambient BGM/loudness settings.
|
|
|
143
142
|
完整音乐决定且不再叠加配乐,使用严格的 `score:{"kind":"none"}`;它生成真实全零 score,
|
|
144
143
|
并保持 prepared 与 source 逐字节相同,不伪造静音音乐资产。
|
|
145
144
|
|
|
146
|
-
|
|
145
|
+
这一步输出声音底轨和来源回执,后续合成负责最终视频。调用方须区分
|
|
147
146
|
“底轨已验证”“配音已验证”和“完整混音已验证”三种状态,不能相互冒充。
|
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: video-cut
|
|
3
3
|
user-invocable: false
|
|
4
|
-
description:
|
|
5
|
-
把长视频按 Agent 选择的原片区间剪成短片。作为两阶段创作流程中的剪辑环节,读取 clip_plan.json 与源视频,
|
|
6
|
-
输出 edited_source.mp4;随后 Agent 按输出时间线写 narration.json。支持单视频与多视频(sources manifest)拼剪,
|
|
7
|
-
本工具不读取、不映射旁白。
|
|
8
|
-
触发词:视频剪辑、剪辑式解说、video cut、clip plan、拼剪。
|
|
4
|
+
description: 把长视频按 Agent 选择的原片区间剪成短片。作为两阶段创作流程中的剪辑环节,读取 clip_plan.json 与源视频, 输出 edited_source.mp4;随后 Agent 按输出时间线写 narration.json。支持单视频与多视频(sources manifest)拼剪, 本工具不读取、不映射旁白。 触发词:视频剪辑、剪辑式解说、video cut、clip plan、拼剪。
|
|
9
5
|
---
|
|
10
6
|
|
|
11
7
|
## 1. 定位
|
|
@@ -18,7 +14,7 @@ description: >
|
|
|
18
14
|
4. 拼接选定区间,输出恒定帧率的 `edited_source.mp4`,帧数与 `clip_plan_validated.json` 记录的一致。
|
|
19
15
|
5. 到此停止,由 Agent 按真实输出时间线写 `narration.json`;本工具不读取旁白,也不做原片→输出映射。
|
|
20
16
|
|
|
21
|
-
|
|
17
|
+
渲染缓存按输入与设置复用。`edited_source.mp4.meta.json` 记录标准化 clips、渲染设置和每个源文件的 `size`/`mtime_ns`;三者与当前一致且 `edited_source.mp4` 存在非空才复用,任一不同即重渲染。只有 sidecar 而没有媒体文件不复用。
|
|
22
18
|
|
|
23
19
|
## 2. 输入契约
|
|
24
20
|
|
|
@@ -43,7 +39,7 @@ description: >
|
|
|
43
39
|
|
|
44
40
|
## 3. 剪辑意图契约
|
|
45
41
|
|
|
46
|
-
|
|
42
|
+
Agent 写片段前先确认剪辑意图,并让每个区间映射到 `recap_story_plan.json` 的一个 beat;工具负责执行与校验。
|
|
47
43
|
|
|
48
44
|
使用现有自由文本 `reason` 保存简洁决定:
|
|
49
45
|
|
|
@@ -40,7 +40,7 @@ python3 scripts/cut.py source.mp4 --work-dir work --review-shots
|
|
|
40
40
|
|
|
41
41
|
对每个候选看前后 0.5–1 秒,核对角色表演、完整动作、对白与原片切镜;未实际播放就保留 `NEEDS_DYNAMIC_REVIEW`。
|
|
42
42
|
先对照源画面和取景参数:同一原生镜头中途换 crop/画窗,或曝光闪光,都可能产生切点分数;两个候选间的帧数不一定是一段真实短镜头。
|
|
43
|
-
|
|
43
|
+
修复后用同样参数重跑,核对候选变化,再以正常速度播放确认修复是否成立;仍被保留的短镜逐个判断,不因“短”就判错。
|
|
44
44
|
判断无关残镜后,在作者计划里删除整个无关镜头或恢复同源连续画面;相关反应可回原片扩完整,不能用定格补长、转场掩盖或只修导出文件。
|
|
45
45
|
|
|
46
46
|
## 修短残镜时的取景复核
|
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: video-recap
|
|
3
|
-
description:
|
|
4
|
-
从输入视频生成中文解说成片或原声剧情短片。用户提供 .mp4 / .mov / .mkv / .webm,并要求剪辑、添加旁白、
|
|
5
|
-
配音、总结、短剧/电视剧/电影/纪录片/科普解说时使用。负责编排 video-* 技能链:视频理解 →
|
|
6
|
-
Agent 制定故事与视听方案 → 剪辑 → 配音 → 合成。触发词:视频解说、视频旁白、生成解说、
|
|
7
|
-
视频 recap、video recap、voiceover、narration、auto-dub、recap。
|
|
3
|
+
description: 从输入视频生成中文解说成片或原声剧情短片。用户提供 .mp4 / .mov / .mkv / .webm,并要求剪辑、添加旁白、 配音、总结、短剧/电视剧/电影/纪录片/科普解说时使用。负责编排 video-* 技能链:视频理解 → Agent 制定故事与视听方案 → 剪辑 → 配音 → 合成。触发词:视频解说、视频旁白、生成解说、 视频 recap、video recap、voiceover、narration、auto-dub、recap。
|
|
8
4
|
---
|
|
9
5
|
|
|
10
6
|
## 1. 定位与流程
|
|
@@ -60,7 +56,7 @@ video-assemble 严格验证,recap 只核对子技能绑定记录引用的是
|
|
|
60
56
|
|
|
61
57
|
## 2. 创作职责
|
|
62
58
|
|
|
63
|
-
|
|
59
|
+
Agent 负责本次创作。先判断本轮的**创作控制模式**(CREATE / DIRECTED / REVISION,与 `--edit-mode` 分别选择),再在配音和渲染前完成五次判断:
|
|
64
60
|
|
|
65
61
|
1. **导演判断**:观众承诺、POV、戏剧问题、情绪终点与揭示节奏。
|
|
66
62
|
2. **故事编辑**:beat 定义为“发生了什么变化”,不是场景摘要。
|
|
@@ -93,7 +89,7 @@ TTS 供应商由 `--tts-provider mimo-tts|fish-audio|index-tts`(或 `TTS_PROVI
|
|
|
93
89
|
|
|
94
90
|
可覆盖配置见 `references/config-playbook.md`,`final_qc.json` 的字段见 `references/data-schema.md`。
|
|
95
91
|
|
|
96
|
-
下面的 `scripts/...`
|
|
92
|
+
下面的 `scripts/...` 均相对于本技能目录。若执行器从仓库根目录启动,请给脚本路径加上本技能的绝对目录。编排脚本从同一技能根目录定位所需阶段;安装时需让五个阶段技能与本技能位于同一层。
|
|
97
93
|
|
|
98
94
|
## 4. 标准解说流程(audio-mode narration)
|
|
99
95
|
|
|
@@ -161,13 +157,13 @@ python3 scripts/recap.py <video> --work-dir <work_dir> # 可追加 --edit-mode
|
|
|
161
157
|
|
|
162
158
|
### 4.5 字幕与克隆旁白
|
|
163
159
|
|
|
164
|
-
|
|
160
|
+
若要把旁白字幕固定在原片字幕区域,先测量位置。完整源码安装可在仓库根目录运行以下工具;单独安装技能时,由 Agent 查看视频帧测出同一显示画布上的上下边界:
|
|
165
161
|
|
|
166
162
|
```bash
|
|
167
163
|
python3 tools/measure_subtitle.py <video>
|
|
168
164
|
```
|
|
169
165
|
|
|
170
|
-
再传入测得的 `--subtitle-y-top/--subtitle-y-bot`。坐标基于 ffmpeg 自动旋转后的显示画布,区间为半开 `[top, bot)`,并要求底对齐 ASS
|
|
166
|
+
再传入测得的 `--subtitle-y-top/--subtitle-y-bot`。坐标基于 ffmpeg 自动旋转后的显示画布,区间为半开 `[top, bot)`,并要求底对齐 ASS 样式;显式设置后,该区域默认使用不透明的旁白窗口遮罩;可用 `SUBTITLE_MASK_OPACITY` 调整。
|
|
171
167
|
|
|
172
168
|
解说模式如需克隆参考声音,使用 `--voice-ref <audio>`;它与 dub 模式不同。
|
|
173
169
|
|
|
@@ -190,7 +186,7 @@ full/cut 交付如需让确定性的最终检查影响命令退出状态,显
|
|
|
190
186
|
该参数不支持 `--edit-mode dub`;dub 未传该参数时的准备和渲染行为不变。
|
|
191
187
|
|
|
192
188
|
交付时读 `final_qc.json` 的 `metadata.warnings`,有内容就原样告诉用户,不能只报“完成”。`subtitle_burn_degraded`
|
|
193
|
-
表示 ffmpeg 缺 libass
|
|
189
|
+
表示 ffmpeg 缺 libass、默认烧录被降级:新字幕保存在成片旁的同名 `.srt`,原片已有硬字幕仍保留。用户要烧录字幕,就请他装带 libass 的
|
|
194
190
|
ffmpeg 后重跑;显式传 `--burn-subtitles` 时缺 libass 会在开跑前报错。旁白里写了 `visual_overlays` 而 ffmpeg 缺
|
|
195
191
|
drawtext 时,流程在配音前停下,按报错删掉叠加或换 ffmpeg 后续跑。
|
|
196
192
|
|
|
@@ -256,4 +252,4 @@ python3 scripts/dashboard_server.py --root <目录> [--port 0] [--open]
|
|
|
256
252
|
## 8. 能力边界
|
|
257
253
|
|
|
258
254
|
- 语义评审默认建议型、失败开放;只有调用方显式启用严格解说评审时,事实矛盾、残句或评审不可用才会在 TTS 前阻断。确定性校验阶段始终负责硬校验。
|
|
259
|
-
-
|
|
255
|
+
- 宣发标题、花字或外部文案回填交给 `video-script`,由它读取自己的宣发参考。
|
|
@@ -57,8 +57,7 @@ episodes. Use two existing stages rather than sending an old mix binding into a
|
|
|
57
57
|
`SOURCES_JSON` must be `{"sources": [{"source_id": ..., "source_path": ...}]}`
|
|
58
58
|
(optional per-source `duration` and `source_work_dir`); recap's
|
|
59
59
|
`multi_source_manifest.json` already has this shape. A single-source cut omits
|
|
60
|
-
`--sources-manifest`.
|
|
61
|
-
`picture_map.json`) before placing sound.
|
|
60
|
+
`--sources-manifest`. Read `clip_plan_validated.json` before placing sound.
|
|
62
61
|
2. Keep the selected WAVs, `tts_meta.json`, and `narration_adoption.json` when the words,
|
|
63
62
|
WAV bytes, and selected voice are unchanged. Do not run voiceover just to move a line.
|
|
64
63
|
In this explicit mix, new `output_start_sample` values own placement; old generation
|