@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
|
@@ -1,103 +1,89 @@
|
|
|
1
1
|
# workflow-revision.md:大修工作流
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
作者说「修改/回炉/重写第X章」时用本文件;只改细纲不进本流程(走 workflow-outline.md)。作者要先说清是哪一章,推断不出就问。
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
##
|
|
7
|
+
## Step 1:定位与改动范围
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
1. 找文件:`正文/第{X}章_*.md`;作者给的是章名就按关键词找,找不到让作者确认。
|
|
10
|
+
2. **先定范围再读东西**:从作者的话判断改多大——点到了段落或场面(「那场打斗」「结尾那段对话」)就是局部修改;说「重写」「回炉」就是整章重写。判断不了才问,给选项:
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
12
|
+
<!-- author-report -->
|
|
13
|
+
```md
|
|
14
|
+
第{X}章《{章名}》想怎么改?
|
|
15
|
+
1. 只改你点到的地方,其他不动(推荐)
|
|
16
|
+
2. 按原细纲整章重写
|
|
17
|
+
3. 先改这章的细纲,再按新细纲重写
|
|
18
|
+
{你想改掉的是什么,一句话说说也行,比如「打脸不够狠」「他俩对话太客气」}
|
|
19
|
+
```
|
|
17
20
|
|
|
18
|
-
|
|
19
|
-
2. 如果用户说的是章节名而非编号,用 `find 正文/ -name "*{关键词}*"` 搜索
|
|
20
|
-
3. 找不到时让用户确认具体章节
|
|
21
|
-
4. 如果用户指定段落范围("第3-5段"/"那场打斗"/"对话部分"),记录为局部修改目标
|
|
21
|
+
选 3 → 先按 workflow-outline.md 改细纲,改完回到本流程按整章重写。
|
|
22
22
|
|
|
23
23
|
---
|
|
24
24
|
|
|
25
|
-
## Step 2
|
|
26
|
-
|
|
27
|
-
加载比日常写作更多的上下文(因为修改需要理解前后衔接):
|
|
25
|
+
## Step 2:按范围加载
|
|
28
26
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
| 2 | `大纲/细纲_第{X}章.md` | 原始写作计划 | 跳过 |
|
|
33
|
-
| 3 | `正文/第{X-1}章_*.md` | 前一章(衔接) | 第1章时加载 `设定/世界观/背景设定.md` 替代 |
|
|
34
|
-
| 4 | `正文/第{X+1}章_*.md` | 后一章(衔接) | 末章时检查 `大纲/细纲_第{X+1}章.md`(如有)确保连续性 |
|
|
35
|
-
| 5 | `tracking_commit.py check` + `追踪/上下文.md` | 用工具确认唯一 state 与派生视图一致;续写状态卡提供当前连续性,不把完整 state 加入 prompt | 缺 state 时停止;已有正文项目必须经 `story-import` 生成标准追踪状态 |
|
|
36
|
-
| 6 | `设定/角色/{相关角色}.md` + `追踪/角色状态/{相关角色}.md` | 静态人设 + 动态当前快照 | 动态快照缺失时从相关增量重算 |
|
|
37
|
-
|
|
38
|
-
**相关角色判定**:从 `大纲/细纲_第{X}章.md` 中提取角色名。如果细纲不存在,从待修改章节正文中搜索 `设定/角色/` 目录下的角色名关键词。将角色名映射为文件名:`设定/角色/{角色名}.md`。
|
|
27
|
+
- 都要:待改章全文、`大纲/细纲_第{X}章.md`、`tracking_commit.py check`(取 `state_revision`)与 `追踪/上下文.md`;缺 state 时停止,已有正文的项目先经 `story-import` 生成标准追踪。
|
|
28
|
+
- 局部修改:前一章只看最后几段(第 1 章没有就不看)、后一章只看开头几段,确认衔接;涉及的角色读 `设定/角色/{名}.md` 与 `追踪/角色状态/{名}.md`。
|
|
29
|
+
- 整章重写:前后两章全文,加上细纲点名的角色与设定;第 1 章没有前一章时看 `设定/题材定位.md`。
|
|
39
30
|
|
|
40
31
|
---
|
|
41
32
|
|
|
42
|
-
## Step 3
|
|
33
|
+
## Step 3:改写与提交前检查
|
|
43
34
|
|
|
44
|
-
1.
|
|
45
|
-
2.
|
|
46
|
-
3.
|
|
47
|
-
- 全文重写:基于细纲重新写,保留备份
|
|
48
|
-
- 局部修改:只改指定段落(按场景序号或关键词定位),保持其他部分不变
|
|
49
|
-
4. **执行修改**:改写文件
|
|
50
|
-
5. **一次检测**:修改后运行 `{PYTHON} {skill 根}/scripts/storyctl.py chapter check --project {项目根} --chapter {X} --fix-punctuation`(含禁用词与字数);blocking 改到净再重跑。字数与原文差异 >30% 或 >800 字时提醒用户(取较大值),用白话说「改后约 X 字,比原来多/少 Y 字,比目标多/少 Z 字」,不报状态码;字数不触发静默二次改写
|
|
35
|
+
1. **备份**:原文复制为 `正文/第{X}章_章名_原稿_{YYYYMMDD}.md`;用 `{PYTHON} {skill 根}/scripts/storyctl.py wordcount measure --file {正文文件}` 记下原字数。
|
|
36
|
+
2. **改写**:已部署 narrative-writer 时按 [agent-calls.md](agent-calls.md)「改写一章」交给它;否则主会话自己改,读 `references/writing-craft.md` 与 `references/long-format.md`;改的是情绪对抗、打脸这类戏时,按 SKILL.md「本章技法」只读对应那一节。局部修改只动点到的段落,其余一字不改;不借改稿新增细纲外的剧情。
|
|
37
|
+
3. **检测**:`{PYTHON} {skill 根}/scripts/storyctl.py chapter check --project {项目根} --chapter {X} --fix-punctuation`,按返回的 `status` 走:
|
|
51
38
|
|
|
52
|
-
|
|
39
|
+
| 状态 | 处理 |
|
|
40
|
+
|---|---|
|
|
41
|
+
| `ready` | 往下走 |
|
|
42
|
+
| `blocked` / `invalid` | 改到净再重跑(工程词泄漏也在报告里) |
|
|
43
|
+
| `needs_decision`(字数出带) | 欠字不补;超字把删除区间交写手按 agent-calls「超字一次净删」删一次(自己改就同样只删不加),复检仍带外用下面的字数问法请作者选 |
|
|
44
|
+
| `tool_unavailable`(退出码 3) | 停下,不提交,告诉作者「要装 Node.js 18 或更新版本,才能做改后检查」 |
|
|
45
|
+
| 退出码 2 | 按 `error_code` 修命令重跑 |
|
|
46
|
+
4. **人物与节奏**:改后的角色行为与设定、前后章一致;改动没把这章的节奏打散。
|
|
47
|
+
5. **篇幅**:与原文差异超过 30% 或 800 字(取较大)时告诉作者「改后约 X 字,比原来多/少 Y 字,比目标多/少 Z 字」;字数本身不触发再改一遍。
|
|
48
|
+
6. 需要查证外部事实时 spawn `story-researcher`。
|
|
53
49
|
|
|
54
50
|
---
|
|
55
51
|
|
|
56
|
-
## Step 4
|
|
52
|
+
## Step 4:级联更新与提交
|
|
57
53
|
|
|
58
|
-
|
|
54
|
+
用一次 `mode=revision` 追踪事务更新;下面几条是修订的要点,[tracking-transaction.md](tracking-transaction.md) 只在报错时读:
|
|
59
55
|
|
|
60
|
-
1.
|
|
61
|
-
2. **伏笔当前值**:对受影响 ID 从第 X 章检查到最后已写章 M,提交修订后的**截至 M 章当前状态**。若修订删除了埋设,但后文仍引用该 ID,先列为正文冲突,不能简单删除;确定整条线不存在时才用 `action=delete
|
|
62
|
-
3. **时间与读者认知**:为受影响事件提交客观事实、读者截至 M 章的当前认知、实际揭示状态/章节;删掉的事件用 `action=delete
|
|
56
|
+
1. **重算修订章记录**:先跑 `{PYTHON} {skill 根}/scripts/tracking_commit.py draft --project {项目根} --chapter {X}`,草稿已按本章现有记录预填;对照新正文,仍有效的保留,被推翻的改写或删掉,不清空重写。工具整份重写 `追踪/逐章记录/第{X}章.md`。
|
|
57
|
+
2. **伏笔当前值**:对受影响 ID 从第 X 章检查到最后已写章 M,提交修订后的**截至 M 章当前状态**。若修订删除了埋设,但后文仍引用该 ID,先列为正文冲突,不能简单删除;确定整条线不存在时才用 `action=delete`。
|
|
58
|
+
3. **时间与读者认知**:为受影响事件提交客观事实、读者截至 M 章的当前认知、实际揭示状态/章节;删掉的事件用 `action=delete`。未来揭示计划仍留大纲。工具重建作者/读者视图,禁止手改。
|
|
63
59
|
4. **角色当前快照**:对受影响核心角色从 X 检查到 M,按身份、位置、目标、能力资源、关系对象、已知信息、未结事项分别重算,提交一份截至 M 的完整快照;不得用最后一条单维度变化覆盖其它维度。
|
|
64
60
|
5. **导入截止范围**:若 X ≤ `_tracking-state.json.imported_through_chapter`,事务为第 X 章新增覆盖记录;导入截止章不变,当前结构化状态按修订结果更新。
|
|
65
|
-
6.
|
|
66
|
-
7. **后续影响**:如果修改改变了角色状态/关系/世界观设定,扫描后续章节正文标记受影响项,放进下方汇报。
|
|
67
|
-
|
|
68
|
-
8. **正文元信息扫描**:按 [workflow-chapter.md](workflow-chapter.md) 步骤 6「正文元信息隔离」扫描标题行以外的正文,沿用其中的改写方式与故事内真实阅读/读者身份例外。
|
|
69
|
-
9. **收口**:运行 `tracking_commit.py check` 验证 state 与全部派生视图一致
|
|
61
|
+
6. **提交与重试**:跑 `{PYTHON} {skill 根}/scripts/storyctl.py chapter commit --project {项目根} --chapter {X} --input {项目根}/.story/work/第{XXX}章/tracking.json`,它重新计数并清理本章工作目录。带外时先问作者:
|
|
70
62
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
63
|
+
<!-- author-report -->
|
|
64
|
+
```md
|
|
65
|
+
第{X}章改完约 {实际} 字,比目标{少/多}了约 {差额} 字(目标约 {目标} 字)。{一句原因,如「按你说的删掉了那场追逐」}
|
|
66
|
+
你想怎么处理?
|
|
67
|
+
1. 就按现在的长度收下(推荐)
|
|
68
|
+
2. 我再调整这章,往目标靠
|
|
69
|
+
3. 退回原稿
|
|
70
|
+
```
|
|
74
71
|
|
|
75
|
-
|
|
72
|
+
不到目标一半时选项 1 不标推荐。选 1 → 改用 `chapter accept-current-length`,不到目标一半、或超字还没压缩过一次会被拒,把差多少字告诉作者,作者明确坚持才加 `--force`;选 2 → 回 Step 3;选 3 → 用备份原稿覆盖回去,不提交。失败时保留草稿,修正后重跑同一命令;通过 `check` 前不修下一章、不写新章。
|
|
73
|
+
7. **收口**:`{PYTHON} {skill 根}/scripts/tracking_commit.py check --project {项目根}` 验证 state 与派生视图一致。改变了角色状态、关系或世界观设定的,扫一遍后续章正文,把受影响的列进汇报。
|
|
76
74
|
|
|
77
|
-
|
|
78
|
-
2. **正文元信息扫描**:同「级联检查」中的「正文元信息扫描」,确认覆盖全章。
|
|
79
|
-
3. **人物一致性**:修改后的角色行为是否与角色设定一致
|
|
80
|
-
4. **节奏检查**:修改是否破坏了章节节奏
|
|
75
|
+
---
|
|
81
76
|
|
|
82
|
-
|
|
77
|
+
## Step 5:向作者汇报
|
|
83
78
|
|
|
84
|
-
|
|
79
|
+
按 SKILL.md「面向作者的汇报」;追踪修订与各项扫描只作内部核对。
|
|
85
80
|
|
|
86
81
|
<!-- author-report -->
|
|
87
82
|
```md
|
|
88
|
-
第{X}章《{章名}
|
|
83
|
+
第{X}章《{章名}》改好了,原稿留着,想退回随时说:
|
|
89
84
|
- {改了什么,用故事话:原来怎样 → 现在怎样}
|
|
90
|
-
- 篇幅:{
|
|
85
|
+
- 篇幅:{差异超过步骤 3 第 5 条的阈值才写:约 X 字,比原来多/少约 Y 字;没超就删掉这行}
|
|
91
86
|
{后面受影响的章:「第{X+1}章《{章名}》里{谁/什么}还按旧说法写,要一起改吗?1. 一起改(推荐)2. 先不动」;没有就写「后面的章不受影响」}
|
|
92
87
|
```
|
|
93
88
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
## 常见问题
|
|
97
|
-
|
|
98
|
-
| 问题 | 处理 |
|
|
99
|
-
|------|------|
|
|
100
|
-
| 用户没说改哪里 | 问"你想改哪一章?哪方面?情节/节奏/对话/描写?" |
|
|
101
|
-
| 修改后字数暴增/暴减 | 提醒用户,由用户决定是否调整 |
|
|
102
|
-
| 连续改多章 | 逐章修改,每章独立执行 Step 2-5 |
|
|
103
|
-
| 改完发现后续不一致 | 列出受影响章节,由用户决定是否现在修改 |
|
|
89
|
+
连续改多章时逐章走 Step 1-5;改完发现后续不一致,列出受影响的章由作者决定是否现在改。
|
|
@@ -1,15 +1,26 @@
|
|
|
1
|
-
# workflow-setup.md
|
|
1
|
+
# workflow-setup.md:开书与规划的时刻表,以及「定方向」「定设定」
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
开书是一串作者要确认的时刻,每个时刻只读自己的文件;后一时刻只靠落盘文件接上前一时刻,不靠对话记忆。先按 SKILL.md「写作流程」确定交付范围;只讨论时取所需技法,不执行建档;其余按范围补必要前置,不重做已有设定。
|
|
4
|
+
|
|
5
|
+
| 时刻 | 作者确认什么 | 读什么 | 落盘 |
|
|
6
|
+
|---|---|---|---|
|
|
7
|
+
| 定方向 | 题材、卖点、对标书 | 本文件 Phase 1 | 书目录与 `.active-book`;`设定/题材定位.md` 的基本信息、对标登记、作者已定 |
|
|
8
|
+
| 定设定 | 主角、世界、核心冲突 | 本文件 Phase 2 | 题材定位补全;关系;主角与关键角色卡;影响全书的世界观(见 Phase 2) |
|
|
9
|
+
| 出卷纲 | 全书分段与第一卷 | [workflow-volume.md](workflow-volume.md) | `大纲/大纲.md`、`大纲/卷纲_第X卷.md` |
|
|
10
|
+
| 出细纲 | 首批章节怎么走 | [workflow-outline.md](workflow-outline.md) | `大纲/细纲_第XXX章.md`、排纲底稿 |
|
|
11
|
+
| 看第 1 章 | 正文 | workflow-chapter.md(新开对话) | `正文/` |
|
|
12
|
+
|
|
13
|
+
**交接只靠落盘**:每个时刻交付前,把作者在对话里定下的事(方向、偏好、红线、否掉的方案)写进 `设定/题材定位.md` 的对应小节,再往下走;下一时刻不回翻对话。本书的事只落设定,作者跨书通用的写作习惯才走作者记忆。
|
|
14
|
+
**换上下文**:定方向由主会话和作者商量;定设定、卷纲与每批细纲要读的方法最多,已部署 story-architect 时交给它按任务包在新上下文里出(调用见 [agent-calls.md](agent-calls.md)),主会话把提案拿给作者确认、按作者意见改文件、汇报。没有子代理时主会话自己做,同样先给提案、作者确认后再落盘。没有子代理时每个时刻交付后、有子代理时细纲交付后,汇报正文最后一句建议「新开一个对话,说『定设定』/『出卷纲』/『出第1-10章细纲』/『写第1章』,会更专注」(技术备注仍在它之后的最末一行);作者要在本对话继续也照做。
|
|
4
15
|
|
|
5
16
|
---
|
|
6
17
|
|
|
7
18
|
### Phase 1:确认选题方向
|
|
8
19
|
|
|
9
|
-
|
|
10
|
-
缺失时先自动找一遍:从项目根及其上一级目录起、向下最多 3 层按文件名搜 `选题决策.md`(跳过隐藏目录),按 mtime 由新到旧取最新 2 份。搜到 → 用 AskUserQuestion 列候选(路径 + 文件里的 `扫榜日期`,另加「我自己给路径」和「都不用」);选中某份 → 复制到项目根,再按上一段读取;选「我自己给路径」→ 让用户粘路径,同样复制到项目根;选「都不用」→ 走下面的常规提问。搜不到 → 问一句:「有扫榜生成的 `选题决策.md` 吗?放到项目根或粘贴路径;没有就直接答下面的问题。」仍无 → 走下面的常规提问。
|
|
20
|
+
**作者已给方向时**:以作者的方向为准,跳过选题决策查找与下面的方向提问,只按题材读下方匹配文件,再做「对标上下文加载」。
|
|
11
21
|
|
|
12
|
-
|
|
22
|
+
**先查选题决策**(作者没给方向时):如果项目根存在 `选题决策.md`(story-long-scan Phase 5 产出),读取它——取排在最前(可行性最高)的推荐选题,向用户确认:「扫榜建议写 X(能爆的原因 Y,差异化 Z),按这个开书?」并看 `扫榜日期`:距今较久则提示"市场数据可能过期,建议复扫"。认可 → 带其题材/卖点/差异化进入 Phase 2。文件里没有「推荐选题」(只扫了榜)→ 当作还没选题,走下面的常规提问。
|
|
23
|
+
缺失时先找:从项目根及其上一级目录起、向下最多 3 层搜 `选题决策.md`(跳过隐藏目录),按 mtime 取最新 2 份。搜到 → 用 AskUserQuestion 列候选(路径 + 文件里的 `扫榜日期`,另加「我自己给路径」和「都不用」);选中某份 → 复制到项目根,再按上一段读取;选「我自己给路径」→ 让用户粘路径,同样复制到项目根;选「都不用」→ 走下面的常规提问。搜不到 → 问一句:「之前扫过榜、有现成的选题建议吗?有的话告诉我放在哪;没有就直接答下面的问题。」仍无 → 走下面的常规提问。
|
|
13
24
|
|
|
14
25
|
如果用户没有方向:
|
|
15
26
|
|
|
@@ -17,293 +28,143 @@
|
|
|
17
28
|
|
|
18
29
|
#### 对标上下文加载
|
|
19
30
|
|
|
20
|
-
>
|
|
31
|
+
> **对标书路径查找** 见 SKILL.md「路径与术语约定」。
|
|
21
32
|
|
|
22
33
|
**对标发现(先于下方反应式加载)**:无论用户是否点名对标书,先扫 `拆文库/` 按题材主动推荐,不要被动等用户开口。
|
|
23
34
|
|
|
24
35
|
1. `ls 拆文库/`(数据源)与项目 `对标/`(引用视图)列已有书目;先按当前项目目录名、`.active-book` 和 `设定/题材定位.md` 中的本书信息识别当前作品,排除同名或来源指向当前正文的 `拆文库/{当前书}/`。story-import 为重建工程生成的本书拆文分析不是对标候选,也不得复制回 `对标/`。排除后都为空 → 跳到第 4 条。
|
|
25
36
|
2. 逐本读题材(短篇读 `拆文库/{书}/_meta.json` 的 `genre_detected`;长篇读 `概要.md` 头部或 `拆文报告.md`「基本信息」的「题材」),与本书题材/方向比对,标 同题材 / 弱相关 / 不相关。
|
|
26
|
-
3. 有同题材或弱相关候选 → 用 AskUserQuestion 推荐(列候选书 +「都不用」+「另拆一本」),主对标 1 本走文风/正文、其余作副对标。选定后写入 `设定/题材定位.md`「对标登记」的 `主对标书` /
|
|
27
|
-
4. 无候选 →
|
|
37
|
+
3. 有同题材或弱相关候选 → 用 AskUserQuestion 推荐(列候选书 +「都不用」+「另拆一本」),主对标 1 本走文风/正文、其余作副对标。选定后写入 `设定/题材定位.md`「对标登记」的 `主对标书` / `对标书列表`(定方向交付时落盘),并在首次引用时从 `拆文库/{书}/` 复制相关子目录(章节/角色/剧情/设定)、`剧情/节奏.md`、`剧情/情绪模块.md`、`文风.md` 和 `拆文报告.md` 到 `对标/{书}/`,已有不重复复制。
|
|
38
|
+
4. 无候选 → 无对标继续(卷纲按八节点自排,见 workflow-volume.md);用户想对标可先 `/story-long-analyze` 拆一本。
|
|
28
39
|
|
|
29
40
|
如果用户提到对标书或工作目录下已存在 `对标/` 目录:
|
|
30
41
|
|
|
31
42
|
1. 先按上方「对标发现」第 1 条的同一口径识别当前作品,排除同名或来源指向当前正文的 `对标/{当前书}/`——老导入项目里可能留着历史误建的自对标目录。排除后没有外部对标书时不进入下面几步,按无对标继续。
|
|
32
|
-
2.
|
|
33
|
-
3.
|
|
34
|
-
4.
|
|
35
|
-
5. 如果角色、普通剧情单元或设定子目录存在,写作时按需召回相关模块。
|
|
43
|
+
2. 识别资料代际只看两份主产物 `剧情/情绪模块.md` 与 `剧情/节奏.md`:缺任一就停止并返回 `missing_primary_contract` + `repair_action`,对作者只说「对标书《X》还缺情绪/节奏分析,建议先用 /story-long-analyze 补拆一次」,不得以摘要或报告伪造;都在就正常召回,老拆文缺新增字段不阻断。
|
|
44
|
+
3. 按权威顺序读两个主产物;`拆文报告.md` 只作概览。
|
|
45
|
+
4. 如果角色、普通剧情单元或设定子目录存在,写作时按需召回相关模块。
|
|
36
46
|
|
|
37
|
-
|
|
47
|
+
根据回答做匹配(题材细分查 `references/long-genre-catalog.md`,女频长篇改读 `references/female-audience-writing.md`(已含女频题材,不再叠读题材目录);市场与读者查 `references/genre-readers.md`,特殊题材查 `references/plot-special-topics.md` 的「决策路由表」和它指向的一节;按需各读一次):
|
|
38
48
|
- 脑洞好 → 推荐:系统文、诸天流、无限流
|
|
39
49
|
- 文笔好 → 推荐:仙侠、历史、文艺向都市
|
|
40
50
|
- 节奏感好 → 推荐:都市爽文、重生文、游戏文
|
|
41
51
|
- 生活经验丰富 → 推荐:行业文、都市日常、种田文
|
|
42
52
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
story-architect 属于高层级结构设计 agent。轻量题材定位优先由主会话完成;只有涉及复杂世界观、多线结构、强反转工程或用户明确要求时,才调用 story-architect。确认选题方向后,如果项目已部署 story-architect agent(检查 `.claude/agents/story-architect.md` 是否存在),可 spawn `Agent(subagent_type: "story-architect", prompt: "项目目录:{dir}\n任务类型:题材定位\n查询参数:{用户选择的方向+对标信息}")` 辅助题材分析和核心梗设计。如 agent 不可用,由主线程直接执行。
|
|
53
|
+
**定方向交付前**:还没有书目录时,用作者给的书名(没有就起暂定名,定设定时可改)建 `{书名}/`,作者指定了位置就放那里,并在工作区根写 `.active-book` 指向它;书名改了,目录与 `.active-book` 一起改。然后建 `设定/题材定位.md`,把选定的题材、卖点、对标,以及作者在对话里说过的偏好、红线和否掉的方案,写进「基本信息」「对标登记」「作者已定」(模板见文末),其余小节留到定设定补。
|
|
46
54
|
|
|
47
|
-
|
|
55
|
+
#### Agent 调用:story-architect
|
|
48
56
|
|
|
49
|
-
|
|
50
|
-
> - **终局储备边界**:终局底牌(头号宿敌/终极真相/金手指上限/身份终点/核心情感终点)是一次性资源,逐卷解锁,不得提前打光;升级台阶(境界/等级/地图/势力层级)按剩余档数逐级解锁,不得越级。
|
|
51
|
-
> - **剧情单元**:卷纲内写剧情单元卡,含单元ID、主推线(1条)+ 战果线(若干,一战多得允许)、章级推进下限(快节奏保留可见事件/爽点下限)。
|
|
52
|
-
> - **细纲层字段**:每章细纲必须带 单元ID/位置、主角目标/关键选择;「行动成本(可无)/收益归属」替代旧字段「代价兑现」——行动成本可无,不硬造代价,收益归属必须可见。
|
|
53
|
-
> - **契约四问**:①主角是不是靠自己的选择挣到结果(不要求事事亲自动手,但决定事情为什么发生、作出关键选择、拿到收益的是主角或本卷已承诺的所有者)?②核心收益或高光有没有被配角、机构或巧合无交换地拿走?③有没有动用本阶段不该解锁的终局底牌、或把升级线顶到天花板?④旧期待付了利息没,又留下什么期待?四问都过=契约安全,能补=需补强,补不上=契约破坏。
|
|
54
|
-
> - 完整规则以主会话已加载的 `references/reader-contract-and-progression.md` 为准,此处只是给 story-architect 的压缩版;agent 本身不部署该文件,不能自己读取。
|
|
57
|
+
轻量题材定位优先由主会话完成;复杂世界观、多线结构、强反转工程或用户明确要求时才调用,调用方式见 [agent-calls.md](agent-calls.md);agent 不可用则主会话直接执行。
|
|
55
58
|
|
|
56
59
|
---
|
|
57
60
|
|
|
58
61
|
### Phase 2:核心设定
|
|
59
62
|
|
|
60
|
-
|
|
63
|
+
开头先看 `.active-book`:上一时刻漏建就按「定方向交付前」补建。从 Phase 1 确定的目标情绪出发,在题材框架中找到对应的剧情模式,从对标书提取可复用模块(把具体角色看成功能位),用用户自己的角色和设定填充。
|
|
61
64
|
|
|
62
|
-
|
|
65
|
+
完整开书时定设定交付这几样(仅规划时只落与所请求结构有关的已定设定),模板见文末:
|
|
66
|
+
- `设定/题材定位.md`:在定方向已写的基础上补「核心设定」(一句话梗概、主角、世界观骨架、核心冲突与终极阻碍)、读者契约、终局底牌、核心梗三分法与对标分析(表保留 2-3 行摘要,详见 `对标/`),不删作者已定;
|
|
67
|
+
- `设定/关系.md`;
|
|
68
|
+
- 主角与关键角色的 `设定/角色/{名}.md`(character-basics.md 主角卡/配角卡);其余角色出细纲时增量补;
|
|
69
|
+
- 影响全书的 `设定/世界观/{主题}.md`(力量体系、社会结构等一题一文件,题材定位只留骨架一句)。
|
|
70
|
+
- `设定/题材正文提示卡.md` 开书时不建,写第 1 章前由写前召回生成。
|
|
63
71
|
|
|
64
|
-
|
|
65
|
-
## 核心设定表
|
|
66
|
-
|
|
67
|
-
### 基本信息
|
|
68
|
-
- 书名:{暂定名}
|
|
69
|
-
- 题材/类型:{主类型 + 副类型}
|
|
70
|
-
- 目标平台:{起点/番茄/晋江/其他}
|
|
71
|
-
- 预计字数:{X} 万字
|
|
72
|
-
- 目标读者:{画像}
|
|
73
|
-
- 读者契约:{本书承诺的核心阅读快感;参 reader-contract-and-progression.md}
|
|
74
|
-
- 主角高光/代理权:{主角不可替代的判断、选择或贡献}
|
|
75
|
-
- 核心期待债:{开篇必须偿还的承诺}
|
|
76
|
-
|
|
77
|
-
### 一句话梗概
|
|
78
|
-
{主角 + 目标 + 阻碍 + 反转,一句话概括全书}
|
|
79
|
-
|
|
80
|
-
### 主角设定
|
|
81
|
-
- 姓名:{}
|
|
82
|
-
- 年龄:{}
|
|
83
|
-
- 核心特质:{2-3 个关键词}
|
|
84
|
-
- 金手指/核心能力:{}
|
|
85
|
-
- 弱点/缺陷:{让角色更立体的地方}
|
|
86
|
-
- 核心动机:{他为什么要做这件事}
|
|
87
|
-
|
|
88
|
-
### 世界观骨架
|
|
89
|
-
- 时代/背景:{}
|
|
90
|
-
- 核心设定:{区别于同类作品的独特设定}
|
|
91
|
-
- 力量体系:{如果有,简单概括}
|
|
92
|
-
- 社会结构:{影响故事的关键设定}
|
|
93
|
-
|
|
94
|
-
### 核心冲突
|
|
95
|
-
- 主线矛盾:{}
|
|
96
|
-
- 终极 Boss/终极阻碍:{}
|
|
97
|
-
```
|
|
72
|
+
主会话自己定设定时读 `references/character-basics.md`、`references/character-relations.md`「人物关系类型」一节、`references/long-genre-mechanics.md`「核心梗三层递进设计」一节、`references/reader-contract-and-progression.md`;女频另读 `references/female-audience-writing.md`;对标登记 ≥2 本时读 `references/cross-book-recall.md`,副对标 anchor 入「对标分析」表附录;有 `灵感库/` 时可按它「公共灵感标签召回」以「适用阶段=设定」查 Top 8 active CBA,零命中不阻塞。
|
|
98
73
|
|
|
99
|
-
|
|
100
|
-
- **设定/关系.md**:角色关系映射(参考 character-relations.md「四种关系类型」)
|
|
101
|
-
- **设定/题材定位.md**:题材核心梗三分法+对标分析(参考 long-genre-mechanics.md「核心梗解析」)。对标分析表保留 2-3 行摘要,详细数据见 `对标/` 目录
|
|
102
|
-
- **设定/题材正文提示卡.md**:从 `设定/题材定位.md` + `references/genre-prose-cards.md`(索引)+ `references/genre-prose-cards/`(单题材正文卡目录,按题材分类优先)+ `references/style-genre-modules.md`(通用流派补充)抽取本书正文层题材卡,只写题材边界、核心逻辑、读者期待、核心爽点/情绪、正文落点、前中后期打法、节奏密度、场景颗粒、禁止漂移;不写通用格式规则,不覆盖 `设定/文风.md`
|
|
103
|
-
|
|
104
|
-
> **多对标书时**:参 `references/cross-book-recall.md`,副对标 anchor 入「对标分析」表附录
|
|
74
|
+
**数值先问作者**:物价与收入量级、境界/力量档位、金手指上限这类影响全书的刻度,按 SKILL.md「新增物三级」属先问作者——在提案里给 1-2 个候选请作者定,确认后才写进设定,不直接写死、只在汇报里概括。
|
|
105
75
|
|
|
106
76
|
#### Agent 调用:story-architect + character-designer
|
|
107
77
|
|
|
108
|
-
|
|
109
|
-
- `Agent(subagent_type: "story-architect", prompt: "项目目录:{dir}\n任务类型:核心设定\n查询参数:世界观构建+核心冲突设计")` — 辅助世界观和核心冲突设计;spawn prompt 必须原样附带 Phase 1 的「story-architect 契约摘要」(升级台阶检查约束力量体系设计)
|
|
110
|
-
- `Agent(subagent_type: "character-designer", prompt: "项目目录:{dir}\n任务类型:角色设定\n查询参数:{主角设定信息}")` — 辅助角色设定和语言风格档案
|
|
111
|
-
|
|
112
|
-
如 agent 不可用,由主线程直接执行。
|
|
78
|
+
已部署时按 [agent-calls.md](agent-calls.md) 交给它们;不可用则主会话直接执行。
|
|
113
79
|
|
|
114
80
|
---
|
|
115
81
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
#### 全书体量与阶段总览(卷纲前置)
|
|
119
|
-
|
|
120
|
-
卷级大纲前先写全书体量与阶段边界,作为后续卷纲、细纲、日更补纲的共同约束。比例只作默认参考,必须按题材、目标字数和对标节奏调整,不能机械套模板。
|
|
121
|
-
|
|
122
|
-
```
|
|
123
|
-
## 全书体量与阶段总览
|
|
124
|
-
|
|
125
|
-
- 全书总章节数:{X} 章
|
|
126
|
-
- 目标字数:{X} 万字
|
|
127
|
-
- 全书情绪曲线:{压抑/期待 → 加压/反转 → 爽感/震撼 → 余韵/圆满;标注关键阶段}
|
|
128
|
-
|
|
129
|
-
### 阶段划分
|
|
130
|
-
1. 开篇期(第 {A}-{B} 章,参考 10%-15%):核心任务 {立人设/立世界/埋主线钩子};情绪基调 {压抑/期待/惊奇};阶段结束时读者应建立 {对主角的认同 + 对主线冲突的期待}
|
|
131
|
-
2. 发展期(第 {A}-{B} 章,参考 50%-60%):核心任务 {矛盾展开/支线并行/资源与关系升级};情绪基调 {期待/紧张/间歇爽感};阶段结束时读者应建立 {对核心反派或终局矛盾的迫切期待}
|
|
132
|
-
3. 高潮期(第 {A}-{B} 章,参考 20%-25%):核心任务 {核心冲突爆发/多线收束/连续爽点};情绪基调 {爽感/震撼/反转};阶段结束时核心矛盾应 {基本解决或进入最终对决}
|
|
133
|
-
4. 收尾期(第 {A}-{B} 章,参考 5%-10%):核心任务 {伏笔回收/关系落定/结局余韵};情绪基调 {释然/感动/圆满};阶段结束时主线伏笔应 {回收完毕,结局落定}
|
|
134
|
-
|
|
135
|
-
### 各阶段节奏公式
|
|
136
|
-
- 开篇期:核心任务 / 情绪基调 / 爽点密度 / 伏笔策略 / 冲突层级 / 阶段钩子 / 禁止提前释放
|
|
137
|
-
- 发展期:核心任务 / 情绪基调 / 爽点密度 / 伏笔策略 / 冲突层级 / 阶段钩子 / 禁止提前释放
|
|
138
|
-
- 高潮期:核心任务 / 情绪基调 / 爽点密度 / 伏笔策略 / 冲突层级 / 阶段钩子 / 禁止提前释放
|
|
139
|
-
- 收尾期:核心任务 / 情绪基调 / 爽点密度 / 伏笔策略 / 冲突层级 / 阶段钩子 / 必须回收清单
|
|
140
|
-
|
|
141
|
-
### 关键节点与钩子链
|
|
142
|
-
- 关键转折点:第 {X/Y/Z} 章,各自承担 {事件功能 + 情绪效果}
|
|
143
|
-
- 小/中/大高潮:小高潮第 {X/Y/Z} 章;中高潮第 {X/Y} 章;大高潮第 {X} 章
|
|
144
|
-
- 阶段钩子链:开篇期结尾指向发展期;发展期结尾指向高潮期;高潮期结尾指向收尾期
|
|
145
|
-
```
|
|
146
|
-
|
|
147
|
-
#### 卷级大纲(全书结构)
|
|
82
|
+
---
|
|
148
83
|
|
|
149
|
-
|
|
150
|
-
## 卷级大纲
|
|
151
|
-
|
|
152
|
-
### 第一卷:{卷名}(约 {X} 万字,{Y} 章)
|
|
153
|
-
- 功能:{铺垫/起步/第一个大爽点}
|
|
154
|
-
- 所属阶段:{开篇期/发展期/高潮期/收尾期;可跨阶段时写清分界章}
|
|
155
|
-
- 卷契约:{本卷承诺的读者快感、主角高光、主要期待债}
|
|
156
|
-
- 终局储备:{本卷主推线1条 + 战果线若干(一战多得允许);本卷解锁哪个终局里程碑、禁碰哪些未解锁底牌,参 `设定/题材定位.md`「终局底牌与升级台阶」小节 与 reader-contract-and-progression.md}
|
|
157
|
-
- 剧情单元:{1–3 万字剧情单元卡写在卷纲内,不另建单独文件;字段模板见 `references/artifact-protocols.md`,契约/推进规则见 `references/reader-contract-and-progression.md`}
|
|
158
|
-
- 阶段边界:本卷可释放 {信息/关系/能力};本卷禁止提前释放 {后期核心真相/终局底牌}
|
|
159
|
-
- 核心事件:{一句话}
|
|
160
|
-
- 起始状态 → 结束状态:{主角从 {A} 变成 {B}}
|
|
161
|
-
|
|
162
|
-
### 第二卷:{卷名}
|
|
163
|
-
...
|
|
164
|
-
|
|
165
|
-
### 最终卷:{卷名}
|
|
166
|
-
- 功能:{高潮 + 收尾}
|
|
167
|
-
- 核心事件:{一句话}
|
|
168
|
-
```
|
|
84
|
+
### 定设定时建的文件模板
|
|
169
85
|
|
|
170
|
-
|
|
86
|
+
## 设定/关系.md
|
|
171
87
|
|
|
172
|
-
|
|
88
|
+
```markdown
|
|
89
|
+
# 角色关系图
|
|
173
90
|
|
|
174
|
-
|
|
91
|
+
## 关系总览
|
|
175
92
|
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
3. **伏笔与阶段边界**:本卷新埋哪些伏笔、上一卷待收的怎么处理;本卷在全书哪个阶段,可释放什么、必须压住什么(压住的写进细纲「本章禁止提前释放」)。
|
|
180
|
-
4. **契约四问**:按 `references/reader-contract-and-progression.md` 逐剧情单元过一遍,把 契约安全 / 需补强 / 契约破坏 写进单元卡「风险等级」;契约破坏 先修纲,需补强 补交换、铺垫或成本。不要求主角亲自完成每个动作。
|
|
181
|
-
5. **供给**:进入细纲层时按下方批次步骤 3 做供给自查。
|
|
93
|
+
| 角色 A | 角色 B | 关系类型{亲情/爱情/友情/敌对/师生/主从/利益} | 情感倾向{正面/负面/中性/复杂} | 当前状态 | 起始章节 | 变化节点 |
|
|
94
|
+
|--------|--------|---------------------------------------------|-----------------------------|---------|---------|---------|
|
|
95
|
+
| {名} | {名} | {类型} | {倾向} | {描述} | 第{N}章 | {事件} |
|
|
182
96
|
|
|
183
|
-
|
|
97
|
+
## 关系演变
|
|
184
98
|
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
4. **剧情单元消费**:建卡批读本批剧情单元卡「对标剧情参照」指向的剧情单元(≤3 个文件,含结构分布/情节点索引),按节拍→章映射铺章、情节点换素材;同一剧情单元的后续批共享剧情单元卡固化结论,不重读剧情单元。当前卷纲缺少必需剧情单元字段时先补齐卷纲,不带缺失字段进入日更。
|
|
190
|
-
5. **建纲当场缺口**:按下方三级处置——直接写的写进细纲,写了要报的先落档再引用,先问作者的挂起受影响内容,其余部分继续。批末把后两级汇入同一份排纲底稿的「建纲追加」小节:章号、缺口、级别、设定路径或提案;无追加写「无」。不重复记录直接写的现场材料。
|
|
191
|
-
6. **批末结构复核**(每批建完必做):按现有大纲流程确认章级目标与 `visible_chars_v1` 口径、核心字段、禁止提前释放和可执行情节点齐全。不得用“每个情节点固定等于多少字”预测容量或自动补事件;每章细纲落盘后必须跑 `node scripts/check-outline-contract.js --json --project {书目录} --chapter {N}`:exit 1 只按 `repair_scope` 补点名字段再复验,最多两轮;advisory 项逐条人工判断,不强制归零。批末另跑一次 `node scripts/check-outline-contract.js --json --supply {卷纲路径} {单元ID}` 验证本批供给自查已写进排纲底稿(含「无缺口」情形);脚本仅验供给小节存在,内容仍需人工判断。**旧章细纲缺字段是常态,不要照抄同目录既有文件的字段集**,以本节模板为准。语义仍不设 checker。
|
|
99
|
+
{角色A}<->{角色B}:
|
|
100
|
+
- 起点:{初始关系}
|
|
101
|
+
- 转折:{章节·事件·变化}
|
|
102
|
+
- 当前:{现状}
|
|
192
103
|
|
|
193
|
-
|
|
104
|
+
## 核心冲突关系
|
|
194
105
|
|
|
106
|
+
{列出推动剧情的2-3对核心对立/合作关系}
|
|
195
107
|
```
|
|
196
|
-
## 细纲(第 N 章)
|
|
197
|
-
|
|
198
|
-
### 第 N 章:{章名}
|
|
199
|
-
- 核心事件:{一句话;供日更与导入统一消费}
|
|
200
|
-
- 字数目标:{X} 字
|
|
201
|
-
- 字数口径:visible_chars_v1
|
|
202
|
-
- 单元ID/位置:{卷纲剧情单元ID;单元内第几拍/承担功能}
|
|
203
|
-
- 目标情绪:{具体情绪前状态→后状态;本章推进单元情绪引擎的哪一环;不得只写“热血/悲伤”等标签}
|
|
204
|
-
- 主角目标/关键选择:{主角本章要什么;必须做出的判断或选择}
|
|
205
|
-
- 章首钩子:{从章首7式中选择} — {具体内容;低压/过场章可写“弱钩子/仅情绪钩子,功能是…”}
|
|
206
|
-
- 爽点:{本章爽点;低压/修炼/过场章可写“无显性爽点,功能是…”,但仍须给读者一个往下看的理由}
|
|
207
|
-
- 本章禁止提前释放:{**只写本章特有的三五条**;卷级常任禁忌已在卷纲「本卷禁碰的终局底牌」,不逐章复读;没有就写“无”}
|
|
208
|
-
|
|
209
|
-
#### 内容概括(五段式)
|
|
210
|
-
- 起因:{本章事件为什么发生}
|
|
211
|
-
- 发展:{冲突如何推进}
|
|
212
|
-
- 转折:{信息/关系/局势哪里改变}
|
|
213
|
-
- 高潮:{本章情绪或动作峰值}
|
|
214
|
-
- 结尾:{本章最后落在谁的什么动作/画面/台词上——写具体落点,不写"尘埃落定""一切结束"式状态判词}
|
|
215
|
-
|
|
216
|
-
#### 情节安排(多线)
|
|
217
|
-
- 主线推进:{本章对主目标的推进}
|
|
218
|
-
- 辅线推进:{指向卷纲「本卷故事线」的 L 编号,写“L0X 从哪一步推到哪一步”;本章确无非主线在动时写“无”,不凭空制造。一批细纲不许每章都是“无”}
|
|
219
|
-
- 事件线 / 任务线:{外部事件链;有“办事被卡住”时写清卡出什么变化,删掉无损的卡点不进细纲}
|
|
220
|
-
- 感情线 / 关系线:{无显性感情线时写“无显性,但关系变化为…”}
|
|
221
|
-
- 逻辑线:原因 → 行动 → 结果 → 后果/新问题
|
|
222
|
-
|
|
223
|
-
#### 人物关系和出场顺序
|
|
224
|
-
- 出场顺序:{角色/势力/关键物件按实际出现顺序列出}
|
|
225
|
-
- 人物关系变化:{本章前 → 本章后}
|
|
226
|
-
- 视角/信息差:{谁知道什么;读者知道什么;主角误判什么。取自 `追踪/时间线/读者已知.md`,不另起一套}
|
|
227
|
-
|
|
228
|
-
#### 情节细化
|
|
229
|
-
| # | 情节点(谁做了什么) | 功能标签 | 执行边界(禁+放) |
|
|
230
|
-
|---|---|---|---|
|
|
231
|
-
| 1 | {主角在账单上发现4800元转出} | {信息揭示} | {禁:不揭露幕后者。放:他当场算出这笔钱等于几个月房租,允许写出来} |
|
|
232
|
-
|
|
233
|
-
- 功能标签=目的词:铺垫/高潮/爽点/打脸/人物塑造/设定。点数由语义需要决定,不填写逐点字数,不用 `目标字数 / beat 数` 反推。
|
|
234
|
-
- **执行边界写「禁+放」两半**:禁=本点不能提前释放或新增什么;放=本点允许什么落地、到什么量级(谁可以出声、谁可以失态、允不允许当场标价)。**每章至少一个点写了「放」**;放行是解除限制,不是义务。
|
|
235
|
-
- 复沓锚句:{须一字不差进正文的原话(誓言、面板、旧案原话),一行一条并注明落点,如"点3:立此为凭…";没有写"无"}
|
|
236
|
-
- 行动成本(可无)/收益归属:{可无行动成本;收益归谁、如何可见、是否留下后续账}
|
|
237
|
-
|
|
238
|
-
#### 结尾设定和钩子
|
|
239
|
-
- 结尾设定:{收束落到什么具体动作或画面(不写"就这样……""他终于明白……"式状态判词);未解决问题;下一章推动力}
|
|
240
|
-
- 章尾钩子:{从章尾13式中选择} — {具体内容,期待度:强/中/弱;低压/过场章可弱钩子或留阶段目标;与下一章如何承接}
|
|
241
|
-
|
|
242
|
-
#### 可选:需要时再写(写了写手照样消费,不写不拦)
|
|
243
|
-
- 阶段位置、章节定位(高压/推进/修炼试错/关系回收/低压生活/信息整理)、本章结构公式
|
|
244
|
-
- 本章标价(得失折算成读者已知的什么)、闭环状态(获得/使用/见效/估值走到哪一拍)
|
|
245
|
-
- 写手自由区(本章最值得放开、由写手发明的几处)、镜头准入(一场给谁台词位)、信息差触发点(在第几点提醒读者手里的牌)
|
|
246
|
-
- 情节点表加「分辨率」列(密/中/疏,同类并列递减)
|
|
247
|
-
- 契约风险:只在本章让单元卡「风险等级」变化时写
|
|
248
|
-
```
|
|
249
|
-
|
|
250
|
-
**大纲锁定**:已进入正文写作的前 10 章细纲锁定,未经用户确认不得修改;后续滚动细纲可随正文反馈微调。**卷纲锁定的定义**:某卷一旦已有正文章节,该卷已写区间对应的既有剧情单元卡与对标结构坐标即视为锁定——未经用户确认不改既有内容,但允许在卷尾**追加**新剧情单元卡(只增不改)。追加同样只发生在用户明确要求补纲/扩纲时;日更/写正文流程不自动追加剧情单元卡。workflow-daily 各处「锁定卷纲绝不自动修改」均按此定义执行。
|
|
251
|
-
|
|
252
|
-
**中途补纲/扩纲小流程**(项目已有大纲;只改细纲不进入正文大修):
|
|
253
|
-
1. 定位请求范围、已写进度和所属单元:读 `大纲/大纲.md`;卷纲先用 `outline_view.py --toc {卷纲路径}` 定位,再 `--unit {单元ID}` 取闭包,尚无单元用 `--contract` 取契约,不整读。另读 `设定/题材定位.md` 和已有 `追踪/上下文.md`;有正文却缺追踪时停止补纲,提示按 workflow-daily 修复/迁移,不猜进度;无正文也无追踪时以现有纲/设定规划,不为读取状态先初始化。
|
|
254
|
-
2. 请求章已属于既有单元时复用单元卡,只补/改点名细纲,不另建单元;沿用上方锁定规则。确需新单元才按 references/outline-structure-theory.md「对标节奏迁移」选同类单元,向卷尾**追加**卡及情绪弧线、故事线、伏笔规划,已锁定内容不动。用户补纲不等于授权修改其他章;超出本卷体量时先确认扩卷或开新卷。
|
|
255
|
-
3. 答上方「排纲自查」1–4(追加单元时按单元内 1/4·中点·3/4 口径);进入细纲层时再做第 5 项供给自查。
|
|
256
|
-
4. 按本次交付层级停止:只要大纲/卷纲则不展开细纲;需要细纲时按上述批次边界只做请求范围,完成「细纲后设定补全」与批末核对。
|
|
257
|
-
5. 规划事件和未来揭示只落卷纲/细纲,不提前成为追踪事实。已有正文项目补纲不写 `追踪/`,不执行 init/commit;下一章必须履行的承诺在下一次正文事务里进入 `next_chapter_commitments`。
|
|
258
|
-
|
|
259
|
-
**细纲质量要求**:每章细纲都要按当前章节蓝图直接指导正文(核心事件、字数目标、字数口径、单元ID/位置、目标情绪、主角目标/关键选择、章首钩子、爽点、本章禁止提前释放九个必填字段齐备),但**强度按章节定位分配、不是每章顶满**:高压/推进章配齐钩子+爽点+悬念;低压/关系/修炼/信息整理章允许无显性爽点、弱钩子或仅情绪钩子,重点是把功能(喘息、关系、铺垫、转场)写到位。底线是每章都给读者一个往下看的理由、相邻章不情绪趋同(见 references/outline-structure-theory.md「章节定位与张弛」)。字段不完整时先补齐;无法从材料确定的关系或副线写 `[待补充]`,不得杜撰。
|
|
260
|
-
|
|
261
|
-
> **细纲钩子来源**:优先沿本批剧情单元卡「对标剧情参照」剧情单元的节拍与兑现方式设计钩子链;多对标书时参 `references/cross-book-recall.md`,副对标同基调 `章节/*_摘要.md` 仍可作单章钩子灵感(可选);有 `灵感库/` 时可按「适用阶段=细纲」召回 active CBA 辅助钩子设计,零命中不阻塞
|
|
262
|
-
|
|
263
|
-
**章节标题规则**:只做轻量去重;发现同名或明显重复标题时,按本章核心事件改名,并保持细纲标题与正文文件名一致。
|
|
264
|
-
|
|
265
|
-
**细纲后设定补全(每批细纲建完后执行)**:扫描本批细纲新出现的具名角色/势力/关键设定,对**会复用**的(按卷纲/细纲判断:后续多次出场或承担剧情功能)自动建档,不等用户确认:
|
|
266
|
-
- 角色 → 建 `设定/角色/{名}.md`(填空模板见 character-basics.md 主角卡/配角卡);核心复用角色真正进入正文后,由追踪事务建立 `追踪/角色状态/{名}.md` 动态快照;
|
|
267
|
-
- 势力/组织 → 建 `设定/势力/{名}.md`(名称、定位、核心目标、关键人物、与主角关系);
|
|
268
|
-
- 影响多章的世界观规则 → 建/补 `设定/世界观/{主题}.md`(规则、适用范围)。
|
|
269
|
-
- **刻度与名目** → 建/补 `设定/世界观/{主题}.md` 里的对照表。凡是正文要拿来**比大小、算价钱、报名次、定档位**的东西都算:资质/评级档位、职级与待遇、货币与物价、等级与进度格、名次与席位、赏罚名目、时限与期限。写成**可数的序列**(几档、哪一档在哪、相邻两档差多少),不要只写一个孤立的值。
|
|
270
|
-
|
|
271
|
-
**缺什么按新增物三级处置——不许硬写,也不许一律停摆。** 与写手写正文同一套三级。 排纲或写正文时需要一样东西(角色、能力、物价、规矩、刻度、场景)而设定里查不到时,先查再分级:
|
|
272
108
|
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
-
|
|
282
|
-
-
|
|
283
|
-
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
{
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
{
|
|
293
|
-
|
|
109
|
+
创建参考:`character-relations.md`「人物关系类型」
|
|
110
|
+
|
|
111
|
+
## 设定/题材定位.md
|
|
112
|
+
|
|
113
|
+
```markdown
|
|
114
|
+
# 题材定位
|
|
115
|
+
|
|
116
|
+
## 基本信息
|
|
117
|
+
- 书名:{暂定名可改}
|
|
118
|
+
- 题材类型:{玄幻/都市/系统/...}
|
|
119
|
+
- 目标平台:{起点/番茄/晋江/其他;story-review 据此选平台 rubric}
|
|
120
|
+
- 核心梗:{一句话卖点}
|
|
121
|
+
- 微创新点:{与同类题材的差异}
|
|
122
|
+
- 预计字数:{X} 万字;目标读者:{画像}
|
|
123
|
+
|
|
124
|
+
## 作者已定
|
|
125
|
+
- {作者在对话里定下的方向、卖点、偏好与红线,一条一行;否掉的方案也记一行,写明为什么不要}
|
|
126
|
+
|
|
127
|
+
## 核心设定(定设定时填)
|
|
128
|
+
- 一句话梗概:{主角 + 目标 + 阻碍 + 反转}
|
|
129
|
+
- 主角:{姓名、核心特质、金手指、弱点、核心动机各一句;详档见 `设定/角色/{名}.md`}
|
|
130
|
+
- 世界观骨架:{时代背景、独特设定、力量体系、社会结构各一句;展开见 `设定/世界观/`}
|
|
131
|
+
- 核心冲突:主线矛盾={};终极阻碍={}
|
|
132
|
+
|
|
133
|
+
## 读者契约(参 `reader-contract-and-progression.md`)
|
|
134
|
+
- 核心读者承诺:{读者来追什么爽感/情绪/关系/事业}
|
|
135
|
+
- 主角代理权承诺:{主角不可替代的判断、关键选择或贡献}
|
|
136
|
+
- 利益安全线:{核心资产/卖点不得被没收、转赠、无交换暴露的边界}
|
|
137
|
+
- 期待债:{开篇/本卷已承诺,何时以什么形式偿还}
|
|
138
|
+
- 题材边界:{个人逆袭/群像/导师/制度合作等;高层级机构出现时先核对}
|
|
139
|
+
|
|
140
|
+
## 终局底牌与升级台阶(防写无可写;开书填一次,日更只查。参 `reader-contract-and-progression.md`「终局储备与推进节奏」)
|
|
141
|
+
- 终局底牌(一次性资源,标最早解锁卷):头号宿敌={}·第{X}卷;终极真相/身世={}·第{X}卷;金手指上限={}·第{X}卷;身份/地位终点={}·第{X}卷;核心情感确定={无感情主线可删}·第{X}卷
|
|
142
|
+
- 升级台阶:主体系{境界/等级/地图/势力层级}共{N}档 × 每档约{W}万字 应 ≥ 全书目标字数(不足则拉长体系/加地图层);敌人/目标成梯队逐级解锁,禁止越级秒顶级
|
|
143
|
+
- 透支红线:① 未到解锁卷就动用终局底牌 ② 某条升级线逼近天花板、后面没台阶接
|
|
144
|
+
|
|
145
|
+
## 核心梗三分法
|
|
146
|
+
- 表层卖点:{读者一眼看到的吸引力}
|
|
147
|
+
- 深层爽点:{持续追读的情绪驱动力}
|
|
148
|
+
- 长线钩子:{支撑全书的悬念/目标}
|
|
149
|
+
|
|
150
|
+
## 对标分析(概要)
|
|
151
|
+
> 完整对标数据见 `对标/` 目录。此表仅做快速概览。
|
|
152
|
+
|
|
153
|
+
| 对标书 | 相似点 | 差异点 | 可借鉴 |
|
|
154
|
+
|--------|-------|-------|-------|
|
|
155
|
+
| {书名} | {点} | {点} | {点} |
|
|
156
|
+
|
|
157
|
+
## 对标登记(多对标时必填;cross-book-recall 跨书召回按此排序与预算)
|
|
158
|
+
- 主对标书:{书名;单对标可省,多对标必填}
|
|
159
|
+
- 对标书列表:
|
|
160
|
+
|
|
161
|
+
| 书名 | 题材类型 | 引用强度{辅/参考} | 用途 |
|
|
162
|
+
|------|---------|-----------------|------|
|
|
163
|
+
| {书名} | {类型} | {辅/参考} | {文风主对标/结构参考/…} |
|
|
164
|
+
|
|
165
|
+
## 题材框架(出卷纲时补)
|
|
166
|
+
- 八节点位置:{当前处于哪个节点}
|
|
167
|
+
- 关键转折节点:{列出}
|
|
294
168
|
```
|
|
295
169
|
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
#### Agent 调用:story-architect
|
|
299
|
-
|
|
300
|
-
规划优先由主会话按请求范围交付;只有结构复杂、反转链多或方案不稳时才调用 story-architect。
|
|
301
|
-
|
|
302
|
-
当前端已部署 story-architect 时可让它辅助;Antigravity 调用规则同上:
|
|
303
|
-
- 任务:传入本次交付层级、章/卷范围与停点;只做卷纲时不让 agent 附带细纲或正文。
|
|
304
|
-
- 章节定位(可选):需要时标高压/推进/修炼试错/关系回收/低压生活/信息整理;低压章可弱爽点,但仍要有往下看的理由。
|
|
305
|
-
- 目标字数:只填写章级 `字数目标` 与 `visible_chars_v1` 口径;情节点不分配精确字数,也不让模型心算容量。
|
|
306
|
-
- 主会话校验:按既有细纲流程复核目标、核心字段、可执行情节点和 `[待补充]`;本阶段不把语义判断复制进多端 Hook。
|
|
307
|
-
- **契约摘要必须原样附带**:本阶段的卷纲要直接产出终局储备(本卷主推线/战果、本卷解锁的终局里程碑、禁碰的未解锁底牌)和剧情单元(单元ID等字段),spawn prompt 必须带上 Phase 1「Agent 调用:story-architect」中的「story-architect 契约摘要」,让主线程与委托产出共用同一 schema。
|
|
308
|
-
|
|
309
|
-
如 agent 不可用,由主线程直接执行。
|
|
170
|
+
创建参考:`long-genre-mechanics.md`「核心梗三层递进设计」
|