@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,54 +1,39 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: story-long-write
|
|
3
3
|
version: 1.0.0
|
|
4
|
-
description: "长篇网文规划与写作。支持只讨论结构、只写大纲或指定细纲,明确要求正文后再写章节。触发方式:/story-long-write
|
|
4
|
+
description: "长篇网文规划与写作。支持只讨论结构、只写大纲或指定细纲,明确要求正文后再写章节。触发方式:/story-long-write、/写长篇、「帮我开书」「定设定」「出卷纲」「规划剧情」「写大纲」「补细纲」「日更」「续写」「继续写」「修改第X章」「回炉」「重写第X章」。"
|
|
5
5
|
metadata: {"openclaw":{"source":"https://github.com/zenstory-ai/oh-story-claudecode"}}
|
|
6
6
|
---
|
|
7
7
|
# story-long-write:长篇网文写作
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
你是网络小说创作教练,帮用户从选题、大纲到正文写完一本长篇网络小说。
|
|
10
10
|
|
|
11
|
-
##
|
|
11
|
+
## 写前必读(强制,先读后写)
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
任何创建或修改长篇故事文件的动作前,先判断场景并读完下列文件。**只读本 SKILL.md 不算完成;`rg` 检索或局部摘读也不算完整读取。**
|
|
14
14
|
|
|
15
15
|
必须分块读到 EOF:
|
|
16
16
|
|
|
17
|
-
1.
|
|
18
|
-
2. 主会话直接写正文时,首次落笔前完整读取 `references/long-format.md
|
|
19
|
-
3.
|
|
20
|
-
4. 正文写前,references 读完后立即重读当前用户请求、本章细纲和卷纲,先在上下文里**记下本轮约束**:原样记录用户明确字数范围、必发生、禁止发生、精确时间锚与本章停笔点、章尾新债。references
|
|
17
|
+
1. 规划按时刻读:定方向、定设定读 `references/workflow-setup.md`,出卷纲读 `references/workflow-volume.md`,出细纲或补纲读 `references/workflow-outline.md`,只读当前时刻的;写指定章读取 `references/workflow-chapter.md`;日更先读取 `references/workflow-daily.md`,进入正文前再完整读取 `workflow-chapter.md`;大修先读 `references/workflow-revision.md`,改稿时还要读什么由它写明。
|
|
18
|
+
2. 主会话直接写正文时,首次落笔前完整读取 `references/long-format.md` 与 `references/writing-craft.md`(和写手同一套技法);`references/long-chapter-quality.md`、`references/long-chapter-hooks.md` 只在排查具体问题时读,去味走检测器,不预读。交给 narrative-writer 时,由该 agent 按自己的 reference 表完成写前读取,主会话不得用未读 reference 的临时 prompt 替代。
|
|
19
|
+
3. 本章技法按下方「本章技法」一段选,至多一份;主会话自己写时按那段只读指定小节,这是本条唯一允许的按节读。
|
|
20
|
+
4. 正文写前,references 读完后立即重读当前用户请求、本章细纲和卷纲,先在上下文里**记下本轮约束**:原样记录用户明确字数范围、必发生、禁止发生、精确时间锚与本章停笔点、章尾新债。references 只提供技法,不得覆盖这些项目事实;作者给的字数范围写在细纲「字数范围」行(命令参数只作临时覆盖),有它就不用默认 ±15%。交付前逐项复核:字数带外按 `workflow-chapter.md` 的收口流程交用户处置,不自动补字;其余项越界不算完成。
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
任一必需路径不存在、不可读或未读完时立即停止,报告准确路径,**不得先写正文再补读**。写前必读按当前任务、当前会话重新执行;旧会话的“读过”不能沿用。
|
|
23
23
|
|
|
24
24
|
---
|
|
25
25
|
|
|
26
26
|
> 内置适配 Claude Code / OpenCode / Codex / Antigravity / ZCode / OpenClaw。专业 agent 只查当前端 canonical 目录(`.claude/agents`、`.opencode/agents`、`.codex/agents` TOML、`.agents/agents`);Antigravity 用 `invoke_subagent` + 同名 `TypeName`。文件或运行时能力缺失、返回 unknown agent,或当前为不执行 custom agents 的 ZCode 3.3.4 时,报告 fallback 并 solo/direct 执行。
|
|
27
27
|
>
|
|
28
|
-
> Spawn 版本提示(不阻断 spawn):先读取项目根 `.story-deployed` 的 `agents_version`。与本版 `agents_version:
|
|
28
|
+
> Spawn 版本提示(不阻断 spawn):先读取项目根 `.story-deployed` 的 `agents_version`。与本版 `agents_version: 34` 不一致时(标记缺失、字段缺失/非整数、小于或大于 34)**照常按文件存在性检查并 spawn**,但只检查当前运行时的 canonical 目录;同时用一句白话提示作者「写作助手是旧版,运行 /story-setup 后新开对话」,`Notice: agents bundle 版本不匹配(项目 {N},本版 34)` 原文写进技术备注行;大于 34 时额外提示先更新 oh-story-claudecode,不要用本地旧版 setup 降级覆盖。只有 agent 文件缺失、或运行时不暴露 custom agent 时才降级 solo/direct,`Fallback: ... -> solo` 同样只进技术备注行。
|
|
29
29
|
|
|
30
30
|
**文风裁决**:正文写作、改写或审稿前先读 [references/style-resolution.md](references/style-resolution.md),加载本书文风并形成 `style_resolution`;无作者记忆也执行。当前请求、本书文风和 active 偏好按维度覆盖通用 references;同一裁决交给后续执行者。
|
|
31
31
|
|
|
32
32
|
## 核心方法
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
先抓情绪,再用验证过的模式可靠交付,灵感只做素材:每个场景服务一个说得清的目标情绪;从对标里找验证过的剧情模式,把对标角色当功能位,用本书的角色和素材填;写每章只读「不知道就会写错」的状态、伏笔与设定。契约与推进决策先过 `references/reader-contract-and-progression.md`「契约四问」。作者记忆:写正文时组装脚本已代查注入;其他任务直接跑 `{PYTHON} {skill 根}/scripts/author_memory_commit.py query --workspace {放 .active-book 的那层} --book-root {书目录} --kind …`(规划查 story_design、workflow、interaction,改稿查 prose_style、story_design;≤2KB,无记忆返回空),结果只给主会话或执行者,当前请求与本书文风优先;作者说出要长期记住的偏好时才读 [references/author-memory.md](references/author-memory.md) 按它 `record` 写入、回传回执。
|
|
35
35
|
|
|
36
|
-
|
|
37
|
-
2. **从验证过的模式出发**。先问"什么被验证过有效,我如何重新交付",少从"我想写什么"直接起步。扫榜找方向,拆文找模块,对标找节奏。
|
|
38
|
-
3. **用模块组装,不要重新发明**。每个题材都有验证过的剧情模式——反转怎么铺、爽点怎么爆、感情怎么拉扯。找到对的模块,把对标书的具体角色看成功能位(对手/盟友/催化剂),再映射到你的角色。用你自己的素材填充这些功能位。
|
|
39
|
-
4. **只加载必需信息**。写每章只读“不知道就会写错”的角色状态、待收伏笔、相关设定。其余留在文件系统里。
|
|
40
|
-
5. **契约与推进决策走权威参考文件**。涉及读者契约、主角代理权、利益安全、终局底牌与升级台阶、机构/势力边界和契约风险判定时,先按 `references/reader-contract-and-progression.md`「契约四问」校准,不在 SKILL.md 内复制长规则。
|
|
41
|
-
6. **作者记忆**:写正文时组装脚本已代查并注入;其他任务按 [references/author-memory.md](references/author-memory.md) 带 `--book-root` 查询 ≤2KB active 项交执行者;当前请求、本书文风优先。长期声明用 `record` 写入、回传回执。
|
|
42
|
-
|
|
43
|
-
| 题材 | 核心情绪 | 重点参考 |
|
|
44
|
-
|------|---------|---------|
|
|
45
|
-
| 打脸/逆袭 | 爽感释放 | plot-emotion-system.md + style-combat-face.md |
|
|
46
|
-
| 身份反转 | 震撼+痛快 | long-reversal.md |
|
|
47
|
-
| 感情拉扯 | 意难平 | emotional-methods.md |
|
|
48
|
-
| 悬疑/惊悚 | 紧张+好奇 | long-suspense.md |
|
|
49
|
-
| 日常装逼 | 期待感 | long-chapter-hooks.md |
|
|
50
|
-
|
|
51
|
-
> **情绪反查题材**:如果用户先说了情绪感觉但没提题材,从上表反向匹配——例如「爽感释放」指向打脸/逆袭,再从 `long-genre-catalog.md` 找该题材下的细分方向。
|
|
36
|
+
**本章技法(每章至多读一份)**:按细纲主功能选——打脸/逆袭(爽感释放)`style-combat-face.md`;身份/认知/立场反转(震撼+痛快)`long-reversal.md`;感情拉扯(意难平)`emotional-methods.md`,自己写时加 `emotion-on-page.md`;悬疑/惊悚/异常线索(紧张+好奇)`long-suspense.md`;日常装逼(期待感)`long-chapter-hooks.md`。都不对应就不读,按 writing-craft 写。交给写手时只在 prompt「本章技法」填类别,由写手整份读;主会话自己写正文时只读该文件的「决策路由」和它指向的那一节(先看标题定位,不整读),日更一批只读一份,按本批最需要的那章选,其余章按 writing-craft 写。作者先说情绪没说题材时按括号反查,再从 `long-genre-catalog.md` 找细分方向。
|
|
52
37
|
|
|
53
38
|
---
|
|
54
39
|
|
|
@@ -61,18 +46,17 @@ metadata: {"openclaw":{"source":"https://github.com/zenstory-ai/oh-story-claudec
|
|
|
61
46
|
| **结构讨论** | "只讨论/推敲故事结构" | 只交付结构方案,不建工程、不自动落盘;不要求先填完设定或细纲 |
|
|
62
47
|
| **大纲规划** | "写大纲/规划剧情/规划全书/规划第X卷/开新卷" | 按需取 Phase 1→3,交付所请求大纲/卷纲及必要设定;不自动展开细纲或初始化追踪 |
|
|
63
48
|
| **细纲规划** | "出细纲/补纲/扩纲/补细纲/写或修改第N章细纲" | Phase 3:既有单元内只补/改点名章;需要新单元才走「中途补纲/扩纲小流程」。指定范围不扩到整单元;未指定时按剧情批建纲 |
|
|
64
|
-
| **开书** | "帮我开书",未限定规划层级 |
|
|
49
|
+
| **开书** | "帮我开书",未限定规划层级 | 按确认点逐个走:定方向→定设定→卷纲→首批 10 章细纲,每个确认点作者说继续才往下;**最远停在细纲交付,不自动写正文** |
|
|
50
|
+
| **定设定** | "定设定",或已有题材定位、还没有角色与关系 | 定设定时刻:`references/workflow-setup.md` Phase 2,交付设定后停 |
|
|
65
51
|
| **写指定章** | "写第 N 章" / "写第1章" / "开书并写首章",对象是正文 | Phase 4→5,只写点名章后停止;缺前置时先补必要设定、卷纲和点名章细纲,不套用完整开书的 10 章默认 |
|
|
66
52
|
| **日更续写** | 关键词("日更"/"续写"/"继续写")**且**项目已有正文+追踪 | 加载 `references/workflow-daily.md` |
|
|
67
53
|
| **大修** | "修改第X章" / "回炉" / "重写第X章",对象是已写正文 | 加载 `references/workflow-revision.md`;只改细纲不进此流程 |
|
|
68
54
|
|
|
69
55
|
**对象优先**:"写/修改第N章细纲"是规划,不因命中"写/修改第N章"而写正文;"以后再写正文"不是本轮授权。仅规划要求优先于旧日更任务,停止旧批量。对象不明或同一请求范围冲突时,只确认冲突项。
|
|
70
56
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
**转入正文**:明确正文请求只授权进入既有写作流程,不等于可以直接落笔。创建/修改正文前,重新完成本轮全部正文 Reference Gate,并按 workflow-chapter 处理缺 state、使 `tracking_commit.py check` 通过;任一未完成则停止,不落正文。之后仍按原流程写作、质检、提交追踪,无须再问是否继续。
|
|
57
|
+
**规划续接**:"继续/按这个来/确认方案"不扩大范围,完成即停,不自动转细纲或正文;"继续写/接着写"指正文——下一章有细纲就写,上一轮在规划就只问一句「要接着写第N章正文吗?」(默认是),缺细纲则问是否先补。规划模式不写入追踪或作者记忆,不调用 narrative-writer。开新卷时新角色/势力/设定回 Phase 2 增量补,Phase 3 只做到请求层级。
|
|
74
58
|
|
|
75
|
-
|
|
59
|
+
**转入正文**:明确的正文请求只授权进入写作流程。落正文前重新完成本轮「写前必读」,按 workflow-chapter 处理缺 state、使 `tracking_commit.py check` 通过,任一未完成就停止;之后按原流程写作、质检、提交,不再问是否继续。
|
|
76
60
|
|
|
77
61
|
### 裸调用与停靠点(防失控)
|
|
78
62
|
|
|
@@ -82,58 +66,33 @@ metadata: {"openclaw":{"source":"https://github.com/zenstory-ai/oh-story-claudec
|
|
|
82
66
|
- 有纲无正文 → 「补细纲」「写第1章」;
|
|
83
67
|
- 有正文+追踪 → 展示进度与下一章细纲状态,列「规划下一卷」「日更2章」「修改第X章」。
|
|
84
68
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
**匹配顺序**:只规划按 结构讨论 → 细纲规划 → 大纲规划 → 开书,越窄越优先;要正文按 大修 → 写指定章 → 日更续写。日更前置不齐则提示补齐或写第1章,不直接写一批。
|
|
88
|
-
|
|
89
|
-
**日更续接**:用户未改变任务时,同批"继续/续写/日更"仍走 `references/workflow-daily.md` 的完整串行流程,不直接落正文。正常批量不重复确认;阻塞或用户要求逐章确认时才暂停。切到规划后按上方「规划续接」,不恢复旧日更批量。
|
|
69
|
+
**正文批量上限**:写正文须用户显式给出章节范围或日更意图;单章默认 1 章,日更默认 2-3 章,单轮最多 3 章,超出的在汇报里提示下轮继续。**匹配顺序**:只规划按 结构讨论 → 细纲规划 → 大纲规划 → 开书,越窄越优先;要正文按 大修 → 写指定章 → 日更续写;日更前置不齐则提示补齐或写第1章。同批"继续/续写/日更"仍走 workflow-daily 的完整串行流程;切到规划后不恢复旧日更批量。
|
|
90
70
|
|
|
91
71
|
无法判断场景时,给 2-4 个白话选项(如「只聊结构」「写大纲」「写第N章正文」)让用户选,不贴场景表,也不开放式提问。
|
|
92
72
|
|
|
93
73
|
### 面向作者的汇报
|
|
94
74
|
|
|
95
|
-
所有给作者看的汇报、提问和停下说明只讲三件事:写了/改了什么(章名、发生了什么);要作者定的事(一句白话问题+白话选项+推荐默认);下一步。不写脚本、字段、参数名、状态码和内部清单名(如 排纲自查、供给自查、S1-S4、字数带);编号必带故事标签,如「伏笔 F057(那封信的去处)」。检查结果一句白话带过,如「自查过设定和前文,没发现冲突」。回执、Notice、Fallback
|
|
75
|
+
所有给作者看的汇报、提问和停下说明只讲三件事:写了/改了什么(章名、发生了什么);要作者定的事(一句白话问题+白话选项+推荐默认);下一步。不写脚本、字段、参数名、状态码和内部清单名(如 排纲自查、供给自查、S1-S4、字数带);编号必带故事标签,如「伏笔 F057(那封信的去处)」。检查结果一句白话带过,如「自查过设定和前文,没发现冲突」。回执、Notice、Fallback 等机器行只放最末一行「技术备注:」,其前可有一句下一步建议(如新开对话)。汇报照各 workflow 的模板写,不带代码块围栏;子 agent 返回的术语由主会话翻译后再说。
|
|
96
76
|
|
|
97
77
|
### 路径与术语约定
|
|
98
78
|
|
|
99
|
-
>
|
|
79
|
+
> `{PYTHON}` 依次试 `python3`、`python`、`py -3`,用第一个能跑的;`{skill 根}` 是本 skill 所在目录。
|
|
100
80
|
>
|
|
101
|
-
> **对标书路径查找**:优先 `{项目}/对标/{书名}/`,不存在则回退 `拆文库/{书名}
|
|
81
|
+
> **对标书路径查找**:优先 `{项目}/对标/{书名}/`,不存在则回退 `拆文库/{书名}/`(`拆文库/` 是拆文原始产出,`对标/` 是本项目引用视图,首次引用的复制规则见 workflow-setup.md「对标发现」第 3 条)。
|
|
102
82
|
>
|
|
103
|
-
>
|
|
104
|
-
>
|
|
105
|
-
>
|
|
106
|
-
>
|
|
107
|
-
>
|
|
108
|
-
>
|
|
109
|
-
>
|
|
110
|
-
> 找不到单元时脚本 exit 1 并报错,不静默降级——报错就去核对单元ID或先补卷纲,不要改用整读绕过。
|
|
111
|
-
> 段头的 `> 作用域:` 声明是这套的地基,格式与 checker 见 `references/artifact-protocols.md` 卷纲模板;
|
|
112
|
-
> 未声明作用域的段会被保守纳入并告警,跑 `outline_view.py --check {卷纲路径}` 修。
|
|
113
|
-
|
|
114
|
-
---
|
|
115
|
-
|
|
116
|
-
### Phase 1:确认选题方向
|
|
117
|
-
|
|
118
|
-
消费 `选题决策.md`、确认题材方向、做对标发现并登记主/副对标书。
|
|
119
|
-
|
|
120
|
-
**执行前先读 [references/workflow-setup.md](references/workflow-setup.md) 的「Phase 1:确认选题方向」节**,按其中步骤执行。
|
|
121
|
-
|
|
122
|
-
---
|
|
123
|
-
|
|
124
|
-
### Phase 2:核心设定
|
|
125
|
-
|
|
126
|
-
产出核心设定表,并创建 `设定/关系.md`、`设定/题材定位.md`、`设定/题材正文提示卡.md`。
|
|
127
|
-
|
|
128
|
-
**执行前先读 [references/workflow-setup.md](references/workflow-setup.md) 的「Phase 2:核心设定」节**。
|
|
83
|
+
> **卷纲不整读**:一律走 `{PYTHON} {skill 根}/scripts/outline_view.py --unit {单元ID} {卷纲路径}`(只要契约用 `--contract`,看目录用 `--toc`);找不到单元就核对单元ID或先补卷纲,不改用整读。排纲底稿放 `大纲/排纲底稿_{单元ID}.md`,只在排纲/补纲时读;取段器的作用域、历史与校验选项见 artifact-protocols.md 卷纲模板。
|
|
84
|
+
>
|
|
85
|
+
> **新增物三级**(排纲、写正文、处置共用;只看下一章需不需要知道它存在过):
|
|
86
|
+
> - **直接写**:微连接、路人、器物、地名细部、一次性对话、现场细节;不申报。
|
|
87
|
+
> - **写了要报**:具名配角、势力、复用地点属性、能力形态、规矩、刻度、新伏笔、新关系或承诺、给主角留下的东西;照写并逐条进申报表(类型/名目/落在哪/后续义务;无写 `0`;末行「本章没写成的」),主会话核对后才算续写事实。
|
|
88
|
+
> - **先问作者**:新主线事件或反转、金手指规则与力量档位、真相或伏笔结算、经济锚点、读者契约、提前写后续章、改变细纲已定结果或人物决定、卷纲新增编号、碰主推线或终局底牌、与既有裁定或承诺冲突;写正文时不写,排纲时挂起列候选,由主会话问作者。
|
|
89
|
+
> 拿不准:写时按写了要报,处置时按先问作者。
|
|
129
90
|
|
|
130
91
|
---
|
|
131
92
|
|
|
132
|
-
### Phase 3
|
|
133
|
-
|
|
134
|
-
产出全书体量与阶段总览、卷级大纲、逐章细纲;含排纲自查、分批建纲与「中途补纲/扩纲小流程」。
|
|
93
|
+
### Phase 1–3:开书与规划
|
|
135
94
|
|
|
136
|
-
|
|
95
|
+
按作者确认点分时刻读(见首屏写前必读第 1 条);每个时刻文件开头写了本时刻的交接规则,出卷纲、出细纲时不必再读 workflow-setup.md。
|
|
137
96
|
|
|
138
97
|
---
|
|
139
98
|
|
|
@@ -141,11 +100,11 @@ metadata: {"openclaw":{"source":"https://github.com/zenstory-ai/oh-story-claudec
|
|
|
141
100
|
|
|
142
101
|
#### 项目文件与产物
|
|
143
102
|
|
|
144
|
-
|
|
103
|
+
要找某类产物放哪、或修复缺失文件时,完整读取 [references/project-files.md](references/project-files.md) 照做;开书建文件按各时刻文件写明的路径直接落盘,写正文时缺文件按 workflow-chapter 开头停下修,都不必先读它。
|
|
145
104
|
|
|
146
105
|
#### 单章写作流程
|
|
147
106
|
|
|
148
|
-
**执行前先读 [references/workflow-chapter.md](references/workflow-chapter.md)
|
|
107
|
+
**执行前先读 [references/workflow-chapter.md](references/workflow-chapter.md)**,按其步骤 1-13 执行。日更批量另加载 `references/workflow-daily.md`。
|
|
149
108
|
|
|
150
109
|
#### 追踪
|
|
151
110
|
|
|
@@ -169,7 +128,7 @@ metadata: {"openclaw":{"source":"https://github.com/zenstory-ai/oh-story-claudec
|
|
|
169
128
|
|
|
170
129
|
## 参考资料索引
|
|
171
130
|
|
|
172
|
-
|
|
131
|
+
阶段必读项按首屏「写前必读」执行;写正文不按索引加读;规划或作者点名问技法时按 [参考索引](references/reference-index.md) 的加载条件选用。
|
|
173
132
|
|
|
174
133
|
## 语言
|
|
175
134
|
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# agent-calls.md:spawn 子代理的调用方式
|
|
2
|
+
|
|
3
|
+
只在要 spawn 对应 agent 时读;主会话自己写正文、自己排纲时不读。何时调用由各流程文件决定,这里只放 prompt 与必须附带的内容。Antigravity 用 `invoke_subagent` + 同名 `TypeName`。
|
|
4
|
+
|
|
5
|
+
## narrative-writer:写一章
|
|
6
|
+
|
|
7
|
+
全章细纲交给写手统筹编排,默认同一 session 按前后两组交付:按实际叙述顺序在自然转场或因果停顿处分组,不在一句对话或同一动作中间截断,可交错情节点但不增删批准内容、不拆逐点字数配额;写手先把前组写到工作目录 `前组.md`,主会话只调用一次 `storyctl.py wordcount checkpoint --file {segment} --project {项目根} --chapter {N}`,把 `actual / remaining_user_range` 连同后组交回同一写手,两组按原文拼接,不回改前组追字数。作者明确要求一次成文时执行安排填「全章」,直接落盘,不跑 checkpoint。
|
|
8
|
+
|
|
9
|
+
组装脚本的输出(`====` 以上)就是 prompt 骨架。**主会话填九槽**(搜 `[主会话填]`):执行安排 / 本章意图 / 作者本轮要求 / 本章技法(只填类别,写手自己读)/ 本节速记 / 涉及角色(列名字,角色卡写手自己读)/ `genre_prose_card` / 必读设定 / `style_resolution`;外加脚本标出的条件槽(降档不成立时的情绪与节奏召回;作者偏好限定范围记忆,适用时带 `--genre`/`--workflow` 跑 SKILL.md「核心方法」的 query 命令补查)。`author_preferences` 由脚本注入,只作低优先级倾向。空槽以外一字不改,整份照抄进 Agent prompt。脚本**跑不起来**时读 [writer-prompt-fallback.md](writer-prompt-fallback.md) 手动组装并报 `Fallback: build_writer_prompt -> 手动组装`。
|
|
10
|
+
|
|
11
|
+
## story-architect:定设定、出卷纲、出一批细纲(换新上下文)
|
|
12
|
+
|
|
13
|
+
先跑 `{PYTHON} {skill 根}/scripts/build_architect_brief.py --project {书目录} --task world`(卷纲 `--task volume --volume {N}`,细纲 `--task outline --chapters {A-B}`,一批最多 10 章),只取输出里的任务包路径,不读包的内容。交接前确认作者在对话里定下的方向、偏好和否掉的方案都已写进 `设定/`。
|
|
14
|
+
|
|
15
|
+
Prompt:`项目目录:{dir}\n任务包:{任务包路径}\n先完整读取任务包,按包里的流程与模板完成;作者已定的方向、设定和要求都在 设定/,对话内容不会传给你\n交付后只回任务包开头要求的几项`
|
|
16
|
+
|
|
17
|
+
收回后主会话:设定提案拿给作者逐项确认,按作者意见改文件;新卷纲跑 `outline_view.py --check --strict {卷纲路径}`(往旧卷纲追加单元去掉 `--strict`),细纲每章跑 `check-outline-contract.js`;失败把报错原样交回同一 agent 修一次。按 workflow-volume.md / workflow-outline.md 的汇报模板用故事话告诉作者,不转述任务包。
|
|
18
|
+
|
|
19
|
+
## story-architect、character-designer:题材定位与角色细化(可选)
|
|
20
|
+
|
|
21
|
+
定方向以和作者来回讨论为主,默认主会话自己做;复杂世界观、多线结构、强反转工程或作者明确要求时才派:
|
|
22
|
+
- `Agent(subagent_type: "story-architect", prompt: "项目目录:{dir}\n任务类型:题材定位\n查询参数:{作者选定的方向与对标信息}")`
|
|
23
|
+
- `Agent(subagent_type: "character-designer", prompt: "项目目录:{dir}\n任务类型:角色设定\n查询参数:{主角设定信息}")` — 辅助角色设定和语言风格档案
|
|
24
|
+
|
|
25
|
+
## consistency-checker:写正文后的事实核对
|
|
26
|
+
|
|
27
|
+
Prompt:`项目目录:{dir}\n检查范围:{本次写作的章节}\n检查类型:事实冲突+伏笔断线+角色属性不一致\n本章新增申报:{申报表原样粘贴,无则写 0};同时核对正文有无未申报的跨章事实,逐处列原文和细纲出处。只读与新增项和本章出场角色相关的设定、角色卡与追踪条目。冲突按 S1-S4 报出,申报项逐条给出登记/修复/先问作者的建议\n状态:last_committed_chapter={N},state_revision={R}(取自 tracking_commit.py check)`
|
|
28
|
+
|
|
29
|
+
## narrative-writer:审查+去AI味
|
|
30
|
+
|
|
31
|
+
Prompt:`项目目录:{dir}\n任务描述:审查+去AI味\n检查分工:你负责语义去味及原定自检;最终文件扫描由主会话执行\n检查范围:{本次写作的章节}\n文风路径:{设定/文风.md 全文路径}\nstyle_resolution:{与写作一致的裁决}\n作者偏好:{本章 query 命中的 prose_style/story_design 项}\n触发本次审查的检测结果:{chapter check 里 blocking 与语义类 advisory 的行号和类别,原样粘贴}\n所选 Gate:{按检测类别选,如 B 句式、G 解释腔;类别不明写 A-G}\n删除优先:每条 AI 味项先判能否删除,删后不丢伏笔/钩子/角色/情节/必要信息的直接删,会丢才润色\n按你的 7 Gate 与对话自检执行,台词里的工整否定不因脚本豁免而跳过\n删除测试:按 deslop-gates.md「写法抽查」执行,报告列候选数/删改数/保留理由`
|
|
32
|
+
|
|
33
|
+
## narrative-writer:超字一次净删(compress-once)
|
|
34
|
+
|
|
35
|
+
Prompt:`项目目录:{dir}\n任务描述:净删压缩\n正文:{正文路径}\n删除区间:{chapter check 给的 remove_to_internal_band}\n只删不增:优先删重复解释、装饰排比、无功能微动作;全部情节点、事实、因果、情绪兑现、钩子都保留,不改写成新句\n文风路径:{设定/文风.md 全文路径}`
|
|
36
|
+
|
|
37
|
+
## narrative-writer:改写一章(大修)
|
|
38
|
+
|
|
39
|
+
Prompt:`项目目录:{dir}\n任务描述:改写已写章节\n正文:{正文路径}(原稿已备份)\n细纲:{细纲路径}\n改动范围:{局部:哪几段或哪个场面,要改成什么/整章:按细纲重写}\n作者本轮要求:{作者原话要点}\n不动的部分:{局部修改时其余段落一字不改}\n衔接:{前一章结尾与后一章开头各一两句}\n文风路径:{设定/文风.md 全文路径}\nstyle_resolution:{与写作一致的裁决}\n作者偏好:{prose_style 查询结果,无写「无」}\n不借改稿新增细纲外的剧情;交付后回:改了哪些段、新增申报(无写 0)`
|
|
40
|
+
|
|
41
|
+
## story-explorer:写前对标召回
|
|
42
|
+
|
|
43
|
+
召回降档不成立、项目已部署 story-explorer 时,可一次召回文风/模块材料(不可用就按 benchmark-recall.md 自己召回):
|
|
44
|
+
- 查询类型:`benchmark_style_load`;传入项目目录、章节号、目标基调/字数和爽点类型。
|
|
45
|
+
- 需要返回:`style_profile_path`、`style_profile_summary`、`selected_emotion_module`、`rhythm_reference`、来源路径、匹配章节、锚点片段、`gaps`。
|
|
46
|
+
- `gaps` 分流:`no_benchmark` → `custom_style` 为真则用 `设定/文风.md` 写、情绪/节奏取本书内部材料,否则标「无对标参考」;`missing_primary_contract` → 按 `repair_action` 修复(重跑拆文或导入)并停止生成,自定义文风不豁免;`benchmark_book_missing` → 停止核对登记名,不换书;`conflict` / `module_rhythm_conflict` → 意图里说明冲突并按情绪模块/节奏的权威执行;profile_missing → custom_style 为真则用本书文风继续,否则停止;`profile_degenerate` → 有本书文风就用,没有回默认;`tone_match_failed` → 只用整书文风。其余字段原样进 writer prompt,`gaps` 原值保留在写前准备记录里。
|
|
47
|
+
- 主会话另行直接读 `设定/文风.md`:含实质内容时作为本书风格基准;但不豁免情绪/节奏缺失。
|
|
@@ -285,7 +285,7 @@ AI 喜欢把事情凑成三个以显"完整"。-> 砍到只剩最有力的一条
|
|
|
285
285
|
- 剧透式点破潜台词:「那点笑她看得分明」「谁都看得出他在撒谎」-> 把藏着的挑明了。留着别点破。
|
|
286
286
|
- 定性比喻/盖棺句:「像在宣判一件早已定好的事」「像看一件死物」-> 比喻在替角色下定论。非角色此刻强烈主观感受就删;要留也只能是她带偏见的瞬间感觉,不是客观断言。
|
|
287
287
|
|
|
288
|
-
自检:每句问一遍——这是"角色在经历",还是"作者在讲解/安排"
|
|
288
|
+
自检:每句问一遍——这是"角色在经历",还是"作者在讲解/安排"?凡作者跳出来讲,删,或改成角色视角内的呈现。根治办法是锁定深度限知视角:只写视角人物此刻看得见、听得见、想得到的,镜头钉死在角色身体里,作者就没位置跳出来了。
|
|
289
289
|
|
|
290
290
|
改法优先级:先删或原位替换污染句,不在段尾另补“人味”尾巴。需要补信息时,把原来的总结/动机/评价句改成角色当下能碰到的问题、手续、回信、付款、门外动静等具体压力;已有手机/屏幕/公告/门牌/表单等信息,优先作为角色看见的场内载体保留,不要转写成叙述者解释。具体载体跟剧情走,不套固定清单。
|
|
291
291
|
|
|
@@ -1,20 +1,11 @@
|
|
|
1
1
|
# 产物创建模板
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
大纲与卷纲的模板,出卷纲时(workflow-volume.md)读。
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
- 设定/关系.md
|
|
7
|
-
- 设定/题材定位.md(含读者契约 + 终局底牌/升级台阶 + 对标登记字段)
|
|
5
|
+
**模板列表:**(设定/关系、设定/题材定位的模板在 workflow-setup.md 文末;细纲模板与排纲底稿模板在 workflow-outline.md)
|
|
8
6
|
- 大纲/大纲.md(全书鸟瞰 + 全书体量与阶段总览)
|
|
9
7
|
- 大纲/卷纲_第X卷.md(含卷契约+终局储备+剧情单元+情绪弧线+反转规划)
|
|
10
|
-
-
|
|
11
|
-
- 追踪/逐章记录/第NNN章.md(未来相关紧凑增量)
|
|
12
|
-
- 追踪/伏笔.md
|
|
13
|
-
- 追踪/时间线/作者真相.md + 读者已知.md(派生视图)
|
|
14
|
-
- 追踪/角色状态/{角色名}.md
|
|
15
|
-
- 追踪/上下文.md(续写状态卡,固定 7 栏)
|
|
16
|
-
- 对标/{对标书名}/拆文报告.md
|
|
17
|
-
- 对标/{对标书名}/原文/第XXX章_{章名}.md
|
|
8
|
+
- 追踪/(首次写正文前由脚本生成,见文末「追踪体系」)
|
|
18
9
|
|
|
19
10
|
**层级关系(全书 › 卷 › 剧情单元 › 章 › 情节点;故事线横向贯穿多个剧情单元):**
|
|
20
11
|
- 大纲.md = 全书鸟瞰(每卷一两句话定位)
|
|
@@ -22,151 +13,21 @@
|
|
|
22
13
|
- 细纲_第XXX章.md = 单章蓝图(单元ID/位置 + 主角目标/关键选择 + 内容概括 + 多线情节安排 + 人物关系/出场顺序 + 情节细化 + 结尾设定/钩子)
|
|
23
14
|
|
|
24
15
|
**概念对照(统一叫法,减少混淆):**
|
|
25
|
-
- **剧情单元** = 一段完整剧情(1.5-3 万字/数章,一个矛盾从起到收)。拆书侧就是 `剧情/{剧情单元名}.md
|
|
26
|
-
- **故事线** = 贯穿多个剧情单元的线(主线/感情线/成长线/夺宝线…),比剧情单元大一层。拆书侧是 `剧情/故事线.md`,本书侧是卷纲的**本卷故事线**表(L
|
|
16
|
+
- **剧情单元** = 一段完整剧情(1.5-3 万字/数章,一个矛盾从起到收)。拆书侧就是 `剧情/{剧情单元名}.md`,本书侧就是卷纲里的**剧情单元卡**,统一叫剧情单元。outline-structure-theory.md 的「一级/二级/三级结构」指全书结构类型,不是单元名。
|
|
17
|
+
- **故事线** = 贯穿多个剧情单元的线(主线/感情线/成长线/夺宝线…),比剧情单元大一层。拆书侧是 `剧情/故事线.md`,本书侧是卷纲的**本卷故事线**表(L 编号)。剧情单元纵向切段,故事线横向贯穿,同一卷的两个视角。故事线编号是 `L01` 式两位数,单元ID 是 `L1-03` 式(卷号+连字符+序号),别混用。
|
|
27
18
|
- 「循环」一词只在**节奏义**保留(爽点循环、升级循环、小/中/大循环等),不再指代规划单元。
|
|
28
19
|
|
|
29
20
|
---
|
|
30
21
|
|
|
31
|
-
## 对标/{对标书名}/拆文报告.md
|
|
32
|
-
|
|
33
|
-
> **拆文库/对标关系**:`拆文库/` = analyze skill 的原始产出(数据源)。`对标/` = 写作项目的引用视图。首次引用时从 `拆文库/` 复制到 `对标/`。
|
|
34
|
-
|
|
35
|
-
此文件由 `story-long-analyze` 拆解管道输出(快速预览报告或完整拆文报告)。write skill 的职责是**读取**,不创建。
|
|
36
|
-
|
|
37
|
-
如需手动创建简版对标摘要(未使用 analyze skill 时):
|
|
38
|
-
|
|
39
|
-
```markdown
|
|
40
|
-
# {对标书名} 对标摘要
|
|
41
|
-
|
|
42
|
-
## 基本信息
|
|
43
|
-
- 书名:{}
|
|
44
|
-
- 作者:{}
|
|
45
|
-
- 题材/类型:{}
|
|
46
|
-
- 目标平台:{}
|
|
47
|
-
- 成绩:{均订/在读/热度}
|
|
48
|
-
|
|
49
|
-
## 核心发现
|
|
50
|
-
- 开篇钩子:{类型 + 手法}
|
|
51
|
-
- 爽点密度:{约 N 字/次}
|
|
52
|
-
- 节奏模式:{描述}
|
|
53
|
-
- 可借鉴套路:
|
|
54
|
-
1. {}
|
|
55
|
-
2. {}
|
|
56
|
-
3. {}
|
|
57
|
-
|
|
58
|
-
## 不建议模仿(禁止照搬)
|
|
59
|
-
- {}(只学结构,不抄桥段)
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
创建参考:`plot-special-topics.md` (对标书选择法则)
|
|
63
|
-
|
|
64
|
-
---
|
|
65
|
-
|
|
66
|
-
## 对标/{对标书名}/原文/第XXX章_{章名}.md
|
|
67
|
-
|
|
68
|
-
对标书章节原文,由用户手动放入或拆文管道导入。
|
|
69
|
-
|
|
70
|
-
```markdown
|
|
71
|
-
# 第{N}章 {章名}
|
|
72
|
-
|
|
73
|
-
{本章完整原文内容}
|
|
74
|
-
|
|
75
|
-
---
|
|
76
|
-
> 来源:{手动输入 / story-long-analyze 导入}
|
|
77
|
-
> 原始字数:{约N字}
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
---
|
|
81
|
-
|
|
82
|
-
## 设定/关系.md
|
|
83
|
-
|
|
84
|
-
```markdown
|
|
85
|
-
# 角色关系图
|
|
86
|
-
|
|
87
|
-
## 关系总览
|
|
88
|
-
|
|
89
|
-
| 角色 A | 角色 B | 关系类型{亲情/爱情/友情/敌对/师生/主从/利益} | 情感倾向{正面/负面/中性/复杂} | 当前状态 | 起始章节 | 变化节点 |
|
|
90
|
-
|--------|--------|---------------------------------------------|-----------------------------|---------|---------|---------|
|
|
91
|
-
| {名} | {名} | {类型} | {倾向} | {描述} | 第{N}章 | {事件} |
|
|
92
|
-
|
|
93
|
-
## 关系演变
|
|
94
|
-
|
|
95
|
-
{角色A}<->{角色B}:
|
|
96
|
-
- 起点:{初始关系}
|
|
97
|
-
- 转折:{章节·事件·变化}
|
|
98
|
-
- 当前:{现状}
|
|
99
|
-
|
|
100
|
-
## 核心冲突关系
|
|
101
|
-
|
|
102
|
-
{列出推动剧情的2-3对核心对立/合作关系}
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
创建参考:`character-relations.md` (人物关系类型 + 关系图绘制)
|
|
106
|
-
|
|
107
|
-
---
|
|
108
|
-
|
|
109
|
-
## 设定/题材定位.md
|
|
110
|
-
|
|
111
|
-
```markdown
|
|
112
|
-
# 题材定位
|
|
113
|
-
|
|
114
|
-
## 基本信息
|
|
115
|
-
- 题材类型:{玄幻/都市/系统/...}
|
|
116
|
-
- 目标平台:{起点/番茄/晋江/其他;story-review 据此选平台 rubric}
|
|
117
|
-
- 核心梗:{一句话卖点}
|
|
118
|
-
- 微创新点:{与同类题材的差异}
|
|
119
|
-
|
|
120
|
-
## 读者契约(参 `reader-contract-and-progression.md`)
|
|
121
|
-
- 核心读者承诺:{读者来追什么爽感/情绪/关系/事业}
|
|
122
|
-
- 主角代理权承诺:{主角不可替代的判断、关键选择或贡献}
|
|
123
|
-
- 利益安全线:{核心资产/卖点不得被没收、转赠、无交换暴露的边界}
|
|
124
|
-
- 期待债:{开篇/本卷已承诺,何时以什么形式偿还}
|
|
125
|
-
- 题材边界:{个人逆袭/群像/导师/制度合作等;高层级机构出现时先核对}
|
|
126
|
-
|
|
127
|
-
## 终局底牌与升级台阶(防写无可写;开书填一次,日更只查。参 `reader-contract-and-progression.md`「终局储备与推进节奏」)
|
|
128
|
-
- 终局底牌(一次性资源,标最早解锁卷):头号宿敌={}·第{X}卷;终极真相/身世={}·第{X}卷;金手指上限={}·第{X}卷;身份/地位终点={}·第{X}卷;核心情感确定={无感情主线可删}·第{X}卷
|
|
129
|
-
- 升级台阶:主体系{境界/等级/地图/势力层级}共{N}档 × 每档约{W}万字 应 ≥ 全书目标字数(不足则拉长体系/加地图层);敌人/目标成梯队逐级解锁,禁止越级秒顶级
|
|
130
|
-
- 透支红线:① 未到解锁卷就动用终局底牌 ② 某条升级线逼近天花板、后面没台阶接
|
|
131
|
-
|
|
132
|
-
## 核心梗三分法
|
|
133
|
-
- 表层卖点:{读者一眼看到的吸引力}
|
|
134
|
-
- 深层爽点:{持续追读的情绪驱动力}
|
|
135
|
-
- 长线钩子:{支撑全书的悬念/目标}
|
|
136
|
-
|
|
137
|
-
## 对标分析(概要)
|
|
138
|
-
> 完整对标数据见 `对标/` 目录。此表仅做快速概览。
|
|
139
|
-
|
|
140
|
-
| 对标书 | 相似点 | 差异点 | 可借鉴 |
|
|
141
|
-
|--------|-------|-------|-------|
|
|
142
|
-
| {书名} | {点} | {点} | {点} |
|
|
143
|
-
|
|
144
|
-
## 对标登记(多对标时必填;cross-book-recall 跨书召回按此排序与预算)
|
|
145
|
-
- 主对标书:{书名;单对标可省,多对标必填}
|
|
146
|
-
- 对标书列表:
|
|
147
|
-
|
|
148
|
-
| 书名 | 题材类型 | 引用强度{辅/参考} | 用途 |
|
|
149
|
-
|------|---------|-----------------|------|
|
|
150
|
-
| {书名} | {类型} | {辅/参考} | {文风主对标/结构参考/…} |
|
|
151
|
-
|
|
152
|
-
## 题材框架
|
|
153
|
-
- 八节点位置:{当前处于哪个节点}
|
|
154
|
-
- 关键转折节点:{列出}
|
|
155
|
-
```
|
|
156
|
-
|
|
157
|
-
创建参考:`long-genre-mechanics.md` (核心梗解析与运用 + 微创新与差异化设计)
|
|
158
|
-
|
|
159
|
-
---
|
|
160
|
-
|
|
161
22
|
## 大纲/大纲.md
|
|
162
23
|
|
|
163
|
-
全书鸟瞰。顶部为「全书体量与阶段总览」(总章节数/目标字数/全书情绪曲线/阶段划分/各阶段节奏公式/关键节点与钩子链,结构见 [
|
|
24
|
+
全书鸟瞰。顶部为「全书体量与阶段总览」(总章节数/目标字数/全书情绪曲线/阶段划分/各阶段节奏公式/关键节点与钩子链,结构见 [workflow-volume.md](workflow-volume.md)),其后接卷级大纲一段式汇总:
|
|
164
25
|
|
|
165
26
|
```markdown
|
|
166
27
|
# 大纲
|
|
167
28
|
|
|
168
29
|
## 全书体量与阶段总览
|
|
169
|
-
{按
|
|
30
|
+
{按 workflow-volume.md「全书体量与阶段总览」结构填写}
|
|
170
31
|
|
|
171
32
|
## 卷级大纲
|
|
172
33
|
### 第一卷:{卷名}(约 {X} 万字,{Y} 章)
|
|
@@ -211,13 +72,13 @@
|
|
|
211
72
|
|
|
212
73
|
## 剧情单元卡(1–3 万字为可调经验值;存于卷纲内;不另建单独文件)
|
|
213
74
|
|
|
214
|
-
>
|
|
75
|
+
> 剧情单元卡与下方「对标结构坐标」是同一单元的不同视角(见 workflow-volume.md「对标节奏迁移」),不重复编排。单元长度按本书题材、既有兑现节奏与对标调整,不是硬门槛。规划各关键节点时按 `reader-contract-and-progression.md`「契约四问」检查;无需主角亲自执行每个动作。高潮/兑现后可留短暂低压,以小而可见的收益/奖励承接下一轮压力。引入新地图/机构/能力/敌人/谜团时按第 4 问检查,不得借新鲜感逃避旧承诺。
|
|
215
76
|
|
|
216
77
|
### 剧情单元 L{卷号}-{序号}
|
|
217
|
-
- 单元ID:L{卷号}-{序号}(字母 L 开头,如 L1-03;不能写成 1-03
|
|
78
|
+
- 单元ID:L{卷号}-{序号}(字母 L 开头,如 L1-03;不能写成 1-03,也别和故事线编号 L01 混)
|
|
218
79
|
- 章节范围:{第A-B章}
|
|
219
|
-
- 对标剧情参照:{{书名}《剧情标题》(类型/桥段标签;借什么:结构分布/情节点索引/兑现方式);可列 2-3 条,无对标写「无」;**允许填「自创:{一句话理由}
|
|
220
|
-
- 单元节拍/章功能分配:{建立期待→尝试→加压/转向→决定性行动→兑现→余波;标对应章范围,可按题材删改;建卡时可按「对标剧情参照」剧情单元提炼的共性节拍填写,见 outline
|
|
80
|
+
- 对标剧情参照:{{书名}《剧情标题》(类型/桥段标签;借什么:结构分布/情节点索引/兑现方式);可列 2-3 条,无对标写「无」;**允许填「自创:{一句话理由}」**——单元内容形态不强制映射对标,自创单元照常过排纲自查与建纲批末复核}
|
|
81
|
+
- 单元节拍/章功能分配:{建立期待→尝试→加压/转向→决定性行动→兑现→余波;标对应章范围,可按题材删改;建卡时可按「对标剧情参照」剧情单元提炼的共性节拍填写,见 workflow-outline.md「按剧情批出细纲」}
|
|
221
82
|
- 单元承诺:{本单元向读者建立的情绪命题/期待,以及要偿还的期待债}
|
|
222
83
|
- 单元情绪引擎:{核心情绪命题→承载对象/情绪缺口→受阻或缺口维持原因→本轮触发→主角不可替代的点火/转化动作→意义变化或可见兑现→题材/契约兑现;承载对象可为人物/关系/目标/规则/场景;不适用环节可写无/即时,但须保持因果闭合;机制按题材选,不强制误解/物件/反转}
|
|
223
84
|
- 卷级贡献:{它如何服务本卷契约、阶段节奏或卷级目标}
|
|
@@ -231,14 +92,14 @@
|
|
|
231
92
|
- 终局底牌边界:{本单元不得动用的未解锁宿敌/真相/身份/金手指上限;碰到就按契约四问第 3 问改纲}
|
|
232
93
|
- 禁止提前释放:{本单元不能提前解决/揭露/升级的内容}
|
|
233
94
|
- 下一单元因果钩子:{自然推入下一单元的问题、代价、线索或新目标}
|
|
234
|
-
-
|
|
95
|
+
- 契约风险:{契约安全 / 需补强 / 契约破坏;需补强时写清补强方式}
|
|
235
96
|
|
|
236
97
|
> **段位契约(新建卷纲必须照此写;取段器按此解析)**:每个 `##`/`###`/`####` 标题的**下一行**写一行 `> 作用域:X`,X 取二值之一——
|
|
237
98
|
> `卷级常任`(全卷有效,取段器恒定带出)/`单元级 {单元ID}`(只在该单元的闭包里出现)。
|
|
238
99
|
> 三条纪律:**①全卷常任规则不许写在单元块里**——单元块只写本单元落点+一行指针,规则本文放 `## 全卷常任裁定`(checker 会按「全卷/常任/全程生效」字样报 E4)。
|
|
239
100
|
> **②被推翻的内容不留旧文**——改成 `⊘ 已退役 → 见 {何处}` 起头的行,取段器默认不输出,读到的一定是当前有效值。
|
|
240
101
|
> **③排纲底稿不进卷纲**——供给自查、建纲追加写在 `大纲/排纲底稿_{单元ID}.md`(模板见文末),底稿里凡有写作期约束力的条目(跨章祈使:全程不许/往后任何章/此后不再…),**建纲当场就写进**该单元的单元级段或细纲。老卷纲里的 `批次底稿 {单元ID}|状态:在用|已退役` 段仍可读(排纲时 `--stage outline` 取出,`--check` 的 W1 告警盯其中的跨章祈使),新卷纲不再写。
|
|
241
|
-
> 落盘后跑 `outline_view.py --check --strict {卷纲路径}`,问题数归零;读取方式见 SKILL.md
|
|
102
|
+
> 落盘后跑 `outline_view.py --check --strict {卷纲路径}`,问题数归零;读取方式见 SKILL.md「卷纲不整读」。取段器输出闭包:全部卷级常任段+该单元的单元级段,逐章表按单元章区间裁行,退役行默认不输出(看历史加 `--history`);未声明作用域的段会被保守纳入并告警。老卷纲里还留着「作用域:批次底稿」段的,排纲时加 `--stage outline` 一并取出,写正文不加。
|
|
242
103
|
|
|
243
104
|
## 全卷常任裁定
|
|
244
105
|
> 作用域:卷级常任
|
|
@@ -249,7 +110,7 @@
|
|
|
249
110
|
{一句话:本卷要解决什么问题或达到什么目标}
|
|
250
111
|
|
|
251
112
|
## 对标结构坐标
|
|
252
|
-
{有对标书时填;无则写"无对标,按八节点占比自排"。迁移步骤见
|
|
113
|
+
{有对标书时填;无则写"无对标,按八节点占比自排"。迁移步骤见 workflow-volume.md「对标节奏迁移」;对标关键情节优先取自被参照剧情单元的「情节点索引」}
|
|
253
114
|
- 主对标卷段:{对标书}第{A}-{B}章(核心矛盾对应:{一句话})
|
|
254
115
|
|
|
255
116
|
| 归一化位置 | 本卷章区间 | 对标关键情节 | 本卷对应(换素材) | 类型{逆转/转折/激励} |
|
|
@@ -266,7 +127,7 @@
|
|
|
266
127
|
|------|------------|-----------------------------------------|--------------|---------|
|
|
267
128
|
| 第{N}章 | {高压/推进/修炼试错/关系回收/低压生活/信息整理} | {基调} | {N} | {事件} |
|
|
268
129
|
|
|
269
|
-
> 章节定位可留空,留空按普通推进章处理(即退化为现状)。情绪强度是情感烈度,和章节定位的爆发压力是两回事——关系/泪目章可低压力但高情绪强度。一卷要有高低层次,低压 + 过场克制(合计不超约 15%,题材分档见 outline-structure-theory.md),别全程同一力度;逐行看相邻章情绪基调,别同一母题连超 2-3 章。章节定位与底线见
|
|
130
|
+
> 章节定位可留空,留空按普通推进章处理(即退化为现状)。情绪强度是情感烈度,和章节定位的爆发压力是两回事——关系/泪目章可低压力但高情绪强度。一卷要有高低层次,低压 + 过场克制(合计不超约 15%,题材分档见 outline-structure-theory.md),别全程同一力度;逐行看相邻章情绪基调,别同一母题连超 2-3 章。章节定位与底线见 workflow-volume.md「章节定位与张弛」。
|
|
270
131
|
|
|
271
132
|
## 人物弧线
|
|
272
133
|
| 角色 | 本卷起点 | 本卷终点 | 关键转变 |
|
|
@@ -311,56 +172,12 @@
|
|
|
311
172
|
|
|
312
173
|
## 大纲/细纲_第XXX章.md
|
|
313
174
|
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
`目标情绪` 与 `主角目标/关键选择` 要写实际内容,不能留 `[待补充]`:隔离实验里只补这两个字段就能复现补齐全部字段的正文收益,补满其余字段与只补这两个不可区分。其余字段未知时仍按上文写 `[待补充]`。
|
|
317
|
-
|
|
318
|
-
落盘后运行 `node scripts/check-outline-contract.js --json --project {书目录} --chapter {N}` 做结构验收:它只判字段、四个小节、五段式、情节点表结构(默认四列 `# / 情节点 / 功能标签 / 执行边界(禁+放)`;需要时可在功能标签后加「分辨率」列)和字数目标口径是否在场,不判内容好坏。exit 1 时只按 `repair_scope` 补报告点名的字段并复验,最多两轮;仍失败就报告检查 ID 停下,不改其他章。exit 2、脚本缺失或 node 不可用时如实报告验收未完成,不得声称细纲已合规。本检查只在新建/补建/回填时执行;既有项目的旧细纲不因此阻断写正文。
|
|
175
|
+
模板、字段规则与落盘验收见 [workflow-outline.md](workflow-outline.md)。
|
|
319
176
|
|
|
320
177
|
---
|
|
321
178
|
|
|
322
179
|
## 追踪体系
|
|
323
180
|
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
### `追踪/_tracking-state.json`
|
|
327
|
-
|
|
328
|
-
唯一结构化权威状态。记录 schema、最后提交章、导入截止章、`state_revision`、续写上下文结构,以及全部角色、伏笔和时间线当前状态。日更通过 `tracking_commit.py check` 的紧凑输出取章号和修订号,不把完整 state 加入正文 prompt。所有 Markdown 都从本文件确定性派生,程序不反向解析 Markdown。
|
|
329
|
-
|
|
330
|
-
### `追踪/逐章记录/第NNN章.md`
|
|
331
|
-
|
|
332
|
-
本章未来相关连续性记录,目标 ≤1536 字节、硬上限 3072 字节,只含:实际结果、角色变化、伏笔变化、时间/揭示、连续性约束、下一章承诺。过程日志、质检统计、参照章和提示词记录不进入。它不承诺单独无损重建全部当前状态;完整当前语义以 `_tracking-state.json` 为准。
|
|
333
|
-
|
|
334
|
-
### `追踪/伏笔.md`
|
|
181
|
+
规划阶段不建 `追踪/`,首次写正文前才初始化;各文件的分工、字段与体积上限见 [tracking-transaction.md](tracking-transaction.md),全部由 `tracking_commit.py` 生成,不得各自追加或局部 Edit。
|
|
335
182
|
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
### `追踪/角色状态/{角色名}.md`
|
|
339
|
-
|
|
340
|
-
只为核心、会复用角色建立动态快照,含截至章节、身份、位置、当前目标、身心状态、能力资源、关键关系、已知信息和未结事项。目标 ≤4096 字节、硬上限 8192 字节;超过目标先合并失效能力、旧关系和已结事项,不把角色履历塞进当前快照。静态原始人设仍在 `设定/角色/{角色名}.md`;路人、一次性角色不建动态文件。
|
|
341
|
-
|
|
342
|
-
### `追踪/时间线/`
|
|
343
|
-
|
|
344
|
-
- `_tracking-state.json.timeline`:同一事件登记故事时间、客观事实、读者当前认知、实际揭示状态/章节。
|
|
345
|
-
- `作者真相.md`:从 `_tracking-state.json.timeline` 派生,作者侧可见全部客观事实和认知差。
|
|
346
|
-
- `读者已知.md`:从 `_tracking-state.json.timeline` 派生,只显示读者已经知道/相信的内容,不泄露客观真相。
|
|
347
|
-
|
|
348
|
-
未来揭示计划写卷纲/细纲,不写进既成事实登记;`未揭示` 事件的 `reveal_chapter` 必须为空。
|
|
349
|
-
|
|
350
|
-
### `追踪/上下文.md`
|
|
351
|
-
|
|
352
|
-
续写状态卡不超过 12288 字节,固定 7 栏:`当前位置 / 长期约束 / 核心角色状态 / 活跃伏笔 / 近三章速记 / 下一章承诺 / 连贯性风险`。它是当前语义检查点之一;不放文风、质量计数、普通待办、索引统计和长期概要。
|
|
353
|
-
|
|
354
|
-
## 排纲底稿模板(`大纲/排纲底稿_{单元ID}.md`)
|
|
355
|
-
|
|
356
|
-
排纲期的工作底稿,每个剧情单元一份,只在排纲/补纲时读,写正文不读。
|
|
357
|
-
|
|
358
|
-
```markdown
|
|
359
|
-
# {单元ID} 排纲底稿
|
|
360
|
-
|
|
361
|
-
## 供给自查
|
|
362
|
-
{本单元出细纲前产出,见 workflow-setup.md「排纲自查与细纲」步骤 3。六行:对手供给 / 角色供给 / 能力与金手指供给 / 刻度供给 / 场景与底图供给 / 故事线供给。「写了要报」的发明各列一行「发明了什么+落在哪个设定文件」;「先问作者」的提案列候选+影响面待作者裁定;无缺口写「无缺口」。批末 `check-outline-contract.js --supply {卷纲路径} {单元ID}` 验证本小节存在}
|
|
363
|
-
|
|
364
|
-
## 建纲追加
|
|
365
|
-
{本批建完后回填,见步骤 5。逐章落笔时才发现的缺口,一条一行,不与上面六行混写。格式:`第 N 章排到哪一步发现缺什么 / 级别 / 落在哪个设定文件或提案编号`。一条也没有写「无追加」。下一批供给自查以本小节为固定输入}
|
|
366
|
-
```
|
|
183
|
+
---
|