@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,284 +1,90 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: short-drama-write
|
|
3
|
-
description:
|
|
3
|
+
description: 编写或修订可拍摄的中文短剧、漫剧单集 Markdown 剧本,也负责保留作者原文地规范化现成剧本。用户提出“写/改一集短剧”“把大纲写成剧本”“优化场景/对白”“去模板感”“去 AI 味润色”“续写下一集”或提供剧本要求进入后续制作时使用;不负责资产、分镜、媒体提示词或终审。
|
|
4
4
|
license: MIT
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# 短剧写作
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
把单集意图写成可表演、可拍摄、会改变故事状态的 `剧集/<EP>/剧本.md`。
|
|
10
10
|
|
|
11
11
|
## Quick Start
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
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
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
不复制、不改写 incoming/objective/turn/payoff/handoff。
|
|
78
|
-
- **没有 development map 的 script-first 项目**:复制
|
|
79
|
-
[episode-card-standalone.json](assets/episode-card-standalone.json),以 `write_standalone`
|
|
80
|
-
模式拥有最小单集契约。
|
|
81
|
-
|
|
82
|
-
同一集不得同时激活两个模式。若后续建立 development map,先做语义
|
|
83
|
-
diff,让创作者明确选择 authority 迁移,将 standalone 契约标记 superseded,
|
|
84
|
-
再换成 pointer 卡。若上游契约需改,发 develop owner revision;不在 execution
|
|
85
|
-
字段里偷改。不要用悬念替代整集回报。
|
|
86
|
-
|
|
87
|
-
单集契约进入本阶段时必须包含哪些字段、缺失时怎么办,见
|
|
88
|
-
[阶段契约](references/stage-contract.md) 的“单集契约与题材边界”。若只做原文规范化,
|
|
89
|
-
跳过本步,不推断缺失剧情。
|
|
90
|
-
从想法或 `write_standalone` 直接写作时,本阶段执行已接受的题材与钩子取向,不自行给项目
|
|
91
|
-
归类题材;没有已接受取向时按同一节的做法处理,不为贴题材标签另造公式。
|
|
92
|
-
|
|
93
|
-
### 3. 建立因果节拍
|
|
94
|
-
|
|
95
|
-
复制 [beats.jsonl](assets/beats.jsonl),让每条节拍回答:
|
|
96
|
-
|
|
97
|
-
- 因为什么,谁现在要什么;
|
|
98
|
-
- 谁或什么阻挡;
|
|
99
|
-
- 观众能看见/听见的行动是什么;
|
|
100
|
-
- 信息、权力、关系、情绪、物理状态或风险怎样变化;
|
|
101
|
-
- 这个结果怎样制造下一股压力。
|
|
102
|
-
|
|
103
|
-
若节拍开启新线,明确声明;不要把“然后发生”伪装成“因此发生”。数量与长短服从本集动作,而非统一模板。
|
|
104
|
-
|
|
105
|
-
关系字段遵守同一约定:同一 `beats.jsonl` 内的前因、铺垫与兑现只写稳定
|
|
106
|
-
`because_of_ids`/`setup_ids`/`payoff_ids`,避免自引用文件哈希;来自 episode map、
|
|
107
|
-
前集或其他 owner artifact 的关系写 canonical `because_of_refs`/`setup_refs`/
|
|
108
|
-
`payoff_refs`。`*_refs` 只放引用对象。
|
|
109
|
-
|
|
110
|
-
引用这样写:文件首行的 `{"record_type": "sources", "schema_version": "1.0.0",
|
|
111
|
-
"sources": {...}}` 记录把每个上游快照声明一次,`sources` 的每个短键映射到
|
|
112
|
-
`{"owner": ..., "artifact": ...}`;每条引用写
|
|
113
|
-
`{"src": "<sources 键>", "record_id": "<记录 ID>"}`,需要时再加 `field` 指向该记录内
|
|
114
|
-
的 JSON pointer。指向整个 artifact 时只写 `{"src": "<sources 键>"}`。同一份文件里
|
|
115
|
-
同一个键始终指同一个快照。`.json` 文件把同样的 `sources` 对象写在顶层。
|
|
116
|
-
|
|
117
|
-
### 4. 先定场景功能,再写正文
|
|
118
|
-
|
|
119
|
-
对每个场景先回答:为什么必须存在、谁的议程对撞、哪个可见动作承载冲突、哪里发生方向性变化、退出状态给下游留下什么。需要场景与可见行动方法时读取 [script-craft.md](references/script-craft.md)。
|
|
120
|
-
|
|
121
|
-
写对白前读取 [dialogue-craft.md](references/dialogue-craft.md),尤其检查人物策略、潜台词、信息争夺和声音差异。
|
|
122
|
-
当声源、环境撤出、主动留白、画外存在或相邻场 sound bridge 承担戏剧转向时,读取
|
|
123
|
-
[scene-sound-dramaturgy.md](references/scene-sound-dramaturgy.md)。剧本只拥有故事必需的声音事实,
|
|
124
|
-
不替分镜设计逐镜声轨,也不用配乐替代表演。
|
|
125
|
-
|
|
126
|
-
创作者指出某个兑现的呈现方式**可能需要更换**时,读取
|
|
127
|
-
[substitutable-realization.md](references/substitutable-realization.md),把功能、当前实现
|
|
128
|
-
与备选实现分开写下来。**不要因此提前磨平任何内容**:先按最想要的拍法写,备选只在真的
|
|
129
|
-
需要时启用。创作者没有标注时不做这一步,也不替创作者预判。
|
|
130
|
-
|
|
131
|
-
长单集需要跨多轮续写、上下文即将切换或中断恢复时,读取
|
|
132
|
-
[scene-handoff-capsule.md](references/scene-handoff-capsule.md),只保存从当前剧本派生的
|
|
133
|
-
最小场景交接;一次完成或局部修订时不要额外建立第二份摘要。
|
|
134
|
-
|
|
135
|
-
### 5. 写唯一剧本源
|
|
136
|
-
|
|
137
|
-
复制 [screenplay.md](assets/screenplay.md),严格按 [screenplay-format.md](references/screenplay-format.md) 写:
|
|
138
|
-
|
|
139
|
-
- `## EP001-SC001 内 · 地点 · 时间`;
|
|
140
|
-
- 现在时、可见可表演的动作;
|
|
141
|
-
- `角色(可表演提示):台词`;
|
|
142
|
-
- 仅对故事必需事实使用 `[VO]`、`[OS]`、`[SFX]`、`[画面文字]`、`[转场]`、`[连续性]`。
|
|
143
|
-
|
|
144
|
-
识别创作者交来的行业通行方言(`△` 动作行、`【卡点】` 等)、做原文规范化映射,
|
|
145
|
-
或按创作者要求以方言交付时,读取
|
|
146
|
-
[production-format-dialect.md](references/production-format-dialect.md)。
|
|
147
|
-
|
|
148
|
-
不要把镜头、资产全集、模型参数或提示词写进剧本。私密想法要转成行为、证据、空间后果,或明确标记的声音表达。
|
|
149
|
-
|
|
150
|
-
正文发布后,用 [screenplay_index.py](scripts/screenplay_index.py) 生成只读派生索引;工具只识别格式契约中的场景标题、动作、对白、六种生产标签和注释,并保留 UTF-8 byte offsets 与行范围:
|
|
151
|
-
|
|
152
|
-
```bash
|
|
153
|
-
python3 <skill-dir>/scripts/screenplay_index.py 剧集/EP001/screenplay.md \
|
|
154
|
-
--output 剧集/EP001/screenplay-index.jsonl \
|
|
155
|
-
--source-ref 剧集/EP001/screenplay.md \
|
|
156
|
-
--speaker 葛晴 --speaker 游森
|
|
157
|
-
```
|
|
158
|
-
|
|
159
|
-
由 write owner 阅读当前剧本后,把本集实际说话者逐个传给 `--speaker`;索引器只做精确
|
|
160
|
-
标签核对,不用冒号正则猜人物。未登记的 `前缀:内容` 写成 `ambiguous_dialogue_or_action`。
|
|
161
|
-
|
|
162
|
-
**它不会作为块进入索引**,所以覆盖、时长与配音本都看不到它——必须处理掉,不能留着。
|
|
163
|
-
三种处理方式:补入说话者清单(它确实是台词)、改用 `[画面文字]` 等生产标签、或改写这一行
|
|
164
|
-
让它不再是「前缀:内容」的形状(动作段里的全角冒号可以改成破折号或拆成两句)。
|
|
165
|
-
留着不处理时,分镜阶段的覆盖检查会报 `SHT01_SCREENPLAY_IS_NOT_FULLY_INDEXED`,
|
|
166
|
-
时长估算的报告会带上 `incomplete`。
|
|
167
|
-
|
|
168
|
-
规范化预览尚未获 creator acceptance 时加 `--authority candidate`,使 meta、block 与
|
|
169
|
-
source issue 的 refs 都保持 candidate;accepted 剧本发布后再以默认 accepted authority
|
|
170
|
-
重建,不得只手改状态字段。
|
|
171
|
-
|
|
172
|
-
修订后**必须把上一版一起交给索引器**,两个参数成对出现:
|
|
173
|
-
|
|
174
|
-
```bash
|
|
175
|
-
python3 <skill-dir>/scripts/screenplay_index.py 剧集/EP001/screenplay.md \
|
|
176
|
-
--output 剧集/EP001/screenplay-index.jsonl \
|
|
177
|
-
--previous-index 剧集/EP001/screenplay-index.jsonl \
|
|
178
|
-
--previous-source <改稿前的剧本字节> \
|
|
179
|
-
--source-ref 剧集/EP001/screenplay.md --speaker 葛晴 --speaker 游森
|
|
180
|
-
```
|
|
181
|
-
|
|
182
|
-
这样**正文块按内容保 ID**——内容没变的块保住自己的 ID,被改写的块**换新 ID 并让旧 ID 退役**,
|
|
183
|
-
于是指向它的下游引用会失败而不是静默改指。同时多一层拆分/合并识别:歧义写入
|
|
184
|
-
`mapping_review_request`,必须显式重映射。
|
|
185
|
-
**场景标题是例外**:它按 `scene_id` 保 ID,改写标题不换 ID(同一场戏仍是同一场,内容由标题下面
|
|
186
|
-
的块承载)。说话者清单从上一版索引读回,与这次传的 `--speaker` 取并集,修订时只传新增的人即可。
|
|
187
|
-
|
|
188
|
-
**退役是永久的,不只是对下一版**。索引 meta 里的 `block_id_high_water` 记着每个场景、每种块
|
|
189
|
-
用到过的最大编号,逐版往下传。没有它时,编号只从上一版索引推:某个场景里某一类块一旦全部消失,
|
|
190
|
-
下一版就从 01 重新发号,把一个曾经属于别的内容的编号发给新块——下游引用照样解析得开,
|
|
191
|
-
指的却是另一段戏。
|
|
192
|
-
|
|
193
|
-
**输出路径上已经有索引、却没有告诉索引器上一版是什么时,命令会指名该文件并停下**。
|
|
194
|
-
这一条不是礼貌提示:不带上一版重建,ID 按位置重新发放,被改写的块会拿回前一个块退役的编号,
|
|
195
|
-
指向它的下游引用于是解析得开、内容却换了一个——而解析得开正是正确引用的样子,下游看不出来。
|
|
196
|
-
确实要从零重编 ID(下游引用还没建立,或准备整体重指)就加 `--no-previous`,
|
|
197
|
-
让这件事成为一个明写出来的决定。
|
|
198
|
-
|
|
199
|
-
索引器绝不改写 `screenplay.md`。
|
|
200
|
-
|
|
201
|
-
正文落定后做一次量级粗测:按项目已接受的语速/字数比把正文字数折成秒数(项目没有这个
|
|
202
|
-
比值就向创作者要一个量级),与本集目标时长比一次。差出两倍以上就在报告里点名,由创作者
|
|
203
|
-
决定改集长还是拆集;两倍以内不必提。
|
|
204
|
-
|
|
205
|
-
### 5b. 配音本
|
|
206
|
-
|
|
207
|
-
项目的对白由录音或 TTS 承担时,配音本和剧本一起交付,不是事后想起来才补的东西:没有它,
|
|
208
|
-
拿到剧本的人手里有台词、没有任何一句该怎么念,而这正是下单前最后缺的一块。项目确定
|
|
209
|
-
只做无声或字幕交付时才跳过这一步,并在报告里写明跳过的理由。
|
|
210
|
-
|
|
211
|
-
创作者要为录音准备台词表时,复制
|
|
212
|
-
[voice-record-sheet.jsonl.md](assets/voice-record-sheet.jsonl.md)。它是**剧本的投影,
|
|
213
|
-
不是第二份台词权威**:首行声明所引 `screenplay-index.jsonl` 快照,其后每行用
|
|
214
|
-
`source_ref` 绑定一个剧本块并逐字等于该块,要改词就改剧本再重新投影。
|
|
215
|
-
|
|
216
|
-
录音顺序几乎从不是剧情顺序(通常按人物集中录),配音者失去的正是上下文,所以每行要补
|
|
217
|
-
对谁说、接谁的话、此刻他知道什么、这一句要达成什么。写策略而不是情绪词——"愤怒"不可
|
|
218
|
-
执行,"质问"可执行。多音字、生僻字与专名的读法在进棚前定完并留痕;棚里中断是最贵的。
|
|
219
|
-
|
|
220
|
-
音色描述属于角色档案,由 assets owner 按 `$short-drama-assets` 的 `voice-direction.md` 写;
|
|
221
|
-
配音本用 `source_ref` 指向它,不在这里另写一份。两份都在,一句台词才既有词也有声音。
|
|
222
|
-
|
|
223
|
-
本写作阶段不生成音频,也不从这份文本判断成品音质;实际 TTS 的确认后生产边界见文末。
|
|
224
|
-
|
|
225
|
-
写完后用 [voice_sheet_check.py](scripts/voice_sheet_check.py) 核对它仍然是投影:
|
|
226
|
-
|
|
227
|
-
```bash
|
|
228
|
-
python3 <skill-dir>/scripts/voice_sheet_check.py 剧集/EP001/voice-record-sheet.jsonl \
|
|
229
|
-
--index 剧集/EP001/screenplay-index.jsonl \
|
|
230
|
-
--screenplay 剧集/EP001/screenplay.md
|
|
13
|
+
只维护一份剧本 Markdown,不另建 episode card、beats、block index、录音表、QA 或接受记录。
|
|
14
|
+
一级标题使用 `# EP001 集名`,场景标题使用 `## EP001-SC001 内 · 地点 · 时间/天气`。
|
|
15
|
+
对白写 `角色(可选表演提示):台词`;生产标签使用 `[VO]`、`[OS]`、`[SFX]`、`[画面文字]`、
|
|
16
|
+
`[连续性]`、`[转场]`。不要把含冒号的动作叙述误写成对白。
|
|
17
|
+
|
|
18
|
+
## 入口
|
|
19
|
+
|
|
20
|
+
- 有分集规划:读取本集进入状态、目标、转折、回报和交接事实。
|
|
21
|
+
- 只有想法/大纲:在上下文形成最小单集契约和因果节拍,再直接写剧本。
|
|
22
|
+
- 已有剧本:保留作者语言,只做用户点名的定点修订。
|
|
23
|
+
- 非规范文本要进入制作:保留原文,只做必要的场景、动作、对白和生产标签规范化。
|
|
24
|
+
|
|
25
|
+
开发大纲和长篇分析都是可选上游;当前材料足够时直接写。
|
|
26
|
+
|
|
27
|
+
## 工作流
|
|
28
|
+
|
|
29
|
+
1. 锁定本集承诺的观看体验、谁现在要什么、阻力、当集兑现和退出状态。
|
|
30
|
+
2. 只识别本集实际存在的发动机:若主打艰难选择,检查两边价值;若判断转折依赖争议证据,检查证明边界;若前景化精确死线,检查动作容量;若题面限定次数、轮次、呼吸或节拍,检查每个单位是否在边界内完成所需状态。没有时不强行补齐;输入已经以它为主发动机时,要让它真正改变行动、关系或结果,不只在台词中点名。
|
|
31
|
+
3. 在上下文排“因为—行动—结果—下一股压力”,不落盘节拍表;让物件、对白、沉默、空间或声音按本集题材承担必要工作,不预设某一种载体。
|
|
32
|
+
4. 逐场确定不可替代的功能、可见变化与场尾状态;由争取或冲突组织的场景再明确焦点议程与阻力。承担主要戏剧功能的配角要有自己的策略,事务性或环境性角色保持简洁即可。
|
|
33
|
+
5. 把动作、对白、画外音、声音事实和画面文字写入同一份剧本。
|
|
34
|
+
6. 用户要求整集就写完整集,场景批次自动续跑。
|
|
35
|
+
7. 交稿前静默反查:只看剧本能否接收到本集承诺、人物行动是否有因果、题材语气是否一致;再对本集确实使用的选择、证据、有限单位或精确死线做专项检查。若自检让剧本长出输入没有要求的机关,撤掉机关而不是替它找理由。
|
|
36
|
+
8. 局部修订保留无关段落;明确问题直接修正,只把真实剧情分叉交给用户。
|
|
37
|
+
|
|
38
|
+
## 写作要求
|
|
39
|
+
|
|
40
|
+
- 先服从输入已经给出的事实、`必须/禁止`、题材观看契约和退出状态;本技能的审查项与手艺默认只帮助实现这些要求,不能反过来补造题面没有的精确数字、记录、资源、程序、关系或机关。
|
|
41
|
+
- 每场改变信息、权力、关系、情绪、物理状态或风险;无变化的场删掉或合并。核心阻力的转向要有可追溯的事实、筹码、权限、代价或人物行动,不能只靠对手停止反应。
|
|
42
|
+
- 对白必须在争取、回避、试探、逼迫或重新定义关系;用可见、可听、可触的行为表现状态,不用解释替代行动,也不把已经演清的机制再说一遍。
|
|
43
|
+
- 观众理解当前行动所必需的赌注要进入剧本,但载体服从题材;选择、证据、有限单位、精确死线等专项规则只在输入真正以它为发动机时启用,并按需读取[剧作手艺](references/script-craft.md),普通决定、普通物件和模糊时间压力不升级成同一套机关。
|
|
44
|
+
- 压缩过程时只保留会改变策略、关系、风险或结果的节点。资源与外部反应必须来自输入或前文建立,且不能替人物完成最难的戏剧行动。
|
|
45
|
+
- 承担主要冲突的角色要保持相称的目标、判断或策略;事务性、环境性角色保持简洁,不为检查表硬加秘密、反转或人物弧。
|
|
46
|
+
- 已建立的代价、不可逆后果、关键持物、空间和知识状态要进入可追溯的退出状态;结尾可推进、留白、反讽、安静收束或形成余韵,不强制追加外部事件。
|
|
47
|
+
- `[连续性]` 只交接由前文动作已经建立、又容易在下游丢失的状态;不能用作者标签证明镜头外从未发生某事,也不复述正文已清楚呈现的结果。
|
|
48
|
+
- 交稿前静默做一次经济性检查:是否增加了输入没有要求的精确数字或记录链;是否用标签/对白重复动作;是否在回报后堆了多个同方向后果。没有新作用的内容删掉,knowhow 本身不删。
|
|
49
|
+
- 输入给出目标时长时按真实表演、动作和停顿通读压稿,先删重复验证、解释和同义收尾;不用统一字数、镜头数或节拍数填模板。
|
|
50
|
+
- 用户原文优先;“去 AI 味”是定点修订,不抹平作者个性。
|
|
51
|
+
|
|
52
|
+
## 按需知识
|
|
53
|
+
|
|
54
|
+
默认只读本 SKILL 和直接输入。出现下列明确信号时,在写正文前读取对应知识;同一输入有多个不同问题
|
|
55
|
+
可以分别读取,但不遍历无关引用:
|
|
56
|
+
|
|
57
|
+
- 阶段边界与规则分级:[阶段契约](references/stage-contract.md)
|
|
58
|
+
- 场景标题、对白和生产标签语法,或把创作者带来的现成剧本[规范化](references/screenplay-format.md#7-现有文本的规范化入口):[剧本格式](references/screenplay-format.md)
|
|
59
|
+
- 项目特有的制作稿方言:[制作格式方言](references/production-format-dialect.md)
|
|
60
|
+
- 输入含[核心选择](references/script-craft.md#35-把一拍写成艰难选择时两个方向都要活着)、[有限次数/轮次/呼吸/节拍](references/script-craft.md#64-有限单位按完成状态计数)、[精确倒计时](references/script-craft.md#63-倒计时先算动作不要只写数字)或[会改变人物判断的关键物证](references/script-craft.md#53-证据先改变判断再改变关系):[剧作手艺](references/script-craft.md)
|
|
61
|
+
- 过去关系必须通过对白进入,或关键人物容易只剩说明功能:[对白手艺](references/dialogue-craft.md)
|
|
62
|
+
- 声源、留白与 sound bridge:[场景声音戏剧](references/scene-sound-dramaturgy.md)
|
|
63
|
+
- 同一故事义务的不同可拍实现:[可替代实现](references/substitutable-realization.md)
|
|
64
|
+
- 长单集跨上下文时的最小交接:[场景交接胶囊](references/scene-handoff-capsule.md),只留在上下文
|
|
65
|
+
|
|
66
|
+
## 时长估算(按需)
|
|
67
|
+
|
|
68
|
+
用户问时长时才把索引写入系统临时目录。先用 Python 查询跨平台临时目录,把第一条命令打印的完整
|
|
69
|
+
路径原样替换进后两条命令的引号内。以下每条都是一行完整命令,不依赖 shell 变量或续行符;Windows
|
|
70
|
+
没有 `python3` 命令时使用 `py -3`。`--speaker` 的示例值必须替换为本集实际说话者;只有存在项目
|
|
71
|
+
配置时才添加 `--project short-drama.json`:
|
|
72
|
+
|
|
73
|
+
```text
|
|
74
|
+
python3 -c "from pathlib import Path; import tempfile, uuid; print(Path(tempfile.gettempdir()) / ('short-drama-' + uuid.uuid4().hex + '.jsonl'))"
|
|
75
|
+
python3 "{技能目录}/scripts/screenplay_index.py" "剧集/EP001/剧本.md" --output "粘贴第一条命令输出的完整路径" --speaker "本集角色一" --speaker "本集角色二"
|
|
76
|
+
python3 "{技能目录}/scripts/duration_estimate.py" "剧集/EP001/剧本.md" --index "粘贴第一条命令输出的完整路径"
|
|
231
77
|
```
|
|
232
78
|
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
和正常的一模一样**,而它被带进录音棚的那一刻正是没人能核对的时刻。
|
|
236
|
-
|
|
237
|
-
只覆盖部分对白(按人物或按场次分表)是正常做法,未覆盖的块只报告不判错。
|
|
238
|
-
|
|
239
|
-
### 6. 修订而不是抹平
|
|
240
|
-
|
|
241
|
-
按顺序做所有者修订:
|
|
242
|
-
|
|
243
|
-
1. **因果**:选择是否造成后果,转折是否由已存在的压力产生;
|
|
244
|
-
2. **场景**:目标、反对、转向、退出是否清楚;
|
|
245
|
-
3. **可拍性**:情绪和认知是否有演员能执行的载体;
|
|
246
|
-
4. **对白**:每轮是否在争取、回避、试探、逼迫或重新定义关系;
|
|
247
|
-
5. **生产事实**:必读文字、画外音、画外对白、关键声音和连续性变化是否有边界标签;
|
|
248
|
-
6. **交接**:本集结束的知识、持物、伤势、关系和决定能否成为下一集准确开场。
|
|
249
|
-
|
|
250
|
-
局部修订保留不相关段落。先展示语义差异与可能失效的下游产物,创作者接受后再发布。
|
|
251
|
-
|
|
252
|
-
### 7. 报告审查交接
|
|
253
|
-
|
|
254
|
-
完成结构检查后只报告当前范围是否适合单独复核,不自动启动复核。若之后收到带证据的修订请求,
|
|
255
|
-
只修改本技能拥有的单集卡、节拍或剧本;完成该有界修订后再次交还控制权,复审需要新的明确请求。
|
|
256
|
-
|
|
257
|
-
## 规则分级
|
|
258
|
-
|
|
259
|
-
- **`structural_invariant`**:场景/块 ID、引用、已有生产标签语法、来源哈希与明确矛盾;
|
|
260
|
-
校验器可阻断。
|
|
261
|
-
- **`reviewed_invariant`**:因果是否成立、场景是否真正转向、内心是否可表演、对白是否改变局面,
|
|
262
|
-
以及生产关键事实是否漏标;reviewer 须引用文本证据。
|
|
263
|
-
- **`craft_default`**:进入得晚、退出得早、以选择和后果推动、用具体动作承载情绪;可说明理由覆盖。
|
|
264
|
-
- **`taste_option`**:沉默、旁白、方言、打断、场景静动、句式节奏;遵从创作者选择。
|
|
265
|
-
|
|
266
|
-
不要把统一的爆点安排、转折时刻、台词比例、字数、场景数或节拍数设为质量门槛。
|
|
267
|
-
|
|
268
|
-
## 产物与边界
|
|
79
|
+
估算是参考,不是门禁;没有语速或动作段速率时只报告可数事实,不猜秒数。但任务已给目标时长时,
|
|
80
|
+
写作者仍须用真实朗读和动作通读判断能否容纳,并直接压缩重复节拍;“不能精确估秒”不是忽略目标的理由。
|
|
269
81
|
|
|
270
|
-
|
|
82
|
+
## 完成
|
|
271
83
|
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
-
|
|
275
|
-
- `剧集/<EP>/screenplay.md`
|
|
276
|
-
- 由剧本生成的 `screenplay-index.jsonl`
|
|
277
|
-
- `剧集/<EP>/voice-record-sheet.jsonl`(对白由录音或 TTS 承担时)
|
|
278
|
-
- 规范化预览与语义修订差异
|
|
84
|
+
点名范围已写入、场景因果连贯、对白与行动可表演、承诺有兑现或有意延迟、结尾完成本集预定的戏剧或情绪功能,即完成。最后一拍可以推进,也可以安静收束、形成余韵或让既有动作变义;判断它是否有效,不用“是否又发生一件事”代替。
|
|
85
|
+
资产、分镜、审查与生产只有用户点名时开始。
|
|
86
|
+
五份创作文档齐备后,可转 `$short-drama` 对跨文档结构做一次机械核对;内容质量仍由创作者审查。
|
|
279
87
|
|
|
280
|
-
|
|
88
|
+
## 安装维护
|
|
281
89
|
|
|
282
|
-
|
|
283
|
-
生产技能必须先展示本次 TTS 任务的原句、角色/声音、数量、参数和输出路径,并取得针对这份
|
|
284
|
-
预览的明确确认;本技能不会替创作者确认,也不会把剧本接受状态当作付费生产授权。
|
|
90
|
+
只有安装、升级或排障时运行 `python3 scripts/selftest.py`。
|
|
@@ -194,6 +194,13 @@
|
|
|
194
194
|
|
|
195
195
|
**`craft_default`**:让说明带着争取目标进入;能由动作或证据表达的部分,不再由两人完整复述。
|
|
196
196
|
|
|
197
|
+
动作已经让观众看懂机制时,台词优先承担新的工作:改变关系、收窄结论、隐藏态度或迫使下一步。若一句
|
|
198
|
+
话只是逐项复述观众刚看到的因果,删掉后画面仍完整,就让人物回应结果而不是给画面配答案。
|
|
199
|
+
|
|
200
|
+
过去事件只说当前动作需要的最小片段。若一名角色能不受阻地一口气交代时间、关系与结果,先检查这些
|
|
201
|
+
信息能否被对方打断、质疑、回避或拿来交换;让背景参与当下争取,而不是暂停剧情播放资料。需要完整
|
|
202
|
+
宣读、证词或仪式性讲述时可以保留长段,但其现场作用要清楚。
|
|
203
|
+
|
|
197
204
|
**`taste_option`**:仪式宣读、审讯、教学、公开声明等场景可以容纳长信息,但仍要有听者反应和权力后果。
|
|
198
205
|
|
|
199
206
|
## 6. 人物声音如何区分
|
|
@@ -1,51 +1,25 @@
|
|
|
1
|
-
#
|
|
1
|
+
# 单集跨上下文交接胶囊
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
已接受的 `screenplay.md`、单集契约和连续性来源为准。
|
|
3
|
+
长单集因为上下文限制需要分批续写时,可以在**当前会话上下文**维护一份最小交接摘要。它不落盘、
|
|
4
|
+
不成为第六份创作文档,也不替代 `剧本.md`。
|
|
6
5
|
|
|
7
|
-
##
|
|
6
|
+
## 只记恢复下一段真正需要的内容
|
|
8
7
|
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
8
|
+
- 当前集号和最后完成的场景 ID;
|
|
9
|
+
- 上一场结束时仍会影响下一场的地点、在场人物、知识、关系、伤势、持物与风险;
|
|
10
|
+
- 已建立但尚未兑现的 setup/payoff;
|
|
11
|
+
- 下一场已确定的功能与 exit state;若它由争取或冲突组织,再记 agenda、opposition 与 turn;
|
|
12
|
+
- 本批仍未解决、会改变下一段写法的真实创作分叉。
|
|
12
13
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
## 最小字段
|
|
16
|
-
|
|
17
|
-
```yaml
|
|
18
|
-
scene_handoff_capsule:
|
|
19
|
-
authority: derived
|
|
20
|
-
sources:
|
|
21
|
-
screenplay: {owner: short-drama-write, artifact: 剧集/<EP>/screenplay.md}
|
|
22
|
-
screenplay_ref: {src: screenplay}
|
|
23
|
-
current_scene:
|
|
24
|
-
scene_id: EPxxx-SCxxx
|
|
25
|
-
agenda: 当前人物正在争取什么
|
|
26
|
-
opposition: 谁/什么正在反制
|
|
27
|
-
turn: 刚发生的方向变化
|
|
28
|
-
exit_state: 场景结束后谁能做什么、不能做什么
|
|
29
|
-
changed_state:
|
|
30
|
-
story: [知识/关系/权力/风险/决定的变化]
|
|
31
|
-
physical: [位置/持物/伤势/造型/环境的变化]
|
|
32
|
-
setup_debt: [仍待兑现或明确放弃的 setup ID/ref]
|
|
33
|
-
information_permissions: [谁知道/误信/怀疑什么,观众此刻能知道什么]
|
|
34
|
-
next_scene_pressure: 下一场由哪个已发生结果发动
|
|
35
|
-
tail_locator: {block_id: <last-accepted-block>}
|
|
36
|
-
unresolved: [不得由续写者自行补齐的选择]
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
只记录变化和下一步依赖,不复制整段正文、角色小传、资产 设定集 或所有旧节拍。`tail_locator`
|
|
40
|
-
必须指向当前已接受剧本尾部;如果只完成 candidate,明确保留 candidate authority,不能写成
|
|
41
|
-
accepted。
|
|
14
|
+
只记录变化和下一步依赖,不复制整段正文、角色小传、视觉设定或全部旧节拍。任何信息都要能回到
|
|
15
|
+
当前 `剧本.md` 的场景 ID 核对;胶囊与正文冲突时以正文为准。
|
|
42
16
|
|
|
43
17
|
## 恢复步骤
|
|
44
18
|
|
|
45
|
-
1.
|
|
46
|
-
2.
|
|
47
|
-
3.
|
|
48
|
-
4.
|
|
49
|
-
5.
|
|
19
|
+
1. 重新读取当前 `剧本.md` 的最后一个已完成场景及其相邻上下文;
|
|
20
|
+
2. 对照胶囊中的结束状态、未兑现义务和下一场目标,丢弃已经过期的摘要;
|
|
21
|
+
3. 只读取下一场直接依赖的分集规划与连续性事实,不预加载无关 reference;
|
|
22
|
+
4. 写下一场前重新回答它的必要功能与 exit state;冲突场景再回答 agenda、opposition 与 turn,不能把候选想法当既定剧情;
|
|
23
|
+
5. 场景写入正文后刷新上下文胶囊;整集完成后删除它。
|
|
50
24
|
|
|
51
|
-
|
|
25
|
+
胶囊只帮助恢复注意力。它不代表创作者确认、审查通过或交付状态。
|
|
@@ -7,17 +7,17 @@
|
|
|
7
7
|
3. 动作、对白与生产标签
|
|
8
8
|
4. 注释与未知内容
|
|
9
9
|
5. 完整格式示例
|
|
10
|
-
6. 稳定 ID
|
|
10
|
+
6. 稳定 ID、临时索引与修订
|
|
11
11
|
7. 现有文本的规范化入口
|
|
12
12
|
8. 剧本中不应出现的内容
|
|
13
|
-
9.
|
|
13
|
+
9. 完成前检查
|
|
14
14
|
|
|
15
15
|
## 1. 设计目标与事实所有权
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
`剧本.md` 要能在普通 Markdown 编辑器中直接阅读,同时让下游准确引用场景、动作、对白与生产要求。
|
|
18
18
|
|
|
19
19
|
- 它是场景边界、动作、对白和生产指令的**唯一可编辑剧本源**。
|
|
20
|
-
-
|
|
20
|
+
- 需要时生成的临时索引只帮助识别场景、标签和时长,不得反向改写正文,也不作为项目交付。
|
|
21
21
|
- 卡片和节拍是写作推理材料,不是第二份正文。
|
|
22
22
|
- 资产、分镜、图片/视频提示词与审查结论引用剧本,不在剧本中取得所有权。
|
|
23
23
|
|
|
@@ -139,7 +139,7 @@ Markdown 注释可以保存创作者的非生产备注:
|
|
|
139
139
|
```
|
|
140
140
|
|
|
141
141
|
- 注释原样保留;
|
|
142
|
-
-
|
|
142
|
+
- 临时索引把注释标记为非生产内容;
|
|
143
143
|
- 分镜覆盖不把注释当成必拍动作;
|
|
144
144
|
- 生产关键事实不能只藏在注释中;
|
|
145
145
|
- 未识别的 Markdown 原样保留并发出警告,不要擅自删除或“修复”。
|
|
@@ -185,9 +185,9 @@ Markdown 注释可以保存创作者的非生产备注:
|
|
|
185
185
|
- 关键文字、声音与持物交接有明确边界;
|
|
186
186
|
- 没有把摄影或提示词写进故事源。
|
|
187
187
|
|
|
188
|
-
## 6. 稳定 ID
|
|
188
|
+
## 6. 稳定 ID、临时索引与修订
|
|
189
189
|
|
|
190
|
-
|
|
190
|
+
需要机器辅助检查时,临时索引应记录:
|
|
191
191
|
|
|
192
192
|
- 块 ID 与类型(场景标题、动作、对白、生产标签、注释等);
|
|
193
193
|
- 源文件范围与内容哈希;
|
|
@@ -196,13 +196,13 @@ Markdown 注释可以保存创作者的非生产备注:
|
|
|
196
196
|
- 生产标签类型;
|
|
197
197
|
- 未映射或歧义说明。
|
|
198
198
|
|
|
199
|
-
|
|
199
|
+
临时索引不得:
|
|
200
200
|
|
|
201
201
|
- 自动润色或规范化创作者文字;
|
|
202
202
|
- 把显示名称变成另一份权威角色/资产事实;
|
|
203
203
|
- 在拆分/合并歧义时重用错误块 ID;
|
|
204
204
|
- 把注释当成生产动作;
|
|
205
|
-
-
|
|
205
|
+
- 反向覆盖当前 `剧本.md`。
|
|
206
206
|
|
|
207
207
|
邻近文字修改且语义块映射明确时保留块身份。段落拆分、合并或整场重写无法确定时,提出显式重映射选择。
|
|
208
208
|
|
|
@@ -216,7 +216,7 @@ Markdown 注释可以保存创作者的非生产备注:
|
|
|
216
216
|
4. 展示原文和规范化预览;
|
|
217
217
|
5. 分开报告语义新增、删除、改写、未映射范围与低置信映射;
|
|
218
218
|
6. 让创作者选择接受、修订或取消;
|
|
219
|
-
7.
|
|
219
|
+
7. 确认后才更新 `剧本.md`;索引若用于检查,只写临时目录。
|
|
220
220
|
|
|
221
221
|
**`structural_invariant`**:取消或拒绝不改变规范剧本;接受前不得把预览当成权威源。
|
|
222
222
|
|
|
@@ -230,20 +230,20 @@ Markdown 注释可以保存创作者的非生产备注:
|
|
|
230
230
|
- 镜头表、景别、镜头运动或关键帧构图;
|
|
231
231
|
- 图片/视频提示词和生成参数;
|
|
232
232
|
- 模型、任务或接口字段;
|
|
233
|
-
-
|
|
233
|
+
- 审查结论和内部流程状态;
|
|
234
234
|
- 原始参考材料位置;
|
|
235
235
|
- 用统一数量、比例或篇幅冒充创作规律的说明。
|
|
236
236
|
|
|
237
|
-
|
|
237
|
+
故事真相留在剧本,其他所有者通过场景 ID、支持标签和必要短引文引用。
|
|
238
238
|
|
|
239
|
-
## 9.
|
|
239
|
+
## 9. 完成前检查
|
|
240
240
|
|
|
241
241
|
### 可机械确认
|
|
242
242
|
|
|
243
|
-
- **`structural_invariant`**:集/场景 ID
|
|
243
|
+
- **`structural_invariant`**:集/场景 ID 唯一、标题可解析、受支持标签闭合、可见引用可解析;
|
|
244
244
|
- **`structural_invariant`**:明确交接状态与单集卡不冲突;
|
|
245
245
|
- **`structural_invariant`**:未知 Markdown 和注释被保留,未映射范围已报告;
|
|
246
|
-
- **`structural_invariant
|
|
246
|
+
- **`structural_invariant`**:`剧本.md` 仍是唯一可编辑剧本源。
|
|
247
247
|
|
|
248
248
|
### 需要审查
|
|
249
249
|
|