@oh-story/dsh 0.1.3 → 0.1.5
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 +58 -12
- package/lib/client.js +2970 -537
- package/lib/client.js.map +4 -4
- package/lib/drama/manifest.json +218 -178
- package/lib/drama/skills/short-drama/SKILL.md +110 -117
- package/lib/drama/skills/short-drama/references/audience-reveal.md +14 -67
- package/lib/drama/skills/short-drama/references/contract-and-ownership.md +26 -77
- package/lib/drama/skills/short-drama/references/creator-documents.md +204 -0
- package/lib/drama/skills/short-drama/references/creator-workflow.md +73 -63
- package/lib/drama/skills/short-drama/references/knowhow-index.md +5 -0
- package/lib/drama/skills/short-drama/references/look-development.md +2 -3
- package/lib/drama/skills/short-drama/references/pickup-and-alternate.md +14 -48
- package/lib/drama/skills/short-drama/references/production-form-profiles.md +1 -1
- package/lib/drama/skills/short-drama/references/reference-roles.md +32 -135
- package/lib/drama/skills/short-drama/references/runtime-preflight.md +16 -19
- package/lib/drama/skills/short-drama/scripts/creator_markdown_check.py +1002 -0
- package/lib/drama/skills/short-drama/scripts/project_tool.py +485 -5
- package/lib/drama/skills/short-drama-assets/SKILL.md +59 -170
- package/lib/drama/skills/short-drama-assets/references/asset-review-checklist.md +18 -25
- package/lib/drama/skills/short-drama-assets/references/character-and-look.md +13 -15
- package/lib/drama/skills/short-drama-assets/references/continuity-delta.md +11 -14
- package/lib/drama/skills/short-drama-assets/references/continuity-lock.md +116 -0
- package/lib/drama/skills/short-drama-assets/references/identity-vs-variant.md +6 -12
- package/lib/drama/skills/short-drama-assets/references/occurrence-extraction.md +8 -11
- package/lib/drama/skills/short-drama-assets/references/prop-and-state.md +21 -2
- package/lib/drama/skills/short-drama-assets/references/stage-contract.md +12 -105
- package/lib/drama/skills/short-drama-assets/references/voice-direction.md +12 -32
- package/lib/drama/skills/short-drama-assets/scripts/asset_check.py +1 -1
- package/lib/drama/skills/short-drama-image-prompts/SKILL.md +45 -155
- package/lib/drama/skills/short-drama-image-prompts/references/character-and-look.md +12 -13
- package/lib/drama/skills/short-drama-image-prompts/references/common-recipe.md +12 -13
- package/lib/drama/skills/short-drama-image-prompts/references/edit-and-revision.md +39 -51
- package/lib/drama/skills/short-drama-image-prompts/references/location-plate.md +3 -4
- package/lib/drama/skills/short-drama-image-prompts/references/look-and-state-variant.md +15 -14
- package/lib/drama/skills/short-drama-image-prompts/references/lookdev-frame.md +11 -15
- package/lib/drama/skills/short-drama-image-prompts/references/production-sheet-recipes.md +1 -1
- package/lib/drama/skills/short-drama-image-prompts/references/prop-plate.md +4 -7
- package/lib/drama/skills/short-drama-image-prompts/references/review-and-fixtures.md +23 -23
- package/lib/drama/skills/short-drama-image-prompts/references/stage-contract.md +8 -65
- package/lib/drama/skills/short-drama-image-prompts/scripts/image_prompt_check.py +8 -8
- package/lib/drama/skills/short-drama-image-prompts/scripts/selftest.py +4 -2
- package/lib/drama/skills/short-drama-produce/SKILL.md +67 -15
- package/lib/drama/skills/short-drama-produce/references/adapter-contract.md +65 -8
- package/lib/drama/skills/short-drama-produce/references/providers/minimax-h3-video.md +85 -0
- package/lib/drama/skills/short-drama-produce/references/providers/seedance.md +27 -10
- package/lib/drama/skills/short-drama-produce/scripts/production_tool.py +362 -3
- package/lib/drama/skills/short-drama-produce/scripts/provider_adapters.py +627 -40
- package/lib/drama/skills/short-drama-produce/scripts/selftest.py +5 -4
- package/lib/drama/skills/short-drama-review/SKILL.md +61 -123
- package/lib/drama/skills/short-drama-review/references/anti-template-repair.md +10 -15
- package/lib/drama/skills/short-drama-review/references/production-quality-gates.md +15 -16
- package/lib/drama/skills/short-drama-review/references/project-calibration.md +7 -9
- package/lib/drama/skills/short-drama-review/references/review-method.md +8 -9
- package/lib/drama/skills/short-drama-review/references/rubric-assets-prompts.md +9 -13
- package/lib/drama/skills/short-drama-review/references/rubric-story-script.md +104 -4
- package/lib/drama/skills/short-drama-review/references/rubric-visual-motion.md +27 -19
- package/lib/drama/skills/short-drama-review/references/stage-contract.md +4 -63
- package/lib/drama/skills/short-drama-review/scripts/review_check.py +1 -1
- package/lib/drama/skills/short-drama-storyboard/SKILL.md +116 -238
- package/lib/drama/skills/short-drama-storyboard/assets/shot-template.jsonl +1 -1
- package/lib/drama/skills/short-drama-storyboard/references/blocking-playbooks.md +9 -34
- package/lib/drama/skills/short-drama-storyboard/references/comic-keyframe-lexicon.md +156 -0
- package/lib/drama/skills/short-drama-storyboard/references/coverage-audition.md +5 -10
- package/lib/drama/skills/short-drama-storyboard/references/keyframe-craft.md +12 -7
- package/lib/drama/skills/short-drama-storyboard/references/production-shot-grammar.md +19 -4
- package/lib/drama/skills/short-drama-storyboard/references/review-and-fixtures.md +27 -62
- package/lib/drama/skills/short-drama-storyboard/references/scene-visual-plan.md +16 -25
- package/lib/drama/skills/short-drama-storyboard/references/screenplay-to-keyframe-example.md +21 -23
- package/lib/drama/skills/short-drama-storyboard/references/shot-craft.md +8 -10
- package/lib/drama/skills/short-drama-storyboard/references/shot-revision-identity.md +9 -13
- package/lib/drama/skills/short-drama-storyboard/references/stage-contract.md +16 -71
- package/lib/drama/skills/short-drama-storyboard/scripts/storyboard_check.py +1 -1
- package/lib/drama/skills/short-drama-video-prompts/SKILL.md +123 -230
- package/lib/drama/skills/short-drama-video-prompts/assets/motion-spec.jsonl.md +6 -1
- package/lib/drama/skills/short-drama-video-prompts/assets/video-prompts.md +17 -1
- package/lib/drama/skills/short-drama-video-prompts/references/camera-audio-continuity.md +10 -8
- package/lib/drama/skills/short-drama-video-prompts/references/delivery-profile.md +24 -6
- package/lib/drama/skills/short-drama-video-prompts/references/generability.md +2 -2
- package/lib/drama/skills/short-drama-video-prompts/references/minimax-h3.md +154 -0
- package/lib/drama/skills/short-drama-video-prompts/references/motion-recipe.md +35 -27
- package/lib/drama/skills/short-drama-video-prompts/references/performance-action-timing.md +8 -11
- package/lib/drama/skills/short-drama-video-prompts/references/production-prompt-grammar.md +13 -10
- package/lib/drama/skills/short-drama-video-prompts/references/review-and-fixtures.md +34 -63
- package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.0.md +41 -0
- package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.5.md +66 -0
- package/lib/drama/skills/short-drama-video-prompts/references/stage-contract.md +17 -73
- package/lib/drama/skills/short-drama-video-prompts/references/target-model-profile.md +115 -0
- package/lib/drama/skills/short-drama-video-prompts/scripts/container_check.py +1 -1
- package/lib/drama/skills/short-drama-video-prompts/scripts/music_spec_check.py +1 -1
- package/lib/drama/skills/short-drama-write/SKILL.md +74 -268
- package/lib/drama/skills/short-drama-write/references/dialogue-craft.md +7 -0
- package/lib/drama/skills/short-drama-write/references/scene-handoff-capsule.md +17 -43
- package/lib/drama/skills/short-drama-write/references/screenplay-format.md +15 -15
- package/lib/drama/skills/short-drama-write/references/script-craft.md +208 -21
- package/lib/drama/skills/short-drama-write/references/stage-contract.md +11 -70
- package/lib/drama/skills/short-drama-write/scripts/duration_estimate.py +1 -1
- package/lib/drama/skills/short-drama-write/scripts/screenplay_index.py +2 -2
- package/lib/drama/skills/short-drama-write/scripts/voice_sheet_check.py +1 -1
- package/lib/index.js +971 -46
- package/lib/index.js.map +4 -4
- package/lib/novel-to-game/LICENSE +21 -0
- package/lib/novel-to-game/README.md +180 -0
- package/lib/novel-to-game/README_ZH.md +178 -0
- package/lib/novel-to-game/VERSION +1 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/BUILD_BRIEF.md +217 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/.vercelignore +3 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/RUN.md +130 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/bg/compound_new_guofeng.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/finale/fate_coda.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/finale/meng.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/finale/pan.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/finale/pinger.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/finale/xuee.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/finale/yue.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/inner_court_accord_five.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/inner_court_afterglow_five.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/inner_court_alliance.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/public_day10.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/public_day15.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/public_day5.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/title_new_guofeng.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/joint/pan_pinger.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/joint/pan_xuee.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/joint/yue_meng.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/joint/yue_pan.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/joint/yue_pinger.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/meng/explicit.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/meng/prelude.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/milestone/meng.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/milestone/pan.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/milestone/pinger.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/milestone/xuee.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/milestone/yue.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/pan/explicit.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/pan/prelude.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/pinger/explicit.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/pinger/prelude.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/xuee/explicit.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/xuee/prelude.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/yue/explicit.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/yue/prelude.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/heroine/meng/night.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/heroine/pan/night.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/heroine/pinger/night.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/heroine/xuee/night.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/heroine/yue/night.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/household/li_jiaoer.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/scene/gate_collector.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/css/new-guofeng.css +1105 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/css/style.css +2539 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/index.html +18 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/assets.js +147 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/audio.js +332 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/data.js +7472 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/engine.js +13077 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/main.js +3028 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/text.js +32 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/package.json +10 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/vercel.json +23 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/art/generated-art.json +161 -0
- package/lib/novel-to-game/examples/jin-ping-mei/example.json +12 -0
- package/lib/novel-to-game/examples/jin-ping-mei/qa/README.md +31 -0
- package/lib/novel-to-game/examples/jin-ping-mei/qa/playable-model.json +99 -0
- package/lib/novel-to-game/examples/jin-ping-mei/qa/verification.json +41 -0
- package/lib/novel-to-game/examples/jin-ping-mei/qa/verify_playable_model.mjs +129 -0
- package/lib/novel-to-game/manifest.json +508 -0
- package/lib/novel-to-game/skills/game-art-direction/SKILL.md +73 -0
- package/lib/novel-to-game/skills/game-art-direction/agents/openai.yaml +4 -0
- package/lib/novel-to-game/skills/game-art-direction/references/art-direction-method.md +119 -0
- package/lib/novel-to-game/skills/game-build/SKILL.md +84 -0
- package/lib/novel-to-game/skills/game-build/agents/openai.yaml +4 -0
- package/lib/novel-to-game/skills/game-build/references/build-brief-contract.md +109 -0
- package/lib/novel-to-game/skills/game-build/references/generative-media-pipeline.md +56 -0
- package/lib/novel-to-game/skills/game-build/references/playable-model-contract.md +81 -0
- package/lib/novel-to-game/skills/game-build/references/tts-production-contract.md +37 -0
- package/lib/novel-to-game/skills/game-concept/SKILL.md +72 -0
- package/lib/novel-to-game/skills/game-concept/agents/openai.yaml +4 -0
- package/lib/novel-to-game/skills/game-concept/references/concept-method.md +94 -0
- package/lib/novel-to-game/skills/game-qa/SKILL.md +50 -0
- package/lib/novel-to-game/skills/game-qa/agents/openai.yaml +4 -0
- package/lib/novel-to-game/skills/game-qa/references/qa-contract.md +66 -0
- package/lib/novel-to-game/skills/game-qa/references/test-design-method.md +45 -0
- package/lib/novel-to-game/skills/game-world-design/SKILL.md +63 -0
- package/lib/novel-to-game/skills/game-world-design/agents/openai.yaml +4 -0
- package/lib/novel-to-game/skills/game-world-design/references/dialogue-design-method.md +59 -0
- package/lib/novel-to-game/skills/game-world-design/references/game-writing-craft.md +53 -0
- package/lib/novel-to-game/skills/game-world-design/references/narrative-design-method.md +84 -0
- package/lib/novel-to-game/skills/game-world-design/references/numeric-design-method.md +56 -0
- package/lib/novel-to-game/skills/game-world-design/references/world-design-method.md +124 -0
- package/lib/novel-to-game/skills/novel-game-analyze/SKILL.md +77 -0
- package/lib/novel-to-game/skills/novel-game-analyze/agents/openai.yaml +4 -0
- package/lib/novel-to-game/skills/novel-game-analyze/references/gameability-protocol.md +65 -0
- package/lib/novel-to-game/skills/novel-to-game/SKILL.md +71 -0
- package/lib/novel-to-game/skills/novel-to-game/agents/openai.yaml +4 -0
- package/lib/novel-to-game/skills/novel-to-game/references/intake-benchmark-reference.md +42 -0
- package/lib/novel-to-game/skills/novel-to-game/references/intake-method.md +51 -0
- package/lib/novel-to-game/skills/novel-to-game/references/pipeline-contract.md +65 -0
- package/lib/oh-story/manifest.json +419 -309
- package/lib/oh-story/roles/character-designer.md +4 -4
- package/lib/oh-story/roles/consistency-checker.md +1 -1
- package/lib/oh-story/roles/narrative-writer.md +41 -42
- package/lib/oh-story/roles/story-architect.md +19 -23
- package/lib/oh-story/roles/story-explorer.md +8 -5
- package/lib/oh-story/skills/browser-cdp/SKILL.md +1 -1
- package/lib/oh-story/skills/story/SKILL.md +16 -9
- package/lib/oh-story/skills/story/VERSION +1 -1
- package/lib/oh-story/skills/story/references/author-memory.md +163 -0
- package/lib/oh-story/skills/story/scripts/author_memory_commit.py +871 -0
- package/lib/oh-story/skills/story-cover/SKILL.md +1 -1
- package/lib/oh-story/skills/story-deslop/SKILL.md +10 -5
- package/lib/oh-story/skills/story-deslop/references/anti-ai-writing.md +2 -1
- package/lib/oh-story/skills/story-deslop/references/author-memory.md +163 -0
- package/lib/oh-story/skills/story-deslop/references/banned-words.md +6 -4
- package/lib/oh-story/skills/story-deslop/scripts/author_memory_commit.py +871 -0
- package/lib/oh-story/skills/story-deslop/scripts/check-ai-patterns.js +64 -1
- package/lib/oh-story/skills/story-import/SKILL.md +21 -8
- package/lib/oh-story/skills/story-import/references/format-and-structure.md +9 -10
- package/lib/oh-story/skills/story-import/references/structure-mapping-long.md +2 -2
- package/lib/oh-story/skills/story-import/references/structure-mapping-short.md +1 -1
- package/lib/oh-story/skills/story-import/references/tracking-transaction.md +14 -6
- package/lib/oh-story/skills/story-import/scripts/check-outline-contract.js +251 -0
- package/lib/oh-story/skills/story-import/scripts/tracking_commit.py +98 -9
- package/lib/oh-story/skills/story-import/scripts/wordcount_core.py +246 -0
- package/lib/oh-story/skills/story-long-analyze/SKILL.md +4 -4
- package/lib/oh-story/skills/story-long-scan/SKILL.md +1 -1
- package/lib/oh-story/skills/story-long-write/SKILL.md +35 -21
- package/lib/oh-story/skills/story-long-write/references/anti-ai-writing.md +2 -1
- package/lib/oh-story/skills/story-long-write/references/artifact-protocols.md +7 -3
- package/lib/oh-story/skills/story-long-write/references/author-memory.md +163 -0
- package/lib/oh-story/skills/story-long-write/references/banned-words.md +6 -4
- package/lib/oh-story/skills/story-long-write/references/cross-book-recall.md +6 -6
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards.md +1 -1
- package/lib/oh-story/skills/story-long-write/references/genre-readers.md +1 -1
- package/lib/oh-story/skills/{story-setup/references/agent-references/hooks-chapter.md → story-long-write/references/long-chapter-hooks.md} +5 -5
- package/lib/oh-story/skills/story-long-write/references/{quality-checklist.md → long-chapter-quality.md} +2 -1
- package/lib/oh-story/skills/story-long-write/references/long-format.md +42 -0
- package/lib/oh-story/skills/{story-setup/references/agent-references/genre-catalog.md → story-long-write/references/long-genre-catalog.md} +11 -97
- package/lib/oh-story/skills/story-long-write/references/{genre-core-mechanics.md → long-genre-mechanics.md} +1 -1
- package/lib/oh-story/skills/story-long-write/references/{reversal-toolkit.md → long-reversal.md} +18 -32
- package/lib/oh-story/skills/story-long-write/references/{hooks-suspense.md → long-suspense.md} +6 -6
- package/lib/oh-story/skills/story-long-write/references/opening-design.md +1 -1
- package/lib/oh-story/skills/story-long-write/references/outline-structure-theory.md +1 -1
- package/lib/oh-story/skills/story-long-write/references/style-genre-modules.md +1 -1
- package/lib/oh-story/skills/story-long-write/references/tracking-transaction.md +14 -6
- package/lib/oh-story/skills/story-long-write/references/workflow-chapter.md +32 -27
- package/lib/oh-story/skills/story-long-write/references/workflow-daily.md +5 -4
- package/lib/oh-story/skills/story-long-write/references/workflow-revision.md +2 -2
- package/lib/oh-story/skills/story-long-write/references/workflow-setup.md +17 -11
- package/lib/oh-story/skills/story-long-write/references/writing-craft.md +54 -54
- package/lib/oh-story/skills/story-long-write/scripts/author_memory_commit.py +871 -0
- package/lib/oh-story/skills/story-long-write/scripts/check-ai-patterns.js +64 -1
- package/lib/oh-story/skills/story-long-write/scripts/check-outline-contract.js +251 -0
- package/lib/oh-story/skills/story-long-write/scripts/storyctl.py +303 -0
- package/lib/oh-story/skills/story-long-write/scripts/tracking_commit.py +98 -9
- package/lib/oh-story/skills/story-long-write/scripts/wordcount_core.py +246 -0
- package/lib/oh-story/skills/story-review/SKILL.md +26 -17
- package/lib/oh-story/skills/story-review/references/anti-ai-writing.md +2 -1
- package/lib/oh-story/skills/story-review/references/author-memory.md +163 -0
- package/lib/oh-story/skills/story-review/references/banned-words.md +6 -4
- package/lib/oh-story/skills/story-review/references/{quality-checklist.md → review-quality.md} +22 -21
- package/lib/oh-story/skills/story-review/references/tracking-transaction.md +14 -6
- package/lib/oh-story/skills/story-review/scripts/author_memory_commit.py +871 -0
- package/lib/oh-story/skills/story-review/scripts/check-ai-patterns.js +64 -1
- package/lib/oh-story/skills/story-review/scripts/tracking_commit.py +98 -9
- package/lib/oh-story/skills/story-review/scripts/wordcount_core.py +246 -0
- package/lib/oh-story/skills/story-setup/SKILL.md +85 -41
- package/lib/oh-story/skills/story-setup/references/agent-references/agent-quality.md +72 -0
- package/lib/oh-story/skills/story-setup/references/agent-references/agent-reference-profiles.md +55 -0
- package/lib/oh-story/skills/story-setup/references/agent-references/anti-ai-writing.md +2 -1
- package/lib/oh-story/skills/story-setup/references/agent-references/banned-words.md +6 -4
- package/lib/oh-story/skills/story-setup/references/agent-references/format-and-structure.md +9 -10
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards.md +1 -1
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-readers.md +1 -1
- package/lib/oh-story/skills/{story-short-analyze/references/hooks-chapter.md → story-setup/references/agent-references/long-chapter-hooks.md} +5 -5
- package/lib/oh-story/skills/story-setup/references/agent-references/long-emotional-methods.md +209 -0
- package/lib/oh-story/skills/{story-long-write/references/genre-catalog.md → story-setup/references/agent-references/long-genre-catalog.md} +11 -97
- package/lib/oh-story/skills/story-setup/references/agent-references/{genre-core-mechanics.md → long-genre-mechanics.md} +1 -1
- package/lib/oh-story/skills/story-setup/references/agent-references/long-quality.md +40 -0
- package/lib/oh-story/skills/{story-short-write/references/reversal-toolkit.md → story-setup/references/agent-references/long-reversal.md} +18 -32
- package/lib/oh-story/skills/{story-short-write/references/hooks-suspense.md → story-setup/references/agent-references/long-suspense.md} +6 -6
- package/lib/oh-story/skills/story-setup/references/agent-references/opening-design.md +1 -1
- package/lib/oh-story/skills/story-setup/references/agent-references/{emotional-methods.md → short-emotional-methods.md} +4 -4
- package/lib/oh-story/skills/{story-long-write/references/genre-writing-formulas.md → story-setup/references/agent-references/short-genre-formulas.md} +32 -44
- package/lib/oh-story/skills/story-setup/references/agent-references/short-quality.md +39 -0
- package/lib/oh-story/skills/story-setup/references/agent-references/{reversal-toolkit.md → short-reversal.md} +29 -23
- package/lib/oh-story/skills/story-setup/references/agent-references/{hooks-suspense.md → short-suspense.md} +31 -31
- package/lib/oh-story/skills/story-setup/references/agent-references/style-genre-modules.md +1 -1
- package/lib/oh-story/skills/story-setup/references/agent-references/writing-craft.md +55 -55
- package/lib/oh-story/skills/story-short-analyze/SKILL.md +28 -28
- package/lib/oh-story/skills/story-short-analyze/references/{character-basics.md → analysis-character-basics.md} +1 -1
- package/lib/oh-story/skills/story-short-analyze/references/{character-design-methods.md → analysis-character-design.md} +1 -1
- package/lib/oh-story/skills/story-short-analyze/references/{character-relations.md → analysis-character-relations.md} +1 -1
- package/lib/oh-story/skills/story-short-analyze/references/{hooks-paragraph.md → analysis-paragraph-hooks.md} +1 -1
- package/lib/oh-story/skills/story-short-analyze/references/{genre-readers.md → analysis-reader-profile.md} +2 -2
- package/lib/oh-story/skills/story-short-analyze/references/analysis-report-style.md +45 -0
- package/lib/oh-story/skills/story-short-analyze/references/analysis-short-genres.md +65 -0
- package/lib/oh-story/skills/story-short-analyze/references/analysis-short-hooks.md +77 -0
- package/lib/oh-story/skills/story-short-analyze/references/analysis-short-mechanics.md +82 -0
- package/lib/oh-story/skills/story-short-analyze/references/analysis-short-patterns.md +50 -0
- package/lib/oh-story/skills/story-short-analyze/references/analysis-short-suspense.md +98 -0
- package/lib/oh-story/skills/story-short-analyze/references/{genre-writing-techniques.md → analysis-writing-techniques.md} +21 -19
- package/lib/oh-story/skills/story-short-analyze/references/deconstruction-examples.md +1 -1
- package/lib/oh-story/skills/story-short-analyze/references/material-decomposition.md +21 -28
- package/lib/oh-story/skills/story-short-analyze/references/output-contract.md +1 -1
- package/lib/oh-story/skills/story-short-analyze/references/output-templates.md +17 -17
- package/lib/oh-story/skills/story-short-analyze/references/{quality-checklist.md → source-story-quality.md} +28 -49
- package/lib/oh-story/skills/story-short-analyze/references/zhihu-style.md +2 -2
- package/lib/oh-story/skills/story-short-scan/SKILL.md +1 -1
- package/lib/oh-story/skills/story-short-write/SKILL.md +78 -55
- package/lib/oh-story/skills/story-short-write/references/author-memory.md +163 -0
- package/lib/oh-story/skills/story-short-write/references/banned-words.md +6 -4
- package/lib/oh-story/skills/story-short-write/references/cross-book-recall.md +3 -3
- package/lib/oh-story/skills/story-short-write/references/emotional-methods.md +4 -4
- package/lib/oh-story/skills/story-short-write/references/genre-styles//344/270/226/346/203/205/346/211/223/350/204/270.md +3 -3
- package/lib/oh-story/skills/story-short-write/references/genre-styles//345/217/214/347/224/267/344/270/273.md +2 -2
- package/lib/oh-story/skills/story-short-write/references/genre-styles//345/244/215/344/273/207/346/211/223/350/204/270.md +3 -3
- package/lib/oh-story/skills/story-short-write/references/genre-styles//345/256/205/346/226/227/345/256/253/346/226/227.md +6 -6
- package/lib/oh-story/skills/story-short-write/references/genre-styles//346/200/273/350/243/201/350/261/252/351/227/250.md +3 -3
- package/lib/oh-story/skills/story-short-write/references/genre-styles//346/202/254/347/226/221.md +4 -4
- package/lib/oh-story/skills/story-short-write/references/genre-styles//346/260/221/344/277/227/346/200/252/350/260/210.md +7 -7
- package/lib/oh-story/skills/story-short-write/references/genre-styles//346/262/231/351/233/225/350/204/221/346/264/236.md +5 -5
- package/lib/oh-story/skills/story-short-write/references/genre-styles//347/224/234/345/256/240.md +4 -4
- 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 +3 -3
- package/lib/oh-story/skills/story-short-write/references/genre-writing-formulas.md +32 -44
- package/lib/oh-story/skills/story-short-write/references/genre-writing-techniques.md +20 -18
- package/lib/oh-story/skills/story-short-write/references/output-contract.md +1 -1
- package/lib/oh-story/skills/story-short-write/references/short-craft.md +18 -18
- package/lib/oh-story/skills/story-short-write/references/short-deslop.md +1 -1
- package/lib/oh-story/skills/story-short-write/references/short-format.md +38 -8
- package/lib/oh-story/skills/story-short-write/references/{quality-checklist.md → short-prose-quality.md} +22 -21
- package/lib/oh-story/skills/story-short-write/references/short-reversal.md +355 -0
- package/lib/oh-story/skills/{story-short-analyze/references/hooks-suspense.md → story-short-write/references/short-suspense.md} +31 -31
- package/lib/oh-story/skills/story-short-write/references/submission-craft.md +2 -2
- package/lib/oh-story/skills/story-short-write/references/writing-workflow.md +31 -22
- package/lib/oh-story/skills/story-short-write/scripts/author_memory_commit.py +871 -0
- package/lib/oh-story/skills/story-short-write/scripts/check-ai-patterns.js +64 -1
- package/lib/oh-story/skills/story-short-write/scripts/check-delivery-contract.js +212 -0
- package/lib/oh-story/skills/story-short-write/scripts/check-phase2-contract.js +363 -0
- package/lib/types/client/drama-production-view.d.ts +34 -0
- package/lib/types/client/drama-production-view.d.ts.map +1 -0
- package/lib/types/client/drama-production.d.ts +92 -0
- package/lib/types/client/drama-production.d.ts.map +1 -0
- package/lib/types/client/file-activity.d.ts +9 -2
- package/lib/types/client/file-activity.d.ts.map +1 -1
- package/lib/types/client/index.d.ts +1 -1
- package/lib/types/client/index.d.ts.map +1 -1
- package/lib/types/client/production-intents.d.ts +9 -0
- package/lib/types/client/production-intents.d.ts.map +1 -0
- package/lib/types/client/production-prompts.d.ts +9 -0
- package/lib/types/client/production-prompts.d.ts.map +1 -0
- package/lib/types/client/production-runtime.d.ts +58 -0
- package/lib/types/client/production-runtime.d.ts.map +1 -0
- package/lib/types/client/video-studio.d.ts +41 -0
- package/lib/types/client/video-studio.d.ts.map +1 -0
- package/lib/types/client/workbench-ui.d.ts +5 -0
- package/lib/types/client/workbench-ui.d.ts.map +1 -0
- package/lib/types/game-verification.d.ts +16 -0
- package/lib/types/game-verification.d.ts.map +1 -0
- package/lib/types/index.d.ts +5 -2
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/production-intent.d.ts +21 -0
- package/lib/types/production-intent.d.ts.map +1 -0
- package/lib/types/production-tool.d.ts +5 -0
- package/lib/types/production-tool.d.ts.map +1 -0
- package/lib/types/reference-tool.d.ts +6 -0
- package/lib/types/reference-tool.d.ts.map +1 -0
- package/lib/types/role-provider.d.ts.map +1 -1
- package/lib/types/role-tool.d.ts +3 -1
- package/lib/types/role-tool.d.ts.map +1 -1
- package/lib/types/skill-provider.d.ts +7 -0
- package/lib/types/skill-provider.d.ts.map +1 -1
- package/lib/types/video-project.d.ts +42 -0
- package/lib/types/video-project.d.ts.map +1 -0
- package/lib/types/workspace-request-trust.d.ts +6 -0
- package/lib/types/workspace-request-trust.d.ts.map +1 -1
- package/lib/types/workspace-route.d.ts +20 -0
- package/lib/types/workspace-route.d.ts.map +1 -1
- package/lib/video-recap/CHANGELOG.md +282 -0
- package/lib/video-recap/LICENSE +21 -0
- package/lib/video-recap/README.en.md +257 -0
- package/lib/video-recap/README.md +255 -0
- package/lib/video-recap/manifest.json +684 -0
- package/lib/video-recap/skills/video-assemble/SKILL.md +97 -0
- package/lib/video-recap/skills/video-assemble/references/jianying/LICENSE.duo-video +21 -0
- package/lib/video-recap/skills/video-assemble/references/jianying/SOURCE.md +15 -0
- package/lib/video-recap/skills/video-assemble/references/jianying/empty_draft_meta_info.json +69 -0
- package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_combination_segment.json +84 -0
- package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_combination_video_material.json +98 -0
- package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_draft.json +204 -0
- package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_material_video.json +83 -0
- package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_meta_material_value.json +23 -0
- package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_project_info.json +133 -0
- package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_segment.json +70 -0
- package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_text_styles.json +30 -0
- package/lib/video-recap/skills/video-assemble/references/jianying/empty_yj_material_audio.json +41 -0
- package/lib/video-recap/skills/video-assemble/references/jianying/empty_yj_material_text.json +109 -0
- package/lib/video-recap/skills/video-assemble/scripts/artifacts.py +88 -0
- package/lib/video-recap/skills/video-assemble/scripts/assemble.py +345 -0
- package/lib/video-recap/skills/video-assemble/scripts/assemble_constants.py +34 -0
- package/lib/video-recap/skills/video-assemble/scripts/assembly_contract.py +305 -0
- package/lib/video-recap/skills/video-assemble/scripts/assembly_settings.py +94 -0
- package/lib/video-recap/skills/video-assemble/scripts/audio_automation.py +205 -0
- package/lib/video-recap/skills/video-assemble/scripts/audio_mix.py +555 -0
- package/lib/video-recap/skills/video-assemble/scripts/export_jianying.py +261 -0
- package/lib/video-recap/skills/video-assemble/scripts/jianying_builders.py +767 -0
- package/lib/video-recap/skills/video-assemble/scripts/jianying_model.py +111 -0
- package/lib/video-recap/skills/video-assemble/scripts/jianying_optional.py +24 -0
- package/lib/video-recap/skills/video-assemble/scripts/jianying_schema.py +109 -0
- package/lib/video-recap/skills/video-assemble/scripts/jianying_templates.py +37 -0
- package/lib/video-recap/skills/video-assemble/scripts/jianying_timeline_contract.py +191 -0
- package/lib/video-recap/skills/video-assemble/scripts/jianying_tracks.py +75 -0
- package/lib/video-recap/skills/video-assemble/scripts/jianying_writer.py +394 -0
- package/lib/video-recap/skills/video-assemble/scripts/lib.py +239 -0
- package/lib/video-recap/skills/video-assemble/scripts/media.py +243 -0
- package/lib/video-recap/skills/video-assemble/scripts/narration_audio.py +477 -0
- package/lib/video-recap/skills/video-assemble/scripts/render_preflight.py +46 -0
- package/lib/video-recap/skills/video-assemble/scripts/source_subtitles.py +486 -0
- package/lib/video-recap/skills/video-assemble/scripts/subtitle_core.py +376 -0
- package/lib/video-recap/skills/video-assemble/scripts/subtitle_render.py +88 -0
- package/lib/video-recap/skills/video-assemble/scripts/timeline.py +248 -0
- package/lib/video-recap/skills/video-assemble/scripts/timeline_emit.py +89 -0
- package/lib/video-recap/skills/video-assemble/scripts/visual_render.py +512 -0
- package/lib/video-recap/skills/video-cut/SKILL.md +90 -0
- package/lib/video-recap/skills/video-cut/scripts/cut.py +67 -0
- package/lib/video-recap/skills/video-cut/scripts/cut_cli.py +320 -0
- package/lib/video-recap/skills/video-cut/scripts/cut_contract.py +545 -0
- package/lib/video-recap/skills/video-cut/scripts/cut_render.py +348 -0
- package/lib/video-recap/skills/video-cut/scripts/lib.py +77 -0
- package/lib/video-recap/skills/video-cut/scripts/media_geometry.py +341 -0
- package/lib/video-recap/skills/video-cut/scripts/narration_mapping.py +249 -0
- package/lib/video-recap/skills/video-cut/scripts/sentence_boundaries.py +745 -0
- package/lib/video-recap/skills/video-recap/SKILL.md +216 -0
- package/lib/video-recap/skills/video-recap/references/config-playbook.md +61 -0
- package/lib/video-recap/skills/video-recap/references/creative-editing-playbook.md +225 -0
- package/lib/video-recap/skills/video-recap/references/data-schema.md +534 -0
- package/lib/video-recap/skills/video-recap/references/research-guide.md +74 -0
- package/lib/video-recap/skills/video-recap/references/shift-left-qc-schema.md +23 -0
- package/lib/video-recap/skills/video-recap/references/timeline-and-jianying.md +251 -0
- package/lib/video-recap/skills/video-recap/scripts/doctor.py +483 -0
- package/lib/video-recap/skills/video-recap/scripts/final_qc.py +737 -0
- package/lib/video-recap/skills/video-recap/scripts/lib.py +242 -0
- package/lib/video-recap/skills/video-recap/scripts/materials.py +457 -0
- package/lib/video-recap/skills/video-recap/scripts/mimo_qc.py +95 -0
- package/lib/video-recap/skills/video-recap/scripts/mimo_qc_client.py +18 -0
- package/lib/video-recap/skills/video-recap/scripts/mimo_qc_contract.py +9 -0
- package/lib/video-recap/skills/video-recap/scripts/mimo_qc_evidence.py +371 -0
- package/lib/video-recap/skills/video-recap/scripts/mimo_qc_observations.py +201 -0
- package/lib/video-recap/skills/video-recap/scripts/mimo_qc_payload.py +227 -0
- package/lib/video-recap/skills/video-recap/scripts/mimo_qc_report.py +362 -0
- package/lib/video-recap/skills/video-recap/scripts/mimo_qc_runner.py +129 -0
- package/lib/video-recap/skills/video-recap/scripts/qc_contract.py +338 -0
- package/lib/video-recap/skills/video-recap/scripts/recap.py +9 -0
- package/lib/video-recap/skills/video-recap/scripts/recap_cli.py +140 -0
- package/lib/video-recap/skills/video-recap/scripts/recap_inspect.py +550 -0
- package/lib/video-recap/skills/video-recap/scripts/recap_review.py +77 -0
- package/lib/video-recap/skills/video-recap/scripts/recap_runner.py +654 -0
- package/lib/video-recap/skills/video-recap/scripts/recap_runtime.py +335 -0
- package/lib/video-recap/skills/video-recap/scripts/recap_stage_qc.py +217 -0
- package/lib/video-recap/skills/video-recap/scripts/recap_timeline.py +795 -0
- package/lib/video-recap/skills/video-script/SKILL.md +248 -0
- package/lib/video-recap/skills/video-script/references/creative-editing-playbook.md +225 -0
- package/lib/video-recap/skills/video-script/references/research-guide.md +75 -0
- package/lib/video-recap/skills/video-script/scripts/agent_brief.py +399 -0
- package/lib/video-recap/skills/video-script/scripts/agent_text.py +410 -0
- package/lib/video-recap/skills/video-script/scripts/brief_context.py +403 -0
- package/lib/video-recap/skills/video-script/scripts/brief_inputs.py +332 -0
- package/lib/video-recap/skills/video-script/scripts/brief_timeline.py +442 -0
- package/lib/video-recap/skills/video-script/scripts/deslop_qc.py +237 -0
- package/lib/video-recap/skills/video-script/scripts/evidence_bundle.py +492 -0
- package/lib/video-recap/skills/video-script/scripts/lib.py +327 -0
- package/lib/video-recap/skills/video-script/scripts/narration.py +12 -0
- package/lib/video-recap/skills/video-script/scripts/narration_lint.py +678 -0
- package/lib/video-recap/skills/video-script/scripts/review.py +42 -0
- package/lib/video-recap/skills/video-script/scripts/review_grounding.py +262 -0
- package/lib/video-recap/skills/video-script/scripts/review_response.py +761 -0
- package/lib/video-recap/skills/video-script/scripts/review_runner.py +200 -0
- package/lib/video-recap/skills/video-script/scripts/speech_ownership.py +204 -0
- package/lib/video-recap/skills/video-script/scripts/timeline_fusion.py +199 -0
- package/lib/video-recap/skills/video-script/scripts/validate.py +164 -0
- package/lib/video-recap/skills/video-understanding/SKILL.md +75 -0
- package/lib/video-recap/skills/video-understanding/references/data-schema.md +299 -0
- package/lib/video-recap/skills/video-understanding/references/prompt-templates.md +37 -0
- package/lib/video-recap/skills/video-understanding/references/research-guide.md +74 -0
- package/lib/video-recap/skills/video-understanding/scripts/agent_brief.py +399 -0
- package/lib/video-recap/skills/video-understanding/scripts/agent_text.py +410 -0
- package/lib/video-recap/skills/video-understanding/scripts/asr.py +260 -0
- package/lib/video-recap/skills/video-understanding/scripts/brief.py +12 -0
- package/lib/video-recap/skills/video-understanding/scripts/brief_context.py +403 -0
- package/lib/video-recap/skills/video-understanding/scripts/brief_inputs.py +332 -0
- package/lib/video-recap/skills/video-understanding/scripts/brief_timeline.py +442 -0
- package/lib/video-recap/skills/video-understanding/scripts/consolidate.py +647 -0
- package/lib/video-recap/skills/video-understanding/scripts/deslop_qc.py +237 -0
- package/lib/video-recap/skills/video-understanding/scripts/detect.py +513 -0
- package/lib/video-recap/skills/video-understanding/scripts/extract.py +62 -0
- package/lib/video-recap/skills/video-understanding/scripts/lib.py +470 -0
- package/lib/video-recap/skills/video-understanding/scripts/narration_lint.py +678 -0
- package/lib/video-recap/skills/video-understanding/scripts/speech_ownership.py +204 -0
- package/lib/video-recap/skills/video-understanding/scripts/storyboard.py +507 -0
- package/lib/video-recap/skills/video-understanding/scripts/timeline_fusion.py +199 -0
- package/lib/video-recap/skills/video-understanding/scripts/understand.py +9 -0
- package/lib/video-recap/skills/video-understanding/scripts/understanding_brief.py +216 -0
- package/lib/video-recap/skills/video-understanding/scripts/understanding_cache.py +327 -0
- package/lib/video-recap/skills/video-understanding/scripts/understanding_runner.py +367 -0
- package/lib/video-recap/skills/video-understanding/scripts/understanding_storyboard.py +162 -0
- package/lib/video-recap/skills/video-understanding/scripts/vlm.py +705 -0
- package/lib/video-recap/skills/video-voiceover/SKILL.md +81 -0
- package/lib/video-recap/skills/video-voiceover/scripts/dub.py +637 -0
- package/lib/video-recap/skills/video-voiceover/scripts/fish_audio.py +109 -0
- package/lib/video-recap/skills/video-voiceover/scripts/lib.py +421 -0
- package/lib/video-recap/skills/video-voiceover/scripts/tts_audio.py +113 -0
- package/lib/video-recap/skills/video-voiceover/scripts/voiceover.py +782 -0
- package/package.json +57 -41
- package/lib/drama/skills/short-drama/references/lifecycle-commands.md +0 -130
- package/lib/oh-story/skills/story-deslop/scripts/check-outline-copy.js +0 -241
- package/lib/oh-story/skills/story-long-write/references/format-and-structure.md +0 -169
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-writing-formulas.md +0 -444
- package/lib/oh-story/skills/story-setup/references/agent-references/quality-checklist.md +0 -247
- package/lib/oh-story/skills/story-short-analyze/references/anti-ai-writing.md +0 -582
- package/lib/oh-story/skills/story-short-analyze/references/banned-words.md +0 -147
- package/lib/oh-story/skills/story-short-analyze/references/genre-catalog.md +0 -490
- package/lib/oh-story/skills/story-short-analyze/references/genre-core-mechanics.md +0 -425
- package/lib/oh-story/skills/story-short-analyze/references/genre-writing-formulas.md +0 -453
- /package/lib/oh-story/skills/{story-long-write/references/hooks-chapter.md → story-setup/references/agent-references/short-chapter-hooks.md} +0 -0
- /package/lib/oh-story/skills/{story-long-write/references/hooks-paragraph.md → story-setup/references/agent-references/short-paragraph-hooks.md} +0 -0
|
@@ -1,70 +1,10 @@
|
|
|
1
1
|
# 分镜阶段契约
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
本阶段只拥有 `剧集/<EP>/分镜.md` 中的 `SHOT-...`、镜头职责、来源、时长、起止边界、声音、视觉依据和
|
|
4
|
+
冻结关键帧。它继承剧本事实与视觉设定,不改写剧情或资产身份。
|
|
4
5
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
- [制作形态需要什么](#制作形态需要什么)
|
|
8
|
-
- [参考媒体与补拍](#参考媒体与补拍)
|
|
9
|
-
- [本阶段规则](#本阶段规则)
|
|
10
|
-
|
|
11
|
-
本文件是本技能的自包含契约:预检、所有权、形态输入与规则表都在这里,
|
|
12
|
-
不需要读取其他技能的文件。
|
|
13
|
-
|
|
14
|
-
## 独立运行与项目集成
|
|
15
|
-
|
|
16
|
-
本技能可以单独安装并运行;下面几条说明项目工具存在时怎样集成。
|
|
17
|
-
|
|
18
|
-
1. **读取直接输入**:只读取用户明确提供或当前任务实际需要的文件,不批量加载整个项目。
|
|
19
|
-
2. **可选项目集成**:若存在 `short-drama.json` 且 core 项目工具可用,可以运行
|
|
20
|
-
`python3 <core>/scripts/project_tool.py status <project>`,使用返回的目录布局和语言设置;
|
|
21
|
-
core 不可用时,直接基于已提供输入产出本阶段文件。
|
|
22
|
-
3. **可选发布生命周期**:项目工具可用时,用 `publish` 原子发布并用 `--input <path>`
|
|
23
|
-
声明直接输入;`accept`、`review` 与 `package` 继续承担确认、复核与交付。
|
|
24
|
-
4. **保持职责分离**:创作者确认、内容修订和复核是不同动作;reviewer 提修改要求,负责人改文件。
|
|
25
|
-
|
|
26
|
-
## 所有权边界
|
|
27
|
-
|
|
28
|
-
- **本阶段拥有**:可选 coverage audition 与场次视觉计划、覆盖处置、镜头目的、镜头时长、
|
|
29
|
-
绑定、起止边界;关键帧的注意焦点、构图、机位/镜头与冻结站位。渲染出的关键帧提示词是缓存。
|
|
30
|
-
- **本阶段继承**:剧本的信息权限与原文要求;资产的身份与变体绑定。
|
|
31
|
-
- **本阶段不越权**:不用风格词改写人物状态,不新建资产身份,不改写剧本事实。镜头边界
|
|
32
|
-
拥有起止位置、姿态、目光、双手、持物与可见连续性;关键帧只投影这些事实,永不覆盖它们。
|
|
33
|
-
|
|
34
|
-
## 制作形态需要什么
|
|
35
|
-
|
|
36
|
-
视觉风格不是贴在提示词前面的标签。创作者已接受的视觉方向与制作形态由项目层决定并传入,
|
|
37
|
-
**本技能不加载形态卡,也不自行选择形态**;本节只说明本阶段需要形态回答什么、以及拿到
|
|
38
|
-
答案后投影成哪些字段。
|
|
39
|
-
|
|
40
|
-
形态决定属于 `craft_default`:创作者说明理由即可覆盖。形态不能创造新的
|
|
41
|
-
`structural_invariant`,也不能改写身份、地理、持物归属与可读文字政策。审查者不得单凭
|
|
42
|
-
形态偏好阻断交付。
|
|
43
|
-
|
|
44
|
-
不要用“加一句风格前缀”处理形态差异。前缀只改变检索标签;形态改变的是**必须出现和
|
|
45
|
-
可以省略的字段**,只有后者会被执行,也只有后者能被审查。
|
|
46
|
-
|
|
47
|
-
本阶段要向形态决定问:**注意力、层次、遮挡、可动层与冻结边界**在本形态下怎么表达。
|
|
48
|
-
|
|
49
|
-
运动预算的默认值随形态改变:实拍默认全动作,要写的是限制;三维默认可全动作,但摄影机
|
|
50
|
-
是最贵的一层;限动画与水墨默认保持姿态,要写的是**哪一层例外**;Q 版默认一镜一因果。
|
|
51
|
-
省掉这一判断的后果可预测:默认保持姿态的形态会被写成全员飘动,默认全动作的形态会被
|
|
52
|
-
写成一串没有接触点的动作词。
|
|
53
|
-
|
|
54
|
-
本阶段新增:注意力、层次、遮挡、可动层与冻结边界。
|
|
55
|
-
|
|
56
|
-
## 参考媒体与补拍
|
|
57
|
-
|
|
58
|
-
- **参考图能决定什么要逐张写明**:每张参考的用途、可以照搬什么、不可以照搬什么。身份参考
|
|
59
|
-
不自动决定构图;构图、尺度或效果参考不自动带入图中人物、服装、文字、道具与故事状态。
|
|
60
|
-
- **像素主张需要证据**:关于参考图上可见内容(尤其文字、水印、标牌、界面)的断言,必须
|
|
61
|
-
来自创作者/参考图权利人的可核对说明,或运行环境获授权后形成的输入参考观察记录,并绑定
|
|
62
|
-
被检查的字节。两者都没有时保持 `unverified`,负面提示词不能代替证据。
|
|
63
|
-
- **观众揭示时机**:某一事实何时可被观众看到,由已接受的可见性决定绑定其来源、载体、
|
|
64
|
-
权限、触发与保护方式。构图既不能提前泄露该事实,也不能遮掉本环节必须传达的载体。
|
|
65
|
-
- **母版、补拍与替代**:补拍默认只补充、不替代母版。普通母版不增加版本范围字段;只有
|
|
66
|
-
补拍/替代版才声明 `pickup | alternate`,用同一文件内稳定的记录 ID 说明母版与补充关系,并把每项原文要求对应到当前字段或说明
|
|
67
|
-
去向。只有下游审查结论才能批准替代,不得回写形成循环引用。
|
|
6
|
+
覆盖比较、场次视觉计划和调度推演都留在上下文;只有最终镜头与关键决定进入 `分镜.md`。来源使用
|
|
7
|
+
场景 ID。已存在的图片提示词条目可用 `IMG-...` 可见标题引用;它不是已生成图片的证明,也不是分镜的前置门禁。没有条目时直接引用《视觉设定.md》,不建立 coverage、shots、keyframes、audition 或接受记录。
|
|
68
8
|
|
|
69
9
|
## 本阶段规则
|
|
70
10
|
|
|
@@ -72,11 +12,11 @@
|
|
|
72
12
|
|
|
73
13
|
| ID | Class | Knowledge |
|
|
74
14
|
|---|---|---|
|
|
75
|
-
| SHT-01 | structural_invariant | Every production-relevant
|
|
15
|
+
| SHT-01 | structural_invariant | Every production-relevant scene action, line, sound and on-screen text is carried by a shot or explicitly omitted with a creative reason. |
|
|
76
16
|
| SHT-02 | reviewed_invariant | Each shot has a dramatic/viewing purpose and preserves its source meaning. |
|
|
77
17
|
| SHT-03 | craft_default | Keep a short shot focused on the smallest action/reaction unit that carries its purpose; combine or split it according to performance, information, and continuity rather than a fixed count. |
|
|
78
18
|
| SHT-04 | craft_default | Change framing/camera because attention, pressure, alignment, reveal, or rhythm changes. |
|
|
79
|
-
| SHT-05 | structural_invariant | A keyframe projects one
|
|
19
|
+
| SHT-05 | structural_invariant | A keyframe projects one shot boundary and the shot's declared visual basis. Any `IMG-...` used is an existing image-prompt heading, not a claim that generated media exists; when none is suitable, the shot names the relevant textual visual-setting entries without inventing an ID. |
|
|
80
20
|
| SHT-06 | reviewed_invariant | A keyframe is one freezeable instant, not an ordered action chain. |
|
|
81
21
|
| SHT-07 | taste_option | Lens vocabulary, tempo, and locked/handheld/formal style follow visual direction. |
|
|
82
22
|
| SHT-08 | reviewed_invariant | Each authoritative source action is realized once; repeated coverage adds reaction/detail/recontextualization rather than replaying it. |
|
|
@@ -87,12 +27,16 @@
|
|
|
87
27
|
| SHT-13 | reviewed_invariant | Multi-character blocking projects sourced, directed relationships into compatible positions, gaze, distance, and action lines for the current boundary. |
|
|
88
28
|
| SHT-14 | reviewed_invariant | A contested moving object preserves ownership, trajectory, direction, time/round state, and end location across cuts unless an authorized ellipsis says otherwise. |
|
|
89
29
|
| SHT-15 | reviewed_invariant | When the creator has declared delivery-surface overlay regions with their permanence and source, what a shot must be read for—face and gaze, readable evidence text, the decisive hand action—does not sit only inside those regions, and shots bind the declared version. An undeclared surface leaves the rule inactive: record it as unresolved and do not restage against a guessed region. |
|
|
90
|
-
| SHT-16 | structural_invariant |
|
|
30
|
+
| SHT-16 | structural_invariant | The episode duration is the arithmetic sum of visible shot durations; an unresolved duration stays visibly unresolved, and a target delta is reported rather than used as a universal quality gate. |
|
|
91
31
|
| SHT-17 | structural_invariant | A keyframe declares which boundary it freezes and binds that shot's matching boundary field. An end keyframe is a projection of `end_boundary`, never a second end-state authority, and per-shot keyframe count stays open: one start frame by default, an end frame only when the delivery workflow consumes it. Handing over a start/end pair delegates the motion between them to interpolation, so an action the shot exists for cannot rest on that gap alone. |
|
|
92
32
|
| SHT-18 | craft_default | For a scene where directing choice materially changes audience knowledge, alignment, spatial pressure, performance ownership, or the landing, an accepted scene visual plan may bridge project direction and shots; it binds exact screenplay blocks, direction/profile, Location/View and relevant asset states, ordinary scenes skip it, and it never owns screenplay facts or shot boundaries. |
|
|
93
|
-
| SHT-19 | reviewed_invariant | When a coverage audition is used, its approaches genuinely differ by knowledge timing, alignment, performance space, strongest image, landing, losses, or production fit; it uses no fixed option, grid, framing, or shot-count formula, and
|
|
33
|
+
| SHT-19 | reviewed_invariant | When a coverage audition is used, its approaches genuinely differ by knowledge timing, alignment, performance space, strongest image, landing, losses, or production fit; it uses no fixed option, grid, framing, or shot-count formula, and the selected approach is stated before formal shots are written. |
|
|
94
34
|
| SHT-20 | reviewed_invariant | Shot revision identity follows directing responsibility rather than array position or text similarity: reorder preserves IDs, insertion creates one, split/merge retires replaced IDs and creates successors, and active coverage plus downstream refs are reconciled before delivery. |
|
|
95
|
-
| SHT-21 | reviewed_invariant | A keyframe's
|
|
35
|
+
| SHT-21 | reviewed_invariant | A keyframe's copyable text carries only what will be visible; IDs, workflow notes, file paths and craft commentary stay outside the prompt. Two prompts that differ only by identifiers are a template, not two frames. |
|
|
36
|
+
| SHT-22 | structural_invariant | Each shot carries a required `视觉依据` field, written after the frozen keyframe, listing every visible character, place, or prop whose identity, Look, or geography must remain recognizable; each item resolves to an existing `视觉设定.md` entry. Whatever the keyframe text calls by name — an entry name or its declared `画面代称` — appears there. Small/background subjects remain in scope when recognition matters; offscreen voices and unidentifiable fragments do not. |
|
|
37
|
+
| SHT-23 | structural_invariant | An omitted reference choice is not consent to text-to-video. After reference discovery, each shot either binds all verified real images, preserves partial bindings while naming the still-missing start/identity/geography/prop images, or records the creator's explicit text-to-video choice. A prompt entry, planned image, plausible filename, or text description never counts as a real image. |
|
|
38
|
+
| SHT-24 | reviewed_invariant | A visual basis describes this frame, not the episode's cast list. Each declared 控制 scope stays within what this frame can carry, and a binding is not carried forward merely because the subject remains in the scene. |
|
|
39
|
+
| SHT-25 | structural_invariant | Every real reference image a shot binds declares one 用途 from the closed set 身份/造型状态/地理/构图/尺度/效果/起始帧/结束帧/风格, so the shot can say which start frame and which identity/geography/prop pictures a downstream job sends. At most one 起始帧 and one 结束帧 per shot, and 结束帧 requires 起始帧. |
|
|
96
40
|
|
|
97
41
|
### `CON`
|
|
98
42
|
|
|
@@ -101,9 +45,10 @@
|
|
|
101
45
|
| CON-01 | structural_invariant | Linked end and next start states match or have an explicit owner revision. |
|
|
102
46
|
| CON-02 | reviewed_invariant | Knowledge, injury, ownership, weather, light, or physical state does not teleport/regress without story cause. |
|
|
103
47
|
| CON-03 | craft_default | Track downstream-relevant deltas, not the whole 设定集 in every shot. |
|
|
104
|
-
| CON-04 | structural_invariant | A
|
|
48
|
+
| CON-04 | structural_invariant | A continuity change states before, after, cause/source scene, effective range, and affected visible IDs. |
|
|
105
49
|
| CON-05 | taste_option | Declared montage, ellipsis, dream, or subjective imagery may intentionally break ordinary continuity. |
|
|
106
|
-
| CON-06 | structural_invariant | A
|
|
50
|
+
| CON-06 | structural_invariant | A continuity change names every existing downstream document it affects; future work is described, not pre-created. |
|
|
51
|
+
| CON-07 | structural_invariant | A continuity lock declared in `视觉设定.md` fixes one verbatim surface plus its shot and image scope; every in-scope frozen keyframe, motion prompt, and named image prompt carries that surface unchanged. |
|
|
107
52
|
|
|
108
53
|
规则分级由高到低:`structural_invariant`(结构缺陷,阻断)、
|
|
109
54
|
`reviewed_invariant`(需证据判断)、`craft_default`(常用做法,可覆盖)、
|
|
@@ -816,7 +816,7 @@ def main(argv: list[str] | None = None) -> int:
|
|
|
816
816
|
except CheckError as error:
|
|
817
817
|
print(f"{type(error).__name__}: {error}", file=sys.stderr)
|
|
818
818
|
return 2
|
|
819
|
-
print(json.dumps(result, ensure_ascii=
|
|
819
|
+
print(json.dumps(result, ensure_ascii=True, sort_keys=True))
|
|
820
820
|
return 0 if result["status"] == "pass" else 1
|
|
821
821
|
|
|
822
822
|
|
|
@@ -1,245 +1,138 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: short-drama-video-prompts
|
|
3
|
-
description:
|
|
3
|
+
description: 把短剧分镜和冻结关键帧写成可直接复制的视频提示词 Markdown,也可按用户要求写时间线配乐/主题曲意图。用户提到文生/图生视频动作、人物表演、运镜、口型、环境运动、镜头时长、起止状态、把分镜转成视频提示词或写配乐提示词时使用;不生成媒体、不创作歌词、不改分镜边界。
|
|
4
4
|
license: MIT
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# 短剧视频与时间线音乐提示词
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
它不替创作者写词,也不把配乐为了某个供应商方便而烘焙进每镜。
|
|
12
|
-
|
|
13
|
-
预览、末端报告与补拍说明是创作者读的:项目内跟随 `short-drama.json#/language`,独立运行时
|
|
14
|
-
跟随用户使用的语言。送给视频生成器的**提示词正文**在项目内跟随
|
|
15
|
-
`#/format/prompt_language`,独立运行时由用户指定、未指定则为 `en`。改了描述语言
|
|
16
|
-
不等于改了画面里说什么或写什么——那来自已接受的资产记录与文字政策。
|
|
17
|
-
|
|
18
|
-
## 开始前
|
|
19
|
-
|
|
20
|
-
本技能可独立安装和执行。先读取用户明确提供的镜头、关键帧与本任务直接输入;若当前目录是
|
|
21
|
-
`short-drama` 项目且项目工具可用,可以读取 `status` 并使用其发布生命周期,但缺少 core
|
|
22
|
-
或任何其他技能都不是视频提示词工作的阻断条件。[阶段契约](references/stage-contract.md)
|
|
23
|
-
给出本阶段边界、制作形态输入与规则表,无需读取其他技能的文件。
|
|
9
|
+
把已确认镜头和起始帧写成有边界、可生成、可直接复制的 `剧集/<EP>/视频提示词.md`。
|
|
10
|
+
每镜使用 `MOTION-...` 标题并引用对应 `SHOT-...`。
|
|
24
11
|
|
|
25
12
|
## Quick Start
|
|
26
13
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
```bash
|
|
30
|
-
python3 {技能目录}/scripts/music_spec_check.py examples/minimal-music-specs.jsonl
|
|
31
|
-
python3 {技能目录}/scripts/selftest.py
|
|
14
|
+
```text
|
|
15
|
+
用 $short-drama-video-prompts 把 EP001 分镜逐镜写成可直接复制的视频提示词
|
|
32
16
|
```
|
|
33
17
|
|
|
34
|
-
##
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
[
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
1. 只读这个范围的直接输入,写它的逐镜运动规格,跑本地结构检查;
|
|
71
|
-
2. 落盘这个范围,其余范围保持原样;
|
|
72
|
-
3. 报告已覆盖范围、剩余范围、未决 motion 字段和下一个值得做的范围;
|
|
73
|
-
4. 交还控制权,等创作者的下一次请求。
|
|
74
|
-
|
|
75
|
-
生产、重新打包和审查各自是独立的工作单元,由创作者明确请求时开始。
|
|
18
|
+
## 入口与边界
|
|
19
|
+
|
|
20
|
+
有当前分镜、冻结关键帧和必要视觉事实即可检查参考准备;图片提示词不是已有图片的证明。运动提示词拥有从已确认
|
|
21
|
+
起点到终点的变化:表演动作、道具状态、运镜、节奏和声音提示。先按分镜的「输入参考图」选择路径:
|
|
22
|
+
|
|
23
|
+
- 有可读的真实 `REF-...` 图片时是**图生视频**;原样携带分镜中的槽位、顺序、项目相对路径、
|
|
24
|
+
中文名称、用途、控制与不得控制范围,静态身份、造型、地点和构图可由参考帧与视觉设定共同拥有。
|
|
25
|
+
这一行就是本镜的素材清单:路径回答「送哪一张」,`用途` 回答「它在本镜负责什么」,`顺序` 回答
|
|
26
|
+
「在可复制正文里叫哪个标签」。回答不了这三问的槽位不算准备好。
|
|
27
|
+
- 「输入参考图:无(创作者已明确选择文生视频)」时才是**文生视频**;视频文档必须写非空「静态视觉锚点」,且把它原样纳入
|
|
28
|
+
可复制正文,让提示词本身交代人物、造型、地点、构图和光线中本镜必要的事实。不得只写
|
|
29
|
+
`preserve/keep/保持已有外观`,因为执行端没有收到可供保持的图片。
|
|
30
|
+
- 「输入参考图:无(待补参考图:……)」、已有 `REF-...` 后仍带「;待补参考图:……」,或普通的「无」都表示**未准备好**,不是文生视频授权。先自动查找可用真实图片并请分镜 owner
|
|
31
|
+
刷新 `REF-...` 绑定;仍有缺失时,列出镜头、缺失图片及对应 `IMG-...` 或冻结关键帧,不写最终《视频提示词.md》。
|
|
32
|
+
|
|
33
|
+
创作者可读说明跟随项目语言。开始前读取目标模型档案里的版本、执行模式、提示词方言、原生时长和
|
|
34
|
+
参考方式;这些选择同时约束上游分镜和下游 adapter,不能只在正文阶段临时猜。创作者在本次请求里点名
|
|
35
|
+
目标模型(例如“按 MiniMax H3 写”)而项目档案还没有这一项时,先转 `$short-drama` 把这个选择写进
|
|
36
|
+
`short-drama.json` 的 `production_profile`,再回到本阶段;一句会话里的点名如果没有落到档案上,
|
|
37
|
+
下一轮就会退回通用路径,方言、原生时长和参考方式又要重猜。没有项目配置的独立任务把点名的模型
|
|
38
|
+
和已解析的方言写在本文档开头一行,供下游核对。视频可复制正文优先跟随
|
|
39
|
+
`short-drama.json#/creator_authority/production_profile/choices/video_prompt_language`;未声明时回退到
|
|
40
|
+
`short-drama.json#/format/prompt_language`。没有 `short-drama.json` 时,根据用户点名的目标视频模型
|
|
41
|
+
确认正文语言;目标模型也未声明时沿用用户当前语言,不固定为英文。对白、VO、OS 的口语语言仍由
|
|
42
|
+
剧本和声音方向决定,不能从提示词正文语言推断。
|
|
43
|
+
|
|
44
|
+
目标为 `seedance-2.0` 时按 [Seedance 2.0 方言](references/seedance-2.0.md) 写,目标为
|
|
45
|
+
`seedance-2.5` 时按 [Seedance 2.5 方言](references/seedance-2.5.md) 写,目标为 `minimax-h3` 时按
|
|
46
|
+
[MiniMax H3 方言](references/minimax-h3.md) 写。只读命中的一份。其他目标或版本不
|
|
47
|
+
套用相近模型的语法,继续按 [目标模型能力档案](references/target-model-profile.md) 的通用路径写。
|
|
48
|
+
|
|
49
|
+
沿用 creator-first 既有骨架:`## MOTION-... · 中文名`,字段名依次使用「分镜、时长、生成方式、
|
|
50
|
+
输入参考图、静态视觉锚点、起始帧、状态链、终点」,正文标题使用 `### 可复制提示词`。静态视觉锚点
|
|
51
|
+
跟随本镜已解析的视频提示词语言并原样进入正文;正文每个非空行都以 `>` 组成 Markdown 引用块。
|
|
52
|
+
重写内容不能改名、另造替代字段或改成普通段落。
|
|
76
53
|
|
|
77
54
|
## 工作流
|
|
78
55
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
-
|
|
137
|
-
-
|
|
138
|
-
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
```bash
|
|
164
|
-
python3 <skill-dir>/scripts/container_check.py \
|
|
165
|
-
剧集/EP001/storyboard/delivery-containers.jsonl \
|
|
166
|
-
--shots 剧集/EP001/storyboard/shots.jsonl
|
|
167
|
-
```
|
|
168
|
-
|
|
169
|
-
逐个容器都正确不代表全集的账是对的:一个镜头同时进两个容器会让全集时长凭空多一段,
|
|
170
|
-
一个镜头谁都没装会让它无声消失——**两种错误在单容器视角下都看不见**。脚本做的是集合
|
|
171
|
-
与算术比对:成员是否重复认领、成员是否属于本集、容器时长是否等于成员之和、容器加散镜
|
|
172
|
-
是否正好等于全集总时长。
|
|
173
|
-
|
|
174
|
-
未装容器的散镜是合法的,脚本只报告不判错;时长尚未确定的镜头列在 `unmeasured_shots`
|
|
175
|
-
并排除在总和之外,这样"还没做完"不会被当成"做错了"。
|
|
176
|
-
|
|
177
|
-
若 `timing_plan` 写的是显式秒段,再用
|
|
178
|
-
[motion_timing_check.py](scripts/motion_timing_check.py) 核 `VID-04` 的算术:
|
|
179
|
-
|
|
180
|
-
```bash
|
|
181
|
-
python3 <skill-dir>/scripts/motion_timing_check.py \
|
|
182
|
-
剧集/EP001/storyboard/motion-specs.jsonl \
|
|
183
|
-
--shots 剧集/EP001/storyboard/shots.jsonl
|
|
184
|
-
```
|
|
185
|
-
|
|
186
|
-
超出与不足都算违约,且不足的后果更重:未分配的余量不会渲染成静止画面,执行端会用
|
|
187
|
-
没有上游来源的动作、表情或运镜把它填满。脚本还会报未声明的区间重叠、`declared_total`
|
|
188
|
-
与实际覆盖不一致,以及 `boundary_refs.duration` 相对镜头已接受时长过期。
|
|
189
|
-
`relative` 计时不做算术断言,列在 `relative_plans` 里报告而不是判过。
|
|
190
|
-
|
|
191
|
-
若当前版本是局部补拍或替代实现,才增加 `coverage_scope` 并标明 `pickup | alternate`,
|
|
192
|
-
按 [补拍/替代范围片段](assets/coverage-scope.fragment.json) 用同一文件内稳定的运动记录 ID
|
|
193
|
-
说明母版和补充关系;每项原文要求都要对应到
|
|
194
|
-
当前运动字段或说明去向。补拍默认只补充、不替代母版;运动规格只能提出替代请求,
|
|
195
|
-
reviewer 在下游审查结论中决定,不能回写运动规格形成循环引用。
|
|
196
|
-
|
|
197
|
-
若收到绑定准确 prompt/spec/reference/config 的项目生产观察,只修改诊断涉及的运动字段,并在
|
|
198
|
-
修订提案中列出 `change_set`、`preserve_set` 和仍未知结果;不能把重复提交相同文本当修复,
|
|
199
|
-
也不能把一次配置下的观察提升为通用动作、表演或运镜规则。
|
|
200
|
-
|
|
201
|
-
### 6. 预览、接受与发布
|
|
202
|
-
|
|
203
|
-
先向创作者展示起止边界摘要、动作/表演顺序、摄影/声音选择、时长警告和可复制提示词。接受后写:
|
|
204
|
-
|
|
205
|
-
- `剧集/<EP>/storyboard/motion-specs.jsonl`:首行 `sources` 声明本文件引用的上游快照,
|
|
206
|
-
其后每行一条运动规格,字段与只读来源引用见
|
|
207
|
-
[motion-spec.jsonl.md](assets/motion-spec.jsonl.md);
|
|
208
|
-
- `剧集/<EP>/storyboard/delivery-containers.jsonl`:**仅当项目声明了多镜交付容器时**,
|
|
209
|
-
记录容器成员顺序、各成员已接受时长的只读引用与容器时长,模板见
|
|
210
|
-
[delivery-container.jsonl.md](assets/delivery-container.jsonl.md);
|
|
211
|
-
- `剧集/<EP>/storyboard/video-prompts.md`:由已接受规格与容器记录生成的文本版本,元信息写明用的是哪个配方。
|
|
212
|
-
|
|
213
|
-
`generic_prompt` 与派生文本是同一段交付文本,写成执行端可以直接下单的画面描述:从已接受起点的
|
|
214
|
-
姿态与持物说起,逐条写动作、接触、摄影机行为与终点状态。写满的样子见
|
|
215
|
-
[生产提示词语法惯例](references/production-prompt-grammar.md),那里有成稿与一段合成反例。
|
|
216
|
-
它只含要被拍出来的内容(`VID-22`)——把规格字段名、规则原文或约束清单复述进去,
|
|
217
|
-
读起来很规范,但执行端拿不到任何可以画出来的名词。
|
|
218
|
-
|
|
219
|
-
自然语言改提示词时,先展示规格字段怎样变化和重新生成的文本预览;若改动触碰分镜或
|
|
220
|
-
剧本负责的内容,保持当前文件不变,并把修改请求交给对应技能。项目工具可用时用 `publish`
|
|
221
|
-
发布跨文件产物并声明直接输入;独立运行时直接写出本阶段文件。
|
|
222
|
-
|
|
223
|
-
## 完成标准
|
|
224
|
-
|
|
225
|
-
- 提示词从准确的 `start_anchor` 出发,以明确顺序实现已确认终点,不改变时长、对白或下一镜;
|
|
226
|
-
- 若本镜确有表演变化,表演有触发、处理与可见结果;动作量可行,摄影与环境/声音服务镜头目的;
|
|
227
|
-
- 参考帧已知外观不被重复描述淹没,通用提示词可独立复制;
|
|
228
|
-
- 交付文本只含要拍出来的画面内容:没有参考图文件名、版本号、内部标记、草图指代或任务备注;同一角色的参考绑定在每次提及处一致,不出现只绑一半的写法;
|
|
229
|
-
- 已完成当前批次的本地结构检查;需要内容 verdict 时另行请求 `$short-drama-review`;
|
|
230
|
-
- 没有媒体文件、供应商接口或远程任务字段、远端 ID 或“视频已生成”声明。
|
|
231
|
-
|
|
232
|
-
## 投产交接
|
|
233
|
-
|
|
234
|
-
用户要求把已接受运动规格真正生成视频时,交给 `$short-drama-produce`。传递准确的 motion
|
|
235
|
-
spec、起止帧/参考文件、时长、画幅、声音要求和目标路径;生产技能必须展示完整预览并取得
|
|
236
|
-
本次任务的明确确认后才可调用外部 adapter。本技能本身仍只负责规格和提示词。
|
|
237
|
-
|
|
238
|
-
环境声与事件音随镜头走,写在各自运动规格的 `audio` 里;已被镜头认领的 `[SFX]` 剧本块,
|
|
239
|
-
它声明的那个声音要出现在这一镜的 `audio` 里,否则这条已接受的事实到交付时就消失了。
|
|
240
|
-
|
|
241
|
-
音乐承担跨镜、跨场或主题曲职责时,写独立的 provider-neutral
|
|
242
|
-
`剧集/<EP>/storyboard/music-specs.jsonl`,并用
|
|
243
|
-
[music_spec_check.py](scripts/music_spec_check.py) 校验。音乐是时间线层,不能为了某个
|
|
244
|
-
供应商方便而复制进每镜视频提示词。生成时把已接受的 prompt、歌词(如有)、引用和目标路径
|
|
245
|
-
作为独立 `music` job 交给 `$short-drama-produce`。
|
|
56
|
+
1. 先检查每镜「输入参考图」。用户未手工点名图片时,根据本镜冻结关键帧和可见人物、地点、关键道具的一致性需求,在用户输入、
|
|
57
|
+
「制作成果」和文档已指向媒体中查找真实图片。内容和用途核对后才自动绑定;不靠相似文件名猜图。
|
|
58
|
+
2. 已有匹配图片时,在当前请求内先让分镜 owner 原地刷新受影响镜头的 `REF-...` 槽位,再回到本阶段;只绑本镜真正需要保持的图,不按资产数量凑槽位。
|
|
59
|
+
同一次刷新里,如果这些镜头还缺「视觉依据」这个必写字段(旧文档常常没有),一并按已成稿的冻结关键帧回填——
|
|
60
|
+
两者读的是同一格画面,分开两轮只会让绑了图的镜头仍然说不清画面里有谁。
|
|
61
|
+
新槽位必须逐字使用 `REF-<slot>(顺序:<n>)· <项目相对路径>《<中文名称>》(用途:<用途>;控制:<范围>;不得控制:<范围>)`;`用途` 取 `身份|造型状态|地理|构图|尺度|效果|起始帧|结束帧|风格` 之一,不得自创斜杠分隔写法。多图只用 `;` 连接,写完后先按格式回读,再复制到视频文档。
|
|
62
|
+
3. 仍有必要图片缺失时,一张都没有就把分镜写成「无(待补参考图:……)」;只缺一部分则保留已核对的 `REF-...`,并在末尾追加「;待补参考图:……」。一次列出缺失镜头、图片用途和对应的 `IMG-...` /冻结关键帧,然后停在视频提示词之前。
|
|
63
|
+
不伪造路径,不把图片提示词当成图,不静默降级为文生视频。
|
|
64
|
+
4. 只有创作者明确选择不用参考图时,才把分镜记为「无(创作者已明确选择文生视频)」。准备闭合后原样抄入分镜的「输入参考图」,据此标明
|
|
65
|
+
「生成方式:图生视频」或「生成方式:文生视频」。该字段只写这两个精确值,不追加模型名、方言或 full-reference 等说明;模型说明留在正文结构中。
|
|
66
|
+
具体走首帧、首尾帧还是多槽参考,由各槽位的 `用途` 组合读出:只有一张 `起始帧` 走首帧,`起始帧` 加 `结束帧` 走首尾帧,
|
|
67
|
+
`起始帧` 与人物/地点/道具图同时存在或只有这些图时走多槽参考。命中的模型方言负责把这个组合翻成它自己的素材 role 与正文结构;
|
|
68
|
+
多槽参考与首/尾帧在同一请求内互斥的模型,起始帧也随整组走多槽参考,不拆成两套输入。
|
|
69
|
+
5. 核对本镜时长落在目标模型档案的原生区间内;不在区间内就回到分镜修订,不能写完提示词后留给
|
|
70
|
+
adapter 报错,也不能在正文里暗自改变时长。
|
|
71
|
+
6. 写不能动的边框:图生视频以参考帧和视觉设定锁定;文生视频把必要静态事实写入「静态视觉锚点」和可复制正文。
|
|
72
|
+
7. 原样读取分镜的「起点 → 唯一动作 → 终点」,确认人物、双手和持物的状态转换都发生在镜内。
|
|
73
|
+
8. 写“静态锚点 → 起点 → 唯一动作(触发、接触、落点)→ 次级反应 → 运镜 → 声音 → 终点”,
|
|
74
|
+
必要时用秒数分段;下一镜从这个终点继续,不另造镜外转换。
|
|
75
|
+
9. 只在真实参考帧已经说明静态外观时删除重复描述;《视觉设定.md》连续性锁的锁面不在可删之列。
|
|
76
|
+
10. 把限制动作空间的已确认关系写成贯穿本镜的正向可见状态,只安排关系允许的动作通道;只有分镜明确改变关系时才写变化过程。可复制正文的动作边界只用肯定状态句,不用 `no/not/without + 动作` 改写。
|
|
77
|
+
11. 逐镜读取文字义务。除非剧本或创作者明确要求,正文用本镜已解析的视频提示词语言直接写明任何时刻都不生成非画内字幕、caption 和对白文字叠加,不能只写抽象的“文字层为空”;这条默认与旗帜、标牌、屏幕等画内文字独立。画内 `exact_readable` 逐字写明字符、语言、承载面和位置,不能用全局 `no-text` 覆盖。
|
|
78
|
+
12. 声音同轨时,把允许的发声按来源、说话人、口语语言和顺序写成完整时间线;每句从原文首字到末字,
|
|
79
|
+
且逐字对白在单镜可复制正文中只出现一次。视觉动作段只按时间和说话人引用该声音事件,不再抄一遍
|
|
80
|
+
台词。事件外回到已声明的环境声或静默。Brief、剧本或声音方向已经明确禁止外语前导、语气词、
|
|
81
|
+
额外人声或重复时,把这些**已确认的发声边界**在完整时间线末尾合并写一次;不靠“只包含”让执行端
|
|
82
|
+
猜,也不自行扩充新的禁用类别。完整时间线声明是声音段落终点,其后不再追加第二组声音排除句。
|
|
83
|
+
13. 成稿时逐句把 `no/not/without + 动作或状态变化` 改写为当前持续状态或允许动作;直接改正文,不调用工具或生成检查产物。再检查不跨下一镜、不要求互斥动作、不让人物或道具瞬移变形。
|
|
84
|
+
14. 用户要整集就完成整集,镜头组只是内部批次。
|
|
85
|
+
15. 同一连续时空中相邻正式生成段、且目标档案支持续接时,默认选择“从上一段生成结果续接”;
|
|
86
|
+
一镜一生成只决定每次装一个镜头,不等于各镜独立文生。只有创作者明确要求独立重生成,或上游
|
|
87
|
+
已接受时间/地点跳变时才重新起链。选择续接后,这就是该链唯一正式执行路由。第二段起同时绑定上一段
|
|
88
|
+
**实际视频**和从该视频取得的
|
|
89
|
+
**实际尾帧**:视频负责动作、节奏和声音连续,尾帧负责下一段的可见起点。具体素材 role 和续写措辞
|
|
90
|
+
由命中的模型方言决定,不能把通用职责直接翻译成供应商字段。未取得真实产物时,后续段在
|
|
91
|
+
`视频提示词.md` 标为“待续接、不可提交”,写明缺少这两项真实输入并保留下一段内容草案;不得把它
|
|
92
|
+
降级成独立文生视频,也不用计划尾帧、关键帧提示词或文字描述冒充接力输入。逐镜 `MOTION-...`
|
|
93
|
+
仍是成员边界和内容依据,不是与正式容器路由并列的另一套提交方案。
|
|
94
|
+
|
|
95
|
+
## 提示词要求
|
|
96
|
+
|
|
97
|
+
- 从可见起点开始,以可验证终点结束。
|
|
98
|
+
- 可复制正文完整实现分镜的「起点 → 唯一动作 → 终点」;交接、换手和道具落位不跨镜省略。
|
|
99
|
+
- 主体、动作对象、方向、幅度、速度和先后关系明确。
|
|
100
|
+
- 表演写动作与反应,不写无法执行的抽象结果。
|
|
101
|
+
- 运镜与人物动作不争夺注意力;复杂运镜必须有叙事理由。
|
|
102
|
+
- 声音只写该镜需要的对白、画外音、环境或转场职责,不擅自补歌词。
|
|
103
|
+
- 非画内字幕、caption 和对白文字叠加默认不生成;正文直接声明全镜任何时刻都不生成这些内容,不用抽象工作流术语代替执行指令。只有剧本或创作者明确要求才开启。画内精确文字是独立允许集合,不因关闭字幕而消失,也不让未批准文字混入。
|
|
104
|
+
- 同轨对白/VO/OS 同时写逐字文本、口语语言和发声边界;完整时间线闭合后,不再枚举不存在的语言、语气或声源,也不追加 `no/not/without + 声音类别`。
|
|
105
|
+
- 上游持续关系只用贯穿状态和允许动作通道表达;不以 `no/not/without + 动作` 重复同一边界,也不给角色冲突动作。
|
|
106
|
+
- 本镜命中的连续性锁,锁面原样出现在可复制正文里;颜色、材质、形制这类跨镜不变事实不靠模型记忆。
|
|
107
|
+
- 正文可直接复制,不含占位符、流程说明、文件路径或 QA 结论。
|
|
108
|
+
|
|
109
|
+
## 按需知识
|
|
110
|
+
|
|
111
|
+
默认只读本 SKILL、当前分镜和必要视觉事实。遇到对应问题时只打开一份:
|
|
112
|
+
|
|
113
|
+
- 阶段边界与规则分级:[阶段契约](references/stage-contract.md)
|
|
114
|
+
- 单镜运动正文的最小配方:[运动配方](references/motion-recipe.md)
|
|
115
|
+
- 外部执行需要的明确动作语法:[生产提示词语法](references/production-prompt-grammar.md)
|
|
116
|
+
- 多人表演、口型和精确时序:[表演与动作时序](references/performance-action-timing.md)
|
|
117
|
+
- 运镜、声音和相邻镜头连续性:[摄影与声音连续性](references/camera-audio-continuity.md)
|
|
118
|
+
- 动作负载、形变和生成风险:[可生成性](references/generability.md)
|
|
119
|
+
- 目标执行端的时长、参考、声音同轨等能力:[目标模型能力档案](references/target-model-profile.md)
|
|
120
|
+
- Seedance 2.0 的中文分镜、素材与声音语法:[Seedance 2.0 方言](references/seedance-2.0.md)
|
|
121
|
+
- Seedance 2.5 的长叙事、时间戳和任务类型语法:[Seedance 2.5 方言](references/seedance-2.5.md)
|
|
122
|
+
- MiniMax H3 的结构化正文与参考模式:[MiniMax H3 方言](references/minimax-h3.md)
|
|
123
|
+
- 多镜容器或静态漫剧的交付方式:[交付形态](references/delivery-profile.md)
|
|
124
|
+
- 完成前的边界检查:[审查与示例](references/review-and-fixtures.md)
|
|
125
|
+
|
|
126
|
+
用户明确要求时间线音乐时,在本文档增加独立章节,写使用区间、剧情功能、进入/退出、动态曲线和
|
|
127
|
+
禁用项;歌词必须来自用户提供或明确接受的文本。静态漫剧只需要关键帧切换与配音时可以跳过逐镜
|
|
128
|
+
视频运动提示词,直接进入生产预览。
|
|
129
|
+
|
|
130
|
+
## 完成与投产
|
|
131
|
+
|
|
132
|
+
每个点名镜头都有明确起点、主变化、时序、运镜/声音边界和可验证终点,且与相邻镜头连续,即完成。
|
|
133
|
+
实际生成转 `$short-drama-produce`,先展示精确 job 并取得显式确认;本技能不调用外部服务。
|
|
134
|
+
五份创作文档齐备后,可转 `$short-drama` 对跨文档结构做一次机械核对;内容质量仍由创作者审查。
|
|
135
|
+
|
|
136
|
+
## 安装维护
|
|
137
|
+
|
|
138
|
+
只有安装、升级或排障时运行 `python3 scripts/selftest.py`。
|
|
@@ -43,6 +43,11 @@
|
|
|
43
43
|
"record_id": "SHOT-<id>",
|
|
44
44
|
"field": "/start_boundary"
|
|
45
45
|
},
|
|
46
|
+
"primary_transition": {
|
|
47
|
+
"src": "shots",
|
|
48
|
+
"record_id": "SHOT-<id>",
|
|
49
|
+
"field": "/primary_transition"
|
|
50
|
+
},
|
|
46
51
|
"end": {
|
|
47
52
|
"src": "shots",
|
|
48
53
|
"record_id": "SHOT-<id>",
|
|
@@ -63,7 +68,7 @@
|
|
|
63
68
|
"src": "keyframes",
|
|
64
69
|
"record_id": "KEY-<id>"
|
|
65
70
|
},
|
|
66
|
-
"role": "start_frame",
|
|
71
|
+
"role": "start_frame | continuity_video | actual_tail_frame",
|
|
67
72
|
"may_control": [
|
|
68
73
|
"<本镜 accepted 起始构图与可见状态>"
|
|
69
74
|
],
|
|
@@ -8,13 +8,17 @@
|
|
|
8
8
|
> 来源:`motion-specs.jsonl` 的已接受记录
|
|
9
9
|
> 配方:`motion-generic@<version>`
|
|
10
10
|
> 范围:本文件仅提供提示词,不触发媒体服务;实际视频生产交 `$short-drama-produce`
|
|
11
|
+
> 正式执行路由:`逐镜 | 多镜容器 | 从上一段实际结果续接`(只保留本次已选择的一项)
|
|
11
12
|
|
|
12
13
|
## `SHOT-<id>` · <镜头目的短句>
|
|
13
14
|
|
|
14
15
|
- **运动规格**:`MOTION-<id>`
|
|
15
16
|
- **覆盖范围(仅补拍/替代版)**:`pickup | alternate`;母版/补充 `<master_motion_id / supplements_motion_ids>`;逐项内容 `<source_ref → motion_field/disposition>`;替代请求 `<replacement_intent>`
|
|
16
17
|
- **起始帧**:`KEY-<id>`
|
|
17
|
-
-
|
|
18
|
+
- **生成方式**:`文生视频 | 图生视频`;文生视频必须已有创作者明确选择
|
|
19
|
+
- **输入参考图**:`REF-<slot>(顺序:<n>)· <项目相对路径>《<中文名>》(用途:<purpose>;控制:<may_control>;不得控制:<must_not_control>)`;`用途` 取 `身份|造型状态|地理|构图|尺度|效果|起始帧|结束帧|风格`;必须与分镜一致且全部就绪;只有创作者明确选择文生视频时可写「无(创作者已明确选择文生视频)」,无图或部分有图的「待补参考图」都不得进入最终视频提示词
|
|
20
|
+
- **静态视觉锚点**:文生视频必须把本镜必要的身份、造型、地点、构图与光线事实写在这里并原样纳入可复制正文;图生视频只补充动作所需、参考图不能独立说明的可见起点
|
|
21
|
+
- **状态链**:`<起点> → <唯一动作:触发、接触与落点> → <终点>`;直接投影分镜,不补镜外转换
|
|
18
22
|
- **时长(只读)**:`<seconds>s`
|
|
19
23
|
- **边界核对**:`end match | mismatch | unrealized`
|
|
20
24
|
- **声音引用**:`<dialogue/VO/OS/SFX ids>`
|
|
@@ -44,3 +48,15 @@
|
|
|
44
48
|
成员镜头各自的边界、终点报告与审查入口保持独立。
|
|
45
49
|
若自然语言修改涉及时长、终点、对白或下一镜,展示交给负责技能的修改请求,而不是
|
|
46
50
|
修改本文件来掩盖来源变化。
|
|
51
|
+
|
|
52
|
+
连续交付段若选择从上一段生成结果续接,后续容器不得降级成普通文生视频。真实产物尚不存在时写:
|
|
53
|
+
|
|
54
|
+
```markdown
|
|
55
|
+
- **就绪状态**:待续接、不可提交
|
|
56
|
+
- **接力输入**:等待上一容器实际视频与从该视频抽取的实际尾帧;两者缺一不可
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
此时可保留下一段内容草案,但不绑定虚构槽位、不声称已经续写。真实产物存在后才增加「接力输入」:
|
|
60
|
+
上一段实际视频使用 `continuity_video` 角色,直接从该视频取得的实际尾帧使用 `actual_tail_frame` 角色。
|
|
61
|
+
两者同时绑定;前者承接动作、节奏和声音,后者固定可见起点。计划尾帧、冻结关键帧或文字描述不能
|
|
62
|
+
代替任一项。逐镜章节在多镜/续接路由下是成员依据,不是另一套可提交任务。
|