@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
|
@@ -12,20 +12,34 @@ license: MIT
|
|
|
12
12
|
|
|
13
13
|
## Quick Start
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
只在用户明确要求实际生成后,从当前 `图片提示词.md`、`分镜.md` 或 `视频提示词.md` 中
|
|
16
|
+
取出本次提示词,建立一个有边界的运行 job。creator-first job 的 `source` 必须指向拥有这条提示词的
|
|
17
|
+
当前 Markdown,`source_entry` 必须点名该文档允许的二级标题:`图片提示词.md` 用 `IMG-*`,
|
|
18
|
+
`视频提示词.md` 用 `MOTION-*`,`分镜.md` 用 `SHOT-*`(modality 为 `image`,正文取该镜的
|
|
19
|
+
`### 冻结关键帧提示词`)。分镜这一路是本套件里唯一能把某一镜的起始画面渲染成文件的入口;
|
|
20
|
+
产出落在 `剧集/<EP>/制作成果/images/` 后,分镜 owner 才能把它绑成 `用途:起始帧` 的 `REF-...`。存在真实参考图时,
|
|
21
|
+
还必须逐张填写 `reference_bindings` 的槽位、顺序、路径、中文名、用途以及允许/禁止控制范围;
|
|
22
|
+
内置视频 adapter 把这里的 `用途` 字段读成供应商自己的 role,只接受它公布的取值
|
|
23
|
+
(MiniMax 为 `first_frame`/`last_frame`/`reference_image`/`reference_video`/`reference_audio`,
|
|
24
|
+
Seedance 为三个 `reference_*`);带参考图却没有绑定的 job 会直接失败,不替它猜一个 role。
|
|
25
|
+
本地图片由内置 adapter 按 base64 data URI 直接送出,不需要自建上传服务。
|
|
26
|
+
`references` 可以省略并由绑定顺序生成,也可以作为相同顺序的显式镜像。输出放在
|
|
27
|
+
`剧集/<EP>/制作成果/`;这个 job 是生产工具的临时输入,不是第六份创作文档:
|
|
16
28
|
|
|
17
29
|
```bash
|
|
18
|
-
python3 {技能目录}/scripts/
|
|
19
|
-
python3 {技能目录}/scripts/provider_adapters.py --selftest
|
|
30
|
+
python3 {技能目录}/scripts/production_tool.py prepare <project> --job <临时-job.json>
|
|
20
31
|
```
|
|
21
32
|
|
|
33
|
+
先展示 `prepare` 的完整预览;此时不会调用供应商。
|
|
34
|
+
|
|
22
35
|
## 硬闸门
|
|
23
36
|
|
|
24
37
|
每次生产都必须经过以下四步,顺序不可合并:
|
|
25
38
|
|
|
26
39
|
1. 建立一个有边界的 job:一种 modality、明确数量、完整 prompt/spec、参考文件、参数、输出路径和 adapter profile。
|
|
27
|
-
2. 运行 `prepare`,把返回的完整预览展示给创作者,尤其是数量、prompt、
|
|
28
|
-
overwrite 与 adapter。
|
|
40
|
+
2. 运行 `prepare`,把返回的完整预览展示给创作者,尤其是数量、prompt、source entry、
|
|
41
|
+
reference bindings、references、outputs、overwrite 与 adapter。creator-first job 会在这一步机械核对
|
|
42
|
+
所选标题里的可复制提示词,以及参考图槽位、顺序、路径、中文名和控制边界;任一漂移都 fail closed。
|
|
29
43
|
3. 等创作者在**看到这份预览之后**明确确认。只有明确同意这项当前任务,才运行 `confirm`;
|
|
30
44
|
“继续”“都做完”“预算没问题”、上游内容已接受或之前确认过另一版,都不算本次生产确认。
|
|
31
45
|
4. 运行 `run`。它会在启动 adapter 前消费一次确认;成功或失败后再次执行都必须重新确认,
|
|
@@ -34,9 +48,22 @@ python3 {技能目录}/scripts/provider_adapters.py --selftest
|
|
|
34
48
|
job、prompt、参数、输出路径或直接输入任一变化,旧确认立即失效。不得代替创作者填写确认。
|
|
35
49
|
当前已确认 job 是本轮唯一工作单元;运行结束后回报结果并交还控制权,不自动准备下一批或启动审查。
|
|
36
50
|
|
|
51
|
+
`分镜.md` 的「输入参考图」路径只是创作阶段的可读依据与使用意图,不是生产输入快照。进入生产时,
|
|
52
|
+
creator-first job 必须从 `图片提示词.md` 或 `视频提示词.md` 的对应条目建立绑定;`prepare` 展示的
|
|
53
|
+
`reference_bindings`、`references` 与已确认 job 才是本次 adapter 实际读取哪些文件字节、各自允许
|
|
54
|
+
影响什么的权威。非 creator 的结构化规格可不填 `source_entry`/`reference_bindings`,继续只使用显式
|
|
55
|
+
`references`;但新的 image/video job 只要 `source` 指向 canonical `图片提示词.md` 或
|
|
56
|
+
`视频提示词.md` 就强制使用对应 selector,不能靠省略字段降级绕过。升级前已经 prepare 并落盘的
|
|
57
|
+
旧 job 仍可按原指纹读取。
|
|
58
|
+
新生产结果不自动回填或刷新分镜;需要把它改为后续输入时,由分镜 owner 修订文档,再建立新 job
|
|
59
|
+
并重新预览、确认。
|
|
60
|
+
|
|
37
61
|
## 命令
|
|
38
62
|
|
|
39
|
-
|
|
63
|
+
只在进入生产边界后把当前提示词和运行参数写成临时 JSON;视频与图片 job 的
|
|
64
|
+
`parameters.prompt_language` 跟随当前可复制正文已经解析出的提示词语言,使 adapter 追加的参考约束
|
|
65
|
+
使用同一种语言,而不是重新回退成固定英文。不要在创作阶段为每条提示词预建 job。
|
|
66
|
+
格式和 adapter 契约见
|
|
40
67
|
[adapter-contract.md](references/adapter-contract.md)。命令由
|
|
41
68
|
[production_tool.py](scripts/production_tool.py) 提供,然后运行:
|
|
42
69
|
|
|
@@ -55,11 +82,20 @@ python3 <本技能目录>/scripts/production_tool.py audit <project>
|
|
|
55
82
|
|
|
56
83
|
## 输入选择
|
|
57
84
|
|
|
58
|
-
- **image
|
|
59
|
-
-
|
|
60
|
-
|
|
61
|
-
- **
|
|
62
|
-
|
|
85
|
+
- **image**:读取 `图片提示词.md` 的当前 `IMG-*` 可复制正文,或 `分镜.md` 的当前 `SHOT-*`
|
|
86
|
+
冻结关键帧正文,加上必要参考图和明确的输出尺寸/数量;creator-first job 使用 `source_entry`
|
|
87
|
+
锁定这一条。资产板走 `IMG-*`,某一镜的起始画面走 `SHOT-*`;两者不互相替代。
|
|
88
|
+
- **video**:读取 `视频提示词.md` 的当前 `MOTION-*` 可复制正文,并核对 `分镜.md` 中对应镜头、
|
|
89
|
+
冻结关键帧、时长与画幅;creator-first job 使用 `source_entry` 锁定这一条。连续段选择从上一段
|
|
90
|
+
生成结果续接时,下一段 job 同时绑定上一段实际视频和从该视频取得的实际尾帧,并保留
|
|
91
|
+
`continuity_video`、`actual_tail_frame` 的不同职责;供应商 role 由目标模型 adapter 翻译。H3 的这组
|
|
92
|
+
输入统一译为 `reference_video + reference_image`,不能混成 `reference_video + first_frame`;不以
|
|
93
|
+
计划尾帧或文字描述代替真实文件。
|
|
94
|
+
- **tts**:从 `剧本.md` 读取原句与表演要求,声音参考由用户或现有媒体明确提供。不得在生产 job
|
|
95
|
+
中改词,也不为 TTS 新建第六份创作文档。
|
|
96
|
+
- **music**:读取 `视频提示词.md` 中创作者已确认的时间线音乐章节;主题曲使用已确认歌词,纯配乐
|
|
97
|
+
不携带歌词。供应商不能精确承诺时长时,生成源音轨后仍由剪辑按文档里的混音意图完成落点、循环、
|
|
98
|
+
淡入淡出和对白 ducking。
|
|
63
99
|
|
|
64
100
|
一个 job 不混合 modality。大批量工作拆成创作者能看清数量和成本边界的小 job;不为方便把整季
|
|
65
101
|
隐式塞进一次确认。
|
|
@@ -70,17 +106,24 @@ adapter 配置必须在项目外,只包含 argv 命令和超时;凭据由 ad
|
|
|
70
106
|
存储读取。项目 job、确认记录、运行记录和 Dashboard 都不得保存密钥。
|
|
71
107
|
|
|
72
108
|
脚本以 JSON stdin 调用 argv 数组,不使用 shell,不拼接命令。adapter 返回本地临时文件;工具只
|
|
73
|
-
接受与已确认 targets 完全一致的结果,并把完整文件原子复制到项目的
|
|
109
|
+
接受与已确认 targets 完全一致的结果,并把完整文件原子复制到项目的 `剧集/<EP>/制作成果/`
|
|
74
110
|
目录。项目和上游 Skill 不写死供应商、模型或即将变化的 API。
|
|
75
111
|
|
|
76
|
-
|
|
112
|
+
内置图片/视频 compiler 会根据已确认的 `reference_bindings`,按顺序向供应商 prompt 附加一段确定性的
|
|
113
|
+
引用语义说明(中文名、用途、允许控制与不得控制范围);不会把槽位名误当成要渲染进画面的文字。
|
|
114
|
+
外部 adapter 也必须保留这组语义或明确拒绝,不能只上传文件而静默丢失控制边界。
|
|
77
115
|
|
|
78
|
-
|
|
79
|
-
|
|
116
|
+
本技能可选提供四个 stdlib adapter,均通过项目外 adapter config 选择,凭据只从运行环境读取:
|
|
117
|
+
|
|
118
|
+
- [Seedance](references/providers/seedance.md):模型/Endpoint ID 必须由账号显式配置;compiler 支持
|
|
119
|
+
官方图片、视频和音频参考 role,内置 runtime 未配置可信上传时仍拒绝本地参考文件。
|
|
80
120
|
- [GPT Image 2](references/providers/gpt-image-2.md):无参考图走 generation,有参考图走 edit;
|
|
81
121
|
固定高保真引用并校验尺寸、格式与透明背景限制。
|
|
82
122
|
- [MiniMax Music](references/providers/minimax-music.md):使用 `music-3.0` 与 hex 结果,区分主题曲
|
|
83
123
|
和纯配乐,不伪造时长请求字段。
|
|
124
|
+
- [MiniMax H3 视频](references/providers/minimax-h3-video.md):模型 ID、分辨率集合与时长区间必须
|
|
125
|
+
由账号显式配置;提示词进 `content` 的 text 项,参考图按显式 role 绑定,本地参考在没有可信上传时
|
|
126
|
+
fail closed。该模型与画面同一次生成声音,写法影响见视频提示词技能的目标模型能力档案。
|
|
84
127
|
|
|
85
128
|
这些 adapter 是已验证请求契约,不是账号可用性或生成质量保证;正式生产仍必须通过上面的本次
|
|
86
129
|
确认闸门,并由审查 Skill 判断产物质量。
|
|
@@ -101,3 +144,12 @@ adapter 配置必须在项目外,只包含 argv 命令和超时;凭据由 ad
|
|
|
101
144
|
缺陷回到对应 prompt/spec owner。
|
|
102
145
|
如需质量复核,报告可把已有结果另行交给 `$short-drama-review`;不要在生产调用中自动启动复核。
|
|
103
146
|
Dashboard 只负责展示这些文件和运行摘要,不提供 adapter 设置或生产按钮。
|
|
147
|
+
|
|
148
|
+
## 安装维护
|
|
149
|
+
|
|
150
|
+
只有安装、升级或排障时运行离线自检;普通创作和生产准备不运行:
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
python3 scripts/selftest.py
|
|
154
|
+
python3 scripts/provider_adapters.py --selftest
|
|
155
|
+
```
|
|
@@ -5,14 +5,26 @@
|
|
|
5
5
|
```json
|
|
6
6
|
{
|
|
7
7
|
"schema_version": "1.0",
|
|
8
|
-
"job_id": "EP001-
|
|
9
|
-
"modality": "
|
|
10
|
-
"adapter": "studio-
|
|
11
|
-
"prompt": "the
|
|
12
|
-
"source": "剧集/EP001
|
|
8
|
+
"job_id": "EP001-MOTION001-video",
|
|
9
|
+
"modality": "video",
|
|
10
|
+
"adapter": "studio-video",
|
|
11
|
+
"prompt": "the exact copyable prompt from MOTION-EP001-001",
|
|
12
|
+
"source": "剧集/EP001/视频提示词.md",
|
|
13
|
+
"source_entry": "MOTION-EP001-001",
|
|
14
|
+
"reference_bindings": [
|
|
15
|
+
{
|
|
16
|
+
"slot_id": "REF-HERO",
|
|
17
|
+
"order": 1,
|
|
18
|
+
"path": "输入/approved-character-reference.png",
|
|
19
|
+
"label": "女主定妆照",
|
|
20
|
+
"role": "reference_image",
|
|
21
|
+
"may_control": ["身份", "造型"],
|
|
22
|
+
"must_not_control": ["构图", "动作"]
|
|
23
|
+
}
|
|
24
|
+
],
|
|
13
25
|
"references": ["输入/approved-character-reference.png"],
|
|
14
|
-
"outputs": ["剧集/EP001/制作成果/
|
|
15
|
-
"parameters": {"
|
|
26
|
+
"outputs": ["剧集/EP001/制作成果/video/SHOT-EP001-001.mp4"],
|
|
27
|
+
"parameters": {"duration": 5, "ratio": "9:16", "prompt_language": "zh-CN"},
|
|
16
28
|
"overwrite": false
|
|
17
29
|
}
|
|
18
30
|
```
|
|
@@ -21,16 +33,53 @@
|
|
|
21
33
|
utterance; `music` is a separately accepted timeline-level cue or song and
|
|
22
34
|
must not be smuggled into every shot's video job.
|
|
23
35
|
- `source`: optional current project text/spec that owns the prompt.
|
|
36
|
+
- `source_entry`: for a creator-first job, the exact uppercase H2 ID inside a
|
|
37
|
+
canonical `剧集|episodes/<EP>/` creator document, matched to that document:
|
|
38
|
+
`图片提示词.md` takes `IMG-*` (image), `视频提示词.md` takes `MOTION-*` (video),
|
|
39
|
+
and `分镜.md` takes `SHOT-*` (image, whose prompt is the shot's
|
|
40
|
+
`### 冻结关键帧提示词` body rather than `### 可复制提示词`). A new image/video job pointing to either canonical filename must
|
|
41
|
+
provide the matching selector; an arbitrary Markdown file cannot impersonate a
|
|
42
|
+
creator source. `prepare` selects that section and requires `prompt` to exactly
|
|
43
|
+
equal its copyable prompt after Markdown quote markers are removed.
|
|
44
|
+
- `reference_bindings`: zero to sixteen ordered semantic bindings. Every entry has
|
|
45
|
+
exactly `slot_id`, contiguous `order`, project-relative `path`, Chinese `label`,
|
|
46
|
+
non-empty `role`, and non-empty `may_control` / `must_not_control` lists. When
|
|
47
|
+
`source_entry` is present, these fields must exactly match that entry's
|
|
48
|
+
`参考` (IMG) or `输入参考图` (SHOT/MOTION) declaration (except `role`, which is
|
|
49
|
+
production metadata). Allowed and prohibited scopes may not overlap.
|
|
50
|
+
The creator declaration also carries a `用途` — what this picture decides in
|
|
51
|
+
this shot, from the closed set in the storyboard skill. `role` is its
|
|
52
|
+
production-side translation and is chosen per provider, so the two are not
|
|
53
|
+
compared; a binding whose `role` contradicts the declared `用途` is a defect
|
|
54
|
+
the creator document, not this schema, is the authority on. This schema keeps
|
|
55
|
+
`role` free-form because an external adapter names its own inputs, but the
|
|
56
|
+
bundled video adapters read it as the provider's own role and accept only
|
|
57
|
+
their published vocabulary: `first_frame`, `last_frame`, `reference_image`,
|
|
58
|
+
`reference_video`, `reference_audio` for MiniMax, and the three `reference_*`
|
|
59
|
+
values for Seedance. A video job carrying references without bindings fails
|
|
60
|
+
closed there rather than having a role guessed for it.
|
|
24
61
|
- `references`: zero to sixteen current project files actually sent to production.
|
|
62
|
+
It may be omitted when `reference_bindings` is present, in which case the paths
|
|
63
|
+
are derived in binding order. If both are present, they must match exactly.
|
|
25
64
|
- `outputs`: one to sixteen unique paths rooted at top-level `production/` or
|
|
26
65
|
`剧集|episodes/<EP>/制作成果|production/`; extensions must match the modality.
|
|
27
66
|
A nested directory merely named `production` does not grant write access to
|
|
28
67
|
protected input or delivery trees.
|
|
29
|
-
- `parameters`: provider-neutral public settings only.
|
|
68
|
+
- `parameters`: provider-neutral public settings only. Image/video jobs carry the resolved
|
|
69
|
+
`prompt_language` so a bundled compiler writes its appended reference contract in the same
|
|
70
|
+
language as the copyable prompt; this execution-only setting is not forwarded as a provider
|
|
71
|
+
request field. Secret-like keys are rejected.
|
|
30
72
|
- `overwrite`: must be explicitly true to replace an existing result.
|
|
31
73
|
|
|
32
74
|
`prepare` records internal digests of source/reference bytes and returns the exact confirmation phrase. Callers never
|
|
33
75
|
calculate those digests. A changed input requires prepare and confirmation again.
|
|
76
|
+
Jobs already prepared and stored before this contract remain readable under their
|
|
77
|
+
original fingerprint. New non-creator structured jobs remain valid without
|
|
78
|
+
`source_entry` and `reference_bindings`; they still receive the existing
|
|
79
|
+
path/digest/confirmation checks. A `music` job may continue to use the timeline
|
|
80
|
+
music section of canonical `视频提示词.md` without pretending that section is a
|
|
81
|
+
`MOTION-*` entry; other new image/video jobs using canonical creator paths must use
|
|
82
|
+
their matching selector.
|
|
34
83
|
|
|
35
84
|
## Adapter config
|
|
36
85
|
|
|
@@ -70,6 +119,14 @@ provider adapters under `scripts/` document and implement known translations;
|
|
|
70
119
|
the project job remains provider-neutral, and adapter selection, model access,
|
|
71
120
|
polling and credentials stay in the external runtime configuration.
|
|
72
121
|
|
|
122
|
+
The confirmed document includes `source_entry` and `reference_bindings`. Bundled
|
|
123
|
+
image/video compilers append an ordered reference contract to the provider prompt so the Chinese
|
|
124
|
+
label, role, allowed controls, and prohibited controls survive the handoff. Its prose follows
|
|
125
|
+
`parameters.prompt_language`; model-native compilers also use that model's actual reference tokens,
|
|
126
|
+
such as Seedance `@图片1` or H3 `<Picture 1>`, rather than adding a second generic numbering scheme.
|
|
127
|
+
External adapters must preserve equivalent semantics
|
|
128
|
+
or reject the job; silently reducing the input to an unlabelled file list is invalid.
|
|
129
|
+
|
|
73
130
|
## Adapter stdout
|
|
74
131
|
|
|
75
132
|
On success, write one bounded UTF-8 JSON object to stdout. Portable adapters
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# MiniMax H3 video adapter
|
|
2
|
+
|
|
3
|
+
Adapter command:
|
|
4
|
+
|
|
5
|
+
```json
|
|
6
|
+
{"command": ["python3", "/absolute/path/provider_adapters.py", "minimax-h3"], "timeout_seconds": 3600}
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
Required environment:
|
|
10
|
+
|
|
11
|
+
- `MINIMAX_API_KEY`: MiniMax API key.
|
|
12
|
+
- `MINIMAX_VIDEO_MODEL`: the exact enabled model ID. There is intentionally no default; the adapter
|
|
13
|
+
never assumes which MiniMax video release an account has.
|
|
14
|
+
- `MINIMAX_VIDEO_RESOLUTIONS`: comma-separated subset the configured model actually accepts, drawn
|
|
15
|
+
from `480P`, `768P`, `2K`. The published envelopes differ per release, so this is configuration,
|
|
16
|
+
not a constant.
|
|
17
|
+
- `MINIMAX_VIDEO_MIN_DURATION` and `MINIMAX_VIDEO_MAX_DURATION`: the configured model's explicit
|
|
18
|
+
inclusive duration range in whole seconds. Set both or neither; a job carrying `duration` without
|
|
19
|
+
the profile fails closed.
|
|
20
|
+
|
|
21
|
+
Optional environment:
|
|
22
|
+
|
|
23
|
+
- `MINIMAX_VIDEO_BASE_URL` (default `https://api.minimax.io/v2`)
|
|
24
|
+
- `MINIMAX_VIDEO_RATIOS`: comma-separated subset of `adaptive`, `1:1`, `3:4`, `4:3`, `9:16`, `16:9`,
|
|
25
|
+
`21:9`.
|
|
26
|
+
- `MINIMAX_VIDEO_POLL_INTERVAL` (default `5` seconds)
|
|
27
|
+
- `MINIMAX_VIDEO_TIMEOUT_SECONDS` (default `1800` seconds)
|
|
28
|
+
|
|
29
|
+
The job must have modality `video` and exactly one `.mp4` output. `duration` and `resolution` are
|
|
30
|
+
required and are only accepted when the runtime profile above permits their values. `ratio` is
|
|
31
|
+
optional for reference-conditioned jobs and **required** for text-to-video, where `adaptive` is
|
|
32
|
+
refused because there is no reference frame to adapt to.
|
|
33
|
+
|
|
34
|
+
The prompt is compiled into one `text` item of the multimodal `content` array and is refused above
|
|
35
|
+
7000 characters. Each declared reference becomes one further `content` item carrying an explicit
|
|
36
|
+
`role`: `first_frame`, `last_frame`, `reference_image`, `reference_video`, or `reference_audio`.
|
|
37
|
+
Set the job's `parameters.prompt_language` to the resolved video-prompt language; the compiler
|
|
38
|
+
consumes it when appending reference semantics and does not send it as a MiniMax request field.
|
|
39
|
+
`first_frame` and `last_frame` may each appear once. The published envelope also caps reference
|
|
40
|
+
conditioning at 9 `reference_image`, 3 `reference_video` and 3 `reference_audio` items, with video and
|
|
41
|
+
audio clips between 2 and 15 seconds each and at most 15 seconds in total per modality; the compiler
|
|
42
|
+
does not count them, so a configuration that can exceed those numbers has to bound them itself.
|
|
43
|
+
frame conditioning (`first_frame` / `last_frame`) and full-reference conditioning
|
|
44
|
+
(`reference_image` / `reference_video` / `reference_audio`) are mutually exclusive in one request.
|
|
45
|
+
For continuation, bind the previous actual video as `reference_video` and its actual tail as
|
|
46
|
+
`reference_image`; the compiler labels them `<Video 1>` and `<Picture 1>` in its appended contract.
|
|
47
|
+
Never relabel that tail as `first_frame` while a reference video is present. Reference URLs may be HTTPS, `mm_file://{file_id}`, or a `data:<mime>;base64,<...>` URI — all three
|
|
48
|
+
are documented inputs. A project-relative reference in the confirmed job is read from disk and sent
|
|
49
|
+
inline as a data URI, so binding an image in the creator documents is enough to run the job; no
|
|
50
|
+
upload service is required. Each file's bytes must match the media type its extension claims, and
|
|
51
|
+
the published per-modality caps apply: 30MB per image, 50MB per video, 15MB per audio clip, and 64MB
|
|
52
|
+
for the whole request measured after base64 expansion. A reference past those caps fails closed with
|
|
53
|
+
an explicit message; host it and bind an HTTPS URL instead of splitting it.
|
|
54
|
+
|
|
55
|
+
Each reference takes its provider role from the confirmed job's `reference_bindings[].role`, which is
|
|
56
|
+
where the creator document's `用途` is translated for this provider. A job that carries references
|
|
57
|
+
without those bindings fails closed rather than guessing a role.
|
|
58
|
+
|
|
59
|
+
The adapter creates an asynchronous task with `POST {base}/video_generation`, polls
|
|
60
|
+
`GET {base}/query/video_generation/{task_id}` until a terminal state, and downloads `task.content.url` into a private temporary directory. Any unknown
|
|
61
|
+
status fails closed.
|
|
62
|
+
|
|
63
|
+
## What this model changes for the prompt itself
|
|
64
|
+
|
|
65
|
+
This release generates audio in the same pass as the picture. Its direct prompt dialect is also
|
|
66
|
+
structured: base/first-frame/first-last-frame tasks use `integrated_multimodal_description`,
|
|
67
|
+
`overall_soundscape`, and `non_diegetic_music`; full-reference tasks use the six-section H3 reference
|
|
68
|
+
form. Chinese dialogue remains exact inside `<d>[Chinese] ...</d>`. Full details live in the
|
|
69
|
+
video-prompt skill's `references/minimax-h3.md`.
|
|
70
|
+
|
|
71
|
+
Audio generation is a **capability**, not a style:
|
|
72
|
+
what changes upstream is only which axes of the target-model profile a project declares — see the
|
|
73
|
+
video-prompt skill's target-model profile. Two consequences are worth stating here because they
|
|
74
|
+
show up as production defects rather than as API errors:
|
|
75
|
+
|
|
76
|
+
- an unstated audio channel is not a silent one. A shot that says nothing about music or speech can
|
|
77
|
+
come back with invented score and invented lines, so the shot's own sound intent, including what
|
|
78
|
+
must **not** be produced, has to be in the copyable body;
|
|
79
|
+
- readable on-screen text is likewise produced unless it is excluded, so a shot with no readable-text
|
|
80
|
+
obligation states that exclusion instead of relying on the model to omit it.
|
|
81
|
+
|
|
82
|
+
Neither is written here as a fixed phrase, and this suite never injects one. The wording belongs to
|
|
83
|
+
the shot and to the project's declared prompt language.
|
|
84
|
+
|
|
85
|
+
Protocol reference: [MiniMax video generation API](https://platform.minimax.io/docs/api-reference/video-generation-v2-create).
|
|
@@ -20,19 +20,36 @@ Optional environment:
|
|
|
20
20
|
- `SEEDANCE_ALLOWED_RATIOS`: comma-separated subset explicitly supported by
|
|
21
21
|
the configured model, such as `9:16,16:9`.
|
|
22
22
|
- `SEEDANCE_MIN_DURATION` and `SEEDANCE_MAX_DURATION`: the configured model's
|
|
23
|
-
explicit inclusive duration range. Set both or neither.
|
|
23
|
+
explicit inclusive duration range. Set both or neither. Official integer profiles are `4–15`
|
|
24
|
+
for Seedance 2.0 and `4–30` for Seedance 2.5.
|
|
24
25
|
|
|
25
26
|
The job must have modality `video` and exactly one `.mp4` output. Optional
|
|
26
27
|
`duration` and `ratio` parameters are accepted only when the external runtime
|
|
27
|
-
profile above explicitly permits their values
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
28
|
+
profile above explicitly permits their values, then sent as the API's top-level fields. Optional
|
|
29
|
+
`generate_audio` is a boolean. The broad compiler envelope remains configurable rather than proving
|
|
30
|
+
that every Seedance release supports every value.
|
|
31
|
+
|
|
32
|
+
`compile_seedance_payload` accepts explicit `reference_image`, `reference_video`, and
|
|
33
|
+
`reference_audio` roles with matching HTTPS, `asset://` or base64 data URI values. It emits the matching multimodal
|
|
34
|
+
content type and uses `@图片N`、`@视频N`、`@音频N` in its appended reference contract. The bundled
|
|
35
|
+
runtime sends a project-relative reference inline as a `data:<mime>;base64,<...>` URI, which the
|
|
36
|
+
official contract lists alongside a public URL and `asset://`, so binding an image in the creator
|
|
37
|
+
documents is enough to run the job. Each file's bytes must match the media type its extension claims.
|
|
38
|
+
Volcengine publishes no per-file size numbers, so this adapter applies the same conservative guard as
|
|
39
|
+
the MiniMax path — 30MB per image, 50MB per video, 15MB per audio clip, 64MB per request after base64
|
|
40
|
+
expansion — and fails closed above them rather than sending a body the provider may reject. Each
|
|
41
|
+
reference takes its provider role from the confirmed job's `reference_bindings[].role`; a job with
|
|
42
|
+
references but no bindings fails closed rather than guessing.
|
|
43
|
+
|
|
44
|
+
Prompt wording for Seedance 2.0 is version-specific: normal reference uses “参考 @视频1”, while
|
|
45
|
+
continuation says “向后延长 @视频1” and binds the actual tail as `@图片1`. See the video-prompt
|
|
46
|
+
skill's `references/seedance-2.0.md`.
|
|
47
|
+
|
|
48
|
+
Seedance 2.5 has a separate `references/seedance-2.5.md` dialect and may carry
|
|
49
|
+
`omni_reference_task_type: reference|edit|extend|auto`. The compiler enforces the documented hard
|
|
50
|
+
parameter combinations for `edit` (`adaptive`, `-1`, reference video) and `extend` (`adaptive`,
|
|
51
|
+
reference video). It does not infer the task type from prompt keywords, because the API checks that
|
|
52
|
+
the explicit type and semantic intent agree.
|
|
36
53
|
|
|
37
54
|
The adapter creates an asynchronous task, polls `GET /contents/generations/tasks/{id}` until a terminal state, and
|
|
38
55
|
downloads `content.video_url` into a private temporary directory. Any unknown status fails closed.
|