@oh-story/dsh 0.1.10 → 0.1.12
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 +11 -11
- package/lib/client.js +7 -3
- package/lib/client.js.map +2 -2
- package/lib/drama/manifest.json +212 -142
- package/lib/drama/skills/short-drama/SKILL.md +14 -2
- package/lib/drama/skills/short-drama/assets/project-template/short-drama.json +3 -0
- package/lib/drama/skills/short-drama/references/creator-documents.md +3 -0
- package/lib/drama/skills/short-drama/references/knowhow-index.md +15 -0
- package/lib/drama/skills/short-drama/scripts/project_tool.py +131 -0
- package/lib/drama/skills/short-drama-assets/SKILL.md +2 -1
- package/lib/drama/skills/short-drama-assets/references/asset-review-checklist.md +2 -0
- package/lib/drama/skills/short-drama-assets/references/era-anchors.md +37 -0
- package/lib/drama/skills/short-drama-assets/references/stage-contract.md +2 -0
- package/lib/drama/skills/short-drama-develop/SKILL.md +10 -4
- package/lib/drama/skills/short-drama-develop/assets/adaptation-map.example.jsonl +1 -1
- package/lib/drama/skills/short-drama-develop/assets/creative-brief.md +8 -0
- package/lib/drama/skills/short-drama-develop/references/adaptation-craft.md +80 -13
- package/lib/drama/skills/short-drama-develop/references/episode-design.md +95 -12
- package/lib/drama/skills/short-drama-develop/references/genre-and-hook-playbook.md +9 -5
- package/lib/drama/skills/short-drama-develop/references/genre-cards//345/244/215/344/273/207/346/211/223/350/204/270.md +1 -1
- package/lib/drama/skills/short-drama-develop/references/genre-cards//347/263/273/347/273/237/346/265/201.md +51 -0
- package/lib/drama/skills/short-drama-develop/references/genre-cards//351/200/206/350/242/255.md +51 -0
- package/lib/drama/skills/short-drama-develop/references/genre-cards//351/207/215/347/224/237/347/251/277/350/266/212.md +51 -0
- package/lib/drama/skills/short-drama-develop/references/genre-cards.md +10 -7
- package/lib/drama/skills/short-drama-develop/references/premise-devices.md +15 -9
- package/lib/drama/skills/short-drama-develop/references/serial-character-and-memory.md +3 -2
- package/lib/drama/skills/short-drama-develop/references/stage-contract.md +14 -7
- package/lib/drama/skills/short-drama-develop/references/story-craft.md +7 -3
- package/lib/drama/skills/short-drama-edit/SKILL.md +43 -20
- package/lib/drama/skills/short-drama-edit/assets/remotion/README.md +49 -13
- package/lib/drama/skills/short-drama-edit/assets/remotion/package.json +4 -2
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/Overlay.tsx +31 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/Root.tsx +5 -5
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/Subtitles.tsx +68 -69
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/font.ts +39 -29
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/rules.mjs +188 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/schema.ts +26 -13
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/Card.tsx +72 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/CornerChip.tsx +39 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/ScreenText.tsx +36 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/SystemPanel.tsx +44 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/TaskPanel.tsx +100 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/chrome.tsx +197 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/tokens.ts +62 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/tsconfig.json +1 -0
- package/lib/drama/skills/short-drama-edit/assets//345/211/252/350/276/221/345/215/225.md +4 -2
- package/lib/drama/skills/short-drama-edit/references/cut-craft.md +3 -1
- package/lib/drama/skills/short-drama-edit/references/delivery-verify.md +6 -2
- package/lib/drama/skills/short-drama-edit/references/generated-footage.md +12 -6
- package/lib/drama/skills/short-drama-edit/references/sound-and-subtitles.md +13 -8
- package/lib/drama/skills/short-drama-edit/references/stage-contract.md +2 -0
- package/lib/drama/skills/short-drama-edit/scripts/edit_tool.py +1153 -121
- package/lib/drama/skills/short-drama-edit/scripts/selftest.py +49 -9
- package/lib/drama/skills/short-drama-novel-analyze/SKILL.md +3 -3
- package/lib/drama/skills/short-drama-novel-analyze/assets/episode-candidate.example.jsonl +2 -2
- package/lib/drama/skills/short-drama-novel-analyze/references/adaptation-triage.md +8 -4
- package/lib/drama/skills/short-drama-novel-analyze/references/adaptation-value.md +10 -3
- package/lib/drama/skills/short-drama-novel-analyze/references/aggregation-and-entities.md +25 -1
- package/lib/drama/skills/short-drama-novel-analyze/references/stage-contract.md +1 -0
- package/lib/drama/skills/short-drama-review/SKILL.md +2 -2
- package/lib/drama/skills/short-drama-review/references/review-method.md +6 -1
- package/lib/drama/skills/short-drama-review/references/rubric-assets-prompts.md +11 -0
- package/lib/drama/skills/short-drama-review/references/rubric-story-script.md +77 -3
- package/lib/drama/skills/short-drama-review/references/rubric-visual-motion.md +15 -0
- package/lib/drama/skills/short-drama-review/references/stage-contract.md +3 -0
- package/lib/drama/skills/short-drama-storyboard/SKILL.md +13 -5
- package/lib/drama/skills/short-drama-storyboard/references/blocking-playbooks.md +1 -1
- package/lib/drama/skills/short-drama-storyboard/references/production-shot-grammar.md +2 -2
- package/lib/drama/skills/short-drama-storyboard/references/shot-craft.md +82 -14
- package/lib/drama/skills/short-drama-storyboard/references/stage-contract.md +4 -2
- package/lib/drama/skills/short-drama-video-prompts/SKILL.md +5 -3
- package/lib/drama/skills/short-drama-video-prompts/references/camera-audio-continuity.md +12 -0
- package/lib/drama/skills/short-drama-video-prompts/references/delivery-profile.md +4 -5
- package/lib/drama/skills/short-drama-video-prompts/references/generability.md +4 -2
- package/lib/drama/skills/short-drama-video-prompts/references/minimax-h3.md +40 -1
- package/lib/drama/skills/short-drama-video-prompts/references/motion-recipe.md +20 -14
- package/lib/drama/skills/short-drama-video-prompts/references/performance-action-timing.md +1 -1
- package/lib/drama/skills/short-drama-video-prompts/references/production-prompt-grammar.md +8 -7
- package/lib/drama/skills/short-drama-video-prompts/references/review-and-fixtures.md +1 -1
- package/lib/drama/skills/short-drama-video-prompts/references/stage-contract.md +1 -0
- package/lib/drama/skills/short-drama-video-prompts/references/target-model-profile.md +8 -1
- package/lib/drama/skills/short-drama-video-prompts/references/wan-3.0.md +103 -0
- package/lib/drama/skills/short-drama-video-prompts/scripts/motion_timing_check.py +8 -7
- package/lib/drama/skills/short-drama-write/SKILL.md +8 -3
- package/lib/drama/skills/short-drama-write/references/dialogue-craft.md +1 -1
- package/lib/drama/skills/short-drama-write/references/script-craft.md +56 -3
- package/lib/drama/skills/short-drama-write/references/stage-contract.md +4 -0
- package/lib/drama/skills/short-drama-write/scripts/duration_estimate.py +48 -2
- package/lib/index.js +71 -21
- package/lib/index.js.map +3 -3
- package/lib/oh-story/manifest.json +545 -310
- package/lib/oh-story/roles/chapter-extractor.md +11 -11
- package/lib/oh-story/roles/character-designer.md +1 -2
- package/lib/oh-story/roles/consistency-checker.md +11 -9
- package/lib/oh-story/roles/narrative-writer.md +24 -25
- package/lib/oh-story/roles/story-architect.md +9 -61
- package/lib/oh-story/roles/story-explorer.md +20 -125
- package/lib/oh-story/roles/story-researcher.md +0 -1
- package/lib/oh-story/skills/story/SKILL.md +6 -6
- package/lib/oh-story/skills/story/VERSION +1 -1
- package/lib/oh-story/skills/story/references/author-memory-maintenance.md +75 -0
- package/lib/oh-story/skills/story/references/author-memory.md +40 -118
- package/lib/oh-story/skills/story/scripts/author_memory_commit.py +3 -3
- package/lib/oh-story/skills/story-deslop/SKILL.md +24 -25
- package/lib/oh-story/skills/story-deslop/references/agent-calls.md +5 -0
- package/lib/oh-story/skills/story-deslop/references/anti-ai-writing.md +1 -1
- package/lib/oh-story/skills/story-deslop/references/author-memory-maintenance.md +75 -0
- package/lib/oh-story/skills/story-deslop/references/author-memory.md +40 -118
- package/lib/oh-story/skills/story-deslop/references/banned-words.md +2 -2
- package/lib/oh-story/skills/story-deslop/references/deslop-gates.md +21 -4
- package/lib/oh-story/skills/story-deslop/references/style-resolution.md +4 -4
- package/lib/oh-story/skills/story-deslop/scripts/author_memory_commit.py +3 -3
- package/lib/oh-story/skills/story-deslop/scripts/check-ai-patterns.js +155 -8
- package/lib/oh-story/skills/story-import/SKILL.md +63 -579
- package/lib/oh-story/skills/story-import/references/deep-analysis.md +47 -0
- package/lib/oh-story/skills/story-import/references/format-and-structure.md +1 -1
- package/lib/oh-story/skills/story-import/references/import-report.md +64 -0
- package/lib/oh-story/skills/story-import/references/import-special-cases.md +34 -0
- package/lib/oh-story/skills/story-import/references/import-tracking.md +95 -0
- package/lib/oh-story/skills/story-import/references/length-routing.md +1 -1
- package/lib/oh-story/skills/story-import/references/outline-reverse-rules.md +79 -0
- package/lib/oh-story/skills/story-import/references/outline-reverse.md +24 -0
- package/lib/oh-story/skills/story-import/references/structure-mapping-long.md +95 -91
- package/lib/oh-story/skills/story-import/references/structure-mapping-short.md +24 -12
- package/lib/oh-story/skills/story-import/references/tracking-initialization.md +1 -1
- package/lib/oh-story/skills/story-import/references/tracking-transaction.md +11 -9
- package/lib/oh-story/skills/story-import/scripts/build_outline_brief.py +332 -0
- package/lib/oh-story/skills/story-import/scripts/check-outline-contract.js +101 -14
- package/lib/oh-story/skills/story-import/scripts/tracking_commit.py +278 -23
- package/lib/oh-story/skills/story-import/scripts/wordcount_core.py +179 -23
- package/lib/oh-story/skills/story-long-analyze/SKILL.md +28 -50
- package/lib/oh-story/skills/story-long-analyze/references/author-facing.md +12 -5
- package/lib/oh-story/skills/story-long-analyze/references/deconstruction-notes.md +1 -1
- package/lib/oh-story/skills/story-long-analyze/references/final-checks.md +19 -0
- package/lib/oh-story/skills/story-long-analyze/references/index-rebuild.md +11 -0
- package/lib/oh-story/skills/story-long-analyze/references/pipeline-ops.md +21 -55
- package/lib/oh-story/skills/story-long-analyze/references/stage1-golden-chapters.md +128 -0
- package/lib/oh-story/skills/story-long-analyze/references/stage2-extraction.md +229 -0
- package/lib/oh-story/skills/story-long-analyze/references/stage3-plot-rhythm.md +480 -0
- package/lib/oh-story/skills/story-long-analyze/references/stage4-characters-settings.md +195 -0
- package/lib/oh-story/skills/story-long-analyze/references/stage5-report.md +33 -0
- package/lib/oh-story/skills/story-long-analyze/references/style-profile-generator.md +17 -0
- package/lib/oh-story/skills/story-long-analyze/references/style-profile-protocol.md +1 -1
- package/lib/oh-story/skills/story-long-analyze/references/synthesis-inputs.md +39 -0
- package/lib/oh-story/skills/story-long-analyze/scripts/manage_analysis_run.py +47 -8
- package/lib/oh-story/skills/story-long-scan/SKILL.md +41 -193
- package/lib/oh-story/skills/story-long-scan/references/platform-ciweimao.md +19 -0
- package/lib/oh-story/skills/story-long-scan/references/platform-fanqie.md +45 -0
- package/lib/oh-story/skills/story-long-scan/references/platform-jjwxc.md +28 -0
- package/lib/oh-story/skills/story-long-scan/references/platform-qidian.md +35 -0
- package/lib/oh-story/skills/story-long-scan/references/platform-qimao.md +27 -0
- package/lib/oh-story/skills/story-long-scan/references/topic-decision.md +6 -2
- package/lib/oh-story/skills/story-long-write/SKILL.md +32 -73
- package/lib/oh-story/skills/story-long-write/references/agent-calls.md +47 -0
- package/lib/oh-story/skills/story-long-write/references/anti-ai-writing.md +1 -1
- package/lib/oh-story/skills/story-long-write/references/artifact-protocols.md +18 -201
- package/lib/oh-story/skills/story-long-write/references/author-memory-maintenance.md +75 -0
- package/lib/oh-story/skills/story-long-write/references/author-memory.md +40 -118
- package/lib/oh-story/skills/story-long-write/references/banned-words.md +2 -2
- package/lib/oh-story/skills/story-long-write/references/benchmark-recall.md +6 -10
- package/lib/oh-story/skills/story-long-write/references/character-relations.md +49 -1
- package/lib/oh-story/skills/story-long-write/references/deslop-gates.md +171 -0
- package/lib/oh-story/skills/story-long-write/references/emotion-on-page.md +116 -0
- package/lib/oh-story/skills/story-long-write/references/emotional-arc-design.md +1 -114
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards.md +1 -1
- package/lib/oh-story/skills/story-long-write/references/long-chapter-quality.md +3 -2
- package/lib/oh-story/skills/story-long-write/references/long-format.md +0 -8
- package/lib/oh-story/skills/story-long-write/references/long-genre-catalog.md +1 -1
- package/lib/oh-story/skills/story-long-write/references/long-genre-mechanics.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/opening-design.md +2 -2
- package/lib/oh-story/skills/story-long-write/references/outline-conflict.md +4 -4
- package/lib/oh-story/skills/story-long-write/references/outline-methods.md +7 -7
- package/lib/oh-story/skills/story-long-write/references/outline-rhythm.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/outline-structure-theory.md +14 -69
- package/lib/oh-story/skills/story-long-write/references/plot-frameworks.md +1 -1
- package/lib/oh-story/skills/story-long-write/references/plot-special-topics.md +2 -2
- package/lib/oh-story/skills/story-long-write/references/project-files.md +10 -6
- package/lib/oh-story/skills/story-long-write/references/reader-contract-and-progression.md +1 -1
- package/lib/oh-story/skills/story-long-write/references/reference-index.md +4 -4
- package/lib/oh-story/skills/story-long-write/references/stop-and-fix.md +9 -0
- package/lib/oh-story/skills/story-long-write/references/style-combat-face.md +1 -58
- package/lib/oh-story/skills/story-long-write/references/style-genre-modules.md +1 -1
- package/lib/oh-story/skills/story-long-write/references/style-resolution.md +4 -4
- package/lib/oh-story/skills/story-long-write/references/tracking-initialization.md +1 -1
- package/lib/oh-story/skills/story-long-write/references/tracking-transaction.md +11 -9
- package/lib/oh-story/skills/story-long-write/references/workflow-chapter.md +33 -44
- package/lib/oh-story/skills/story-long-write/references/workflow-daily.md +18 -51
- package/lib/oh-story/skills/story-long-write/references/workflow-outline.md +157 -0
- package/lib/oh-story/skills/story-long-write/references/workflow-revision.md +53 -67
- package/lib/oh-story/skills/story-long-write/references/workflow-setup.md +112 -251
- package/lib/oh-story/skills/story-long-write/references/workflow-volume.md +142 -0
- package/lib/oh-story/skills/story-long-write/references/writer-prompt-fallback.md +5 -3
- package/lib/oh-story/skills/story-long-write/references/writing-craft.md +18 -56
- package/lib/oh-story/skills/story-long-write/scripts/author_memory_commit.py +3 -3
- package/lib/oh-story/skills/story-long-write/scripts/build_architect_brief.py +260 -0
- package/lib/oh-story/skills/story-long-write/scripts/build_writer_prompt.py +96 -16
- package/lib/oh-story/skills/story-long-write/scripts/check-ai-patterns.js +155 -8
- package/lib/oh-story/skills/story-long-write/scripts/check-outline-contract.js +101 -14
- package/lib/oh-story/skills/story-long-write/scripts/check-outline-copy.js +7 -2
- package/lib/oh-story/skills/story-long-write/scripts/outline_view.py +2 -1
- package/lib/oh-story/skills/story-long-write/scripts/storyctl.py +250 -50
- package/lib/oh-story/skills/story-long-write/scripts/tracking_commit.py +278 -23
- package/lib/oh-story/skills/story-long-write/scripts/wordcount_core.py +179 -23
- package/lib/oh-story/skills/story-review/SKILL.md +19 -273
- package/lib/oh-story/skills/story-review/references/agent-prompts.md +184 -0
- package/lib/oh-story/skills/story-review/references/anti-ai-writing.md +1 -1
- package/lib/oh-story/skills/story-review/references/author-memory-maintenance.md +75 -0
- package/lib/oh-story/skills/story-review/references/author-memory.md +40 -118
- package/lib/oh-story/skills/story-review/references/banned-words.md +2 -2
- package/lib/oh-story/skills/story-review/references/batch-review.md +19 -0
- package/lib/oh-story/skills/story-review/references/character-relations.md +49 -1
- package/lib/oh-story/skills/story-review/references/review-quality.md +2 -1
- package/lib/oh-story/skills/story-review/references/review-tracking.md +10 -0
- package/lib/oh-story/skills/story-review/references/solo.md +52 -0
- package/lib/oh-story/skills/story-review/references/style-resolution.md +4 -4
- package/lib/oh-story/skills/story-review/references/tracking-initialization.md +1 -1
- package/lib/oh-story/skills/story-review/references/tracking-transaction.md +11 -9
- package/lib/oh-story/skills/story-review/scripts/author_memory_commit.py +3 -3
- package/lib/oh-story/skills/story-review/scripts/check-ai-patterns.js +155 -8
- package/lib/oh-story/skills/story-review/scripts/tracking_commit.py +278 -23
- package/lib/oh-story/skills/story-review/scripts/wordcount_core.py +179 -23
- package/lib/oh-story/skills/story-setup/SKILL.md +69 -458
- package/lib/oh-story/skills/story-setup/references/agent-references/agent-quality.md +4 -4
- package/lib/oh-story/skills/story-setup/references/agent-references/anti-ai-writing.md +1 -1
- package/lib/oh-story/skills/story-setup/references/agent-references/banned-words.md +2 -2
- package/lib/oh-story/skills/story-setup/references/agent-references/benchmark-style-load.md +107 -0
- package/lib/oh-story/skills/story-setup/references/agent-references/character-relations.md +49 -1
- package/lib/oh-story/skills/story-setup/references/agent-references/deslop-gates.md +21 -4
- package/lib/oh-story/skills/story-setup/references/agent-references/emotion-on-page.md +116 -0
- package/lib/oh-story/skills/story-setup/references/agent-references/emotional-arc-design.md +1 -114
- package/lib/oh-story/skills/story-setup/references/agent-references/format-and-structure.md +1 -1
- 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/long-genre-catalog.md +1 -1
- package/lib/oh-story/skills/story-setup/references/agent-references/long-genre-mechanics.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/long-quality.md +7 -5
- package/lib/oh-story/skills/story-setup/references/agent-references/opening-design.md +2 -2
- package/lib/oh-story/skills/story-setup/references/agent-references/outline-conflict.md +4 -4
- package/lib/oh-story/skills/story-setup/references/agent-references/outline-methods.md +7 -7
- package/lib/oh-story/skills/story-setup/references/agent-references/outline-rhythm.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/short-emotional-methods.md +1 -1
- package/lib/oh-story/skills/story-setup/references/agent-references/short-genre-formulas.md +0 -15
- package/lib/oh-story/skills/story-setup/references/agent-references/short-reversal.md +1 -1
- package/lib/oh-story/skills/story-setup/references/agent-references/style-combat-face.md +1 -58
- 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/style-resolution.md +4 -4
- package/lib/oh-story/skills/story-setup/references/agent-references/writing-craft.md +18 -56
- package/lib/oh-story/skills/story-setup/references/diagnostics.md +3 -3
- package/lib/oh-story/skills/story-short-analyze/SKILL.md +37 -110
- package/lib/oh-story/skills/story-short-analyze/references/analysis-character-relations.md +1 -1
- package/lib/oh-story/skills/story-short-analyze/references/analysis-method.md +42 -0
- package/lib/oh-story/skills/story-short-analyze/references/optional-modules.md +97 -0
- package/lib/oh-story/skills/story-short-analyze/references/output-contract.md +9 -47
- package/lib/oh-story/skills/story-short-analyze/references/quality-checklist.md +80 -0
- package/lib/oh-story/skills/story-short-analyze/references/source-story-quality.md +4 -4
- package/lib/oh-story/skills/story-short-analyze/references/stage2-3-structure-emotion.md +308 -0
- package/lib/oh-story/skills/story-short-analyze/references/{material-decomposition.md → stage4-6-reversal-summary.md} +303 -374
- package/lib/oh-story/skills/story-short-scan/SKILL.md +30 -64
- package/lib/oh-story/skills/story-short-scan/references/manual-rank-input.md +36 -0
- package/lib/oh-story/skills/story-short-scan/references/platform-dianzhong.md +24 -0
- package/lib/oh-story/skills/story-short-scan/references/platform-heiyan.md +21 -0
- package/lib/oh-story/skills/story-short-scan/references/topic-match.md +38 -0
- package/lib/oh-story/skills/story-short-write/SKILL.md +23 -34
- package/lib/oh-story/skills/story-short-write/references/agent-calls.md +13 -0
- package/lib/oh-story/skills/story-short-write/references/author-memory-maintenance.md +75 -0
- package/lib/oh-story/skills/story-short-write/references/author-memory.md +40 -118
- package/lib/oh-story/skills/story-short-write/references/banned-words.md +2 -2
- package/lib/oh-story/skills/story-short-write/references/benchmark-recall.md +1 -21
- package/lib/oh-story/skills/story-short-write/references/emotional-methods.md +1 -1
- package/lib/oh-story/skills/story-short-write/references/genre-writing-formulas.md +0 -15
- package/lib/oh-story/skills/story-short-write/references/output-contract.md +9 -47
- package/lib/oh-story/skills/story-short-write/references/reference-index.md +17 -49
- package/lib/oh-story/skills/story-short-write/references/scene-craft.md +40 -0
- package/lib/oh-story/skills/story-short-write/references/short-craft.md +7 -43
- package/lib/oh-story/skills/story-short-write/references/short-format.md +3 -3
- package/lib/oh-story/skills/story-short-write/references/short-prose-quality.md +2 -1
- package/lib/oh-story/skills/story-short-write/references/short-reversal.md +1 -1
- package/lib/oh-story/skills/story-short-write/references/style-resolution.md +4 -4
- package/lib/oh-story/skills/story-short-write/references/submission-craft.md +1 -1
- package/lib/oh-story/skills/story-short-write/references/villain-and-reveal.md +5 -10
- package/lib/oh-story/skills/story-short-write/references/workflow-design.md +19 -12
- package/lib/oh-story/skills/story-short-write/references/workflow-draft.md +22 -32
- package/lib/oh-story/skills/story-short-write/references/workflow-revision.md +84 -17
- package/lib/oh-story/skills/story-short-write/references/writing-workflow.md +7 -119
- package/lib/oh-story/skills/story-short-write/scripts/author_memory_commit.py +3 -3
- package/lib/oh-story/skills/story-short-write/scripts/check-ai-patterns.js +155 -8
- package/lib/oh-story/skills/story-short-write/scripts/check-outline-copy.js +7 -2
- package/lib/types/client/video-studio.d.ts.map +1 -1
- package/lib/types/native-hooks.d.ts +2 -2
- package/lib/types/native-hooks.d.ts.map +1 -1
- package/lib/types/role-tool.d.ts.map +1 -1
- package/lib/types/skill-provider.d.ts.map +1 -1
- package/lib/types/video-project.d.ts.map +1 -1
- package/lib/types/workspace-route.d.ts.map +1 -1
- package/lib/video-recap/CHANGELOG.md +60 -1
- package/lib/video-recap/README.en.md +348 -137
- package/lib/video-recap/README.md +340 -136
- package/lib/video-recap/manifest.json +406 -251
- package/lib/video-recap/skills/video-assemble/SKILL.md +30 -15
- package/lib/video-recap/skills/video-assemble/references/audio-modes.md +63 -0
- package/lib/video-recap/skills/video-assemble/references/explicit-audio-mix.md +75 -0
- package/lib/video-recap/skills/video-assemble/references/foreground-compose.md +118 -0
- package/lib/video-recap/skills/video-assemble/references/narration-adoption.md +103 -0
- package/lib/video-recap/skills/video-assemble/references/packaging.md +45 -0
- package/lib/video-recap/skills/video-assemble/references/pair-media.md +74 -0
- package/lib/video-recap/skills/video-assemble/references/source-score.md +147 -0
- package/lib/video-recap/skills/video-assemble/references/subtitle-track.md +202 -0
- package/lib/video-recap/skills/video-assemble/scripts/adoption/__init__.py +1 -0
- package/lib/video-recap/skills/video-assemble/scripts/adoption/audio_mix_binding.py +279 -0
- package/lib/video-recap/skills/video-assemble/scripts/adoption/frozen_audio.py +187 -0
- package/lib/video-recap/skills/video-assemble/scripts/adoption/narration_binding.py +323 -0
- package/lib/video-recap/skills/video-assemble/scripts/adoption/strict_inputs.py +109 -0
- package/lib/video-recap/skills/video-assemble/scripts/adoption/strict_publish.py +130 -0
- package/lib/video-recap/skills/video-assemble/scripts/artifacts.py +10 -46
- package/lib/video-recap/skills/video-assemble/scripts/assemble.py +378 -119
- package/lib/video-recap/skills/video-assemble/scripts/assemble_constants.py +29 -12
- package/lib/video-recap/skills/video-assemble/scripts/assembly_contract.py +95 -44
- package/lib/video-recap/skills/video-assemble/scripts/assembly_settings.py +75 -32
- package/lib/video-recap/skills/video-assemble/scripts/audio_mix.py +11 -11
- package/lib/video-recap/skills/video-assemble/scripts/compose_foreground.py +293 -0
- package/lib/video-recap/skills/video-assemble/scripts/export_jianying.py +71 -78
- package/lib/video-recap/skills/video-assemble/scripts/jianying/__init__.py +1 -0
- package/lib/video-recap/skills/video-assemble/scripts/{jianying_builders.py → jianying/builders.py} +39 -67
- package/lib/video-recap/skills/video-assemble/scripts/{jianying_model.py → jianying/model.py} +3 -11
- package/lib/video-recap/skills/video-assemble/scripts/{jianying_optional.py → jianying/optional.py} +1 -1
- package/lib/video-recap/skills/video-assemble/scripts/jianying/schema.py +53 -0
- package/lib/video-recap/skills/video-assemble/scripts/{jianying_templates.py → jianying/templates.py} +1 -1
- package/lib/video-recap/skills/video-assemble/scripts/{jianying_timeline_contract.py → jianying/timeline_contract.py} +34 -13
- package/lib/video-recap/skills/video-assemble/scripts/{jianying_writer.py → jianying/writer.py} +7 -17
- package/lib/video-recap/skills/video-assemble/scripts/lib.py +37 -4
- package/lib/video-recap/skills/video-assemble/scripts/media.py +12 -21
- package/lib/video-recap/skills/video-assemble/scripts/narration_audio.py +64 -34
- package/lib/video-recap/skills/video-assemble/scripts/packaging.py +122 -0
- package/lib/video-recap/skills/video-assemble/scripts/pair_media.py +216 -0
- package/lib/video-recap/skills/video-assemble/scripts/render_preflight.py +1 -3
- package/lib/video-recap/skills/video-assemble/scripts/source_score.py +469 -0
- package/lib/video-recap/skills/video-assemble/scripts/source_subtitles.py +25 -9
- package/lib/video-recap/skills/video-assemble/scripts/subtitles/__init__.py +1 -0
- package/lib/video-recap/skills/video-assemble/scripts/{subtitle_core.py → subtitles/core.py} +13 -6
- package/lib/video-recap/skills/video-assemble/scripts/{subtitle_render.py → subtitles/render.py} +5 -4
- package/lib/video-recap/skills/video-assemble/scripts/subtitles/track.py +324 -0
- package/lib/video-recap/skills/video-assemble/scripts/subtitles/track_binding.py +200 -0
- package/lib/video-recap/skills/video-assemble/scripts/timeline.py +30 -46
- package/lib/video-recap/skills/video-assemble/scripts/timeline_emit.py +91 -7
- package/lib/video-recap/skills/video-assemble/scripts/visual_render.py +22 -8
- package/lib/video-recap/skills/video-cut/SKILL.md +34 -16
- package/lib/video-recap/skills/video-cut/references/shot-review.md +50 -0
- package/lib/video-recap/skills/video-cut/scripts/cut.py +2 -28
- package/lib/video-recap/skills/video-cut/scripts/cut_cli.py +58 -62
- package/lib/video-recap/skills/video-cut/scripts/cut_contract.py +21 -106
- package/lib/video-recap/skills/video-cut/scripts/cut_render.py +14 -9
- package/lib/video-recap/skills/video-cut/scripts/lib.py +39 -0
- package/lib/video-recap/skills/video-cut/scripts/narration_mapping.py +2 -155
- package/lib/video-recap/skills/video-cut/scripts/narrative_selection.py +244 -0
- package/lib/video-recap/skills/video-cut/scripts/shot_review.py +357 -0
- package/lib/video-recap/skills/video-recap/SKILL.md +86 -42
- package/lib/video-recap/skills/video-recap/references/audio-routing.md +126 -0
- package/lib/video-recap/skills/video-recap/references/config-playbook.md +12 -8
- package/lib/video-recap/skills/video-recap/references/data-schema.md +44 -33
- package/lib/video-recap/skills/video-recap/references/resource-library.md +151 -0
- package/lib/video-recap/skills/video-recap/references/shift-left-qc-schema.md +1 -1
- package/lib/video-recap/skills/video-recap/scripts/doctor.py +123 -30
- package/lib/video-recap/skills/video-recap/scripts/final_qc.py +22 -75
- package/lib/video-recap/skills/video-recap/scripts/lib.py +3 -3
- package/lib/video-recap/skills/video-recap/scripts/library.py +509 -0
- package/lib/video-recap/skills/video-recap/scripts/materials.py +63 -91
- package/lib/video-recap/skills/video-recap/scripts/mimo_qc.py +8 -70
- package/lib/video-recap/skills/video-recap/scripts/project_binding.py +286 -0
- package/lib/video-recap/skills/video-recap/scripts/qc/__init__.py +1 -0
- package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_client.py → qc/mimo_client.py} +1 -1
- package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_evidence.py → qc/mimo_evidence.py} +33 -66
- package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_observations.py → qc/mimo_observations.py} +3 -11
- package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_payload.py → qc/mimo_payload.py} +4 -7
- package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_report.py → qc/mimo_report.py} +17 -28
- package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_runner.py → qc/mimo_runner.py} +2 -2
- package/lib/video-recap/skills/video-recap/scripts/qc_contract.py +0 -19
- package/lib/video-recap/skills/video-recap/scripts/recap_cli.py +119 -50
- package/lib/video-recap/skills/video-recap/scripts/recap_inspect.py +32 -114
- package/lib/video-recap/skills/video-recap/scripts/recap_review.py +9 -23
- package/lib/video-recap/skills/video-recap/scripts/recap_runner.py +387 -334
- package/lib/video-recap/skills/video-recap/scripts/recap_runtime.py +23 -23
- package/lib/video-recap/skills/video-recap/scripts/recap_source.py +278 -0
- package/lib/video-recap/skills/video-recap/scripts/recap_stage_qc.py +25 -12
- package/lib/video-recap/skills/video-recap/scripts/recap_timeline.py +59 -52
- package/lib/video-recap/skills/video-recap/scripts/resource_lock.py +162 -0
- package/lib/video-recap/skills/video-script/SKILL.md +16 -13
- package/lib/video-recap/skills/video-script/references/creative-editing-playbook.md +9 -5
- package/lib/video-recap/skills/video-script/references/promotional-copy.md +68 -0
- package/lib/video-recap/skills/video-script/references/research-guide.md +1 -1
- package/lib/video-recap/skills/video-script/scripts/evidence_bundle.py +24 -76
- package/lib/video-recap/skills/video-script/scripts/lib.py +10 -87
- package/lib/video-recap/skills/video-script/scripts/narration_lint.py +63 -39
- package/lib/video-recap/skills/video-script/scripts/review.py +0 -2
- package/lib/video-recap/skills/video-script/scripts/review_grounding.py +35 -59
- package/lib/video-recap/skills/video-script/scripts/review_response.py +66 -128
- package/lib/video-recap/skills/video-script/scripts/review_runner.py +12 -20
- package/lib/video-recap/skills/video-script/scripts/speech_ownership.py +4 -4
- package/lib/video-recap/skills/video-script/scripts/validate.py +53 -42
- package/lib/video-recap/skills/video-understanding/SKILL.md +6 -4
- package/lib/video-recap/skills/video-understanding/references/data-schema.md +50 -156
- package/lib/video-recap/skills/video-understanding/references/research-guide.md +4 -4
- package/lib/video-recap/skills/video-understanding/scripts/asr.py +85 -65
- package/lib/video-recap/skills/video-understanding/scripts/asr_timing_evidence.py +270 -0
- package/lib/video-recap/skills/video-understanding/scripts/brief.py +2 -5
- package/lib/video-recap/skills/video-understanding/scripts/briefing/__init__.py +1 -0
- package/lib/video-recap/skills/video-understanding/scripts/{agent_brief.py → briefing/builder.py} +38 -35
- package/lib/video-recap/skills/{video-script/scripts/brief_context.py → video-understanding/scripts/briefing/context.py} +4 -35
- package/lib/video-recap/skills/{video-script/scripts/brief_inputs.py → video-understanding/scripts/briefing/inputs.py} +9 -31
- package/lib/video-recap/skills/video-understanding/scripts/{brief_timeline.py → briefing/timeline.py} +5 -6
- package/lib/video-recap/skills/video-understanding/scripts/consolidate.py +65 -116
- package/lib/video-recap/skills/video-understanding/scripts/detect.py +31 -40
- package/lib/video-recap/skills/video-understanding/scripts/lib.py +30 -86
- package/lib/video-recap/skills/video-understanding/scripts/narration_lint.py +63 -39
- package/lib/video-recap/skills/video-understanding/scripts/speech_ownership.py +4 -4
- package/lib/video-recap/skills/video-understanding/scripts/storyboard.py +17 -79
- package/lib/video-recap/skills/video-understanding/scripts/understanding_brief.py +14 -40
- package/lib/video-recap/skills/video-understanding/scripts/understanding_cache.py +64 -46
- package/lib/video-recap/skills/video-understanding/scripts/understanding_runner.py +31 -11
- package/lib/video-recap/skills/video-understanding/scripts/understanding_storyboard.py +19 -14
- package/lib/video-recap/skills/video-understanding/scripts/vlm.py +80 -108
- package/lib/video-recap/skills/video-voiceover/SKILL.md +29 -19
- package/lib/video-recap/skills/video-voiceover/references/index-tts.md +31 -0
- package/lib/video-recap/skills/video-voiceover/scripts/approved_text_policy.py +123 -0
- package/lib/video-recap/skills/video-voiceover/scripts/dub.py +51 -59
- package/lib/video-recap/skills/video-voiceover/scripts/lib.py +8 -44
- package/lib/video-recap/skills/video-voiceover/scripts/providers/__init__.py +1 -0
- package/lib/video-recap/skills/video-voiceover/scripts/providers/index_tts.py +184 -0
- package/lib/video-recap/skills/video-voiceover/scripts/voiceover.py +212 -134
- package/package.json +41 -41
- package/lib/oh-story/skills/story-long-analyze/references/material-decomposition.md +0 -538
- package/lib/oh-story/skills/story-long-analyze/references/output-templates.md +0 -603
- package/lib/oh-story/skills/story-long-scan/references/scan-output-format.md +0 -207
- package/lib/oh-story/skills/story-short-analyze/references/output-templates.md +0 -561
- package/lib/video-recap/skills/video-assemble/scripts/jianying_schema.py +0 -98
- package/lib/video-recap/skills/video-recap/references/creative-editing-playbook.md +0 -225
- package/lib/video-recap/skills/video-recap/references/research-guide.md +0 -74
- package/lib/video-recap/skills/video-recap/references/timeline-and-jianying.md +0 -250
- package/lib/video-recap/skills/video-script/scripts/agent_brief.py +0 -399
- package/lib/video-recap/skills/video-script/scripts/brief_timeline.py +0 -327
- package/lib/video-recap/skills/video-script/scripts/narration.py +0 -12
- package/lib/video-recap/skills/video-understanding/scripts/brief_context.py +0 -348
- package/lib/video-recap/skills/video-understanding/scripts/brief_inputs.py +0 -290
- /package/lib/video-recap/skills/video-assemble/scripts/{jianying_tracks.py → jianying/tracks.py} +0 -0
- /package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_contract.py → qc/mimo_contract.py} +0 -0
- /package/lib/video-recap/skills/video-voiceover/scripts/{fish_audio.py → providers/fish_audio.py} +0 -0
|
@@ -11,8 +11,9 @@
|
|
|
11
11
|
7. 系列弧线与分集地图
|
|
12
12
|
8. 集间状态交接
|
|
13
13
|
9. 扩写、压缩与重排
|
|
14
|
-
10.
|
|
15
|
-
11.
|
|
14
|
+
10. 项目节奏档案
|
|
15
|
+
11. 合成示例
|
|
16
|
+
12. 失败征兆与审查问题
|
|
16
17
|
|
|
17
18
|
## 1. 分集的工作定义
|
|
18
19
|
|
|
@@ -67,9 +68,10 @@
|
|
|
67
68
|
|
|
68
69
|
钩子要连接本集目标。若开场刺激与后续无因果关系,它只是装饰。
|
|
69
70
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
71
|
+
**倒叙与结果预演**:任何题材都可以先给观众看一个后面的结果或高光,再回到造成它的决定,
|
|
72
|
+
只要它服务本集的钩子。两段要由同一人物、关系动作、道具或场所事实清楚相连,否则会像
|
|
73
|
+
无来源的预告片。用来解释眼前危机的闪回放在集中段更好用:开场先给危机,观众开始追问
|
|
74
|
+
「怎么会这样」时再闪回,闪回结束回到危机继续推。它是叙事选择,不是每集开场要求。
|
|
73
75
|
|
|
74
76
|
### 3.3 目标与反对力量
|
|
75
77
|
|
|
@@ -184,7 +186,9 @@ C 让状态 D 改变,迫使人物放弃旧策略或付出更大代价;
|
|
|
184
186
|
- **决定钩子**:人物必须现在选择,拖延本身也有代价;
|
|
185
187
|
- **信息钩子**:观众获得能重排现场意义的事实。
|
|
186
188
|
|
|
187
|
-
**`taste_option · STY-06
|
|
189
|
+
**`taste_option · STY-06`**:开场的气质可以安静、喜剧、亲密或激烈,可以延迟解释、让观众先知道或让角色先知道,
|
|
190
|
+
只要当前压力可感知并服务作品气质。首钩在第几秒出现、情绪触点隔多久一次不由这一条决定,
|
|
191
|
+
由[项目节奏档案](#10-项目节奏档案)里已接受的数值决定。
|
|
188
192
|
|
|
189
193
|
### 4.2 设计出去的压力
|
|
190
194
|
|
|
@@ -204,7 +208,7 @@ C 让状态 D 改变,迫使人物放弃旧策略或付出更大代价;
|
|
|
204
208
|
|
|
205
209
|
有些项目的观看契约里存在一个**门槛集**:观众要继续看下去,必须先付出一点额外代价——
|
|
206
210
|
解锁、跳转到另一个入口、等待,或完成某个平台动作。门槛是否存在、落在哪里,**由创作者
|
|
207
|
-
|
|
211
|
+
按项目声明**;本套件不假定任何平台规则,也不把门槛位置当作质量判据。
|
|
208
212
|
|
|
209
213
|
门槛不新增规则,它让本文件已有的三条**在这个位置收紧**——因为别处失手观众只是走神,
|
|
210
214
|
这里失手观众直接离开:
|
|
@@ -220,9 +224,56 @@ C 让状态 D 改变,迫使人物放弃旧策略或付出更大代价;
|
|
|
220
224
|
门槛集本身仍是普通一集:有自己的局部结果,出去的压力仍从本集结果长出。门槛只是给
|
|
221
225
|
"停在哪里"这个选择多加一层约束。
|
|
222
226
|
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
227
|
+
门槛的集号由创作者定,套件不提供默认值。创作者已经声明要设门槛、又请你建议落在哪一集时,
|
|
228
|
+
可以拿常见的经验区间作示例——第一道约在第 8–16 集,第二道约在第 25–30 集——再按本项目的
|
|
229
|
+
爽点分布挪动。没有声明门槛的项目不提这些区间。
|
|
230
|
+
|
|
231
|
+
门槛处怎么停:
|
|
232
|
+
|
|
233
|
+
- **停在揭晓的前一秒**:身份揭穿、重大抉择、表白、秘密揭晓都可以。把这次高潮劈成两半,
|
|
234
|
+
前一半在本集推到悬崖边,后一半留给门槛后的第一拍。本集自己的局部结果照样要先兑现,
|
|
235
|
+
停住的是下一次揭晓,不是这一集的结果。
|
|
236
|
+
- **钩子分台词钩与画面钩**:台词钩是一句没说完的问句或一句身份暗示;画面钩是一个做到一半的
|
|
237
|
+
动作——门推开一半、信封拆开一半。两种都要指向观众已经在等的那件事。
|
|
238
|
+
|
|
239
|
+
**`craft_default · STY-27`**:项目声明了门槛集时,把它安排在一次尚未兑现的爆发之前,停在
|
|
240
|
+
揭晓的前一秒,并确认门槛处的悬念只依赖观众已经建立起来的人物、规则与赌注。集号与是否设
|
|
241
|
+
门槛由创作者决定。
|
|
242
|
+
|
|
243
|
+
### 4.4 首集入口
|
|
244
|
+
|
|
245
|
+
第 1 集从危机或观众收益最强的一处开始,不从原著第一章或人物的日常开始。原著开篇常是
|
|
246
|
+
温吞的日常,照搬过来观众几秒就划走。定入口前至少比较三个候选:
|
|
247
|
+
|
|
248
|
+
- **时序入口**:按原顺序最早能成立的一处,作为对照;
|
|
249
|
+
- **收益入口**:观众在此处收益最强、同时能交代主角身份、危机与目标的一处。改编项目优先取
|
|
250
|
+
原著分析里的爽点表与开篇替换点;
|
|
251
|
+
- **冷开入口**:把后文一次高潮提前,先放它的最后一拍或揭晓前一秒,再回到起点追因。登记为
|
|
252
|
+
`cold_open`,补偿义务见 [改编重排](adaptation-craft.md#重排也要登记)。
|
|
253
|
+
|
|
254
|
+
每个候选写清两件事,用同一把尺子比:
|
|
255
|
+
|
|
256
|
+
- **开场第一帧观众看见什么**:写成一格画面,再写它让观众问出的那个问题。这个问题要不靠读屏幕
|
|
257
|
+
文字、不靠认识人物就成立;静止的画面也可以,只要它自己提出问题。
|
|
258
|
+
- **整集收益**:观众在这一集拿到什么,还缺什么信息,缺的在哪里补。
|
|
259
|
+
|
|
260
|
+
冷开常见的三条否决理由,多半是把冷开做成了兑现本身:
|
|
261
|
+
|
|
262
|
+
- 「观众还不认识这些人,看不懂」:冷开取的是冲突最尖的那一下,要的是一眼读得懂的处境——一群人
|
|
263
|
+
喊着要封号、一张被火光照亮的脸,不需要知道谁是谁;
|
|
264
|
+
- 「会把后面的兑现提前花掉」:取揭晓前一秒时答案留在原位;取最后一拍时只放结果的一个画面,
|
|
265
|
+
不放来龙去脉,观众追的是「怎么走到这一步」;
|
|
266
|
+
- 「同一拍会在集中段再演一遍」:开场给片段,回到原位时给完整的一场,观众得到的是认出来的快感,
|
|
267
|
+
不是重复。
|
|
268
|
+
|
|
269
|
+
三条都答不了,再按收益选别的入口。
|
|
270
|
+
|
|
271
|
+
第 1 集结束前,观众要知道主角是谁、他眼下被什么压着、他想要什么。大目标在观众刚认下主角时
|
|
272
|
+
就说出口,而且要具体到可核对的数字、期限或对象,之后再拆成阶段小目标。
|
|
273
|
+
|
|
274
|
+
**`craft_default · STY-25`**:定第 1 集入口前比较至少三个候选,其中一个是后文高潮提前的冷开;
|
|
275
|
+
每个候选写出开场第一帧观众看见的那一格画面和它提出的问题,再写整集收益;选开场画面自己就是
|
|
276
|
+
钩子、观众收益强、且能在集尾前交代身份、危机与目标的一处;大目标尽早说出口,具体到可核对。
|
|
226
277
|
|
|
227
278
|
## 5. 因果节拍与升级链
|
|
228
279
|
|
|
@@ -452,7 +503,39 @@ C 让状态 D 改变,迫使人物放弃旧策略或付出更大代价;
|
|
|
452
503
|
|
|
453
504
|
**`taste_option`**:单集长度、集数、每集镜头量级由创作者的格式与发行方案决定。
|
|
454
505
|
|
|
455
|
-
## 10.
|
|
506
|
+
## 10. 项目节奏档案
|
|
507
|
+
|
|
508
|
+
节奏数值不是套件级规则,是项目档案。本阶段按制作形态提出一份,创作者接受或改写后,
|
|
509
|
+
写进 `short-drama.json` 的 `creator_authority.rhythm_profile`。之后剧本、分镜与审查只拿
|
|
510
|
+
已接受的数值做算术核对;档案缺失、未接受,就是未声明,不核对。
|
|
511
|
+
|
|
512
|
+
提出时把候选档案写进创作简报「形式与制作边界」一节,`status` 写 `proposed`。创作者接受或
|
|
513
|
+
改写后,由 `$short-drama` 把它写入项目配置,状态变为 `accepted`。以后要改,同样走一次决策。
|
|
514
|
+
|
|
515
|
+
| 字段 | 含义 | AI 真人短剧起点 | 漫剧起点 |
|
|
516
|
+
|---|---|---|---|
|
|
517
|
+
| `form` | 制作形态 | `ai_live_action` | `motion_comic` |
|
|
518
|
+
| `first_hook_seconds` | 第一个钩子最迟在第几秒出现 | 5 | 5 |
|
|
519
|
+
| `beat_interval_seconds_max` | 相邻两个情绪触点(冲突台词、动作或新信息)之间最长隔几秒 | 30 | 30 |
|
|
520
|
+
| `opposed_reversals_per_episode_min` | 每集至少几次有具体对手参与的反转 | 1 | 1 |
|
|
521
|
+
| `end_on_peak` | 集尾停在峰值上直接收,不在峰值后再缓一段 | `true` | `true` |
|
|
522
|
+
| `reprise_previous_last_beat` | 下一集开头先接上一集最后一拍 | `true` | `true` |
|
|
523
|
+
| `vo_share_max` | `[VO]`(旁白与内心独白)占全集台词可发声字数的比例上限;`[OS]` 画外对白不算 | 0.3(未实测) | 0.3(未实测) |
|
|
524
|
+
| `target_avg_shot_seconds` | 目标平均镜长(秒) | 2.5 | 3.0(未实测) |
|
|
525
|
+
| `close_shot_share_min` | 近景类镜头——近景、特写、大特写与细节镜头——合计占全集镜头数的比例下限 | 0.45 | 0.45(未实测) |
|
|
526
|
+
| `first_major_payoff_by_episode` | 全书第一个大爽点最迟在第几集 | 1 | 1 |
|
|
527
|
+
|
|
528
|
+
真人列的镜长与近景类占比来自一组真人短剧的实测:平均镜长约 2.5 秒,特写加近景约占一半。首钩秒数
|
|
529
|
+
来自一组实测:5 部里有 3 部在前 5 秒内给出第一个钩子。触点间隔取「每 20–30 秒一个情绪触点」的
|
|
530
|
+
上沿。标「未实测」的是待校准的起点,没有测量依据。
|
|
531
|
+
|
|
532
|
+
这些是起点,不是质量线。靠旁白推进的解说漫可以把 `vo_share_max` 调高;生活流、留白多的
|
|
533
|
+
作品可以放宽触点间隔和镜长。改哪一项、为什么,写进创作简报交创作者决定。
|
|
534
|
+
|
|
535
|
+
**`craft_default · STY-26`**:按制作形态从上表起步提出项目节奏档案,交创作者接受或改写;
|
|
536
|
+
默认值只是起点,不是套件级门槛,未接受的档案不作为任何核对依据。
|
|
537
|
+
|
|
538
|
+
## 11. 合成示例
|
|
456
539
|
|
|
457
540
|
沿用一个全新虚构情境:一家共享厨房面临关停,排班员叶澄一直暗中调换灶位保护弱势摊主。
|
|
458
541
|
|
|
@@ -479,7 +562,7 @@ C 让状态 D 改变,迫使人物放弃旧策略或付出更大代价;
|
|
|
479
562
|
|
|
480
563
|
差别不在事件更多,而在前一选择改变了对手筹码,人物随后作出带代价的新选择。
|
|
481
564
|
|
|
482
|
-
##
|
|
565
|
+
## 12. 失败征兆与审查问题
|
|
483
566
|
|
|
484
567
|
### 失败征兆
|
|
485
568
|
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
- [职场与喜剧](#职场与喜剧用流程证明能力用反差制造笑点)
|
|
20
20
|
- [身份错位喜剧](#身份错位喜剧让外部任务逼身份作选择)
|
|
21
21
|
- [生活流与小人物](#生活流与小人物让小目标留下真实余波)
|
|
22
|
-
- [开场选择](
|
|
22
|
+
- [开场选择](#开场选择从观众最先拿到收益处进入)
|
|
23
23
|
- [钩子](#钩子要接着本集结果往下走)
|
|
24
24
|
- [制作难点](#提前写清制作难点)
|
|
25
25
|
- [审查问题](#审查问题)
|
|
@@ -53,6 +53,7 @@
|
|
|
53
53
|
| 古装 / 奇幻 / 婚恋 / 隐藏身份 | 礼制、阶序、阵营与公开选择限制关系 | 行为让隐藏地位或联盟获得新的公开解释 | 造型、随行层级、身份道具、入场方式、空间区域与知情者反应 | 奢华/寒酸形容词堆叠;突然报身份代替此前证据 | [古装权谋](genre-cards/古装权谋.md) / [仙侠修真](genre-cards/仙侠修真.md) / [豪门婚恋](genre-cards/豪门婚恋.md) / [破镜重圆](genre-cards/破镜重圆.md) |
|
|
54
54
|
| 职场 / 技术 / 轻喜剧 | 一个日常工作疏漏造成越来越具体的后果 | 别人能当场核对的修复结果,随后角色地位改变 | 必须照抄的技术名称、操作顺序、核对点、屏幕/设备状态与见证更新 | 同事先夸“天才”;通用屏幕特写;人人同一惊讶反应 | [职场喜剧](genre-cards/职场喜剧.md) |
|
|
55
55
|
| 复仇 / 权力反转 | 对手拥有真实手段,主角以证据、联盟或能力改变实际权力 | 一项旧权力失效并产生后果,而非只获得口头认可 | 证据链、公开场合、对手反制、受影响者的反应与代价 | 重复受辱—亮牌;身份揭示不改变任何人的行动空间 | [复仇打脸](genre-cards/复仇打脸.md) |
|
|
56
|
+
| 逆袭 / 系统流 / 重生穿越(爽文) | 对手的轻视或压迫当众落地,主角手里有对手看不见的底牌 | 奖励兑现或当众打脸,旁观者改口也算 | 对手当众做过的事、见证者分区、奖励的可见数值(屏显交给后期) | 奖励换成焦虑;删掉喜剧反应;第一次打脸拖到很多集后 | [逆袭](genre-cards/逆袭.md) / [系统流](genre-cards/系统流.md) / [重生穿越](genre-cards/重生穿越.md) |
|
|
56
57
|
| 动作 / 任务 / 冒险 | 地理、资源、时间与对手学习共同收窄可行路径 | 完成一个阶段目标并留下伤势、损耗、暴露或路线变化 | 轴线、出入口、距离、持物、能力边界、伤势与交接 | 动作更大但任务状态不变;同一镜承担过多力学阶段 | [动作任务](genre-cards/动作任务.md) |
|
|
57
58
|
| 身份错位 / 身体互换喜剧 | 外部任务迫使人物用不合身的身份、身体或权限解决现实问题 | 任务状态先改变,再让身份误读带来关系或地位余波 | 当前身份占用、别人如何识别、身体能力边界与多主体位置 | 设定梗不断重复,任务和人物策略没有进展 | [身份错位](genre-cards/身份错位.md) |
|
|
58
59
|
| 生活流 / 小人物 / 都市温情 | 一个具体小目标被来客、误会、匮乏或照料义务打断 | 小事被实际完成、放弃或重新理解,关系留下轻微但可见变化 | 日常物件、距离、手部选择、环境节奏与留白 | 套用真人爽剧的密集大特写和公开翻盘,压扁生活质地 | [生活流](genre-cards/生活流.md) |
|
|
@@ -178,18 +179,21 @@
|
|
|
178
179
|
公开打脸、身份宣告或每段都升高音量。二维漫剧可以利用 hold pose、局部循环、环境声和
|
|
179
180
|
留白承接余韵,不要把真人爽剧的密集大特写、眼部推进和群体震惊当成提速办法。
|
|
180
181
|
|
|
181
|
-
##
|
|
182
|
+
## 开场选择:从观众最先拿到收益处进入
|
|
182
183
|
|
|
183
|
-
|
|
184
|
+
首钩最迟在第几秒出现,由已接受的[项目节奏档案](episode-design.md#10-项目节奏档案)决定;
|
|
185
|
+
这里不规定景别。第 1 集的入口按[首集入口](episode-design.md#44-首集入口)至少比较三个,
|
|
186
|
+
包括一个冷开;下面是常见的入口形态:
|
|
184
187
|
|
|
188
|
+
- 危机已经爆发,或一次打脸、奇观、反转正在发生;
|
|
185
189
|
- 人物正在使用惯常办法,异常结果让这套办法开始带来损失;
|
|
186
190
|
- 日常仪式出现一个会改变人物处境的小错误;
|
|
187
191
|
- 一个关系请求同时触碰双方不能兼得的义务;
|
|
188
192
|
- 已经发生的后果通过一件看得见的东西或行动再次出现;
|
|
189
193
|
- 观众比角色多知道一条会影响下一步的事实,或少知道一条必须追问的原因。
|
|
190
194
|
|
|
191
|
-
|
|
192
|
-
|
|
195
|
+
开场的气质可以安静、喜剧化、亲密或激烈;无论哪种,观众都要很快感到压力,并看见一个
|
|
196
|
+
还没解决的问题。前史与切入窗口见
|
|
193
197
|
[serial-character-and-memory.md](serial-character-and-memory.md)。
|
|
194
198
|
|
|
195
199
|
## 钩子要接着本集结果往下走
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
---
|
|
2
|
+
genre: 系统流
|
|
3
|
+
aliases: [系统流, 系统, 金手指, 任务奖励, 签到, 面板升级, 积分兑换]
|
|
4
|
+
form: 竖屏连续短剧
|
|
5
|
+
confidence: medium
|
|
6
|
+
basis: 套件既有工艺文件与短剧写作经验归纳
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# 系统流题材卡
|
|
10
|
+
|
|
11
|
+
## 题材核心与观众为什么看
|
|
12
|
+
|
|
13
|
+
观众看的是**奖励一笔一笔到账,以及看不起主角的人一个一个被迫改口**。奖励先行:系统上线的那一集就要兑现第一笔,观众先尝到甜头,才会追着看下一笔怎么来。系统是外部授权的能力,它的契约、边界与可靠性按 [premise-devices.md](../premise-devices.md) 写;本卡只管观众契约。
|
|
14
|
+
|
|
15
|
+
## 压力来源与冲突发动机
|
|
16
|
+
|
|
17
|
+
压力主要来自对手,不来自系统的代价。对手的压迫要落成一件当众做过的事:在群里带头举报、当面把申请表推回来、公开断言「不好看就别回来」。压迫越具体,打脸落下时的高度差越大。改编时对手优先取原著人物;原著此处没有时按 STY-30 登记新增并交创作者。系统任务的时限与失败后果是第二层压力,按契约披露,不要写成一条替代爽感的焦虑条款。发动机:对手按表面判断下注,主角手里有对手看不见的底牌,结果当众揭晓。
|
|
18
|
+
|
|
19
|
+
## 人物策略与信息权限
|
|
20
|
+
|
|
21
|
+
只有主角知道面板,这个信息差就是打脸的来源:别人按他们看见的下注,观众按面板下注。主角可以对系统碎嘴、吐槽、讨价还价,这些喜剧反应是题材的一部分,改编时保留,不要删成一脸凝重。系统给选项,主角做选择;每次都照做的主角会退化成执行者。
|
|
22
|
+
|
|
23
|
+
## 观众回报与情绪落点
|
|
24
|
+
|
|
25
|
+
回报有两层,同集给:**奖励兑现**(能看见的数:到账、涨粉、名次、证书)和**打脸**(有人当众改口、道歉、表态,或对手当场吃瘪)。打脸可以由旁观者完成——评论区集体改口、一直沉默的前辈站出来——收益同样落在观众身上。情绪落点就是赢,而且赢得痛快;不必用一条新的代价把它冲淡。
|
|
26
|
+
|
|
27
|
+
## 常见场面颗粒
|
|
28
|
+
|
|
29
|
+
面板弹出与数值跳动、奖励清单、任务倒计时、群聊刷屏、评论区翻转、粉丝数或到账提示、被推回又被抢着要回的文件、对手接到的一通电话、围观者掏出手机。动作层面:主角对着空气小声吐槽、对手笑容僵住、有人默默删掉自己刚发的那条。见证者按「能做什么」分区:能拍板的、会改口的、只会围观的。
|
|
30
|
+
|
|
31
|
+
## 集尾钩子取向
|
|
32
|
+
|
|
33
|
+
新任务弹出且奖励更大;离大目标还差一个具体的数;对手换了更狠的手段;刚到账的奖励引来新的眼红者。不成立的替代品:系统无缘无故宣布惩罚;把上集的奖励再报一遍。
|
|
34
|
+
|
|
35
|
+
## 前中后期打法
|
|
36
|
+
|
|
37
|
+
- **前期**:第 1 集内系统上线、兑现第一笔奖励、完成第一次打脸;大目标是可核对的数字或期限。打脸与反转隔多久一次、下一集怎样接上一集,按已接受的[项目节奏档案](../episode-design.md#10-项目节奏档案)。
|
|
38
|
+
- **中期**:对手学会了——换渠道、找更大的靠山、针对主角的规律设局;奖励越大,任务越难,主角开始要在两个奖励之间选。
|
|
39
|
+
- **后期**:系统本身的来历或规则成为新的问题;结局气质由创作者决定。
|
|
40
|
+
|
|
41
|
+
## 制作难点
|
|
42
|
+
|
|
43
|
+
面板是后期 UI 或字幕:生成画面里不写面板文字,只拍主角看向面板的视线与反应,并留出面板出现的位置;面板上的数值与剧本逐字一致,由后期叠加。系统语音与面板不要逐字重复:一个给条款,一个给数值。群聊、评论区是低成本的见证者,同样按后期叠加处理。
|
|
44
|
+
|
|
45
|
+
## 禁止漂移
|
|
46
|
+
|
|
47
|
+
不要把奖励换成一条焦虑条款;不要删掉主角对系统的吐槽与喜剧反应;不要让对手只会嘴上看不起而没有当众做过的事;不要让系统替主角做决定;不要为救场临时给系统加能力。
|
|
48
|
+
|
|
49
|
+
## 证据与置信度
|
|
50
|
+
|
|
51
|
+
本卡不来自抽样统计或任何真实作品,全部例子为合成虚构。它由本套件既有工艺文件([premise-devices.md](../premise-devices.md)、[story-craft.md](../story-craft.md)、[episode-design.md](../episode-design.md))和短剧写作经验归纳而成。置信度:**中**,指这些做法尚未在套件内被多处交叉印证,不指任何测量结果。与创作者已接受的事实或单集契约冲突时,以后者为准。
|
package/lib/drama/skills/short-drama-develop/references/genre-cards//351/200/206/350/242/255.md
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
---
|
|
2
|
+
genre: 逆袭
|
|
3
|
+
aliases: [逆袭, 废柴逆袭, 草根崛起, 被看不起, 一鸣惊人, 越级]
|
|
4
|
+
form: 竖屏连续短剧
|
|
5
|
+
confidence: medium
|
|
6
|
+
basis: 套件既有工艺文件与短剧写作经验归纳
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# 逆袭题材卡
|
|
10
|
+
|
|
11
|
+
## 题材核心与观众为什么看
|
|
12
|
+
|
|
13
|
+
观众看的是**被看不起的人当众证明自己,看不起他的人被迫改口**。它和复仇打脸的区别在账本:复仇清算的是一次具体的剥夺,逆袭要翻的是「看不起」本身。所以轻视必须被写成看得见的动作,观众才有一笔可以等着翻的账。
|
|
14
|
+
|
|
15
|
+
## 压力来源与冲突发动机
|
|
16
|
+
|
|
17
|
+
对手或群体的轻视要落成一件当众做过的事:一句断言、一次拒绝、一张被推回的申请、一场公开的嘲笑。只会嘴上看不起的对手撑不起落差。改编时对手优先取原著人物;原著此处没有时按 STY-30 登记新增并交创作者。发动机:众人按表面下注,主角手里有观众知道、他们不知道的底牌,结果在有人见证的场合揭晓。
|
|
18
|
+
|
|
19
|
+
## 人物策略与信息权限
|
|
20
|
+
|
|
21
|
+
常见策略:先不辩解,直接拿出结果;让结果被第三方当场核对;把私下的轻视引到公开场合裁决。信息权限要写清谁已经看出主角的本事、谁还在押反方向、谁会第一个改口。主角面对轻视时的吐槽和反差喜剧是题材的一部分,改编时保留。
|
|
22
|
+
|
|
23
|
+
## 观众回报与情绪落点
|
|
24
|
+
|
|
25
|
+
回报是**当众的落差**:押反方向的人当场改口、道歉、表态,对手的笑容僵住。打脸可以由旁观者完成,群体集体改口本身就是兑现。情绪落点就是赢得痛快,不必每次都找一个代价冲淡它。
|
|
26
|
+
|
|
27
|
+
## 常见场面颗粒
|
|
28
|
+
|
|
29
|
+
被推回的申请表、公开的排名或榜单、群聊与评论区、试用或试演的现场、被当众撕掉又被抢着捡起的东西、裁判或前辈的一句表态、对手打出又没人接的电话。见证者按「能做什么」分区:能拍板的、会改口的、只看热闹的。
|
|
30
|
+
|
|
31
|
+
## 集尾钩子取向
|
|
32
|
+
|
|
33
|
+
更大的舞台向主角打开,也带来更强的对手;刚改口的人转头去找更狠的办法;离大目标还差一个具体的数。不成立的替代品:领导突然宣布提拔;所有人同时鼓掌。
|
|
34
|
+
|
|
35
|
+
## 前中后期打法
|
|
36
|
+
|
|
37
|
+
- **前期**:第 1 集就立起一次具体的轻视,并在同集兑现第一次打脸;大目标具体到可核对的数字、期限或对象。打脸与反转隔多久一次、下一集怎样接上一集,按已接受的[项目节奏档案](../episode-design.md#10-项目节奏档案)。
|
|
38
|
+
- **中期**:对手学会了,开始针对主角的规律设局;成功带来更高的舞台,也带来更具体的压迫。
|
|
39
|
+
- **后期**:主角要在守住已经赢到的位置和冒险去拿更大的之间选;结局气质由创作者决定。
|
|
40
|
+
|
|
41
|
+
## 制作难点
|
|
42
|
+
|
|
43
|
+
公开见证的场合成本最高,可以用群聊、评论区、榜单这类低成本见证者替代一部分群演;屏幕上的文字按后期叠加处理。群体反应按职责分区,避免全员同一个表情。
|
|
44
|
+
|
|
45
|
+
## 禁止漂移
|
|
46
|
+
|
|
47
|
+
不要把第一次打脸拖到很多集之后;不要让对手只会嘴上看不起;不要把喜剧反应和吐槽删成一脸凝重;不要用一条焦虑条款替代赢的痛快;不要用「报出头衔」代替当众可核对的结果。
|
|
48
|
+
|
|
49
|
+
## 证据与置信度
|
|
50
|
+
|
|
51
|
+
本卡不来自抽样统计或任何真实作品,全部例子为合成虚构。它由本套件既有工艺文件([story-craft.md](../story-craft.md)、[episode-design.md](../episode-design.md)、[genre-and-hook-playbook.md](../genre-and-hook-playbook.md))和短剧写作经验归纳而成。置信度:**中**,指这些做法尚未在套件内被多处交叉印证,不指任何测量结果。与创作者已接受的事实或单集契约冲突时,以后者为准。
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
---
|
|
2
|
+
genre: 重生穿越
|
|
3
|
+
aliases: [重生, 穿越, 前世复仇, 改命, 带着记忆重来, 穿书, 未卜先知]
|
|
4
|
+
form: 竖屏连续短剧
|
|
5
|
+
confidence: medium
|
|
6
|
+
basis: 套件既有工艺文件与短剧写作经验归纳
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# 重生穿越题材卡
|
|
10
|
+
|
|
11
|
+
## 题材核心与观众为什么看
|
|
12
|
+
|
|
13
|
+
观众看的是**主角带着上一世的教训回来,把这一世的第一笔账当场翻过来**。重来一次的记忆是先知型装置,它的切法、起点与观众知情档位按 [premise-devices.md](../premise-devices.md) 写;本卡只管观众契约:第 1 集就要兑现第一次打脸,不把翻盘留到很多集之后。
|
|
14
|
+
|
|
15
|
+
## 压力来源与冲突发动机
|
|
16
|
+
|
|
17
|
+
对手还是上一世害过主角的那些人,而且此刻还不知道主角已经变了。压迫要落成一件当众做过的事:泼酒、抢位、当着众人翻旧账。改编时对手优先取原著人物;原著此处没有时按 STY-30 登记新增并交创作者。发动机:对手按老剧本出手,主角已经知道这一步,观众等着看他怎么接。
|
|
18
|
+
|
|
19
|
+
## 人物策略与信息权限
|
|
20
|
+
|
|
21
|
+
主角知道「会发生什么」,对手不知道主角知道。主角的常用打法是抢在对手前面一步,或者原样奉还——用对手刚用过的手段、刚说过的借口回敬。内心独白能换成动作加一句台词的就换,大段「我重生了」的独白压缩成两句。
|
|
22
|
+
|
|
23
|
+
## 观众回报与情绪落点
|
|
24
|
+
|
|
25
|
+
回报是**上一世的屈辱在这一世被原样翻过来**:同一个场合、同一类手段,这次落在对手身上。集尾可以用一句复刻对手台词的金句收,也可以用一句内心独白揭开新的信息反转。
|
|
26
|
+
|
|
27
|
+
## 常见场面颗粒
|
|
28
|
+
|
|
29
|
+
镜子、醒来时的旧房间、日历或手机上的日期、上一世没躲过的那杯酒、被抢走又拿回来的座位、旁人压低声音的闲话、一件上一世丢失的物件、年份字幕卡。见证者按「能做什么」分区:会站队的、会传话的、只看热闹的。
|
|
30
|
+
|
|
31
|
+
## 集尾钩子取向
|
|
32
|
+
|
|
33
|
+
对手察觉主角不对劲并开始试探;记忆里的下一步提前或变样;一条内心独白揭出观众还不知道的前世细节。不成立的替代品:陌生人突然宣布身世;把前世惨死再放一遍。
|
|
34
|
+
|
|
35
|
+
## 前中后期打法
|
|
36
|
+
|
|
37
|
+
- **前期**:可用的开场模板——前世高光与惨死约 30 秒 → 醒来,字幕卡交代年份 → 两句内心独白加一次照镜子交代重来 → 旁人闲话交代这一世的身份 → 第 1 集内兑现第一次打脸,例如对手当众泼来一杯酒,主角反手泼回,用对手自己的借口回敬。打脸与反转隔多久一次、下一集怎样接上一集,按已接受的[项目节奏档案](../episode-design.md#10-项目节奏档案)。
|
|
38
|
+
- **中期**:时间线开始偏离记忆,主角的先知越来越不可靠,必须靠这一世新建立的关系与能力。
|
|
39
|
+
- **后期**:上一世的真相或最初那次失去以新形式回来;结局气质由创作者决定。
|
|
40
|
+
|
|
41
|
+
## 制作难点
|
|
42
|
+
|
|
43
|
+
前世与今生是两套造型、场景和状态,资产量会翻倍:前世段尽量压短,能用今生的一件物件承担的就不新建场景。闪回每次控制在三行剧本以内,放在需要解释眼前危机的位置。年份字幕卡和人物名牌交给后期。
|
|
44
|
+
|
|
45
|
+
## 禁止漂移
|
|
46
|
+
|
|
47
|
+
不要从日常开篇、把第一次打脸拖到很多集之后;不要用大段内心独白代替动作;不要让对手不学习、每集都按上一世的老剧本出手;不要让记忆每次都精确命中,那会抽空阻力。
|
|
48
|
+
|
|
49
|
+
## 证据与置信度
|
|
50
|
+
|
|
51
|
+
本卡不来自抽样统计或任何真实作品,全部例子为合成虚构。它由本套件既有工艺文件([premise-devices.md](../premise-devices.md)、[episode-design.md](../episode-design.md)、[reveal-reversal-payoff.md](../reveal-reversal-payoff.md))和短剧写作经验归纳而成。置信度:**中**,指这些做法尚未在套件内被多处交叉印证,不指任何测量结果。与创作者已接受的事实或单集契约冲突时,以后者为准。
|
|
@@ -47,7 +47,10 @@
|
|
|
47
47
|
|
|
48
48
|
| 题材 | 别名与匹配词 | 题材卡 | 置信度 |
|
|
49
49
|
|---|---|---|---|
|
|
50
|
-
| 复仇打脸 | 复仇 / 打脸 /
|
|
50
|
+
| 复仇打脸 | 复仇 / 打脸 / 权力反转 / 扮猪吃虎 / 隐藏身份归来 / 清算 | [复仇打脸](genre-cards/复仇打脸.md) | 高 |
|
|
51
|
+
| 逆袭 | 逆袭 / 废柴逆袭 / 草根崛起 / 被看不起 / 一鸣惊人 / 越级 | [逆袭](genre-cards/逆袭.md) | 中 |
|
|
52
|
+
| 系统流 | 系统 / 金手指 / 任务奖励 / 签到 / 面板升级 / 积分兑换 | [系统流](genre-cards/系统流.md) | 中 |
|
|
53
|
+
| 重生穿越 | 重生 / 穿越 / 前世复仇 / 改命 / 穿书 / 未卜先知 | [重生穿越](genre-cards/重生穿越.md) | 中 |
|
|
51
54
|
| 古装权谋 | 古装 / 权谋 / 朝堂 / 宅斗 / 宫廷 / 门第 / 礼制身份戏 | [古装权谋](genre-cards/古装权谋.md) | 高 |
|
|
52
55
|
| 悬疑规则 | 悬疑 / 规则怪谈 / 规则恐怖 / 惊悚 / 生存 / 密室 / 灵异 | [悬疑规则](genre-cards/悬疑规则.md) | 高 |
|
|
53
56
|
| 家庭关系 | 家庭 / 亲情 / 婆媳 / 姐弟 / 照护 / 伦理 / 代际冲突 | [家庭关系](genre-cards/家庭关系.md) | 高 |
|
|
@@ -72,17 +75,17 @@
|
|
|
72
75
|
一个要公开场合与群演,另一个要封闭空间与状态连续性时,成本会叠加而不是平均。
|
|
73
76
|
- 同一题材词可以由完全不同的机制驱动。"悬疑"可以是空间规则、关系谎言或技术证据;
|
|
74
77
|
"婚恋"可以走互助、权力不对等或身份冲突。卡片只在机制相符时才适用。
|
|
75
|
-
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
本表不为装置新增条目。
|
|
78
|
+
- **前提装置和题材是两层**。 "主角重来一世""主角获得一套外部规则"这类设定叠加在题材
|
|
79
|
+
之上,决定主角比别人多拥有什么。装置装在婚恋、宅斗或修真上时,照常取那个主题材的卡;
|
|
80
|
+
观众就是冲着装置带来的奖励与打脸来看的爽文,主题材卡取系统流或重生穿越。两种情况都
|
|
81
|
+
另读 [premise-devices.md](premise-devices.md) 校准装置那一层。
|
|
80
82
|
|
|
81
83
|
## 不要把卡片写成硬规则
|
|
82
84
|
|
|
83
85
|
卡片里的任何内容都不是质量门槛。以下几项尤其不能被当成评分标准或校验规则:
|
|
84
86
|
|
|
85
|
-
-
|
|
87
|
+
- **节拍数量**:卡片不规定"每集几个转折""几秒一个钩子"。这些数值住在项目节奏档案里,由
|
|
88
|
+
创作者接受后才生效,见 [episode-design.md](episode-design.md#10-项目节奏档案)。
|
|
86
89
|
- **字数与篇幅比例**:不规定单集字数、场景数量、场均时长或分幕比例。
|
|
87
90
|
- **台词比例与句式**:不规定对白占比、句长、语气词、倒装或任何句式模板。
|
|
88
91
|
- **钩子类型轮换**:连续几集使用相似的收尾方式不自动构成缺陷;要看它们是否改变了不同状态。
|
|
@@ -21,8 +21,9 @@
|
|
|
21
21
|
- **装置**回答"主角凭什么在这个世界里有别人没有的余地",决定信息与能力的分配。
|
|
22
22
|
|
|
23
23
|
同一个装置可以装在完全不同的题材上:带着前世记忆去打商战、去宅斗、去修真、去修补一段
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
关系,是四件不同的事。所以不要因为出现了装置就跳过题材卡——先按
|
|
25
|
+
[genre-cards.md](genre-cards.md) 取主题材那一张(爽文怎么取也写在那里),再用本文校准
|
|
26
|
+
装置那一层。
|
|
26
27
|
|
|
27
28
|
若创作者的设定里没有这类外来优势,本文整篇不适用,不要为了"更有卖点"而加装置。
|
|
28
29
|
|
|
@@ -42,8 +43,9 @@
|
|
|
42
43
|
4. **规则通胀**:写不下去时给装置加新能力或新条款救场。每加一次,先前所有段落的紧张
|
|
43
44
|
感都被追溯性地削弱。
|
|
44
45
|
|
|
45
|
-
|
|
46
|
-
|
|
46
|
+
对应的共同解法是**给装置装上边界**。装置能做什么要写清楚,不能做什么要同样清楚。补回
|
|
47
|
+
阻力的有两处:边界本身产生的可见代价,或对手的压迫。多数题材两样都要;爽文里阻力主要由
|
|
48
|
+
对手承担,见[代价与对手压迫](#代价与对手压迫)。
|
|
47
49
|
|
|
48
50
|
### 两层必须分开:创作者契约与剧中披露
|
|
49
51
|
|
|
@@ -144,11 +146,14 @@
|
|
|
144
146
|
规则时,要么它在契约里本就标为不可靠并已埋线索,要么按冲突处理。装置规则的对账走铺垫
|
|
145
147
|
债务台账,与其他已接受事实一起被引用。
|
|
146
148
|
|
|
147
|
-
###
|
|
149
|
+
### 代价与对手压迫
|
|
148
150
|
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
151
|
+
靠代价制造张力的题材里,无代价的能力等于没有装置。代价要落在**观众看得见、且主角在意的
|
|
152
|
+
东西**上:时间、身体状态、关系、名声、只能用一次的机会、下一次使用的可用性。写成"消耗
|
|
153
|
+
精神力"这类不可见量,等于没有代价——除消耗之外还要有可见后果。
|
|
154
|
+
|
|
155
|
+
系统流、重生穿越这类爽文,观众要的是奖励兑现和打脸,张力主要来自对手:奖励可以先到,代价
|
|
156
|
+
可以很轻,甚至只是下一个任务更难。对手的压迫怎样写足,见对应的[题材卡](genre-cards.md)。
|
|
152
157
|
|
|
153
158
|
### 装置不替主角做决定
|
|
154
159
|
|
|
@@ -206,6 +211,7 @@
|
|
|
206
211
|
9. 先知型:观众信息权限选了哪一档,全剧是否保持一致?
|
|
207
212
|
10. 授权型:已披露的每条规则,在你还没写的高潮段里是否仍然成立?
|
|
208
213
|
11. 授权型:若设计了不可靠宣告,契约里是否标明,并已埋下可回看的线索?
|
|
209
|
-
12.
|
|
214
|
+
12. 授权型:张力由代价还是对手承担?靠代价的,代价是否可见、是否落在主角在意的东西上、
|
|
215
|
+
是否有除消耗之外的后果;靠对手的,压迫是否具体到当众做过的事?
|
|
210
216
|
13. 授权型:装置是提出选项,还是替主角做了决定?
|
|
211
217
|
14. 授权型:用了屏显载体吗?可读文字义务是否已经交代,且没有与无字策略并存?
|
|
@@ -56,8 +56,9 @@
|
|
|
56
56
|
4. 本集可以先完成一个局部行动,而不是只负责介绍世界;
|
|
57
57
|
5. 切得更早会变成准备工作,切得更晚会失去关键选择。
|
|
58
58
|
|
|
59
|
-
**`craft_default · STY-11
|
|
60
|
-
|
|
59
|
+
**`craft_default · STY-11`**:先建立与当前冲突有关的前史储备,再从压力已经启动的时刻切入;
|
|
60
|
+
旧策略开始付出代价的时刻是一个候选,第 1 集还要与收益入口和冷开比较(见
|
|
61
|
+
[首集入口](episode-design.md#44-首集入口))。只释放本场行动需要的证据,其余继续留在储备中。
|
|
61
62
|
|
|
62
63
|
开场安静或激烈都是 `taste_option`。钩子不是音量,而是观众能察觉的未闭合因果:
|
|
63
64
|
一个人为何提前锁门、一个熟人为何不用旧称呼、一个日常物件为何出现在错误位置。
|
|
@@ -43,14 +43,15 @@
|
|
|
43
43
|
不要用“加一句风格前缀”处理形态差异。前缀只改变检索标签;形态改变的是**必须出现和
|
|
44
44
|
可以省略的字段**,只有后者会被执行,也只有后者能被审查。
|
|
45
45
|
|
|
46
|
-
|
|
46
|
+
本阶段要向形态决定问四件事,答案写进创作简报,不写进剧本:
|
|
47
47
|
|
|
48
48
|
- **叙事职责**:这种形态要帮观众更快看懂什么、感到什么——不能只写“高级”“电影感”。
|
|
49
49
|
- **运动预算**:哪些段落必须全动作,哪些可以靠保持姿态、局部循环、视差或剪辑完成。
|
|
50
50
|
这直接决定分集地图里哪些场面写得起、哪些要换写法。
|
|
51
51
|
- **未决试验**:哪些形态能力还没验证过,需要先做小样。
|
|
52
|
+
- **节奏起点**:这种形态的项目节奏档案从哪组默认值起步(`STY-26`)。
|
|
52
53
|
|
|
53
|
-
|
|
54
|
+
本阶段新增:叙事职责、形态假设、运动预算、未决试验与节奏档案候选。不产出形、材质、光或镜头层字段。
|
|
54
55
|
|
|
55
56
|
## 本阶段规则
|
|
56
57
|
|
|
@@ -63,12 +64,12 @@
|
|
|
63
64
|
| STY-03 | reviewed_invariant | A beat/episode escalation must change a story state rather than repeat the same pressure louder. |
|
|
64
65
|
| STY-04 | craft_default | Enter with pressure active and deliver part of the promised payoff before the outgoing hook. |
|
|
65
66
|
| STY-05 | structural_invariant | Incoming/setup/payoff references resolve to known records or are explicitly unresolved. |
|
|
66
|
-
| STY-06 | taste_option | Hook, arc shape, episode count, and climax position follow the creator's format. |
|
|
67
|
-
| STY-07 | reviewed_invariant | Character/scene merges preserve dramatic function, knowledge permissions, relationship position, and causal bridges. |
|
|
67
|
+
| STY-06 | taste_option | Hook form, arc shape, episode count, and climax position follow the creator's format; how many seconds before the first hook and between emotional beats comes from the accepted rhythm profile, not from this rule. |
|
|
68
|
+
| STY-07 | reviewed_invariant | Every adaptation treatment—merge, carrier change, compression, reordering, or addition—preserves each core source character's stance toward the protagonist and way of acting, the core relationships, and the main line, and contradicts no source fact, unless the creator has accepted that change; a proposed change of stance or relationship keeps its actual disposition, names the change in `lost_or_changed`, and stays at `creator_acceptance.status` `pending` until then. Character/scene merges also preserve dramatic function, knowledge permissions, relationship position, and causal bridges. |
|
|
68
69
|
| STY-08 | craft_default | Translate exposition through consequential behavior, evidence, spatial pressure, or dialogue strategy before adding neutral explanation. |
|
|
69
70
|
| STY-09 | reviewed_invariant | A reveal/reversal grows from established facts and changes a plan, explanation, relationship, or costly choice. |
|
|
70
71
|
| STY-10 | craft_default | Establish the recurring-payoff promise once the opening pressure makes it legible; an opening may imply, delay, or state it according to genre and creator intent. Plan each outgoing hook from the episode's local result rather than repeating a type by quota. |
|
|
71
|
-
| STY-11 | craft_default | Build only the prior-world reservoir needed to predict present choices, then enter where an established strategy begins to create visible cost. |
|
|
72
|
+
| STY-11 | craft_default | Build only the prior-world reservoir needed to predict present choices, then enter where pressure is already active; the moment an established strategy begins to create visible cost is one candidate, weighed for the first episode against the payoff and cold-open entries of STY-25. |
|
|
72
73
|
| STY-12 | reviewed_invariant | Claimed character progression cites a pressure test, choice or retreat, local result, cost, and changed visible strategy. It is recorded once per character in the story engine, not restated in every episode record; the episode carries only the local result and the outgoing pressure it produced. |
|
|
73
74
|
| STY-13 | reviewed_invariant | Each episode produces a local dramatic result before its outgoing hook; serialization cannot rely only on pausing an unfinished action. |
|
|
74
75
|
| STY-14 | craft_default | Maintain compact serial memory for character strategy/state, relationships, information permissions, setup debt, rhythm, and exact handoff. |
|
|
@@ -79,9 +80,15 @@
|
|
|
79
80
|
| STY-19 | craft_default | For a multi-episode source, the Agent chooses each batch from this file's measured episode spans, semantic complexity, and available context, then reads only the current slices and compact accepted handoff; no fixed episode quota substitutes for that judgment. |
|
|
80
81
|
| STY-20 | craft_default | Name each unit's repeating mechanism, the payoff the audience can expect from every run of it, and the condition under which the loop ends; the first run demonstrates the mechanism in full so later runs pay off on recognition, and each further run changes the opponent's knowledge, the execution difficulty, the mechanism's scope, who is now aware, or which retreat is closed. |
|
|
81
82
|
| STY-21 | craft_default | Retire a loop deliberately—close it, remake one of its premises, or hand it to another character—before opening the next one, and carry the stake, deadline, and exit cost forward instead of rebuilding urgency from zero; a new loop opened alongside an unsettled one weakens both. |
|
|
82
|
-
| STY-22 | craft_default | When returning to a long source for detail while writing downstream, retrieve with an event anchor—character plus place/object plus the current action or conflict—rather than a recurring concept term; read back the matched span instead of writing from the search summary; and before use, check the excerpt's knowledge state against the episode's entry state, treating anything ahead of it as reference only. Recall fills in detail for an accepted contract
|
|
83
|
-
| STY-23 | reviewed_invariant | A source fact the brief registers as unchangeable is either realized on screen inside the episodes this round covers—named in the episode record and present in that episode's screenplay—or explicitly deferred to a named episode. A visible carrier an episode record declares must actually appear in that episode's screenplay; a carrier that only works as a comparison needs both of its halves staged. Registering a fact is not paying it off. The suite runs no mechanical check for this; the reviewer cites the brief and the episode record against the screenplay. |
|
|
83
|
+
| STY-22 | craft_default | When returning to a long source for detail while writing downstream, retrieve with an event anchor—character plus place/object plus the current action or conflict—rather than a recurring concept term; read back the matched span instead of writing from the search summary; and before use, check the excerpt's knowledge state against the episode's entry state, treating anything ahead of it as reference only. Recall fills in detail for an accepted contract; pulling a later source beat forward is legitimate adaptation, done as a `move_earlier` or `cold_open` revision of the episode map rather than while writing an episode. |
|
|
84
|
+
| STY-23 | reviewed_invariant | A source fact the brief registers as unchangeable is either realized on screen inside the episodes this round covers—named in the episode record and present in that episode's screenplay—or explicitly deferred to a named episode. A visible carrier an episode record declares must actually appear in that episode's screenplay; a carrier that only works as a comparison needs both of its halves staged. Registering a fact is not paying it off. World-setting facts in particular may be deferred to the episode where they first change a choice; the first episode owes only the rules its own conflict uses. The suite runs no mechanical check for this; the reviewer cites the brief and the episode record against the screenplay. |
|
|
84
85
|
| STY-24 | reviewed_invariant | Each episode's directional turn and its payoff inside that episode name one concrete visible action -- who did what -- rather than only the function or state change it achieves; an opposing force's leverage is likewise written as something it has done or will do. The suite runs no mechanical check; the reviewer cites the function against the visible action that carries it, and a function with no such action is the defect. It does not require a full scene. |
|
|
86
|
+
| STY-25 | craft_default | Choose the first episode's entry from at least three candidates, one of which moves a later climax forward as a cold open. Score every candidate on the same two counts: the single image the viewer sees in the opening frame and the question it raises on its own, without reading on-screen text or knowing who anyone is; and the episode's payoff. Prefer an entry whose opening image is itself a hook, with a strong payoff, that lets the episode establish the protagonist's identity, crisis and goal before it ends, and state the big goal early and concretely enough to check. |
|
|
87
|
+
| STY-26 | craft_default | Propose a project rhythm profile (`creator_authority.rhythm_profile`) from the production form, starting from the per-form defaults in episode-design, for the creator to accept or edit. The defaults are starting points, never a suite-level threshold; later stages check only arithmetic against an accepted profile, and a missing or unaccepted profile means nothing is checked. |
|
|
88
|
+
| STY-27 | craft_default | When the creator declares paywall episodes, place each before an undelivered payoff and stop one beat before the reveal, with a line hook or an image hook pointing at what the audience already awaits; the episode still delivers its own local result first. Episode numbers are the creator's and the suite supplies no default position; common ranges are offered as examples only when the creator has declared paywalls and asks for placement. |
|
|
89
|
+
| STY-28 | craft_default | Compress an adaptation by keeping the source's hottest plot points first, then cutting subplots and merging duplicate-function characters; episode count follows the payoff distribution rather than one chapter per episode. |
|
|
90
|
+
| STY-29 | reviewed_invariant | An adaptation mapping marked `move_earlier` or `cold_open` states the setup it depends on and where and through which carrier that setup appears first, or how the viewer is oriented in time, and what happens at the beat's original position. The reviewer checks the mapping against the episode record and screenplay; a moved beat that lands before the audience has the facts it needs is the defect. |
|
|
91
|
+
| STY-30 | craft_default | Material the source does not contain—a new character, an invented scene, a new or replaced opponent—is registered as its own `add` mapping stating the function it serves, why existing source characters and events cannot carry that function, and which source facts were checked against it, and it is listed in the brief for the creator to confirm. Opposition an episode needs is drawn first from source characters and what they actually do; where the source has none, the rhythm-profile deviation is reported instead of hardening an ally or inventing an opponent. |
|
|
85
92
|
|
|
86
93
|
规则分级由高到低:`structural_invariant`(结构缺陷,阻断)、
|
|
87
94
|
`reviewed_invariant`(需证据判断)、`craft_default`(常用做法,可覆盖)、
|
|
@@ -74,8 +74,8 @@
|
|
|
74
74
|
|
|
75
75
|
### 回报要先有舞台,再有能力
|
|
76
76
|
|
|
77
|
-
观众期待的不是"主角获得了什么",而是"获得之后,那些人会怎样"
|
|
78
|
-
|
|
77
|
+
观众期待的不是"主角获得了什么",而是"获得之后,那些人会怎样"。在关系、家庭、复仇这类
|
|
78
|
+
靠积累兑现的题材里,这决定了铺垫顺序:**先建立回报会被花掉的场合,再让主角拿到能力**。
|
|
79
79
|
|
|
80
80
|
顺序颠倒的典型症状是能力先到位,然后临时找一个人来被打脸——这一段无论写得多热闹,
|
|
81
81
|
观众都没有攒下期待,因为在能力出现之前,他们并不知道该盼什么。
|
|
@@ -83,8 +83,12 @@
|
|
|
83
83
|
可用的检查:在主角取得关键优势之前,观众是否已经认得**具体的人、具体的场合、具体的
|
|
84
84
|
那句话**?三样里至少要有一样是先立起来的。
|
|
85
85
|
|
|
86
|
+
系统流、重生穿越、逆袭这类爽文不同:观众为奖励本身而来,奖励可以先到,被打脸的人和场合
|
|
87
|
+
可以在同一场里立起来。这时要保的不是先后顺序,而是对手的压迫到位,写法见对应的
|
|
88
|
+
[题材卡](genre-cards.md)。
|
|
89
|
+
|
|
86
90
|
**`craft_default`**:让能力、证据或身份的兑现落在此前已经建立的对象与场合上;确实需要
|
|
87
|
-
|
|
91
|
+
新对象时,先给它一段独立的建立,不与兑现同场发生。爽文题材的建立与兑现可以同场。
|
|
88
92
|
|
|
89
93
|
### 承诺的压力测试
|
|
90
94
|
|