@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,187 +1,76 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: short-drama-assets
|
|
3
|
-
description:
|
|
3
|
+
description: 从短剧剧本拆出人物/造型、地点/视图、道具/状态和跨场连续性,写成创作者可读的视觉设定。用户说“拆角色/场景/道具”“做资产设定”“判断复用还是新变体”“更新造型/道具状态”,或拿现成剧本直接做视觉资产准备时使用;不写图片提示词,不生成媒体。
|
|
4
4
|
license: MIT
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# 短剧资产拆解
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
此刻是哪种造型/视图/状态,以及变化怎样传到下一场和下一集。
|
|
12
|
-
|
|
13
|
-
## 开始前
|
|
14
|
-
|
|
15
|
-
本技能可独立安装和执行。先读取用户明确提供的剧本、既有资产与本任务直接输入;若当前目录
|
|
16
|
-
是 `short-drama` 项目且项目工具可用,可以读取 `status` 并使用其发布生命周期,但缺少 core
|
|
17
|
-
或任何其他技能都不是资产拆解的阻断条件。[阶段契约](references/stage-contract.md) 给出
|
|
18
|
-
本阶段边界、制作形态输入与规则表,无需读取其他技能的文件。
|
|
9
|
+
把剧本文字变成可复用、可持续的视觉事实,统一写入 `剧集/<EP>/视觉设定.md`。不要把每次出场都
|
|
10
|
+
变成新资产,也不要抢写剧本语义、镜头走位或生成提示词。
|
|
19
11
|
|
|
20
12
|
## Quick Start
|
|
21
13
|
|
|
22
|
-
先复制 `examples/minimal/` 的原生 Character/Look JSONL,再修改为当前资产。发布前运行:
|
|
23
|
-
|
|
24
14
|
```text
|
|
25
|
-
|
|
26
|
-
--characters examples/minimal/characters.jsonl \
|
|
27
|
-
--looks examples/minimal/looks.jsonl
|
|
28
|
-
python3 {技能目录}/scripts/selftest.py
|
|
15
|
+
用 $short-drama-assets 从 EP001 剧本拆完人物、造型、地点、道具和本集状态
|
|
29
16
|
```
|
|
30
17
|
|
|
31
|
-
|
|
32
|
-
Look → Character 绑定;身份是否可信、差异是否有戏剧依据仍由创作者和 reviewer 判断。
|
|
33
|
-
输入路径不存在于当前目录时,会相对本技能目录解析。
|
|
34
|
-
|
|
35
|
-
## 边界
|
|
36
|
-
|
|
37
|
-
- 资产事实只来自已接受剧本、已有 设定集、连续性和创作者补充;不擅改剧情。
|
|
38
|
-
- 项目存在时读取 `short-drama.json#/creator_authority/{visual_direction,production_profile}`
|
|
39
|
-
中状态为 `accepted` 的视觉方向与制作形态;独立运行时使用创作者直接提供的等价约束,未提供
|
|
40
|
-
就保持 `unset`。形态决定哪些身份锚点在本项目里根本可被表达——以剪影为
|
|
41
|
-
识别通道的形态与以面部结构为识别通道的形态需要不同的锚点集合;若状态为 `unset`,就向
|
|
42
|
-
创作者给出选择,不从对话记忆补造。形态可以改变锚点的表达通道与颗粒度,不得反过来改写
|
|
43
|
-
已接受的身份、地理、持物归属、可读文字政策或故事状态。
|
|
44
|
-
- 只拥有 Character/Look、Location/View、Prop/State、occurrence reconciliation
|
|
45
|
-
和资产状态 delta。知识/信念/目标/关系/情绪等 story-state 可以在连续性
|
|
46
|
-
ledger 中被追踪,但只是带 write/develop source pointer 的投影,不是 assets
|
|
47
|
-
的第二份真相。剧本语义归 `short-drama-write`,镜头手位/走位归
|
|
48
|
-
`short-drama-storyboard`,图片提示词归 `short-drama-image-prompts`。
|
|
49
|
-
- 可直接接收现成剧本,不强迫补创意开发、故事引擎或集纲。
|
|
50
|
-
- 只产出文本/JSONL;不调用图片、视频、音频模型或 provider API。
|
|
51
|
-
- 创作者可读的产物在项目内跟随 `short-drama.json#/language`,独立运行时跟随用户使用的
|
|
52
|
-
语言。本阶段不产生送给生成器的
|
|
53
|
-
提示词正文,与 `#/format/prompt_language` 无关;角色实际说什么语言来自
|
|
54
|
-
`voice_direction.language`,与两者都无关。
|
|
55
|
-
|
|
56
|
-
所有权边界见 [阶段契约](references/stage-contract.md);只在需要时加载
|
|
57
|
-
下列专项参考,不要一次读完所有文件。
|
|
58
|
-
|
|
59
|
-
## 入口判断
|
|
60
|
-
|
|
61
|
-
1. **已有已接受的 `screenplay.md` 与 index**:直接拆解。
|
|
62
|
-
2. **已有资产 设定集,只需补集内出现与状态**:读取旧 ID,先判复用,再提新项。
|
|
63
|
-
3. **只有非 canonical 的中文剧本**:保留原字节到 `输入/`;调用 write owner
|
|
64
|
-
产生最小规范化预览、语义 diff 和未映射片段。创作者接受前不发布
|
|
65
|
-
`screenplay.md`,拒绝也不改变原稿。接受后直接回来拆资产,不虚构 development。
|
|
66
|
-
4. **用户只要局部结果**(如“拆本场道具”):仍执行 occurrence → decision,
|
|
67
|
-
但只呈现所问范围及它依赖的连续性,不用强迫走完整项目流程。
|
|
68
|
-
|
|
69
|
-
缺少 index 时,不凭行号冒充稳定来源;先请 write owner 对剧本建立 block ID。
|
|
70
|
-
|
|
71
|
-
## 每轮的工作单元
|
|
72
|
-
|
|
73
|
-
一轮处理一个明确的来源场次/块范围。整集请求按来源边界拆成若干轮,每轮:
|
|
74
|
-
|
|
75
|
-
1. 只读这个范围的直接输入,拆出它的资产事实,跑本地结构检查;
|
|
76
|
-
2. 落盘这个范围,其余范围保持原样;
|
|
77
|
-
3. 报告已覆盖范围、剩余范围、未决 occurrence 和下一个值得做的范围;
|
|
78
|
-
4. 交还控制权,等创作者的下一次请求。
|
|
79
|
-
|
|
80
|
-
图片提示词、分镜和审查各自是独立的工作单元,由创作者明确请求时开始。
|
|
81
|
-
|
|
82
|
-
## 工作流
|
|
83
|
-
|
|
84
|
-
### 1. 先读事实边界
|
|
85
|
-
|
|
86
|
-
读取本集剧本/index、已有 设定集、上集 outgoing、创作者参考与文本政策,以及已接受的
|
|
87
|
-
视觉方向与制作形态。标记哪个版本已被接受。不要把旧 prompt、旧分镜或文件名当成资产真相。
|
|
88
|
-
|
|
89
|
-
### 2. 逐块提 occurrence,暂不创建资产
|
|
90
|
-
|
|
91
|
-
按 source block 收集出镜或生产必需的角色、地点、道具及其显式状态:造型、伤污、
|
|
92
|
-
所有者、持物手、位置、损坏、内容物、开闭、可读文字、时段、天气、光态和剧情作用。
|
|
93
|
-
每条 occurrence 先保持“剧本怎样写”的颗粒度,再与资产表对齐。
|
|
94
|
-
|
|
95
|
-
- 不猜“她”“那个人”“另一把钥匙”指谁;保留原称谓和证据,状态设为 unresolved。
|
|
96
|
-
- 区分出镜、画外声、屏幕/照片呈现、仅被提及;被提及不等于要做视觉资产。
|
|
97
|
-
- 不把每个名词都建档。只保留影响识别、复用、提示词、镜头或连续性的事实。
|
|
98
|
-
- 未来的 decisions 先用 locator 指位;decision 建立后由它单向引用 occurrence 的
|
|
99
|
-
exact snapshot。
|
|
100
|
-
|
|
101
|
-
方法与反例见 `references/occurrence-extraction.md`,记录形状见
|
|
102
|
-
`assets/occurrences.example.jsonl`。
|
|
103
|
-
|
|
104
|
-
### 3. 再做身份判断
|
|
105
|
-
|
|
106
|
-
把 occurrence 与已有 设定集 逐项比对,只给四种提案:
|
|
107
|
-
|
|
108
|
-
- `reuse`:持续身份和本次所需变体均已存在;
|
|
109
|
-
- `new_variant`:同一身份,新增 Look/View/State;
|
|
110
|
-
- `new_asset`:持续身份、空间地理或物体功能/形制确实不同;
|
|
111
|
-
- `unresolved`:证据不足或多个候选都成立,等待创作者选择。
|
|
112
|
-
|
|
113
|
-
先问“同一个东西什么没变”,再问“这次什么变了、为何变、何时有效”。服装、伤势、
|
|
114
|
-
湿污、灯光、道具开合通常不是新身份;相机角度和瞬时姿势通常连新变体都不是。
|
|
115
|
-
不要为了少建记录而合并真正不同的资产。详见
|
|
116
|
-
`references/identity-vs-variant.md` 与 `assets/decisions.example.jsonl`。
|
|
18
|
+
## 入口与边界
|
|
117
19
|
|
|
118
|
-
|
|
20
|
+
现成剧本可以直接拆资产。先区分:
|
|
119
21
|
|
|
120
|
-
|
|
22
|
+
- **身份**:换一个就不再是同一个人、地或物;
|
|
23
|
+
- **变体**:身份不变,但服装、伤势、时段、天气、开合或持有状态改变;
|
|
24
|
+
- **镜头瞬态**:姿势、视线、左右手、站位和相机角度,由分镜拥有;
|
|
25
|
+
- **故事语义**:知识、目标、关系和情绪由写作/开发拥有,只引用可见后果。
|
|
121
26
|
|
|
122
|
-
|
|
123
|
-
`assets/character-look.example.jsonl`
|
|
124
|
-
- 声音方向(可选,项目需要跨集保持声音时):`references/voice-direction.md`;
|
|
125
|
-
音色载体是参考音频;该文件同时说明 `设定集/voice-casting.md` 怎么渲染。只在处理声音时加载
|
|
126
|
-
- Location / View:`references/location-and-view.md`;例见
|
|
127
|
-
`assets/location-view.example.jsonl`
|
|
128
|
-
- Prop / State:`references/prop-and-state.md`;例见
|
|
129
|
-
`assets/prop-state.example.jsonl`
|
|
130
|
-
|
|
131
|
-
每个新变体记录 base、变化、原因与有效范围。只写能帮助再次认出、复用、提示词
|
|
132
|
-
编写或连续性检查的事实;不堆砌“高级、精致、电影感”等泛化修饰。
|
|
133
|
-
|
|
134
|
-
### 5. 写变化,不复制整本 设定集
|
|
135
|
-
|
|
136
|
-
为交接所需的资产状态变化记录 before、after、剧本原因、开始/结束边界和受影响 binding。
|
|
137
|
-
重点检查造型/伤势、持物/所有权、道具状态、地点时段/天气/光态以及跨集 outgoing。
|
|
138
|
-
若为审查需要把知识或关系状态放进 ledger,只保存指向权威字段的引用(`src` 加
|
|
139
|
-
`record_id`、`field`)及必要投影;修订仍路由到 develop/write owner。
|
|
140
|
-
镜头内部姿势、视线、左右手和站位由 storyboard 边界拥有;资产记录只引用,不抢写。
|
|
141
|
-
|
|
142
|
-
详见 `references/continuity-delta.md` 与 `assets/continuity.example.jsonl`。
|
|
143
|
-
|
|
144
|
-
### 6. 给创作者看“决定”,而非只给清单
|
|
145
|
-
|
|
146
|
-
提交接受预览,按以下顺序呈现:
|
|
147
|
-
|
|
148
|
-
1. 建议复用(为什么是同一个);
|
|
149
|
-
2. 建议新增变体(没变什么、变了什么、原因与有效期);
|
|
150
|
-
3. 建议新增身份(区分它的持久证据);
|
|
151
|
-
4. 未决项(原文证据、候选、每个选择的下游影响);
|
|
152
|
-
5. 连续性变化与需带入下一集的 outgoing。
|
|
153
|
-
|
|
154
|
-
创作者可逐项接受、改名、合并、拆分或暂缓。**creator acceptance 是独立事实**:
|
|
155
|
-
抽取完成、结构校验通过、review 通过都不能替代创作者接受。只发布被接受的身份和
|
|
156
|
-
变体;任何 unresolved 都不得编译到图片提示词或分镜 binding。
|
|
157
|
-
若用户要求一次查看全链而中间没有接受回合,可生成待确认的候选预览;不得伪造创作者决定,且不得交付。
|
|
158
|
-
|
|
159
|
-
### 7. 发布与修订
|
|
160
|
-
|
|
161
|
-
发布至 `设定集/*.jsonl` 及 `剧集/<EP>/assets/{occurrences,decisions,continuity}.jsonl`。
|
|
162
|
-
项目记录了 `voice_direction` 时,`设定集/voice-casting.md` 由已接受记录重新渲染——
|
|
163
|
-
它是派生文本,手改不会改变任何身份,下一次渲染就会被覆盖。参考音频本身留在 `输入/`。
|
|
164
|
-
每个文件在首行 `sources` 里声明一次它引用到的上游快照,引用本身写 `src` 加稳定 ID/field,
|
|
165
|
-
形状见[阶段契约](references/stage-contract.md#跨产物引用)。资产修改后只列出直接读取该
|
|
166
|
-
ID/variant 的提示词、镜头和 review,由相应 owner 按需刷新;不要重写无关资产或 screenplay。
|
|
167
|
-
|
|
168
|
-
## 规则分类与阻断
|
|
169
|
-
|
|
170
|
-
- `structural_invariant`:occurrence 必有已声明的来源快照与 block ID;decision 必属四类;
|
|
171
|
-
variant 有 base/cause/validity;binding 必须解析到已接受 ID。可机械阻断。
|
|
172
|
-
- `reviewed_invariant`:不可猜含混指代;不可把临时状态混入身份;delta 的剧情原因
|
|
173
|
-
必须由证据支持。reviewer 引用证据判定,owner 负责修改。
|
|
174
|
-
- `craft_default`:身份不变时优先复用/变体;只跟踪下游有用事实。创作者可说明覆盖。
|
|
175
|
-
- `taste_option`:群演建为个体还是群组、同址空间拆分颗粒度、蒙太奇式跳变方式,
|
|
176
|
-
由制作策略选择,不单独阻断。
|
|
177
|
-
|
|
178
|
-
## 完成条件
|
|
179
|
-
|
|
180
|
-
完成当前有界范围前使用 `references/asset-review-checklist.md`:来源和引用可解析;每个
|
|
181
|
-
occurrence 有明确 decision;未决项保持未决;身份/变体边界可信;连续性能够从
|
|
182
|
-
incoming 走到 outgoing;创作者已经接受本次变更。本 skill 只修订自己拥有的资产事实;
|
|
183
|
-
需要 delivery verdict 时另行请求 `short-drama-review`,不得从这里自动启动。
|
|
27
|
+
## 工作流
|
|
184
28
|
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
29
|
+
1. 只读当前范围的剧本和已决定的视觉方向。
|
|
30
|
+
2. 逐场找实体、可见描述、状态变化和含混指代,先不创建资产。
|
|
31
|
+
3. 对每项决定新建、复用、增加变体或标记未决;含混指代不猜。
|
|
32
|
+
4. 写最小可识别设定:统一使用 `识别锚点`、本集状态和变化原因;会持续限制后续动作的身体—物件—空间关系写进有生效范围的状态,不当成一次姿势略过。
|
|
33
|
+
5. 检查造型/伤势、持物/所有权、道具状态、地点时段/天气/光态与跨集 outgoing。
|
|
34
|
+
6. 给跨镜出现且观众看得出不一致的可见事实写一条连续性锁,其余保持识别锚点即可。
|
|
35
|
+
7. 项目提示词语言不是中文时,给每个人物条目写一行 `画面代称:<正文里的拼写>`;正文从不点名它就写 `画面代称:无`。地点和道具按需。
|
|
36
|
+
8. 整集请求自动处理完整集,末端一次回报关键身份决定和未决指代。
|
|
37
|
+
|
|
38
|
+
## 内容要求
|
|
39
|
+
|
|
40
|
+
- 每项先写什么不变使它仍是同一资产,再写本集变化。
|
|
41
|
+
- 识别锚点必须可见、可生成、可比较,不用空泛质量词替代事实。
|
|
42
|
+
- 服装、伤势、湿污、道具开合和光态通常是变体,不是新身份。
|
|
43
|
+
- 不复制剧情摘要,只保留下游生成、分镜或连续性真正需要的事实。
|
|
44
|
+
- 文字、标识和敏感信息遵守项目政策,不擅自补造品牌或私密信息。
|
|
45
|
+
- 多集状态写清生效与持续范围;镜头内瞬态留给分镜。
|
|
46
|
+
- 已确认且持续限制动作空间的关系(身体依托、固定、负重、占位或与功能物件的接触)不是普通镜头姿势:可独立识别的物件仍建资产,关系写进状态并交给分镜逐镜投影;只有剧本明确改变时才结束。
|
|
47
|
+
- 连续性锁只锁不随剧情改变的可见事实;锁面用提示词语言写成最小名词短语,会变的部分留给状态。
|
|
48
|
+
- 「画面代称」把提示词正文里的名字对回本条目:分镜的机械核对靠它判断关键帧里点名的人是谁。条目自身的中文名称
|
|
49
|
+
始终算一个代称,所以中文正文通常不必写这一行;提示词正文语言不是中文时,人物条目必须给出结论——写出正文使用的
|
|
50
|
+
拼写,或在正文从不点名它时写 `画面代称:无`。同一个名字全集只用一个拼写,大小写也一致(`AST-10` 的同一条要求跨语言同样成立);
|
|
51
|
+
多个写法用 `、` 分隔。名字与常用词同形(`道具「手机」` 撞上「手机店」)时也写 `画面代称:无`,让核对不按名字找它。
|
|
52
|
+
|
|
53
|
+
## 按需知识
|
|
54
|
+
|
|
55
|
+
默认只读本 SKILL、当前剧本和视觉方向。遇到对应问题时只打开一份:
|
|
56
|
+
|
|
57
|
+
- 阶段边界与规则分级:[阶段契约](references/stage-contract.md)
|
|
58
|
+
- 从剧本找真正的资产出现证据:[出现提取](references/occurrence-extraction.md)
|
|
59
|
+
- 新身份、复用、变体或未决:[身份与变体](references/identity-vs-variant.md)
|
|
60
|
+
- 人物识别与造型层次:[人物与造型](references/character-and-look.md)
|
|
61
|
+
- 地点地理、视图和固定锚点:[地点与视图](references/location-and-view.md)
|
|
62
|
+
- 功能道具、所有权、状态变化,或画面上的可读文字与标识:[道具与状态](references/prop-and-state.md)
|
|
63
|
+
- 声音参考的身份与授权边界:[声音方向](references/voice-direction.md)
|
|
64
|
+
- 跨场、跨镜、跨集状态:[连续性变化](references/continuity-delta.md)
|
|
65
|
+
- 跨镜服装/道具颜色、材质漂移:[跨镜一致性锁](references/continuity-lock.md)
|
|
66
|
+
- 完成前做一次资产漏项检查:[资产审查清单](references/asset-review-checklist.md)
|
|
67
|
+
|
|
68
|
+
## 完成
|
|
69
|
+
|
|
70
|
+
所有明确出场都已复用、新建、变体化或标为真实未决;需要保持的视觉事实与状态变化已写入唯一
|
|
71
|
+
视觉设定文档,即完成。图片提示词、分镜、审查和生产不自动开始。
|
|
72
|
+
五份创作文档齐备后,可转 `$short-drama` 对跨文档结构做一次机械核对;内容质量仍由创作者审查。
|
|
73
|
+
|
|
74
|
+
## 安装维护
|
|
75
|
+
|
|
76
|
+
只有安装、升级或排障时运行 `python3 scripts/selftest.py`。
|
|
@@ -2,34 +2,27 @@
|
|
|
2
2
|
|
|
3
3
|
## Binding gate (`AST-05`)
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
为了让提示词或分镜继续工作,猜一个看似合理的 ID。
|
|
5
|
+
资产设定完成前,每个下游引用都要解析到明确的身份条目,且变体必须在引用的剧情范围内有效。
|
|
6
|
+
未解决的出现项继续保持未决;不得为了让提示词或分镜继续工作,猜一个看似合理的 ID。
|
|
8
7
|
|
|
9
8
|
按“机械事实 → 语义判断 → 创作者接受”顺序检查。Owner 可按 finding 修订;修订动作本身
|
|
10
9
|
不等于审查 verdict。需要 verdict 时另起一次审查动作,自检也可以如实记录有证据支持的结论。
|
|
11
10
|
|
|
12
11
|
## A. 机械检查(`structural_invariant`)
|
|
13
12
|
|
|
14
|
-
- [ ]
|
|
15
|
-
|
|
16
|
-
- [ ]
|
|
17
|
-
|
|
18
|
-
- [ ]
|
|
19
|
-
block、scene。
|
|
20
|
-
- [ ] source pointer、derived visible facts、asset reconciliation、continuity pointer 的
|
|
21
|
-
数据角色没有混写。
|
|
22
|
-
- [ ] 每个 occurrence 的 decision 恰为 `reuse` / `new_variant` / `new_asset` /
|
|
23
|
-
`unresolved`。
|
|
24
|
-
- [ ] `new_variant` 有 base、differences、cause、valid_from、valid_until/open-ended。
|
|
13
|
+
- [ ] 每个制作相关的剧本段都有资产处理结果,或明确说明本段没有资产变化。
|
|
14
|
+
- [ ] 每个结果都指向可见场景 ID,并能从当前 `剧本.md` 找到依据。
|
|
15
|
+
- [ ] 来源位置、剧本明示事实、资产判断与连续性变化没有混写。
|
|
16
|
+
- [ ] 每个出现项恰为复用、新变体、新身份或未决之一。
|
|
17
|
+
- [ ] 新变体写清基底、变化、原因、生效位置与结束位置;没有明确终点时标为持续。
|
|
25
18
|
- [ ] ID 唯一;所有已接受 binding 精确解析到 Character+Look、Location+View 或
|
|
26
19
|
Prop+State。
|
|
27
|
-
- [ ]
|
|
28
|
-
- [ ]
|
|
20
|
+
- [ ] 未决项没有伪造成已确认身份,不能流入图片提示词或分镜。
|
|
21
|
+
- [ ] 每条变化有前态、后态、原因/来源、生效范围和受影响的可见 ID。
|
|
29
22
|
- [ ] linked outgoing/incoming 状态一致,或有明确待处理 reconciliation。
|
|
30
23
|
- [ ] 可读文字政策完整;`exact_readable` 不与 `no_readable_text` 冲突。
|
|
31
24
|
|
|
32
|
-
|
|
25
|
+
机械失败指出具体文件、标题 ID、owner 和修复方向,不回显整段创作文本。
|
|
33
26
|
|
|
34
27
|
## B. 语义审查(`reviewed_invariant`)
|
|
35
28
|
|
|
@@ -45,8 +38,8 @@
|
|
|
45
38
|
- [ ] occurrence 的 production disposition 合理:提及不被误当出镜,关键操作物不被
|
|
46
39
|
降成普通布景。
|
|
47
40
|
|
|
48
|
-
Reviewer finding
|
|
49
|
-
|
|
41
|
+
Reviewer finding 应含文件与标题 ID、证据、影响、修订结果、owner、严重程度和状态;不能只说
|
|
42
|
+
“资产不够细”或“看起来 AI”。
|
|
50
43
|
|
|
51
44
|
## C. Craft 默认(可覆盖,不单独阻断)
|
|
52
45
|
|
|
@@ -68,7 +61,7 @@ Creator 可用制作原因覆盖,例如需要逐件审批背景陈设;记录
|
|
|
68
61
|
|
|
69
62
|
不得仅因 reviewer 偏好另一个选项而判失败。
|
|
70
63
|
|
|
71
|
-
## E.
|
|
64
|
+
## E. 创作者确认
|
|
72
65
|
|
|
73
66
|
给创作者看的摘要必须列出:
|
|
74
67
|
|
|
@@ -77,13 +70,13 @@ Creator 可用制作原因覆盖,例如需要逐件审批背景陈设;记录
|
|
|
77
70
|
3. 新 asset 及持久区分证据;
|
|
78
71
|
4. unresolved 的原文证据、候选和不同选择的下游影响;
|
|
79
72
|
5. continuity deltas 与跨集 outgoing;
|
|
80
|
-
6.
|
|
73
|
+
6. 确认后需要同步更新的下游文件。
|
|
81
74
|
|
|
82
|
-
|
|
83
|
-
|
|
75
|
+
把创作者确认的结果直接写进 `视觉设定.md`,未确认选择保留为“未决”并说明影响。创作者确认不等于
|
|
76
|
+
结构检查通过、审查通过或可以投产;这些动作各自独立发生。
|
|
84
77
|
|
|
85
78
|
## 当前范围完成判据
|
|
86
79
|
|
|
87
|
-
|
|
88
|
-
|
|
80
|
+
本次范围内结构检查通过、每个出现项已决定、没有未决引用、连续性可交接,且创作者已确认需要选择的
|
|
81
|
+
新增/复用/变体/变化,即完成当前资产批次。审查与交付是后续独立动作,
|
|
89
82
|
不作为图片提示词或 storyboard 这两个并列分支的隐式前置门槛。
|
|
@@ -74,13 +74,12 @@ Character 拥有,换鞋、加厚外套、盘发都不改写它(那些属于
|
|
|
74
74
|
音色的载体是参考音频,不是一段文字描述。没有参考时保持 `reference: null` 并标「待选型」,
|
|
75
75
|
不要用形容词冒充音色身份。参考绑定要写清这次借用它的什么、哪些内容不能跟着来
|
|
76
76
|
(那条参考里的情绪、录音空间、背景内容永远不进身份),以及证据到了哪一步——
|
|
77
|
-
详见 [声音方向](voice-direction.md)
|
|
78
|
-
|
|
77
|
+
详见 [声音方向](voice-direction.md)。声音方向直接写在对应人物的 `视觉设定.md` 条目中,不另建
|
|
78
|
+
配音表或第二份权威。
|
|
79
79
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
参考音频本身留在 `输入/`,不进 设定集,也不进交付包。
|
|
80
|
+
文本引用只能保证角色、台词、声音方向与引用关系没有被改写,不能保证任何真实合成结果、
|
|
81
|
+
口型或音色复现。引用使用 `视觉设定.md` 内的可见 ID,不把网址、外部任务字段或服务参数写进设定;
|
|
82
|
+
参考音频本身留在 `输入/`,不复制进 `视觉设定.md`,也不进公开交付。
|
|
84
83
|
|
|
85
84
|
**资产阶段不生成音频,也不调用任何语音、合成或克隆服务**。 记录先落进文件、由创作者
|
|
86
85
|
确认;实际 TTS 交给 `$short-drama-produce`,并须对它展示的本次任务预览明确确认。
|
|
@@ -100,9 +99,8 @@ Character 拥有,换鞋、加厚外套、盘发都不改写它(那些属于
|
|
|
100
99
|
|
|
101
100
|
## 制作形态与身份锚点的可表达性
|
|
102
101
|
|
|
103
|
-
写最小稳定识别集之前,先读 `
|
|
104
|
-
|
|
105
|
-
本阶段需要从制作形态取得哪些输入,见 [阶段契约](stage-contract.md) 的“制作形态需要什么”。
|
|
102
|
+
写最小稳定识别集之前,先读 `视觉设定.md` 的“项目视觉方向”和已明确的制作形态;尚未决定且会
|
|
103
|
+
实质影响识别通道时,向创作者给出选择,不从对话记忆补造。
|
|
106
104
|
|
|
107
105
|
原因很直接:**形态决定观众靠什么通道认人**,因而决定哪些锚点在这个项目里根本可被表达。
|
|
108
106
|
|
|
@@ -117,7 +115,7 @@ Character 拥有,换鞋、加厚外套、盘发都不改写它(那些属于
|
|
|
117
115
|
- **`reviewed_invariant`**:形态可以改变锚点的**表达通道与颗粒度**,不得改写身份事实本身。
|
|
118
116
|
不能因为“不好画”把五十岁写成二十五岁、把厚重体格写成修长,也不能为了轮廓好看新增
|
|
119
117
|
疤痕、异色瞳或不存在的配饰。
|
|
120
|
-
-
|
|
118
|
+
- 已确认身份在当前形态下找不到可靠表达通道时,标为“需创作者决定”:由创作者决定
|
|
121
119
|
换形态还是改身份,资产环节不静默调整。
|
|
122
120
|
- Look 层同理:形态决定服装层次、材质响应能表达到多细,不决定 Look 由哪些单品组成,也不
|
|
123
121
|
决定 cause、valid_from、valid_until。
|
|
@@ -126,20 +124,20 @@ Character 拥有,换鞋、加厚外套、盘发都不改写它(那些属于
|
|
|
126
124
|
|
|
127
125
|
### 模板槽位不得覆盖身份锚点
|
|
128
126
|
|
|
129
|
-
**`reviewed_invariant
|
|
127
|
+
**`reviewed_invariant`**:模板槽位不得覆盖已确认的身份锚点;当模板默认值与当前身份冲突时,
|
|
130
128
|
**身份优先,模板让位**。
|
|
131
129
|
|
|
132
|
-
|
|
130
|
+
合成例:角色甲的锚点是五十岁上下、体格厚重、肩背略沉。若角色表模板对每一条记录
|
|
133
131
|
机械填入“九头身黄金比例、极度修长的双腿”,角色甲的身份就在没有任何创作者决定的情况下被
|
|
134
132
|
改写;而且因为每个角色都带同一句,下游会把它读成风格统一,不会当成冲突。角色乙即使确实
|
|
135
|
-
|
|
133
|
+
修长,也应由自己的当前视觉设定写出,不由模板默认值代写。
|
|
136
134
|
|
|
137
135
|
排查方式:把同一批角色记录并排看,找出**逐字重复且与该角色无关**的描述句;不能追溯到某条
|
|
138
|
-
|
|
136
|
+
当前视觉设定的,删除或改写成该角色的真实锚点,并在预览里说明改动。
|
|
139
137
|
|
|
140
138
|
## 合成例:顾禾
|
|
141
139
|
|
|
142
|
-
Character `CHAR-GUHE`
|
|
140
|
+
Character `CHAR-GUHE` 的当前锚点:窄长脸、左眉尾短缺口、自然卷黑发、肩背略前倾。
|
|
143
141
|
这些锚点不会因本集换装改变。
|
|
144
142
|
|
|
145
143
|
- `LOOK-GUHE-WORK`:灰绿工作夹克、深色长裤、头发低束;渡站值班期有效。
|
|
@@ -36,13 +36,11 @@
|
|
|
36
36
|
分镜技能负责每个镜头的开始和结束边界,包括姿态、位置、目光、双手、持物和可见状态。
|
|
37
37
|
资产可以引用这些边界,但不能另写一套相冲突的手位和走位。
|
|
38
38
|
|
|
39
|
-
**`structural_invariant` CON-04**:
|
|
40
|
-
|
|
41
|
-
`affected_binding_locators`。没有变化时不能只写“更新了”。
|
|
39
|
+
**`structural_invariant` CON-04**: 每条变化都要有前态、后态、原因或来源、有效范围,以及受影响的
|
|
40
|
+
现有 `IMG-...`、`SHOT-...` 或 `MOTION-...`。没有变化时不能只写“更新了”。
|
|
42
41
|
|
|
43
|
-
**`structural_invariant` CON-06
|
|
44
|
-
|
|
45
|
-
`affected_binding_locators`:`owner`、项目相对路径、`selector` 和 `status`。
|
|
42
|
+
**`structural_invariant` CON-06**:受影响列表要覆盖所有已经存在的使用方;尚未建立的工作只说明
|
|
43
|
+
负责 owner 和需要同步的事实,不预建占位记录。
|
|
46
44
|
|
|
47
45
|
## 需要追踪的五组状态
|
|
48
46
|
|
|
@@ -60,13 +58,12 @@
|
|
|
60
58
|
## 写变化记录的步骤
|
|
61
59
|
|
|
62
60
|
1. 在资产出现记录中发现明确变化或边界不一致。
|
|
63
|
-
2.
|
|
61
|
+
2. 读取 `视觉设定.md` 中上一处明确状态,绝不从下游提示词反推。
|
|
64
62
|
3. 写清单一的 `before` 和 `after`;一个复合事件可以拆成多条同因变化。
|
|
65
|
-
4.
|
|
66
|
-
`field`。
|
|
63
|
+
4. 写明导致变化的场景 ID、动作/对白或视觉设定条目,让原因能在当前五文档中直接核对。
|
|
67
64
|
5. 声明从哪个剧本段、场次或集开始生效,到何时结束;没有明确终点时写 `open_ended`。
|
|
68
|
-
6.
|
|
69
|
-
|
|
65
|
+
6. 已经存在的使用方列出受影响的 `IMG-...`、`SHOT-...` 或 `MOTION-...`;未来工作只说明需要
|
|
66
|
+
同步,不预建占位引用。
|
|
70
67
|
7. 与下一处相连的开始状态比较:一致就通过,不一致就明确提出修订。
|
|
71
68
|
|
|
72
69
|
### “未知”不等于“恢复默认”
|
|
@@ -106,10 +103,10 @@ SC004 开始:顾禾穿 `LOOK-GUHE-RAIN`;铁皮匣闭合,号牌在里面;
|
|
|
106
103
|
|
|
107
104
|
## 修订影响
|
|
108
105
|
|
|
109
|
-
-
|
|
106
|
+
- 修改伤势开始的剧本段:列出直接读取该段的造型、提示词、镜头或运动提示词;需要刷新时由各 owner 更新。
|
|
110
107
|
- 只修改道具显示名,ID 和事实不变:通常只更新显示文本,不重做无关分镜。
|
|
111
108
|
- 修改镜头构图:不自动修改资产文件。
|
|
112
|
-
-
|
|
109
|
+
- 修改截图说明或提示词文案:不得反向改写当前视觉状态。
|
|
113
110
|
|
|
114
111
|
## 交接检查
|
|
115
112
|
|
|
@@ -118,6 +115,6 @@ SC004 开始:顾禾穿 `LOOK-GUHE-RAIN`;铁皮匣闭合,号牌在里面;
|
|
|
118
115
|
- 伤势、造型、天气和光线不会无原因复位。
|
|
119
116
|
- 道具内容状态与人物知情情况分开记录。
|
|
120
117
|
- 变化的有效范围覆盖所有依赖镜头,而且不会提前生效。
|
|
121
|
-
-
|
|
118
|
+
- 受影响列表覆盖所有已经存在的提示词、镜头和运动提示词使用方;修订时重新
|
|
122
119
|
计算实际使用方,不只沿用旧清单。
|
|
123
120
|
- 结束状态足以让下一集继续,不依赖创作者脑内记忆。
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
# 跨镜一致性锁
|
|
2
|
+
|
|
3
|
+
## 目录
|
|
4
|
+
|
|
5
|
+
- [为什么识别锚点还不够](#为什么识别锚点还不够)
|
|
6
|
+
- [什么值得上锁](#什么值得上一把锁)
|
|
7
|
+
- [锁面怎么写](#锁面怎么写)
|
|
8
|
+
- [语法](#语法)
|
|
9
|
+
- [谁负责把锁面带走](#谁负责把锁面带走)
|
|
10
|
+
- [反例](#反例)
|
|
11
|
+
- [校验](#校验)
|
|
12
|
+
|
|
13
|
+
## 为什么识别锚点还不够
|
|
14
|
+
|
|
15
|
+
识别锚点是写给创作者读的事实;执行端读不到它,只读得到每条提示词自己的正文。同一件毛衣第一镜
|
|
16
|
+
织的是蓝色、第二镜变成红色,通常不是资产写错了,而是**没有任何一条提示词把颜色带进去**:视觉
|
|
17
|
+
设定写了,关键帧写了一半,运动提示词以为参考帧已经交代过就把重复描述删掉了。
|
|
18
|
+
|
|
19
|
+
参考图也补不上这一层。一张角色板只能约束它自己画到的部分;正在编织、只成形一半的毛衣,被手挡住
|
|
20
|
+
的道具,每镜重新构图的服装细节,都落在身份参考“默认不能控制”的一侧。
|
|
21
|
+
|
|
22
|
+
一致性锁补的就是这一段:把跨镜不变的那几个字固定下来,并要求它原样出现在每条受影响的提示词里。
|
|
23
|
+
|
|
24
|
+
## 什么值得上一把锁
|
|
25
|
+
|
|
26
|
+
三条同时成立才值得上锁:
|
|
27
|
+
|
|
28
|
+
1. 这个可见事实在本集出现于两个以上镜头,或一个镜头加一张资产板;
|
|
29
|
+
2. 观众能直接看出前后不一致;
|
|
30
|
+
3. 它不随剧情改变——会变的是状态,**状态不上锁**。
|
|
31
|
+
|
|
32
|
+
典型:服装主色与形制、道具主色与材质、发型长度、伤口位置与形状、招牌或界面的形制配色。
|
|
33
|
+
不典型:情绪、姿势、左右手、镜头角度、时段光线、破损进度、持有人——这些是状态或镜头瞬态,
|
|
34
|
+
分别归 `本集状态` 与分镜。
|
|
35
|
+
|
|
36
|
+
**`craft_default`**: 一集里的锁通常是个位数。把每条识别锚点都升级成锁,每条提示词都会被同一串
|
|
37
|
+
名词短语撑满,反而挤掉本镜真正要执行的动作。
|
|
38
|
+
|
|
39
|
+
## 锁面怎么写
|
|
40
|
+
|
|
41
|
+
`锁面` 是**要被逐字带进提示词正文的那一小段字**,不是描述,也不是给人读的说明:
|
|
42
|
+
|
|
43
|
+
- 用项目的提示词语言写(`short-drama.json#/format/prompt_language`,没有配置时是 `en`),
|
|
44
|
+
因为它要落进可复制正文,不是落进创作者说明;
|
|
45
|
+
- 只保留最小可辨识名词短语,通常是「颜色 + 材质/形制 + 物体」,例如
|
|
46
|
+
`pale blue chunky knit wool sweater`;
|
|
47
|
+
- 不含句号、动作、状态、数量、镜头信息和剧情;
|
|
48
|
+
- 不写会随镜头变化的词(`in her hands`、`half-finished`、`on the sofa`);
|
|
49
|
+
- 一个实体一把锁;同一实体的两种造型是两把锁,各写各的生效镜头。
|
|
50
|
+
|
|
51
|
+
比较时忽略大小写,换行按空格处理(可复制正文本来就渲染成一段,硬折行不影响匹配),其余字符
|
|
52
|
+
逐字比较。提示词可以在锁面前后接语法(`she keeps knitting the pale blue chunky knit wool
|
|
53
|
+
sweater`),但不能改写锁面内部——少一个 `stand-collar`、多一个逗号都算漂移。
|
|
54
|
+
|
|
55
|
+
还有两处刻意不算数,因为它们看起来命中、实际并没有把事实写进画面:
|
|
56
|
+
|
|
57
|
+
- **粘在词上的匹配不算**。锁面首尾是字母数字时,紧挨着的字母数字或连字符会让它落空:
|
|
58
|
+
`chipped white enamel mug` 不被 `unchipped white enamel mug` 满足,
|
|
59
|
+
`pale blue knit` 不被 `pale blue knitwear-print fleece` 满足。锁面要能作为一个完整的词组读出来。
|
|
60
|
+
- **负面提示词里的匹配不算**。写在 `no`/`not`/`without`/`avoid` 或 `不要`/`不能`/`没有`/`避免`
|
|
61
|
+
之后的锁面说的是「不要出现它」,正好与锁的目的相反;`..., no pale blue chunky knit wool
|
|
62
|
+
sweater` 不能作为锁面在场的证据。锁面必须出现在描述画面内容的正文里。
|
|
63
|
+
「粘在词上」只对 ASCII 词生效——中文本来不分词,`织着浅蓝色粗棒针毛线` 正常命中。
|
|
64
|
+
|
|
65
|
+
## 语法
|
|
66
|
+
|
|
67
|
+
写在 `视觉设定.md` 对应资产条目下,与识别锚点并列:
|
|
68
|
+
|
|
69
|
+
```markdown
|
|
70
|
+
## 道具 · 织了一半的毛衣
|
|
71
|
+
|
|
72
|
+
- 识别锚点:浅蓝色粗棒针手织毛线,竹制棒针两根,衣身只织到胸口。
|
|
73
|
+
- 本集状态:SC002 起衣身加长约一掌;颜色与针法不变。
|
|
74
|
+
- 连续性锁:LOCK-KNIT《织了一半的毛衣》(镜头:全集;图片提示词项:IMG-PROP-KNIT)· 锁面:pale blue chunky knit wool sweater
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
- 列表记号写 `-`、`*` 还是 `+`,缩进几格,都不影响识别;一条看起来像锁却写不完整的行会被
|
|
78
|
+
报成语法错误,不会被悄悄跳过——锁不能变成空转;
|
|
79
|
+
- `LOCK-...`:本集唯一稳定 ID,与 `IMG-...`、`REF-...`、`SHOT-...` 互不混用;
|
|
80
|
+
- `《中文名》`:给创作者读的名称,必须含中文;
|
|
81
|
+
- `镜头:`:`全集`,或 `、` 分隔的 `SHOT-...` 列表;两者不能混写;
|
|
82
|
+
- `图片提示词项:`:可选,`、` 分隔的 `IMG-...` 列表,整段省略即表示不约束图片提示词;
|
|
83
|
+
- `锁面:`:被逐字带走的那段字,写在行尾。
|
|
84
|
+
|
|
85
|
+
## 谁负责把锁面带走
|
|
86
|
+
|
|
87
|
+
| 文档 | 义务 |
|
|
88
|
+
|---|---|
|
|
89
|
+
| `图片提示词.md` | 被点名的 `IMG-...` 可复制正文含锁面,让参考图本身就是对的 |
|
|
90
|
+
| `分镜.md` | 生效镜头的冻结关键帧提示词含锁面 |
|
|
91
|
+
| `视频提示词.md` | 对应 `MOTION-...` 可复制正文含锁面 |
|
|
92
|
+
|
|
93
|
+
**`structural_invariant` CON-07**: 锁面在生效范围内不得以“参考帧已经交代过”为由删除。图生视频
|
|
94
|
+
删掉重复的静态描述是常规做法,但锁面是这条常规做法写明的例外——它正是为了挡住跨镜漂移才存在。
|
|
95
|
+
|
|
96
|
+
状态变化不进锁面:毛衣越织越长写在 `本集状态`,颜色和针法写在锁面。两者同时存在时,提示词自己
|
|
97
|
+
写长度,锁面负责颜色和针法。
|
|
98
|
+
|
|
99
|
+
## 反例
|
|
100
|
+
|
|
101
|
+
- `锁面:蓝色毛衣`——提示词正文是英文时永远匹配不上,且“蓝色”分不出浅蓝和藏青;
|
|
102
|
+
- `锁面:a pale blue sweater that she has been knitting since the first scene`——含剧情和时态,
|
|
103
|
+
下一镜必须改写它,锁当场失效;
|
|
104
|
+
- `锁面:high quality, detailed`——不是可辨识事实,锁住了也证明不了一致;
|
|
105
|
+
- 只把锁的 `镜头` 范围写到「文字已经对的那几镜」——范围要按这个事实**实际出现在哪几镜**来写,
|
|
106
|
+
按已经写对的地方来写,等于把校验器指向没有风险的位置;
|
|
107
|
+
- 把 `镜头:全集` 用在只出现两镜的道具上——其余镜头会被迫写入与本镜无关的名词。
|
|
108
|
+
|
|
109
|
+
## 校验
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
python3 <core 技能目录>/scripts/creator_markdown_check.py 剧集/<EP> --project-root .
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
它只机械核对语法、范围可解析,以及锁面是否真的出现在被点名的正文里。该不该上这把锁、锁面写得
|
|
116
|
+
准不准,仍由创作者和审查判断。
|
|
@@ -56,9 +56,9 @@
|
|
|
56
56
|
一条变化记录可能就够了。
|
|
57
57
|
- 它能否只写差异,而不篡改基础身份?新版本只写变化,不重写成另一个身份。
|
|
58
58
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
`
|
|
59
|
+
在 `视觉设定.md` 中把基础身份与当前变体放在同一项目下。变体只写相对基础身份发生的变化;
|
|
60
|
+
跨文档需要引用视觉事实时直接使用该项目标题;只有引用《图片提示词.md》的可见提示词条目时才使用
|
|
61
|
+
稳定 `IMG-...` ID。`IMG-...` 不表示真实图片,不建立隐藏的来源声明。
|
|
62
62
|
|
|
63
63
|
### D. 只有持续身份不同才建新资产
|
|
64
64
|
|
|
@@ -109,20 +109,14 @@
|
|
|
109
109
|
|
|
110
110
|
## 决定记录要说明理由
|
|
111
111
|
|
|
112
|
-
|
|
113
|
-
下游影响和创作者接受记录。
|
|
112
|
+
每条决定至少展示:来源场景、选择、稳定证据、差异、原因、有效范围和下游影响。
|
|
114
113
|
|
|
115
114
|
- `new_asset` 要说明为什么不能复用现有资产。
|
|
116
115
|
- `new_variant` 要说明基础身份中哪些内容不变。
|
|
117
116
|
- `reuse` 要说明现有版本怎样覆盖本次事实。
|
|
118
117
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
后者;不能因为一个 ID 看起来正式,就把提案当成已接受记录。
|
|
122
|
-
|
|
123
|
-
`creator_acceptance.decision_ref` 必须指向一条创作者决策记录,其 `record_id` 以 `CD-`
|
|
124
|
-
开头——检查器据此判定,不合规会直接拦下发布。指向剧本块或资产记录本身的 `decision_ref`
|
|
125
|
-
把「已接受」绑到了一条从未记录过创作者决策的东西上。决策记录本身由创作者决策环节发布在 `创作者决策/` 下,本阶段只引用它。
|
|
118
|
+
能从剧本与既有视觉事实直接判断的内容直接写入 `视觉设定.md`;真正存在多个成立选择时,把它标为
|
|
119
|
+
“未决”并列出会改变的下游影响,等创作者选择后再改正文。不要伪造决定 ID、接受状态或额外决策文件。
|
|
126
120
|
|
|
127
121
|
**`reviewed_invariant` AST-04**: 审查者检查身份识别点与临时状态是否混写,不以
|
|
128
122
|
“资产越少越好”作为评价标准。
|