@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,264 +1,142 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: short-drama-storyboard
|
|
3
|
-
description:
|
|
3
|
+
description: 把中文短剧剧本和视觉设定写成有戏剧职责、连续性边界与冻结关键帧提示词的分镜 Markdown。用户提出“拆分镜/设计镜头/做镜头表”“场次视觉计划/调度故事板”“比较导演方案”“写首帧/关键帧提示词”或检查轴线、站位、视线、持物连续性时使用;不生成媒体。
|
|
4
4
|
license: MIT
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# 短剧分镜与冻结关键帧
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
镜头目的、边界说明与场次视觉计划是创作者读的:项目内跟随 `short-drama.json#/language`,
|
|
13
|
-
独立运行时跟随用户使用的语言。关键帧的**可复制提示词正文**在项目内跟随
|
|
14
|
-
`#/format/prompt_language`,独立运行时由用户指定、未指定则为 `en`。不要用
|
|
15
|
-
其中一个推断另一个。ID、规则编号和字段名在两者之下都保持原样。
|
|
9
|
+
把剧本和视觉事实转成有镜头职责、空间连续性和可冻结起点的 `剧集/<EP>/分镜.md`。
|
|
10
|
+
每镜使用二级标题 `## SHOT-...`,同镜下用 `### 冻结关键帧提示词` 写起始帧正文。
|
|
16
11
|
|
|
17
12
|
## Quick Start
|
|
18
13
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
```bash
|
|
22
|
-
python3 {技能目录}/scripts/selftest.py
|
|
23
|
-
python3 {技能目录}/scripts/storyboard_check.py <coverage.json> --shots <shots.jsonl> --keyframes <keyframes.jsonl>
|
|
14
|
+
```text
|
|
15
|
+
用 $short-drama-storyboard 完成 EP001 的正式分镜和每镜冻结关键帧
|
|
24
16
|
```
|
|
25
17
|
|
|
26
|
-
##
|
|
27
|
-
|
|
28
|
-
本技能可独立安装和执行。先读取用户明确提供的剧本、资产与本任务直接输入;若当前目录是
|
|
29
|
-
`short-drama` 项目且项目工具可用,可以读取 `status` 并使用其发布生命周期,但缺少 core
|
|
30
|
-
或任何其他技能都不是分镜工作的阻断条件。[阶段契约](references/stage-contract.md) 给出
|
|
31
|
-
本阶段边界、制作形态输入与规则表,无需读取其他技能的文件。
|
|
32
|
-
|
|
33
|
-
## 按需读取资料
|
|
34
|
-
|
|
35
|
-
始终读取:
|
|
36
|
-
|
|
37
|
-
- 状态为 `accepted` 的 `screenplay.md` 与 `screenplay-index.jsonl`;
|
|
38
|
-
- 状态为 `accepted` 的资产、版本与相关连续性;
|
|
39
|
-
- `short-drama.json#/creator_authority/visual_direction` 中状态为 `accepted` 的视觉方向;
|
|
40
|
-
若状态为 `unset`,就向创作者给出选择,不从对话记忆补造。
|
|
18
|
+
## 入口
|
|
41
19
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
[keyframe-craft.md](references/keyframe-craft.md)。需要制作端的时长依据、景别与运镜
|
|
45
|
-
词表或时间片写法时读 [production-shot-grammar.md](references/production-shot-grammar.md)。
|
|
46
|
-
关键场次需要先组织整场的立场、空间、摄影与声音运动时读
|
|
47
|
-
[scene-visual-plan.md](references/scene-visual-plan.md);第一种合理拍法不应直接成为唯一答案时加读
|
|
48
|
-
[coverage-audition.md](references/coverage-audition.md)。
|
|
49
|
-
涉及背影、裁切、遮挡、画外或延迟揭示时读
|
|
50
|
-
[阶段契约](references/stage-contract.md) 的参考媒体与补拍一节。
|
|
51
|
-
只有所有权或直接输入影响不清楚时,才读核心所有权契约。
|
|
20
|
+
当前剧本加必要视觉事实即可直接进入。资产图片提示词与分镜是兄弟分支,不互相等待。只有关键场次
|
|
21
|
+
真的存在多个成立导演方案时,才在上下文比较覆盖方案;普通场次直接设计。
|
|
52
22
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
23
|
+
创作者可读说明跟随项目语言;冻结关键帧的可复制正文跟随
|
|
24
|
+
`short-drama.json#/format/prompt_language`。没有 `short-drama.json` 时正文默认使用 `en`。
|
|
25
|
+
分配镜头时长前读取
|
|
26
|
+
`short-drama.json#/creator_authority/production_profile/choices/native_duration_seconds`。已声明目标模型但
|
|
27
|
+
没有原生时长时先补这一个选择;目标模型也未声明时照常按叙事节奏设计,不猜供应商限制。
|
|
58
28
|
|
|
59
|
-
|
|
29
|
+
冻结关键帧写完之前,谁会出现在这一格画面里还没有定下来。所以三条依据都在关键帧之后回填,
|
|
30
|
+
读的是成稿画面,不是镜头意图。
|
|
60
31
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
2. 落盘这个范围,其余范围保持原样;
|
|
65
|
-
3. 报告已覆盖范围、剩余范围、未决 coverage 和下一个值得做的范围;
|
|
66
|
-
4. 交还控制权,等创作者的下一次请求。
|
|
67
|
-
|
|
68
|
-
视频提示词、生产和审查各自是独立的工作单元,由创作者明确请求时开始。
|
|
32
|
+
用户没有手工点名参考图,不等于选择文生视频。冻结关键帧后先根据本镜可见人物、地点、关键道具与
|
|
33
|
+
起始构图判断一致性需求,再检查项目中已有的真实图片。只有当前可读、内容与用途可核对的图片才能自动绑定;
|
|
34
|
+
文件名像某个角色但内容未核对时,仍视为未准备好。
|
|
69
35
|
|
|
70
36
|
## 工作流
|
|
71
37
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
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
|
-
`generic_prompt` 写这一瞬间要拍出来的画面本身,按 `keyframe-craft.md` 的十二项逐条写满,
|
|
163
|
-
那里有一段四百余字的成稿可以照着写。它只含要被拍出来的内容——不写镜头/记录 ID、规则 ID、
|
|
164
|
-
状态词与成段否定罗列(`SHT-21`)。同一集里两条关键帧的正文不应该只有编号不同:
|
|
165
|
-
读起来一样,说明写的是模板不是画面。
|
|
166
|
-
|
|
167
|
-
关键帧不得包含“先、再、最后”、表演变化过程、运镜过程或正在变化的环境;时间变化
|
|
168
|
-
交给 `$short-drama-video-prompts`。
|
|
169
|
-
|
|
170
|
-
### 7. 校验并呈现
|
|
171
|
-
|
|
172
|
-
先做原文落实、参考图权限和连续性的结构检查,再按制作资料自检。
|
|
173
|
-
候选预览也必须精确加总逐镜数值时长;若仍有未定时长或尚未完成这笔账,宁可省略总时长并
|
|
174
|
-
列出未决项,也不要写一个与镜头表不一致的约数。
|
|
175
|
-
|
|
176
|
-
时长账目与关键帧边界这两项是纯记账,交给
|
|
177
|
-
[storyboard_check.py](scripts/storyboard_check.py) 核对,不要用人工目测代替:
|
|
178
|
-
|
|
179
|
-
```bash
|
|
180
|
-
python3 <skill-dir>/scripts/storyboard_check.py 剧集/EP001/storyboard/coverage.json \
|
|
181
|
-
--shots 剧集/EP001/storyboard/shots.jsonl \
|
|
182
|
-
--keyframes 剧集/EP001/storyboard/keyframes.jsonl \
|
|
183
|
-
--screenplay-index 剧集/EP001/screenplay-index.jsonl \
|
|
184
|
-
--project short-drama.json
|
|
185
|
-
```
|
|
186
|
-
|
|
187
|
-
给了 `--screenplay-index` 就多做一项覆盖对账:**剧本的每一个块都要有一种处理,而镜头认领
|
|
188
|
-
必须与那种处理相符**。`covered` 要恰好一个镜头认领,`intentional_repeat` 可以多于一个,
|
|
189
|
-
`omitted_with_reason` 与 `nonvisual_context` 不应有镜头认领——后两种是"决定不拍",
|
|
190
|
-
写清理由即可。认领按块 ID 走(`source_refs` 里的 `record_id`),不按正文——正文一直在改,
|
|
191
|
-
块 ID 不变。
|
|
192
|
-
|
|
193
|
-
处理表本身也一起校验:状态必须是上面四种之一,一个块只能有一行,指向的块要在剧本索引里,
|
|
194
|
-
`intentional_repeat` 与 `omitted_with_reason` 必须写理由。此前这张表没有任何检查,
|
|
195
|
-
删掉几行、填一个不存在的状态、把 `shot_refs` 指向别的镜头都能通过——覆盖表与 `shots.jsonl`
|
|
196
|
-
是关于同一件事的两份独立说法,中间没有对账。
|
|
197
|
-
|
|
198
|
-
它只做算术和结构比对:本集时长总和是否等于各镜头 `duration_seconds` 之和、覆盖列出的
|
|
199
|
-
镜头有没有既不计入也不挂起、`shots.jsonl` 里的镜头有没有整个从总和里消失、
|
|
200
|
-
同一个镜头有没有在总和里被列两次(列两次就会被加两次)、有没有边界条目整条写成「同上」「位置不变」这类回指、
|
|
201
|
-
每张关键帧是否声明了 `boundary_role` 并绑定对应边界字段、
|
|
202
|
-
同一镜头的同一端有没有两张关键帧、每条引用的 `src` 能否在本文件 `sources` 里解析到一个
|
|
203
|
-
上游快照。有 `--project` 且项目声明了每集目标时长时,还会核对
|
|
204
|
-
带符号差值。**差值不是缺陷**,脚本只检查它算得对不对。
|
|
205
|
-
|
|
206
|
-
脚本报错时先修产物再继续;它不评价镜头好坏,也不决定该拆多少镜。需要逐条查诊断码
|
|
207
|
-
含义、或确认某项该由脚本判还是由审查者判时,读
|
|
208
|
-
[review-and-fixtures.md](references/review-and-fixtures.md)。
|
|
209
|
-
|
|
210
|
-
候选选择清单必须覆盖正文中全部新增导演选择;没有必要让创作者判断的环境微动、具体手位或
|
|
211
|
-
声音时机就删除,不能一面写进可执行提示词,一面在接受摘要中省略。
|
|
212
|
-
摘要按选择类别总括本场全部新增的观众立场/信息时机、代表帧/最强画面/场尾落点、
|
|
213
|
-
机位/景别/运动与停留、时长/节奏、手势/目光/表演信号、声音进入/撤出/留白与视觉处理,
|
|
214
|
-
并声明“正文中未由来源接受的执行选择仍全部保持候选”,
|
|
215
|
-
不逐镜复述已经清楚标注的细节。只点名会改变信息时机、因果顺序、观众立场或表演所有权、
|
|
216
|
-
可读文字、场尾落点、制作成本或回退路径的高影响例外;正文新增项若既不在类别范围内也未被点名,
|
|
217
|
-
就删除或补入摘要。总括是接受范围,不会把正文选择悄悄升级为已接受事实。
|
|
218
|
-
|
|
219
|
-
若创作者尚未声明交付面遮挡区,内容构图仍可作为候选比较,但播放面避让核验保持 `blocked`,
|
|
220
|
-
整体不能称为 `delivery-ready`;该缺口必须出现在本次准备度摘要中。只列真正影响当前候选判断或
|
|
221
|
-
请求交付范围的缺口,不要罗列与本次候选判断无关的正式发布先决条件。
|
|
222
|
-
|
|
223
|
-
按顺序呈现:
|
|
224
|
-
|
|
225
|
-
1. 尚未落实的原文与 `unresolved` 项;
|
|
226
|
-
2. 按场分组的镜头表;
|
|
227
|
-
3. 可复制的关键帧提示词;
|
|
228
|
-
4. 相对剧本原意发生的差异;
|
|
229
|
-
5. 需要创作者接受的选择。
|
|
230
|
-
|
|
231
|
-
本技能不在本轮自动启动终审;需要 delivery verdict 时,把当前有界范围作为单独请求交给
|
|
232
|
-
`$short-drama-review`。
|
|
38
|
+
1. 读取已接受的目标模型原生时长区间,再确认每个场景动作、对白、声音、画面文字和转折由哪些镜头承载。
|
|
39
|
+
2. 确定观众何时知道什么、对齐谁、空间如何揭示、转折落在哪个可见动作。
|
|
40
|
+
剧本或 Brief 用“前半段 / 后半段 / 前三分之一 / 最后 N 秒”等相对时间限定首次出现、释放或禁止时,
|
|
41
|
+
先用已接受集长换成明确时间边界再分镜;例如 60 秒作品的“后半段首次出现”不得早于 30 秒。
|
|
42
|
+
3. 每镜写清唯一职责、来源、时长、景别/机位、起点、唯一主要动作、终点和声音;用
|
|
43
|
+
`起点 → 唯一动作 → 终点` 直接说明人物、双手与持物怎样完成本镜状态转换。三条依据留到第 6 步。
|
|
44
|
+
4. 锁定人物朝向、位置、视线、持物、出入口、屏幕方向和必要状态;上游已有会限制动作空间的持续关系时,把关系投影进本镜起点与终点。
|
|
45
|
+
5. 冻结关键帧只投影镜头起点;删除终点才出现的文字、动作、姿态或道具状态。
|
|
46
|
+
6. 关键帧成稿后,先从成稿正文读出这一格里需要保持身份、造型或地理的人物、地点和道具,
|
|
47
|
+
再用同一份清单一次填满三条依据:
|
|
48
|
+
|
|
49
|
+
- **视觉依据**:清单里每一项写成《视觉设定.md》的条目引用,这是必写字段;
|
|
50
|
+
- **图片提示词项**:清单里已有合适 `IMG-...` 条目的写上,没有的留「无」;
|
|
51
|
+
- **输入参考图**:按清单在用户提供的输入、`剧集/<EP>/制作成果/` 和文档已指向的其他可见媒体中查找匹配图片;
|
|
52
|
+
命中就写入 `REF-...`。一张都没命中时写「无(待补参考图:<本镜缺失的起始帧、人物、地点、道具>)」;
|
|
53
|
+
只命中一部分时,在已有 `REF-...` 后追加「;待补参考图:<仍缺的图片>」,缺口之间只用 `、` 分隔。
|
|
54
|
+
只有创作者明确表示不用图时,才写「无(创作者已明确选择文生视频)」。
|
|
55
|
+
|
|
56
|
+
三条依据读的是同一格画面,所以不能互相矛盾:关键帧里点名的人物或道具,一定出现在视觉依据里。
|
|
57
|
+
7. 整集请求完成整集,末端一次报告覆盖、节奏和真实未决选择。
|
|
58
|
+
|
|
59
|
+
## 镜头要求
|
|
60
|
+
|
|
61
|
+
- 每镜有唯一职责、明确来源、可见起止状态和合理时长。
|
|
62
|
+
- 已声明原生时长时,每个一镜一生成的镜头都落在其最短与最长秒数内。短于下限的叙事动作在合法
|
|
63
|
+
镜长内完成后保持终点;长于上限的动作按可见状态闭合点拆镜,拆出的每镜仍各有唯一职责与可信交界。
|
|
64
|
+
- 「唯一动作」写从本镜起点到终点的那条可见状态链;涉及交接、换手、放置或取回时,把接触者、
|
|
65
|
+
接触方式和物件落点写在同一链里,不能让合法终点之间靠镜外瞬移衔接。
|
|
66
|
+
- 切镜必须带来信息、权力、情绪、空间或节奏变化;同义重复镜头删掉。
|
|
67
|
+
- 相对时间词约束的是事件首次可见或可听的时刻,不因前置动作已经完成就提前释放;分镜时间轴直接
|
|
68
|
+
写出该边界,不把“稍后”“交接后”等叙事顺序当成数值时间的替代。
|
|
69
|
+
- 同一动作不跨镜重复发生;终点应能成为下一镜可信起点。
|
|
70
|
+
- 关键信息的可读性优先于装饰性运镜,竖屏构图优先保证主体和反应可见。
|
|
71
|
+
- 复杂群戏先锁空间锚点和屏幕方向,再决定景别变化。
|
|
72
|
+
- 起终边界除了逐人姿态,还要写清本镜依赖的身体—物件—空间关系。关系在镜内不变时两端都保留;确需改变时,过程与终点必须有剧本依据。
|
|
73
|
+
- 冻结关键帧只写该瞬间能看见的内容;文字、手指、反射和遮挡要可生成。
|
|
74
|
+
- 《视觉设定.md》的连续性锁在生效镜头上原样写进冻结关键帧正文;锁面不因“参考图会交代”而省略。
|
|
75
|
+
- 检查发现遗漏就直接修正文档,不生成覆盖表来证明自己检查过。镜头块里的「视觉依据」是本镜的依据字段,不是这里说的覆盖表。
|
|
76
|
+
|
|
77
|
+
## 视觉依据与图片
|
|
78
|
+
|
|
79
|
+
- `IMG-...` 是《图片提示词.md》里的**提示词条目 ID**,不代表图片已生成、已提供或可用。
|
|
80
|
+
- 已有《图片提示词.md》且本镜需要其中条目时,写「图片提示词项」:ID 必须匹配该文档的可见二级标题,同时写中文名称和它控制的身份、造型、地理、构图或其他边界。ID 只用于查找,不让英文 slug 承担含义。
|
|
81
|
+
- 没有《图片提示词.md》或没有合适条目时,写「图片提示词项:无」,再以中文指向《视觉设定.md》的人物、地点或道具项及控制范围。这是正常直接入口;不为继续分镜而编造 ID,也不补造另一个阶段。
|
|
82
|
+
- 「视觉依据」是每镜必写字段:冻结关键帧成稿后按实际画面反查,需要保持身份、造型或地理的可见人物、地点和道具**必须**逐项写成
|
|
83
|
+
`《视觉设定.md》·<人物|造型|地点|道具>「<名称>」(控制:<范围>)`,多项用 `;` 连接,名称必须能在《视觉设定.md》里找到同名标题。
|
|
84
|
+
小比例或背景人物只要需要认出身份仍在范围内,画外人声和不可识别局部不算;本镜确实没有这类条目时写「视觉依据:无」。
|
|
85
|
+
- 关键帧正文出现了某个条目的名字,但它本镜确实不在画面里(物主已离场、名字只出现在屏幕文字上、和某个词同形),
|
|
86
|
+
在「视觉依据」末尾追加 `;画外:<类别>「<名称>」`。这是如实记录,不是把不在场的人写成在场。
|
|
87
|
+
- 某个条目的名字在正文里根本不可靠(`道具「手机」` 会撞上「手机店」,`人物「小雨」` 会撞上「下着小雨」),
|
|
88
|
+
在《视觉设定.md》该条目写 `画面代称:无`,机械核对就不再按名字找它;这一镜是否画到它仍由「视觉依据」如实回答。
|
|
89
|
+
- 三条依据都描述同一格画面,不是本镜的资产花名册。「控制」只写这一格承担得起的范围:手背特写不写「本集造型」,
|
|
90
|
+
只出现屏幕和一根手指的镜头不写「体态」。上一镜的绑定不因为“角色还在这场戏里”就顺延到下一镜。
|
|
91
|
+
- 关键帧正文点名的人物、地点或道具(《视觉设定.md》条目名称或它声明的「画面代称」),必须出现在本镜「视觉依据」里;
|
|
92
|
+
`creator_markdown_check.py` 会机械核对这一条。它只抓**被名字点到**的那一类:正文只描述不点名
|
|
93
|
+
("a boy in a hooded jacket")时机器不发声,画面里有谁仍然要靠这一步自己读出来,不能等报错。
|
|
94
|
+
- 本镜需要保持一致、但《视觉设定.md》里还没有条目的可见物件(跨镜出现的道具尤其常见),不能因为
|
|
95
|
+
「写不进视觉依据」就当它不需要一致性。四镜都出现的一支笔和一件外套是同一类问题。做两件事:
|
|
96
|
+
正文里逐镜用完全相同的描述把它钉住,并在本轮末尾报告里点名它、建议 `$short-drama-assets` 补条目。
|
|
97
|
+
不自行新增《视觉设定.md》条目,也不把它塞进「视觉依据」冒充已有条目。
|
|
98
|
+
- 「输入参考图」是独立的另一条轴:创作者已提供,或经确认生产且当前可读的实际图片,用不同于 `IMG-...` 的稳定 `REF-...` 槽位引用。每个槽位同时写显式顺序、仅用 `/` 分隔的项目相对路径、中文名称、「用途」、「控制」和「不得控制」范围;没有时必须区分「待补参考图」和「创作者已明确选择文生视频」,只准备了一部分时则保留已有 `REF-...` 并追加「;待补参考图:……」。不得把提示词条目、计划生成的图或对话中的描述写成已有图片。
|
|
99
|
+
- 每个 `REF-...` 必须逐字遵循唯一格式:`REF-<slot>(顺序:<n>)· <项目相对路径>《<中文名称>》(用途:<用途>;控制:<范围>;不得控制:<范围>)`。注意「顺序:」后的全角冒号和路径前的中点 `·`;不得用 `/` 代替字段分隔符。多图只用中文分号 `;` 连接,部分缺图则在最后一个完整槽位后接 `;待补参考图:<缺口>`,缺口之间用 `、` 分隔。写完后按此格式回读一次再交付。
|
|
100
|
+
- `用途` 只能取 `身份`、`造型状态`、`地理`、`构图`、`尺度`、`效果`、`起始帧`、`结束帧`、`风格` 之一;逐条能控制什么见 `$short-drama` 的《参考角色》。
|
|
101
|
+
本镜的起始画面图写 `用途:起始帧`,人物图写 `用途:身份` 或 `造型状态`,场景图写 `用途:地理`,道具状态图按它决定的那一件写。
|
|
102
|
+
一张图承担两件事就拆成两个槽位;一镜最多一张 `起始帧` 和一张 `结束帧`,写 `结束帧` 时必须同时有 `起始帧`。
|
|
103
|
+
下游视频提示词靠 `用途` 说清「本镜送哪一张分镜起始帧、哪些人物/道具/场景图」,所以缺 `用途` 的槽位不算准备好。
|
|
104
|
+
- 本镜还没有起始画面图时,`用途:起始帧` 那一张由 `$short-drama-produce` 用本镜的冻结关键帧正文生成:
|
|
105
|
+
job 的 `source` 写 `剧集/<EP>/分镜.md`、`source_entry` 写本镜 `SHOT-...`,产出落在 `剧集/<EP>/制作成果/images/`。
|
|
106
|
+
拿到真实文件后再回来绑成 `REF-...`;生产前它仍然只是「待补参考图」里的一项。
|
|
107
|
+
- 自动绑定不是把所有图都塞进一镜。只选本镜可见、且身份、造型、地理、关键道具状态或起始构图确实需要稳定的图;逐张写清它的用途、能控制什么、不得控制什么。
|
|
108
|
+
- 两条轴可以独立组合:有合法的图片提示词项时,输入参考图仍可为「待补」或创作者明确选择的文生视频;创作者给了真实参考图时,图片提示词项也可为「无」。
|
|
109
|
+
|
|
110
|
+
## 按需知识
|
|
111
|
+
|
|
112
|
+
默认只读本 SKILL、当前剧本和必要视觉事实。遇到对应问题时只打开一份:
|
|
113
|
+
|
|
114
|
+
- 阶段边界与规则分级:[阶段契约](references/stage-contract.md)
|
|
115
|
+
- 镜头职责、切镜理由和边界:[镜头手艺](references/shot-craft.md)
|
|
116
|
+
- 实际制作所需的镜头语法:[生产镜头语法](references/production-shot-grammar.md)
|
|
117
|
+
- 关键场次比较导演方案:[场次视觉计划](references/scene-visual-plan.md)
|
|
118
|
+
- 检查原文是否都有画面承载:[Coverage Audition](references/coverage-audition.md)
|
|
119
|
+
- 多人、群体和复杂空间调度:[调度手册](references/blocking-playbooks.md)
|
|
120
|
+
- 冻结瞬间、注意中心和可读性:[关键帧手艺](references/keyframe-craft.md)
|
|
121
|
+
- 漫剧/二维漫画形态的共享画风词汇:[漫剧关键帧词表](references/comic-keyframe-lexicon.md)
|
|
122
|
+
- 剧本事实到关键帧的完整示例:[剧本到关键帧](references/screenplay-to-keyframe-example.md)
|
|
123
|
+
- 拆镜、并镜和稳定镜头 ID:[镜头修订身份](references/shot-revision-identity.md)
|
|
124
|
+
- 完成前的连续性检查:[审查与示例](references/review-and-fixtures.md)
|
|
233
125
|
|
|
234
126
|
## 修订
|
|
235
127
|
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
终审属于后续的独立工作单元,本轮只报告它们的影响范围。
|
|
239
|
-
运动提示词文件不得悄悄变成第二份边界事实。
|
|
240
|
-
镜头重排、插入、拆分或合并时读取
|
|
241
|
-
[shot-revision-identity.md](references/shot-revision-identity.md),保留稳定身份、retire 被替代 ID,
|
|
242
|
-
并重新对账 coverage 与全部下游引用;只在确有 predecessor/retirement 时新增
|
|
243
|
-
`revision_lineage`,并使用 [按需 lineage 片段](assets/revision-lineage.fragment.json);普通新镜不保存
|
|
244
|
-
空 lineage。不用数组位置或文本相似度决定 ID。
|
|
128
|
+
保留未受影响的镜头 ID。拆镜、并镜或改变镜头职责时,说明哪些下游视频提示词需要刷新,但不自动
|
|
129
|
+
重写用户没点名的文件。
|
|
245
130
|
|
|
246
|
-
##
|
|
131
|
+
## 完成
|
|
247
132
|
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
-
|
|
254
|
-
`$short-drama-produce`;由生产技能展示任务预览并取得明确确认,本技能不调用媒体服务。
|
|
133
|
+
点名范围的原文都有镜头落实,每镜职责不重复、空间与状态连续、起止边界可制作、关键帧可冻结,
|
|
134
|
+
且每镜关键帧里的可见人物、地点、道具都在本镜「视觉依据」里,即完成。画面需要、但《视觉设定.md》
|
|
135
|
+
还没有条目的可见物件,在末尾报告里逐项点名。本次请求同时修改
|
|
136
|
+
《图片提示词.md》与《分镜.md》时,当轮刷新受影响镜头的引用;不另建覆盖表。
|
|
137
|
+
视频提示词、生产和审查只有用户点名时开始。
|
|
138
|
+
五份创作文档齐备后,可转 `$short-drama` 对跨文档结构做一次机械核对;内容质量仍由创作者审查。
|
|
255
139
|
|
|
256
|
-
##
|
|
140
|
+
## 安装维护
|
|
257
141
|
|
|
258
|
-
|
|
259
|
-
- `剧集/<EP>/storyboard/coverage-auditions/<SC>.jsonl`(仅关键场次需要比较方案时;每场独立接受,项目工作历史,
|
|
260
|
-
默认不进执行交付包;accepted 后打包时显式传 `--omit`,不会按文件名静默排除)
|
|
261
|
-
- `剧集/<EP>/storyboard/scene-visual-plans/<SC>.jsonl`(仅关键场次需要场次计划时;每场独立接受)
|
|
262
|
-
- `剧集/<EP>/storyboard/shots.jsonl`
|
|
263
|
-
- `剧集/<EP>/storyboard/keyframes.jsonl`
|
|
264
|
-
- `剧集/<EP>/storyboard/keyframe-prompts.md`(仅派生文本)
|
|
142
|
+
只有安装、升级或排障时运行 `python3 scripts/selftest.py`。
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
{"record_type":"sources","schema_version":"1.0.0","sources":{"<characters-or-props>":{"owner":"short-drama-assets","artifact":"设定集/<characters-or-props>.jsonl"},"<looks-or-prop-states>":{"owner":"short-drama-assets","artifact":"设定集/<looks-or-prop-states>.jsonl"},"location-views":{"owner":"short-drama-assets","artifact":"设定集/location-views.jsonl"},"locations":{"owner":"short-drama-assets","artifact":"设定集/locations.jsonl"},"props":{"owner":"short-drama-assets","artifact":"设定集/props.jsonl"},"screenplay-index":{"owner":"short-drama-write","artifact":"剧集/<EP>/screenplay-index.jsonl"},"short-drama":{"owner":"short-drama","artifact":"short-drama.json"}}}
|
|
2
|
-
{"shot_id":"SHOT-EXAMPLE","status":"candidate","source_refs":[{"src":"screenplay-index","record_id":"BLK-EXAMPLE"}],"coverage_role":"primary | intentional_repeat","purpose":"<what the audience must notice and why this is a new shot>","information_change":"<before -> after for audience/character>","audience_visibility":[{"source_ref":{"src":"screenplay-index","record_id":"BLK-<id>"},"fact":"<本镜必须展示或暂缓的一个事实>","permission":"show_now | withhold_now","carrier":"<可见/可听载体;暂未出现则写 none>","reveal_trigger":"<允许释放的动作/台词/cut;不在本镜则写 future>","protection_method":"<framing/crop/occlusion/offscreen/focus/timing/none,可组合说明>","rationale":"<与 source 信息权限和本镜职责的关系>"}],"location_binding":{"identity_ref":{"src":"locations","record_id":"LOC-<id>"},"variant_ref":{"src":"location-views","record_id":"VIEW-<id>"}},"asset_bindings":[{"identity_ref":{"src":"<characters-or-props>","record_id":"CHAR/PROP-<id>"},"variant_ref":{"src":"<looks-or-prop-states>","record_id":"LOOK/PSTATE-<id>"},"role":"<subject/evidence/background>"}],"duration_seconds":null,"start_boundary":{"positions":["<每条都写成不读上一镜也能理解的绝对事实:谁在哪个锚点的哪一侧;『同上』『位置不变』『同前』要往回翻才解释得通,不算已写>"],"facing":[],"gaze":[],"hands":[],"held_props":[],"visible_state":[]},"end_boundary":{"positions":["<同样是绝对事实:本镜结束时人在哪、朝哪,不写成与开始状态的差异>"],"facing":[],"gaze":[],"hands":[],"held_props":[],"visible_state":[]},"framing":{"size":"<extreme_wide 远景/wide 全景/medium 中景/medium_close 中近景/close 近景/close_up 特写/extreme_close_up 大特写/detail 细节镜头 or creator vocabulary>","angle":"<horizontal: 正面/斜侧/正侧/后斜侧/背面 or creator vocabulary; say which side of the axis>","camera_height":"<地平/低(仰)/平视/高(俯)/顶视; 平视 is a choice, not an unset field>","aspect_notes":"<composition constraint>"},"delivery_surface_ref":{"src":"short-drama","field":"/creator_authority/delivery_surface"},"blocking":{"axis":"<working side/bridge/deliberate break>","screen_direction":"<direction>","paths":[],"fixed_anchors":[]},"camera_plan":{"behavior":"locked | pan | tilt | push | pull | track | follow | orbit | crane | handheld | transition","motivation":"<attention/pressure/alignment/reveal/rhythm>","intervals":[]},"dialogue_audio_refs":[],"text_treatment_refs":[{"src":"props","record_id":"PROP-<id>","field":"/text_policy"}],"transition_intent":null,"creator_overrides":[]}
|
|
2
|
+
{"shot_id":"SHOT-EXAMPLE","status":"candidate","source_refs":[{"src":"screenplay-index","record_id":"BLK-EXAMPLE"}],"coverage_role":"primary | intentional_repeat","purpose":"<what the audience must notice and why this is a new shot>","information_change":"<before -> after for audience/character>","audience_visibility":[{"source_ref":{"src":"screenplay-index","record_id":"BLK-<id>"},"fact":"<本镜必须展示或暂缓的一个事实>","permission":"show_now | withhold_now","carrier":"<可见/可听载体;暂未出现则写 none>","reveal_trigger":"<允许释放的动作/台词/cut;不在本镜则写 future>","protection_method":"<framing/crop/occlusion/offscreen/focus/timing/none,可组合说明>","rationale":"<与 source 信息权限和本镜职责的关系>"}],"location_binding":{"identity_ref":{"src":"locations","record_id":"LOC-<id>"},"variant_ref":{"src":"location-views","record_id":"VIEW-<id>"}},"asset_bindings":[{"identity_ref":{"src":"<characters-or-props>","record_id":"CHAR/PROP-<id>"},"variant_ref":{"src":"<looks-or-prop-states>","record_id":"LOOK/PSTATE-<id>"},"role":"<subject/evidence/background>"}],"duration_seconds":null,"start_boundary":{"positions":["<每条都写成不读上一镜也能理解的绝对事实:谁在哪个锚点的哪一侧;『同上』『位置不变』『同前』要往回翻才解释得通,不算已写>"],"facing":[],"gaze":[],"hands":[],"held_props":[],"visible_state":[]},"primary_transition":{"trigger":"<什么可见或可听事件让动作开始>","action":"<从起点到终点的唯一主要动作;交接时写清接触者、接触方式与落点>","result":"<逐项落到 end_boundary,不在镜外补转换>"},"end_boundary":{"positions":["<同样是绝对事实:本镜结束时人在哪、朝哪,不写成与开始状态的差异>"],"facing":[],"gaze":[],"hands":[],"held_props":[],"visible_state":[]},"framing":{"size":"<extreme_wide 远景/wide 全景/medium 中景/medium_close 中近景/close 近景/close_up 特写/extreme_close_up 大特写/detail 细节镜头 or creator vocabulary>","angle":"<horizontal: 正面/斜侧/正侧/后斜侧/背面 or creator vocabulary; say which side of the axis>","camera_height":"<地平/低(仰)/平视/高(俯)/顶视; 平视 is a choice, not an unset field>","aspect_notes":"<composition constraint>"},"delivery_surface_ref":{"src":"short-drama","field":"/creator_authority/delivery_surface"},"blocking":{"axis":"<working side/bridge/deliberate break>","screen_direction":"<direction>","paths":[],"fixed_anchors":[]},"camera_plan":{"behavior":"locked | pan | tilt | push | pull | track | follow | orbit | crane | handheld | transition","motivation":"<attention/pressure/alignment/reveal/rhythm>","intervals":[]},"dialogue_audio_refs":[],"text_treatment_refs":[{"src":"props","record_id":"PROP-<id>","field":"/text_policy"}],"transition_intent":null,"creator_overrides":[]}
|
|
@@ -43,42 +43,17 @@
|
|
|
43
43
|
**不因为猜测的区域改变构图**——猜出来的避让同样是一个通用安全框,只是没写在纸上。
|
|
44
44
|
需要时向创作者提一次问:这次交付的播放面会在画幅哪些位置叠加什么、是否常驻。
|
|
45
45
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
```json
|
|
50
|
-
{
|
|
51
|
-
"status": "unset | declared",
|
|
52
|
-
"aspect": "<已接受画幅>",
|
|
53
|
-
"overlay_regions": [
|
|
54
|
-
{
|
|
55
|
-
"id": "<稳定 ID>",
|
|
56
|
-
"where": "<用画幅比例或可命名边带描述的占用范围>",
|
|
57
|
-
"permanence": "persistent | intermittent | conditional",
|
|
58
|
-
"carries": "<字幕 | 控件 | 角标 | 其他>"
|
|
59
|
-
}
|
|
60
|
-
],
|
|
61
|
-
"source_ref": {
|
|
62
|
-
"src": "creator-decision",
|
|
63
|
-
"record_id": "<接受该声明的决定记录>"
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
`creator-decision` 是 `short-drama.json` 的 `sources` 为那份创作者决定声明的快照键:
|
|
69
|
-
|
|
70
|
-
```json
|
|
71
|
-
{"creator-decision": {"owner": "creator", "artifact": "创作者决策/<artifact-id>.json"}}
|
|
72
|
-
```
|
|
46
|
+
声明由**创作者拥有**,写在 `视觉设定.md` 的“交付面”章节,与项目视觉方向和制作形态并列。
|
|
47
|
+
它回答三件事:**占用哪里、是否常驻、依据来自哪**。每个区域使用稳定 ID,并写:
|
|
73
48
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
49
|
+
- 当前画幅;
|
|
50
|
+
- 用画幅比例或可命名边带描述的占用范围;
|
|
51
|
+
- 常驻、间歇或条件出现;
|
|
52
|
+
- 承载字幕、控件、角标还是其他内容;
|
|
53
|
+
- 创作者提供的平台模板、截图或文字说明。
|
|
77
54
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
- **已声明时绑定版本**:镜头与关键帧引用该声明的具体版本;交付方案改版时,受影响的镜头
|
|
81
|
-
按 `stale` 处理并重新核对,而不是沿用上一版的避让结论。
|
|
55
|
+
没有声明时本规则不生效:镜头照常按画面本身的可读性构图,把问题留为待创作者决定。已经声明时,
|
|
56
|
+
受影响镜头在 `分镜.md` 指名交付面区域 ID;交付方案改版后重新核对,不沿用上一版避让结论。
|
|
82
57
|
已声明遮挡区后,按下面的优先级判断哪些内容必须挪开:
|
|
83
58
|
|
|
84
59
|
- **可读文字最敏感**:证据类道具上必须被读出的字,一旦落在字幕条位置,观众永远读不到。
|