@oh-story/dsh 0.1.8 → 0.1.10
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 +14 -14
- package/lib/client.js +237 -84
- package/lib/client.js.map +3 -3
- package/lib/drama/manifest.json +183 -77
- package/lib/drama/skills/short-drama/SKILL.md +5 -1
- package/lib/drama/skills/short-drama/scripts/creator_markdown_check.py +140 -9
- package/lib/drama/skills/short-drama/scripts/project_tool.py +11 -0
- package/lib/drama/skills/short-drama-assets/references/character-and-look.md +28 -0
- package/lib/drama/skills/short-drama-assets/references/continuity-lock.md +8 -2
- package/lib/drama/skills/short-drama-assets/references/voice-direction.md +28 -0
- package/lib/drama/skills/short-drama-edit/SKILL.md +146 -0
- package/lib/drama/skills/short-drama-edit/agents/openai.yaml +4 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/README.md +60 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/package.json +15 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/remotion.config.ts +6 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/Root.tsx +26 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/Subtitles.tsx +88 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/font.ts +46 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/index.ts +4 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/schema.ts +32 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/tsconfig.json +13 -0
- package/lib/drama/skills/short-drama-edit/assets//345/211/252/350/276/221/345/215/225.md +43 -0
- package/lib/drama/skills/short-drama-edit/references/cut-craft.md +38 -0
- package/lib/drama/skills/short-drama-edit/references/delivery-verify.md +29 -0
- package/lib/drama/skills/short-drama-edit/references/generated-footage.md +54 -0
- package/lib/drama/skills/short-drama-edit/references/sound-and-subtitles.md +60 -0
- package/lib/drama/skills/short-drama-edit/references/stage-contract.md +51 -0
- package/lib/drama/skills/short-drama-edit/scripts/edit_tool.py +1156 -0
- package/lib/drama/skills/short-drama-edit/scripts/selftest.py +520 -0
- package/lib/drama/skills/short-drama-image-prompts/SKILL.md +2 -0
- package/lib/drama/skills/short-drama-image-prompts/assets/image-prompts.md +5 -0
- package/lib/drama/skills/short-drama-image-prompts/assets/lookdev-prompts.md +3 -0
- package/lib/drama/skills/short-drama-image-prompts/references/common-recipe.md +11 -0
- package/lib/drama/skills/short-drama-novel-analyze/references/aggregation-and-entities.md +2 -2
- package/lib/drama/skills/short-drama-novel-analyze/references/chapter-extraction.md +4 -1
- package/lib/drama/skills/short-drama-produce/SKILL.md +29 -4
- package/lib/drama/skills/short-drama-produce/references/adapter-contract.md +22 -0
- package/lib/drama/skills/short-drama-produce/references/providers/minimax-h3-video.md +13 -12
- package/lib/drama/skills/short-drama-produce/references/providers/minimax-speech.md +41 -0
- package/lib/drama/skills/short-drama-produce/references/providers/seedance.md +7 -0
- package/lib/drama/skills/short-drama-produce/scripts/fixture_adapter.py +18 -1
- package/lib/drama/skills/short-drama-produce/scripts/production_tool.py +181 -2
- package/lib/drama/skills/short-drama-produce/scripts/provider_adapters.py +199 -3
- package/lib/drama/skills/short-drama-review/SKILL.md +2 -0
- package/lib/drama/skills/short-drama-review/references/production-quality-gates.md +7 -0
- package/lib/drama/skills/short-drama-review/references/rubric-visual-motion.md +10 -0
- package/lib/drama/skills/short-drama-storyboard/SKILL.md +12 -1
- package/lib/drama/skills/short-drama-storyboard/assets/keyframe-prompts.md +4 -0
- package/lib/drama/skills/short-drama-storyboard/references/lighting-craft.md +39 -0
- package/lib/drama/skills/short-drama-storyboard/references/shot-craft.md +78 -2
- package/lib/drama/skills/short-drama-storyboard/references/stage-contract.md +2 -0
- package/lib/drama/skills/short-drama-video-prompts/SKILL.md +12 -5
- package/lib/drama/skills/short-drama-video-prompts/references/camera-audio-continuity.md +17 -0
- package/lib/drama/skills/short-drama-video-prompts/references/minimax-h3.md +76 -7
- package/lib/drama/skills/short-drama-video-prompts/references/motion-recipe.md +5 -2
- package/lib/drama/skills/short-drama-video-prompts/references/performance-action-timing.md +21 -0
- package/lib/drama/skills/short-drama-video-prompts/references/production-prompt-grammar.md +6 -17
- package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.0.md +12 -3
- package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.5.md +61 -5
- package/lib/drama/skills/short-drama-video-prompts/references/stage-contract.md +3 -3
- package/lib/drama/skills/short-drama-write/SKILL.md +11 -2
- package/lib/drama/skills/short-drama-write/references/screenplay-format.md +6 -0
- package/lib/drama/skills/short-drama-write/references/stage-contract.md +1 -0
- package/lib/index.js +290 -90
- package/lib/index.js.map +4 -4
- package/lib/novel-to-game/README.md +299 -59
- package/lib/novel-to-game/README_ZH.md +299 -56
- package/lib/novel-to-game/VERSION +1 -1
- package/lib/novel-to-game/examples/jin-ping-mei/build/BUILD_BRIEF.md +3 -1
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/RUN.md +11 -3
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/css/new-guofeng.css +397 -8
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/css/style.css +0 -31
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/data.js +71 -73
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/engine.js +78 -89
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/main.js +37 -14
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/text.js +5 -5
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/package.json +2 -1
- package/lib/novel-to-game/examples/jin-ping-mei/qa/README.md +11 -16
- package/lib/novel-to-game/examples/jin-ping-mei/qa/verification.json +11 -11
- package/lib/novel-to-game/examples/jin-ping-mei/qa/verify_playable_model.mjs +23 -0
- package/lib/novel-to-game/manifest.json +77 -87
- package/lib/novel-to-game/skills/game-art-direction/SKILL.md +9 -35
- package/lib/novel-to-game/skills/game-art-direction/references/art-direction-method.md +27 -106
- package/lib/novel-to-game/skills/game-build/SKILL.md +17 -35
- package/lib/novel-to-game/skills/game-build/references/blender-asset-workflow.md +24 -0
- package/lib/novel-to-game/skills/game-build/references/build-brief-contract.md +45 -82
- package/lib/novel-to-game/skills/game-build/references/generative-media-pipeline.md +14 -45
- package/lib/novel-to-game/skills/game-build/references/playable-model-contract.md +30 -65
- package/lib/novel-to-game/skills/game-build/references/tts-production-contract.md +13 -27
- package/lib/novel-to-game/skills/game-concept/SKILL.md +16 -34
- package/lib/novel-to-game/skills/game-concept/references/concept-method.md +28 -75
- package/lib/novel-to-game/skills/game-qa/SKILL.md +9 -20
- package/lib/novel-to-game/skills/game-qa/references/test-design-method.md +10 -6
- package/lib/novel-to-game/skills/game-world-design/SKILL.md +19 -32
- package/lib/novel-to-game/skills/game-world-design/references/narrative-design-method.md +23 -72
- package/lib/novel-to-game/skills/game-world-design/references/numeric-design-method.md +14 -48
- package/lib/novel-to-game/skills/game-world-design/references/world-design-method.md +36 -103
- package/lib/novel-to-game/skills/novel-game-analyze/SKILL.md +9 -18
- package/lib/novel-to-game/skills/novel-game-analyze/references/gameability-protocol.md +4 -4
- package/lib/novel-to-game/skills/novel-to-game/SKILL.md +10 -27
- package/lib/novel-to-game/skills/novel-to-game/references/intake-method.md +5 -6
- package/lib/novel-to-game/skills/novel-to-game/references/pipeline-contract.md +6 -11
- package/lib/oh-story/manifest.json +419 -254
- package/lib/oh-story/roles/chapter-extractor.md +177 -237
- package/lib/oh-story/roles/character-designer.md +1 -1
- package/lib/oh-story/roles/consistency-checker.md +4 -4
- package/lib/oh-story/roles/narrative-writer.md +56 -243
- package/lib/oh-story/roles/story-architect.md +6 -6
- package/lib/oh-story/roles/story-explorer.md +11 -11
- package/lib/oh-story/skills/story/SKILL.md +13 -7
- package/lib/oh-story/skills/story/VERSION +1 -1
- package/lib/oh-story/skills/story/references/author-memory.md +61 -29
- package/lib/oh-story/skills/story/scripts/author_memory_commit.py +934 -170
- package/lib/oh-story/skills/story-cover/SKILL.md +10 -1
- package/lib/oh-story/skills/story-deslop/SKILL.md +54 -229
- package/lib/oh-story/skills/story-deslop/references/anti-ai-writing.md +29 -56
- package/lib/oh-story/skills/story-deslop/references/author-memory.md +61 -29
- package/lib/oh-story/skills/story-deslop/references/banned-words.md +3 -1
- package/lib/oh-story/skills/story-deslop/references/deslop-gates.md +154 -0
- package/lib/oh-story/skills/story-deslop/references/style-resolution.md +27 -0
- package/lib/oh-story/skills/story-deslop/scripts/author_memory_commit.py +934 -170
- package/lib/oh-story/skills/story-deslop/scripts/check-ai-patterns.js +6 -1
- package/lib/oh-story/skills/story-deslop/scripts/check-degeneration.js +39 -20
- package/lib/oh-story/skills/story-deslop/scripts/normalize-punctuation.js +10 -5
- package/lib/oh-story/skills/story-deslop/scripts/style-whitelist.js +39 -0
- package/lib/oh-story/skills/story-import/SKILL.md +78 -82
- package/lib/oh-story/skills/story-import/references/character-state-reverse.md +1 -1
- package/lib/oh-story/skills/story-import/references/format-and-structure.md +2 -2
- package/lib/oh-story/skills/story-import/references/state-tracking.md +4 -69
- package/lib/oh-story/skills/story-import/references/structure-mapping-long.md +10 -8
- package/lib/oh-story/skills/story-import/references/tracking-initialization.md +31 -0
- package/lib/oh-story/skills/story-import/references/tracking-transaction.md +9 -34
- package/lib/oh-story/skills/story-import/scripts/check-outline-contract.js +197 -15
- package/lib/oh-story/skills/story-import/scripts/tracking_commit.py +210 -2
- package/lib/oh-story/skills/story-import/scripts/wordcount_core.py +3 -0
- package/lib/oh-story/skills/story-long-analyze/SKILL.md +91 -258
- package/lib/oh-story/skills/story-long-analyze/references/author-facing.md +245 -0
- package/lib/oh-story/skills/story-long-analyze/references/deconstruction-notes.md +2 -2
- package/lib/oh-story/skills/story-long-analyze/references/inspiration-library.md +105 -0
- package/lib/oh-story/skills/story-long-analyze/references/material-decomposition.md +113 -105
- package/lib/oh-story/skills/story-long-analyze/references/output-templates.md +169 -125
- package/lib/oh-story/skills/story-long-analyze/references/pipeline-ops.md +172 -64
- package/lib/oh-story/skills/story-long-analyze/references/semantic-acceptance-fixtures.md +84 -0
- package/lib/oh-story/skills/story-long-analyze/references/style-profile-generator.md +42 -132
- package/lib/oh-story/skills/story-long-analyze/references/style-profile-protocol.md +5 -5
- package/lib/oh-story/skills/story-long-analyze/scripts/build_chapter_index.py +466 -0
- package/lib/oh-story/skills/story-long-analyze/scripts/inspect_existing_assets.py +702 -0
- package/lib/oh-story/skills/story-long-analyze/scripts/inspiration_index.py +864 -0
- package/lib/oh-story/skills/story-long-analyze/scripts/manage_analysis_run.py +1106 -0
- package/lib/oh-story/skills/story-long-analyze/scripts/render_relation_chart.py +425 -0
- package/lib/oh-story/skills/story-long-scan/SKILL.md +4 -1
- package/lib/oh-story/skills/story-long-write/SKILL.md +52 -216
- package/lib/oh-story/skills/story-long-write/references/anti-ai-writing.md +29 -56
- package/lib/oh-story/skills/story-long-write/references/artifact-protocols.md +72 -12
- package/lib/oh-story/skills/story-long-write/references/author-memory.md +61 -29
- package/lib/oh-story/skills/story-long-write/references/banned-words.md +3 -1
- package/lib/oh-story/skills/story-long-write/references/benchmark-recall.md +20 -0
- package/lib/oh-story/skills/story-long-write/references/cross-book-recall.md +26 -0
- package/lib/oh-story/skills/story-long-write/references/dialogue-mastery.md +10 -4
- package/lib/oh-story/skills/story-long-write/references/emotional-methods.md +2 -2
- package/lib/oh-story/skills/story-long-write/references/long-chapter-quality.md +6 -15
- package/lib/oh-story/skills/story-long-write/references/long-format.md +2 -0
- package/lib/oh-story/skills/story-long-write/references/outline-structure-theory.md +2 -0
- package/lib/oh-story/skills/story-long-write/references/project-files.md +110 -0
- package/lib/oh-story/skills/story-long-write/references/reader-contract-and-progression.md +12 -4
- package/lib/oh-story/skills/story-long-write/references/reference-index.md +86 -0
- package/lib/oh-story/skills/story-long-write/references/style-combat-face.md +1 -1
- package/lib/oh-story/skills/story-long-write/references/style-craft.md +9 -29
- 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 +27 -0
- package/lib/oh-story/skills/story-long-write/references/tracking-initialization.md +31 -0
- package/lib/oh-story/skills/story-long-write/references/tracking-transaction.md +9 -34
- package/lib/oh-story/skills/story-long-write/references/workflow-chapter.md +88 -118
- package/lib/oh-story/skills/story-long-write/references/workflow-daily.md +55 -119
- package/lib/oh-story/skills/story-long-write/references/workflow-revision.md +15 -11
- package/lib/oh-story/skills/story-long-write/references/workflow-setup.md +73 -54
- package/lib/oh-story/skills/story-long-write/references/writer-prompt-fallback.md +22 -0
- package/lib/oh-story/skills/story-long-write/references/writing-craft.md +63 -4
- package/lib/oh-story/skills/story-long-write/scripts/author_memory_commit.py +934 -170
- package/lib/oh-story/skills/story-long-write/scripts/build_writer_prompt.py +531 -0
- package/lib/oh-story/skills/story-long-write/scripts/check-ai-patterns.js +6 -1
- package/lib/oh-story/skills/story-long-write/scripts/check-degeneration.js +39 -20
- package/lib/oh-story/skills/story-long-write/scripts/check-outline-contract.js +197 -15
- package/lib/oh-story/skills/story-long-write/scripts/check-outline-copy.js +90 -23
- package/lib/oh-story/skills/story-long-write/scripts/normalize-punctuation.js +10 -5
- package/lib/oh-story/skills/story-long-write/scripts/outline_view.py +285 -0
- package/lib/oh-story/skills/story-long-write/scripts/storyctl.py +58 -0
- package/lib/oh-story/skills/story-long-write/scripts/style-whitelist.js +39 -0
- package/lib/oh-story/skills/story-long-write/scripts/tracking_commit.py +210 -2
- package/lib/oh-story/skills/story-long-write/scripts/wordcount_core.py +3 -0
- package/lib/oh-story/skills/story-review/SKILL.md +80 -87
- package/lib/oh-story/skills/story-review/references/anti-ai-writing.md +29 -56
- package/lib/oh-story/skills/story-review/references/author-memory.md +61 -29
- package/lib/oh-story/skills/story-review/references/banned-words.md +3 -1
- package/lib/oh-story/skills/story-review/references/dialogue-mastery.md +10 -4
- package/lib/oh-story/skills/story-review/references/review-quality.md +6 -12
- package/lib/oh-story/skills/story-review/references/style-resolution.md +27 -0
- package/lib/oh-story/skills/story-review/references/tracking-initialization.md +31 -0
- package/lib/oh-story/skills/story-review/references/tracking-transaction.md +9 -34
- package/lib/oh-story/skills/story-review/scripts/author_memory_commit.py +934 -170
- package/lib/oh-story/skills/story-review/scripts/check-ai-patterns.js +6 -1
- package/lib/oh-story/skills/story-review/scripts/check-degeneration.js +39 -20
- package/lib/oh-story/skills/story-review/scripts/normalize-punctuation.js +10 -5
- package/lib/oh-story/skills/story-review/scripts/style-whitelist.js +39 -0
- package/lib/oh-story/skills/story-review/scripts/tracking_commit.py +210 -2
- package/lib/oh-story/skills/story-review/scripts/wordcount_core.py +3 -0
- package/lib/oh-story/skills/story-setup/SKILL.md +58 -43
- package/lib/oh-story/skills/story-setup/references/agent-references/anti-ai-writing.md +29 -56
- package/lib/oh-story/skills/story-setup/references/agent-references/banned-words.md +3 -1
- package/lib/oh-story/skills/story-setup/references/agent-references/deslop-gates.md +154 -0
- package/lib/oh-story/skills/story-setup/references/agent-references/dialogue-mastery.md +10 -4
- package/lib/oh-story/skills/story-setup/references/agent-references/format-and-structure.md +2 -2
- package/lib/oh-story/skills/story-setup/references/agent-references/long-emotional-methods.md +2 -2
- package/lib/oh-story/skills/story-setup/references/agent-references/long-quality.md +1 -1
- package/lib/oh-story/skills/story-setup/references/agent-references/short-genre-formulas.md +1 -1
- package/lib/oh-story/skills/story-setup/references/agent-references/style-combat-face.md +1 -1
- 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 +27 -0
- package/lib/oh-story/skills/story-setup/references/agent-references/writing-craft.md +63 -4
- package/lib/oh-story/skills/story-setup/references/diagnostics.md +38 -0
- package/lib/oh-story/skills/story-short-analyze/SKILL.md +22 -3
- package/lib/oh-story/skills/story-short-analyze/references/analysis-writing-techniques.md +1 -1
- package/lib/oh-story/skills/story-short-analyze/references/material-decomposition.md +5 -1
- package/lib/oh-story/skills/story-short-analyze/references/source-story-quality.md +2 -2
- package/lib/oh-story/skills/story-short-scan/SKILL.md +5 -1
- package/lib/oh-story/skills/story-short-write/SKILL.md +15 -324
- package/lib/oh-story/skills/story-short-write/references/author-memory.md +61 -29
- package/lib/oh-story/skills/story-short-write/references/banned-words.md +3 -1
- package/lib/oh-story/skills/story-short-write/references/benchmark-recall.md +60 -0
- package/lib/oh-story/skills/story-short-write/references/dialogue-mastery.md +10 -4
- package/lib/oh-story/skills/story-short-write/references/genre-styles//344/270/226/346/203/205/346/211/223/350/204/270.md +2 -2
- package/lib/oh-story/skills/story-short-write/references/genre-styles//345/217/214/347/224/267/344/270/273.md +1 -1
- package/lib/oh-story/skills/story-short-write/references/genre-styles//345/244/215/344/273/207/346/211/223/350/204/270.md +3 -3
- package/lib/oh-story/skills/story-short-write/references/genre-styles//345/256/205/346/226/227/345/256/253/346/226/227.md +3 -3
- package/lib/oh-story/skills/story-short-write/references/genre-styles//346/200/273/350/243/201/350/261/252/351/227/250.md +3 -3
- package/lib/oh-story/skills/story-short-write/references/genre-styles//346/202/254/347/226/221.md +5 -5
- package/lib/oh-story/skills/story-short-write/references/genre-styles//346/260/221/344/277/227/346/200/252/350/260/210.md +4 -4
- package/lib/oh-story/skills/story-short-write/references/genre-styles//347/224/234/345/256/240.md +5 -5
- package/lib/oh-story/skills/story-short-write/references/genre-styles//350/277/275/345/246/273/347/201/253/350/221/254/345/234/272.md +3 -3
- package/lib/oh-story/skills/story-short-write/references/genre-writing-formulas.md +1 -1
- package/lib/oh-story/skills/story-short-write/references/genre-writing-techniques.md +1 -1
- package/lib/oh-story/skills/story-short-write/references/reference-index.md +55 -0
- package/lib/oh-story/skills/story-short-write/references/short-craft.md +12 -14
- package/lib/oh-story/skills/story-short-write/references/short-deslop.md +10 -10
- package/lib/oh-story/skills/story-short-write/references/short-format.md +3 -1
- package/lib/oh-story/skills/story-short-write/references/short-prose-quality.md +2 -2
- package/lib/oh-story/skills/story-short-write/references/style-resolution.md +27 -0
- package/lib/oh-story/skills/story-short-write/references/workflow-design.md +78 -0
- package/lib/oh-story/skills/story-short-write/references/workflow-draft.md +126 -0
- package/lib/oh-story/skills/story-short-write/references/workflow-revision.md +32 -0
- package/lib/oh-story/skills/story-short-write/references/writing-workflow.md +5 -5
- package/lib/oh-story/skills/story-short-write/scripts/author_memory_commit.py +934 -170
- package/lib/oh-story/skills/story-short-write/scripts/check-ai-patterns.js +6 -1
- package/lib/oh-story/skills/story-short-write/scripts/check-degeneration.js +39 -20
- package/lib/oh-story/skills/story-short-write/scripts/check-delivery-contract.js +34 -5
- package/lib/oh-story/skills/story-short-write/scripts/check-outline-copy.js +90 -23
- package/lib/oh-story/skills/story-short-write/scripts/normalize-punctuation.js +10 -5
- package/lib/oh-story/skills/story-short-write/scripts/style-whitelist.js +39 -0
- package/lib/types/client/drama-production-view.d.ts.map +1 -1
- package/lib/types/client/file-activity.d.ts +19 -1
- package/lib/types/client/file-activity.d.ts.map +1 -1
- package/lib/types/client/index.d.ts.map +1 -1
- package/lib/types/client/production-prompts.d.ts +7 -0
- package/lib/types/client/production-prompts.d.ts.map +1 -1
- package/lib/types/client/production-runtime.d.ts +33 -0
- package/lib/types/client/production-runtime.d.ts.map +1 -1
- package/lib/types/drama-adapters.d.ts +5 -3
- package/lib/types/drama-adapters.d.ts.map +1 -1
- package/lib/types/native-hooks.d.ts +52 -0
- package/lib/types/native-hooks.d.ts.map +1 -1
- package/lib/types/role-identity.d.ts +17 -0
- package/lib/types/role-identity.d.ts.map +1 -0
- package/lib/types/role-tool.d.ts.map +1 -1
- package/lib/types/skill-provider.d.ts.map +1 -1
- package/lib/video-recap/CHANGELOG.md +31 -1
- package/lib/video-recap/manifest.json +162 -162
- package/lib/video-recap/skills/video-assemble/scripts/artifacts.py +4 -9
- package/lib/video-recap/skills/video-assemble/scripts/assemble.py +47 -60
- package/lib/video-recap/skills/video-assemble/scripts/assembly_contract.py +77 -115
- package/lib/video-recap/skills/video-assemble/scripts/assembly_settings.py +41 -40
- package/lib/video-recap/skills/video-assemble/scripts/audio_automation.py +22 -32
- package/lib/video-recap/skills/video-assemble/scripts/audio_mix.py +102 -192
- package/lib/video-recap/skills/video-assemble/scripts/jianying_builders.py +14 -35
- package/lib/video-recap/skills/video-assemble/scripts/jianying_model.py +14 -12
- package/lib/video-recap/skills/video-assemble/scripts/jianying_optional.py +8 -9
- package/lib/video-recap/skills/video-assemble/scripts/jianying_schema.py +3 -14
- package/lib/video-recap/skills/video-assemble/scripts/jianying_timeline_contract.py +23 -12
- package/lib/video-recap/skills/video-assemble/scripts/jianying_tracks.py +1 -4
- package/lib/video-recap/skills/video-assemble/scripts/jianying_writer.py +24 -25
- package/lib/video-recap/skills/video-assemble/scripts/lib.py +31 -85
- package/lib/video-recap/skills/video-assemble/scripts/media.py +100 -144
- package/lib/video-recap/skills/video-assemble/scripts/narration_audio.py +101 -195
- package/lib/video-recap/skills/video-assemble/scripts/render_preflight.py +10 -21
- package/lib/video-recap/skills/video-assemble/scripts/source_subtitles.py +90 -169
- package/lib/video-recap/skills/video-assemble/scripts/subtitle_core.py +69 -122
- package/lib/video-recap/skills/video-assemble/scripts/subtitle_render.py +10 -17
- package/lib/video-recap/skills/video-assemble/scripts/timeline.py +33 -48
- package/lib/video-recap/skills/video-assemble/scripts/timeline_emit.py +14 -20
- package/lib/video-recap/skills/video-assemble/scripts/visual_render.py +135 -213
- package/lib/video-recap/skills/video-cut/scripts/cut_cli.py +49 -57
- package/lib/video-recap/skills/video-cut/scripts/cut_contract.py +38 -74
- package/lib/video-recap/skills/video-cut/scripts/cut_render.py +46 -95
- package/lib/video-recap/skills/video-cut/scripts/lib.py +23 -25
- package/lib/video-recap/skills/video-cut/scripts/media_geometry.py +70 -173
- package/lib/video-recap/skills/video-cut/scripts/narration_mapping.py +28 -53
- package/lib/video-recap/skills/video-cut/scripts/sentence_boundaries.py +162 -322
- package/lib/video-recap/skills/video-recap/references/timeline-and-jianying.md +6 -7
- package/lib/video-recap/skills/video-recap/scripts/doctor.py +104 -124
- package/lib/video-recap/skills/video-recap/scripts/final_qc.py +255 -412
- package/lib/video-recap/skills/video-recap/scripts/lib.py +30 -52
- package/lib/video-recap/skills/video-recap/scripts/materials.py +97 -120
- package/lib/video-recap/skills/video-recap/scripts/mimo_qc_client.py +7 -12
- package/lib/video-recap/skills/video-recap/scripts/mimo_qc_evidence.py +46 -97
- package/lib/video-recap/skills/video-recap/scripts/mimo_qc_observations.py +18 -36
- package/lib/video-recap/skills/video-recap/scripts/mimo_qc_payload.py +29 -47
- package/lib/video-recap/skills/video-recap/scripts/mimo_qc_report.py +43 -76
- package/lib/video-recap/skills/video-recap/scripts/mimo_qc_runner.py +2 -1
- package/lib/video-recap/skills/video-recap/scripts/qc_contract.py +2 -1
- package/lib/video-recap/skills/video-recap/scripts/recap_cli.py +2 -2
- package/lib/video-recap/skills/video-recap/scripts/recap_inspect.py +129 -145
- package/lib/video-recap/skills/video-recap/scripts/recap_review.py +27 -20
- package/lib/video-recap/skills/video-recap/scripts/recap_runner.py +20 -31
- package/lib/video-recap/skills/video-recap/scripts/recap_runtime.py +31 -106
- package/lib/video-recap/skills/video-recap/scripts/recap_stage_qc.py +43 -113
- package/lib/video-recap/skills/video-recap/scripts/recap_timeline.py +196 -377
- package/lib/video-recap/skills/video-script/scripts/agent_brief.py +1 -1
- package/lib/video-recap/skills/video-script/scripts/agent_text.py +63 -172
- package/lib/video-recap/skills/video-script/scripts/brief_context.py +80 -135
- package/lib/video-recap/skills/video-script/scripts/brief_inputs.py +125 -167
- package/lib/video-recap/skills/video-script/scripts/brief_timeline.py +93 -208
- package/lib/video-recap/skills/video-script/scripts/deslop_qc.py +20 -46
- package/lib/video-recap/skills/video-script/scripts/lib.py +30 -26
- package/lib/video-recap/skills/video-script/scripts/narration_lint.py +145 -140
- package/lib/video-recap/skills/video-script/scripts/review_response.py +12 -42
- package/lib/video-recap/skills/video-script/scripts/review_runner.py +0 -6
- package/lib/video-recap/skills/video-script/scripts/speech_ownership.py +39 -100
- package/lib/video-recap/skills/video-script/scripts/timeline_fusion.py +33 -124
- package/lib/video-recap/skills/video-understanding/scripts/agent_brief.py +1 -1
- package/lib/video-recap/skills/video-understanding/scripts/agent_text.py +63 -172
- package/lib/video-recap/skills/video-understanding/scripts/asr.py +1 -2
- package/lib/video-recap/skills/video-understanding/scripts/brief_context.py +80 -135
- package/lib/video-recap/skills/video-understanding/scripts/brief_inputs.py +125 -167
- package/lib/video-recap/skills/video-understanding/scripts/brief_timeline.py +93 -208
- package/lib/video-recap/skills/video-understanding/scripts/consolidate.py +1 -1
- package/lib/video-recap/skills/video-understanding/scripts/deslop_qc.py +20 -46
- package/lib/video-recap/skills/video-understanding/scripts/lib.py +31 -26
- package/lib/video-recap/skills/video-understanding/scripts/narration_lint.py +145 -140
- package/lib/video-recap/skills/video-understanding/scripts/speech_ownership.py +39 -100
- package/lib/video-recap/skills/video-understanding/scripts/timeline_fusion.py +33 -124
- package/lib/video-recap/skills/video-understanding/scripts/vlm.py +1 -4
- package/lib/video-recap/skills/video-voiceover/scripts/dub.py +7 -13
- package/lib/video-recap/skills/video-voiceover/scripts/fish_audio.py +12 -30
- package/lib/video-recap/skills/video-voiceover/scripts/lib.py +98 -131
- package/lib/video-recap/skills/video-voiceover/scripts/tts_audio.py +17 -28
- package/lib/video-recap/skills/video-voiceover/scripts/voiceover.py +151 -240
- package/package.json +45 -45
- package/lib/novel-to-game/skills/game-world-design/references/dialogue-design-method.md +0 -59
- package/lib/novel-to-game/skills/game-world-design/references/game-writing-craft.md +0 -53
- package/lib/novel-to-game/skills/novel-to-game/references/intake-benchmark-reference.md +0 -42
- package/lib/oh-story/skills/story-long-write/references/state-tracking.md +0 -108
|
@@ -1,20 +1,27 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: chapter-extractor
|
|
3
3
|
description: |
|
|
4
|
-
|
|
5
|
-
被 story-long-analyze
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
disallowedTools: [Write, Edit, Bash]
|
|
4
|
+
连续章节块与已有成果归一专家。新内容模式一次读取一个不重叠的连续章节块,提取轻量章节事实和跨章剧情点;已有成果模式只读取旧拆文结果做二次提取,严禁回读原文或覆盖用户文件。
|
|
5
|
+
被 story-long-analyze Stage 2 按运行计划调用;只读原文与旧成果,只写、只改调用方指定的一份批次输入文件,不碰其他文件,不做跨书比较或创作评价。
|
|
6
|
+
tools: [Read, Glob, Grep, Write, Edit]
|
|
7
|
+
disallowedTools: [Bash]
|
|
9
8
|
model: haiku
|
|
10
|
-
maxTurns:
|
|
9
|
+
maxTurns: 20
|
|
10
|
+
# maxTurns: 20 — 覆盖自读原文、读交接、写入、四项 Grep 自查与定点 Edit 修正后再回执。
|
|
11
|
+
# Write/Edit 只许落到 {拆文目录}/_analysis_cache/输入-{批次ID}.md:守卫在 story_hook_cli.js 的
|
|
12
|
+
# analysis-input-guard,经本挂载点只作用于本 agent。改 tools 就同步改 matcher。
|
|
13
|
+
hooks:
|
|
14
|
+
PreToolUse:
|
|
15
|
+
- matcher: "Write|Edit"
|
|
16
|
+
hooks:
|
|
17
|
+
- type: command
|
|
18
|
+
command: node "$CLAUDE_PROJECT_DIR"/.claude/hooks/story_hook_cli.js analysis-input-guard
|
|
19
|
+
timeout: 10
|
|
11
20
|
---
|
|
12
21
|
|
|
13
|
-
# Chapter Extractor —
|
|
22
|
+
# Chapter Extractor — 章节块与已有成果归一
|
|
14
23
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
**重要:你是只读的。不修改任何文件。只输出结构化提取结果。**
|
|
24
|
+
你只执行运行计划中的一个批次。读取批次是输入单位,剧情点是分析单位;二者不能强行一一对应。
|
|
18
25
|
|
|
19
26
|
## 材料合法性与分析边界
|
|
20
27
|
|
|
@@ -24,291 +31,224 @@ maxTurns: 12
|
|
|
24
31
|
|
|
25
32
|
若确有个别片段你无法处理,**只跳过该片段、照常输出本章其余情节点与摘要,并在该章末标注「{N}处片段已跳过」**,绝不因一段内容拒绝整章或中断提取——你是流水线节点,停摆会让整本拆解失败。
|
|
26
33
|
|
|
27
|
-
|
|
34
|
+
## 两种互斥输入模式
|
|
28
35
|
|
|
29
|
-
|
|
36
|
+
### `raw-original`
|
|
30
37
|
|
|
31
|
-
|
|
32
|
-
- 章节编号(如 第12章)
|
|
33
|
-
- 章节标题
|
|
34
|
-
- 章节原文文本
|
|
35
|
-
- 章节字数(近似值,用于调节情节点密度)
|
|
38
|
+
用于运行计划判定为尚未拆解的章节。调用方必须提供:
|
|
36
39
|
|
|
37
|
-
|
|
40
|
+
- `plan_mode`、批次 ID、连续起止章和 `input_kind: raw-original`;
|
|
41
|
+
- `manage_analysis_run.py plan` 生成的单个 `RAW-{起章}-{止章}` 块;
|
|
42
|
+
- 每章机械 `source_locator`(`原文/原文.txt:L起-L止`)和每章字数(计划的 `chapter_chars`)——**原文由你按行号自己 Read(offset/limit),调用方不转贴原文**;
|
|
43
|
+
- 输出文件路径 `{拆文目录}/_analysis_cache/输入-{批次ID}.md`;
|
|
44
|
+
- 交接缓存路径(调用方给的已提交批次缓存,可能不紧邻本批;没有就不给):只 Grep/Read 其中 `### 跨批状态` 一节,承接已确认别名、未闭合剧情点、悬念、关系和待核事项,不读它的逐章块。交接批与本批之间隔着未拆的章节时,不假设那几章已接上:延续不了的目标另建剧情点 ID,交给 Stage 3 合并。
|
|
38
45
|
|
|
39
|
-
|
|
46
|
+
本模式每章只能出现在全书一个原文块中。一次输入最多 3 章;长章或信息密集时 1–2 章。超过 3 章、章号不连续、与计划范围不一致,或调用方要求按章启动多个任务时,返回 `BATCH_ERROR`。
|
|
40
47
|
|
|
41
|
-
|
|
48
|
+
在同一次阅读中完成轻量章节事实和跨章剧情点。不得为生成逐章文件再次读取该批原文。
|
|
42
49
|
|
|
43
|
-
|
|
50
|
+
### `existing-results`
|
|
44
51
|
|
|
45
|
-
|
|
46
|
-
|------|-------|------|
|
|
47
|
-
| 情感 | 邵阳感到心碎和愤怒(原文只写了他看见拥抱) | 邵阳目睹宋丽与人拥抱,表情由刺痛转为冷漠 |
|
|
48
|
-
| 评价 | 这是一段精彩的打斗 | 林雷三招击败对手,围观者倒吸一口凉气 |
|
|
49
|
-
| 氛围 | 气氛变得紧张起来 | 所有人停止说话,目光集中在门口 |
|
|
50
|
-
| 意图 | 他想借此展示实力 | 他将石锁单手举过头顶,环视众人 |
|
|
52
|
+
用于已有拆文覆盖的章节。调用方必须提供:
|
|
51
53
|
|
|
52
|
-
|
|
54
|
+
- 批次 ID、连续起止章(与原文块同样最多 3 章)和 `input_kind: existing-results`;
|
|
55
|
+
- 运行计划列出的 `source_files`,来源可以是上游 `章节/第N章_摘要.md` 或黄金三章;
|
|
56
|
+
- 输出文件路径与上一批批次缓存路径(同上,只读其 `### 跨批状态`)。
|
|
53
57
|
|
|
54
|
-
|
|
58
|
+
本模式只能读取列出的拆文成果,不得打开 `原文/`、小说 TXT、`chapter_index.csv` 的正文位置或其他原文副本。旧成果没有的信息写“旧资料未提供”,不能补猜。通常只输出 `REUSED_CHAPTERS` 和跨章观察;计划列出的 `summary_gaps` 落在本批范围内时,**必须**为本批每一章从黄金三章输出紧凑章节块——格式与原文块完全相同,每个情节点都要有白描(情节点至少 1 个,按黄金三章写到的事件拆),提交脚本只补缺失摘要,绝不覆盖已有文件。
|
|
55
59
|
|
|
56
|
-
|
|
60
|
+
## 交付:写文件、只回回执
|
|
57
61
|
|
|
58
|
-
-
|
|
59
|
-
-
|
|
60
|
-
-
|
|
61
|
-
-
|
|
62
|
-
- 禁止:`通过内心独白,主角表达了对未来的迷茫`
|
|
63
|
-
- 正确:`林雷望着天空喃喃自语:"我到底该走哪条路?"`
|
|
62
|
+
- 把下方模板的**完整输出**用 Write 一次写入调用方给的输出文件。**只写、只改这一个路径**,不碰其他任何文件;不要在回复里重复输出内容。
|
|
63
|
+
- 写完后最终回复只有一行回执:`BATCH_WRITTEN: {批次ID} | {输出文件} | 第N章 X点, 第N+1章 Y点, …`(`REUSE` 无章节块时写 `无章节块`)。
|
|
64
|
+
- 调用方转来提交错误码要你修正时:按错误说明定位(报错会点出章号与情节点编号),Read 输出文件的相关片段,**用 Edit 只改出错的几行**,再做一遍第 10 条自查后回执;缺内容时按 `source_locator` 定点回看原文,不重读整批。只有整体结构错乱(标记缺失、章节块错位)才整份重写。
|
|
65
|
+
- 输入不符合计划时不写文件,只回 `BATCH_ERROR` 一行(见文末)。
|
|
64
66
|
|
|
65
|
-
|
|
67
|
+
## 共同事实边界
|
|
66
68
|
|
|
67
|
-
|
|
69
|
+
- `A 明确`:输入资料直接给出。
|
|
70
|
+
- `B 强推断`:多个明确细节共同支持。
|
|
71
|
+
- `C 暂定`:证据不足,只留作待核。
|
|
72
|
+
- 不把后来结果倒推成人物早有计划。
|
|
73
|
+
- `涉及人物` 与剧情点只写具体人物:群体称呼(村民们)、无名路人和泛称(大哥、掌柜、老师这类)不单列,除非原文固定用它指代某一个人。
|
|
74
|
+
- 逐章兼容事实按文本披露顺序;客观发生顺序只进入关键事件与披露候选,交给全局关键双时间线合并。
|
|
75
|
+
- 原文模式的证据写 `source_locator + 5–15字定位词`;已有成果模式写资料路径和其中的短定位词。
|
|
76
|
+
- 不复制长段原文,不为填表重复改写同一事实。
|
|
68
77
|
|
|
69
|
-
|
|
78
|
+
## `raw-original` 输出
|
|
70
79
|
|
|
71
|
-
|
|
80
|
+
严格使用以下标记。一个章节块只做这一次语义读取;模型输出紧凑事实和逐章情节点,`manage_analysis_run.py commit` 再机械投影为带“关键事件、情节点、基调”等旧接口标签的逐章 Markdown。不要在模型输出里生成章节卡表或逐章写法分析。
|
|
72
81
|
|
|
73
|
-
|
|
82
|
+
```markdown
|
|
83
|
+
# 批次 RAW-4-6:第4-6章
|
|
74
84
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
严格按以下 markdown 格式输出。**不要输出任何格式之外的内容**。
|
|
78
|
-
|
|
79
|
-
> **结构化输出约束**:调用方可通过 prompt 末尾附加 `OUTPUT_MODE: json` 要求 JSON 格式输出。
|
|
80
|
-
> 此时,你的最终消息必须是单个 JSON 对象(不带 prose、不带 code fence),结构如下:
|
|
81
|
-
> ```
|
|
82
|
-
> {
|
|
83
|
-
> "chapter_number": <integer>,
|
|
84
|
-
> "title": "<string>",
|
|
85
|
-
> "summary": "<string, 100-300 chars,按时序讲清事件/原因/结果>",
|
|
86
|
-
> "key_events": ["<string>"],
|
|
87
|
-
> "key_information_expansion": [
|
|
88
|
-
> {"key_information": "<string>",
|
|
89
|
-
> "expansion": "<作者如何用事件/对话/反应层/细节扩写>",
|
|
90
|
-
> "technique": "铺垫后置|反应层放大|信息差|对比锚点|延迟揭示|身体反应|小目标嵌套|其他",
|
|
91
|
-
> "reader_effect": "好奇|期待|压抑|爽|心疼|紧张|甜|热血|其他",
|
|
92
|
-
> "reuse_note": "<保留情绪逻辑,替换人物/场景/事件;禁止照搬具体桥段>"}
|
|
93
|
-
> ],
|
|
94
|
-
> "chapter_formula": {
|
|
95
|
-
> "emotion_flow": {"start": "<起>", "build": "<承>", "turn": "<转>", "close": "<合>"},
|
|
96
|
-
> "rhythm_ratio": {"slow_setup": "<X%>", "fast_conflict": "<X%>", "payoff": "<X%>", "hook_space": "<X%>"},
|
|
97
|
-
> "structure_formula": ["<节点1动作(目的)>", "<节点2动作(目的)>"],
|
|
98
|
-
> "core_technique": "<一句话结构手法>",
|
|
99
|
-
> "hook_and_foreshadowing": "<章尾卡点;埋设/回收伏笔>"
|
|
100
|
-
> },
|
|
101
|
-
> "characters": [
|
|
102
|
-
> {"name": "<string>", "importance": "major|supporting|minor",
|
|
103
|
-
> "aliases": ["<string>"], "performance": "<string>"}
|
|
104
|
-
> ],
|
|
105
|
-
> "plot_points": [
|
|
106
|
-
> {"id": "P<integer>", "title": "<string, ≤15 字短标签,不与 event 同句>",
|
|
107
|
-
"event": "<白描:谁做了什么/结果如何;原文给出的起因一并写入>",
|
|
108
|
-
> "type": "转折点|信息揭示|冲突|解决|铺垫|行动|对话|状态变化",
|
|
109
|
-
> "characters": ["<string>"], "location": "<string|null>",
|
|
110
|
-
> "item": "<string|null>", "time": "<string|null>",
|
|
111
|
-
> "quote": "<string|null, ≤400 chars;仅关键转折/关键台词/写法样本填,全章至多 8 条>",
|
|
112
|
-
> "quote_locator": "<string|null, 引用过长或分散时改填 5-15 字可 grep 原句片段>",
|
|
113
|
-
> "themes": ["爱情|亲情|友情|权力|金钱|成长|复仇|悬念|搞笑|热血|日常|其他"],
|
|
114
|
-
> "tone": "紧张|轻松|悲伤|热血|爽|甜|温馨|恐怖|压抑|其他"}
|
|
115
|
-
> ]
|
|
116
|
-
> }
|
|
117
|
-
> ```
|
|
118
|
-
> 无法符合时返回:`{"error": "<reason>"}`
|
|
85
|
+
<!-- CHAPTER_START:4 -->
|
|
86
|
+
## 第4章 标题
|
|
119
87
|
|
|
120
|
-
|
|
121
|
-
## 第{N}章 {标题}
|
|
88
|
+
**概要**:用60–160字说明本章主要行动、原文给出的原因和结果。
|
|
122
89
|
|
|
123
|
-
|
|
90
|
+
**因果**:目标:谁想做什么|阻碍:什么拦住了他|行动:哪个选择、行动或外部事件改变局面|结果:局面如何变化|得失:谁得到或失去什么
|
|
124
91
|
|
|
125
|
-
|
|
126
|
-
1. {事件1}
|
|
127
|
-
2. {事件2}
|
|
128
|
-
3. {事件3}
|
|
92
|
+
**关键行动**:真正改变局面的一个选择、行动或外部事件
|
|
129
93
|
|
|
130
|
-
|
|
94
|
+
**局面结果**:行动后目标、风险、资源或关系发生的净变化
|
|
131
95
|
|
|
132
|
-
|
|
133
|
-
|---|---|---|---|---|
|
|
134
|
-
| {本章必须让读者知道/误判/期待/确认的信息} | {作者用了哪些事件、对话、反应层、细节、误导或回扣把它扩成场景} | {铺垫后置/反应层放大/信息差/对比锚点/延迟揭示/身体反应/小目标嵌套/其他} | {好奇/期待/压抑/爽/心疼/紧张/甜/热血/其他} | {保留情绪逻辑,替换人物、场景、事件素材;禁止照搬具体桥段} |
|
|
96
|
+
**涉及人物**:本章关键人物,用顿号分隔;没有写无
|
|
135
97
|
|
|
136
|
-
|
|
98
|
+
**信息变化**:新披露什么|读者知道什么|哪些关键角色知道或仍不知道;没有写无
|
|
137
99
|
|
|
138
|
-
|
|
139
|
-
- **节奏配比**:慢铺垫 {X%} / 快冲突 {X%} / 爽点爆发 {X%} / 悬念留白 {X%}
|
|
140
|
-
- **本章结构公式**:{节点1动作(目的)} + {节点2动作(目的)} + {节点3动作(目的)} + {节点4动作(目的)}
|
|
141
|
-
- **本章核心技巧**:{一句话概括本章最可迁移的结构手法;只描述写法,不评价质量}
|
|
142
|
-
- **卡点与伏笔**:结尾卡点:{类型+内容+下章期待};埋设/回收伏笔:{伏笔名/物件/信息 → 章节功能}
|
|
100
|
+
**状态变化**:角色/关系/资源/风险的净变化;没有写无
|
|
143
101
|
|
|
144
|
-
|
|
102
|
+
**三维节奏**:事件3/5|情绪紧张4/5|篇幅2/3|一句话说明三轴是否分离及为何
|
|
145
103
|
|
|
146
|
-
|
|
147
|
-
|------|-----------|------|----------|
|
|
148
|
-
| {全名} | {major/supporting/minor} | {本章中使用的其他称呼} | {100-200字,仅本章可见的行为/对话/情绪} |
|
|
104
|
+
**章尾钩子**:类型与具体等待;没有写无
|
|
149
105
|
|
|
150
|
-
|
|
106
|
+
**证据**:source_locator + 5–15字定位词
|
|
151
107
|
|
|
152
|
-
|
|
108
|
+
**情节点**:
|
|
153
109
|
|
|
154
|
-
|
|
110
|
+
P1 **龙血针检测**:类型信息揭示 | 许七安用龙血针验出对方身份,当场揭穿 | 涉及许七安,郑兴怀 | 地点府衙后堂 | 物品龙血针 | 时间入夜
|
|
111
|
+
原文定位:龙血针刚一靠近
|
|
155
112
|
|
|
156
|
-
|
|
113
|
+
主题标签悬念 | 基调:紧张
|
|
114
|
+
|
|
115
|
+
---
|
|
157
116
|
|
|
158
|
-
|
|
117
|
+
P2 **当众揭穿**:类型冲突 | 许七安把验出的结果摆到众人面前,郑兴怀当场改口 | 涉及许七安,郑兴怀 | 地点府衙后堂 | 物品无 | 时间入夜
|
|
159
118
|
|
|
160
|
-
|
|
161
|
-
>
|
|
162
|
-
> 一个完整的正确样例(照这个写,两行为一组):
|
|
163
|
-
>
|
|
164
|
-
> ```
|
|
165
|
-
> P7 **龙血针检测**:类型信息揭示 | 许七安用龙血针验出对方身份,当场揭穿 | 涉及许七安,郑兴怀 | 地点府衙后堂 | 物品龙血针 | 时间入夜
|
|
166
|
-
> 主题标签悬念 | 基调:紧张
|
|
167
|
-
> ```
|
|
168
|
-
>
|
|
169
|
-
> - 字段名后不加冒号、不加括号:写 `类型信息揭示`,不写 `类型:信息揭示` 或 `类型{信息揭示}`。
|
|
170
|
-
> - `主题标签` 只填一个值(最主导的那个)。不要用 `/`、`、`、`,` 或空格并列多个——落盘校验按「一个值」读,并列写法会被判成枚举越界并触发重跑。
|
|
171
|
-
> - 空字段统一写「无」(如 `物品无`、`时间无`),不要用 `—`、`未知`,也不要整段省略;`涉及` 段必须保留,纯环境铺垫时值写「无」。
|
|
172
|
-
> - 每个情节点后紧跟自己的那一行 `主题标签X | 基调:Y`,不要把标签行堆到文件末尾,也不要并进 P 行内部。
|
|
173
|
-
>
|
|
174
|
-
> 末行格式硬约束:`基调` 用全角冒号 `基调:`,不可省略或换半角;`主题标签` 后不加冒号。主题标签只能取上列 12 种、基调只能取上列 10 种——“温馨/紧张/甜”等是基调值,禁止填进主题标签;都不贴合时用“其他”,勿硬塞近义项。
|
|
175
|
-
>
|
|
176
|
-
> **输出前自检**:交付前逐条核对——① 文本里没有 `{` 或 `}`;② `^P` 行数 == `主题标签` 行数 == `基调:` 行数;③ 每个 `主题标签` 只有一个值;④ 每个 P 行都含 `类型`、白描、`涉及` 三段且用 ` | ` 分隔。任何一条不符,先改再输出。
|
|
119
|
+
主题标签悬念 | 基调:爽
|
|
177
120
|
|
|
178
121
|
---
|
|
179
122
|
|
|
180
|
-
|
|
123
|
+
P3 …… 按时序继续,每个都写全六段,本章共 10–20 个,长章最多 30 个
|
|
124
|
+
|
|
125
|
+
<!-- CHAPTER_END:4 -->
|
|
126
|
+
|
|
127
|
+
按章号重复,每个输入章恰好一次。
|
|
128
|
+
|
|
129
|
+
<!-- BATCH_OBSERVATIONS_START -->
|
|
130
|
+
## 跨章观察
|
|
131
|
+
|
|
132
|
+
### 剧情点
|
|
133
|
+
|
|
134
|
+
| 剧情点ID | 章节范围 | 起始目标 | 阻碍 | 关键选择/行动/外部事件 | 局面变化 | 得失与承担者 | 后续影响 | 状态 | 证据 |
|
|
135
|
+
|---|---|---|---|---|---|---|---|---|---|
|
|
136
|
+
| BP-RAW-4-6-01 | 4-5 | ... | ... | ... | ... | ... | ... | open/closed | ... |
|
|
137
|
+
|
|
138
|
+
### 关键事件与披露候选
|
|
139
|
+
|
|
140
|
+
只收录可能进入全文主线或关键转折表的事件;过渡动作不建条目。每项写:候选ID|章节|客观事件及大致发生顺序|本批披露路径(异常/线索/解释/确认)|读者与关键角色的信息差|判断变化|叙事作用|证据。无法判断客观发生时间时明确写待核。
|
|
141
|
+
|
|
142
|
+
### 关系变化
|
|
143
|
+
|
|
144
|
+
| 关系ID | 主体 → 客体 | 关系动作 | 表面/真实状态 | 触发 | 双方得失 | 变化后状态 | 证据强度 | 证据 |
|
|
145
|
+
|---|---|---|---|---|---|---|---|---|
|
|
146
|
+
|
|
147
|
+
### 三维节奏
|
|
148
|
+
|
|
149
|
+
只写峰值、谷值和三轴明显分离处:章节/剧情点|事件推进及理由|情绪类型/强度及触发|篇幅展开度|展开/压缩/省略/反复的作用|证据。普通章节的分数已在逐章紧凑事实里,不重复抄表。
|
|
150
|
+
|
|
151
|
+
### 跨批状态
|
|
152
|
+
|
|
153
|
+
- 已确认别名:「别名→本名」,含上一批传下来的;没有写无。
|
|
154
|
+
- 未闭合剧情点:ID、主体、目标、当前阻碍、最后证据;没有写无。
|
|
155
|
+
- 未决悬念:读者已知和等待确认的内容;没有写无。
|
|
156
|
+
- 关系状态:下一批需要继承的有向状态;没有写无。
|
|
157
|
+
- 待核事项:冲突、C暂定或缺失;没有写无。
|
|
158
|
+
|
|
159
|
+
<!-- BATCH_OBSERVATIONS_END -->
|
|
181
160
|
```
|
|
182
161
|
|
|
183
|
-
|
|
162
|
+
## `existing-results` 输出
|
|
184
163
|
|
|
185
|
-
|
|
164
|
+
本批没有 `summary_gaps` 时不输出 `CHAPTER_START/END`、不重写逐章文件(有缺口时按上面的规则输出章节块,不写 `REUSED_CHAPTERS`)。先声明复用范围,然后使用与上方相同的五个跨章观察小节:剧情点、关键事件与披露候选、关系变化、三维节奏、跨批状态。
|
|
186
165
|
|
|
187
|
-
|
|
166
|
+
```markdown
|
|
167
|
+
# 已有成果二次提取 REUSE-1-3:第1-3章
|
|
188
168
|
|
|
189
|
-
|
|
190
|
-
- 密度公式:{字数÷200}(下限)到 {字数÷150}(上限),即 150-200 字/个情节点
|
|
191
|
-
- 1000 字 → 10 个(硬下限;公式建议 5-7)
|
|
192
|
-
- 3000 字 → 15-20 个
|
|
193
|
-
- 5000 字 → 25-34 个
|
|
194
|
-
- 8000+ 字 → 40 个(上限)
|
|
169
|
+
<!-- REUSED_CHAPTERS:1-3 -->
|
|
195
170
|
|
|
196
|
-
|
|
171
|
+
<!-- BATCH_OBSERVATIONS_START -->
|
|
172
|
+
## 跨章观察
|
|
197
173
|
|
|
198
|
-
|
|
174
|
+
### 剧情点
|
|
175
|
+
同上表;证据指向旧成果文件,不指向未读取的原文。
|
|
199
176
|
|
|
200
|
-
###
|
|
177
|
+
### 关键事件与披露候选
|
|
178
|
+
同上;只根据旧成果能支持的内容填写。
|
|
201
179
|
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
| 转折点 | 改变故事走向的事件 | 剧情方向发生明显偏转 |
|
|
205
|
-
| 信息揭示 | 新设定、新人物背景、世界观补充 | 读者首次获得某类信息 |
|
|
206
|
-
| 冲突 | 人物间正面对抗或内心挣扎 | 有明确的对抗双方 |
|
|
207
|
-
| 解决 | 冲突的收束或悬念的解答 | 一个紧张状态被解除 |
|
|
208
|
-
| 铺垫 | 为后续事件埋下的伏笔 | 读者后来会发现它的重要性 |
|
|
209
|
-
| 行动 | 推动剧情的主动行为 | 角色做出有后果的决定/行动 |
|
|
210
|
-
| 对话 | 包含关键信息的对话 | 对话中传递了新信息或改变了关系 |
|
|
211
|
-
| 状态变化 | 角色关系或环境的重要转变 | 状态 A 明确转变为状态 B |
|
|
180
|
+
### 关系变化
|
|
181
|
+
同上表。
|
|
212
182
|
|
|
213
|
-
###
|
|
183
|
+
### 三维节奏
|
|
184
|
+
同上表。
|
|
214
185
|
|
|
215
|
-
|
|
186
|
+
### 跨批状态
|
|
187
|
+
- 已确认别名:...
|
|
188
|
+
- 未闭合剧情点:...
|
|
189
|
+
- 未决悬念:...
|
|
190
|
+
- 关系状态:...
|
|
191
|
+
- 待核事项:...
|
|
216
192
|
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
| 关键转折 | 改变本章或全书走向的转折点 / 解决 |
|
|
220
|
-
| 关键台词 | 有辨识度、后续会被回扣或反复提起的原话 |
|
|
221
|
-
| 写法样本 | 值得当作句式、节奏、对话样本回查的段落 |
|
|
193
|
+
<!-- BATCH_OBSERVATIONS_END -->
|
|
194
|
+
```
|
|
222
195
|
|
|
223
|
-
|
|
224
|
-
- 引用 ≤400 字,逐字连续切片,保留原文语气,不改写、不缩写、不跨段拼接
|
|
225
|
-
- 选中的段落过长或分散时,用一行 `原文定位:{5-15字可 grep 回原文的原句片段}` 代替整段引用
|
|
196
|
+
## 情节点规则
|
|
226
197
|
|
|
227
|
-
|
|
228
|
-
紧张 / 轻松 / 悲伤 / 热血 / 爽 / 甜 / 温馨 / 恐怖 / 压抑 / 其他
|
|
198
|
+
情节点是逐章节拍序列,下游挑对标章、定结构关键点、反推情绪弧线都按它读,**每章单独拆足,不因一次读多章而压缩**。
|
|
229
199
|
|
|
230
|
-
|
|
200
|
+
- **数量**:原文块每章 ≈ 本章字数 ÷ 150–200,落在 10–20 个;长章最多 30 个。少于 10 或多于 30,提交脚本会整批拒收重跑。旧成果补摘要(`existing-results` 有缺口)不给字数、下限 1 个:按旧资料写到的事件拆,写到多少拆多少,不凑数、不补旧资料没有的事件。
|
|
201
|
+
- **粒度**:一个完整戏剧事件为一点。太粗(整段打架写成一点)丢细节,太细(“举起右手”)碎片化;短章按关键步骤拆足。
|
|
202
|
+
- **顺序与白描**:严格按原文事件顺序;白描写谁做了什么、结果如何,原文给出的起因照写,不补原文没写的情感和意图,不写“精彩”“气氛紧张”这类评价。
|
|
203
|
+
- **枚举**:三个字段各只填一个表内值,不自造词:
|
|
204
|
+
- 类型:转折点/信息揭示/冲突/解决/铺垫/行动/对话/状态变化
|
|
205
|
+
- 主题标签:爱情/亲情/友情/权力/金钱/成长/复仇/悬念/搞笑/热血/日常/其他
|
|
206
|
+
- 基调:紧张/轻松/悲伤/热血/爽/甜/温馨/恐怖/压抑/其他
|
|
207
|
+
- 消歧:爽=打脸/复仇得手/反转的解气;热血=拼搏战斗的燃;甜=恋爱暧昧;温馨=亲情友情的暖;恐怖=惊悚诡异;紧张=危机悬而未决;压抑=绝望、无力、被碾压。期待、释然等表外感受归到最近的值,归不了写「其他」。
|
|
208
|
+
- **格式**:P 行固定六段 `类型X | 白描 | 涉及… | 地点… | 物品… | 时间…`,**白描不能省**(标题只是短标签,不能代替白描),缺的段写「无」;`主题标签X | 基调:Y` 另起一行,不并进 P 行;`类型`、`主题标签` 后直接连写值,`基调:` 用全角冒号。
|
|
209
|
+
- **自检**:写完一章先数情节点,不足 10 个就回到该章原文按关键步骤补拆,再写下一章。
|
|
231
210
|
|
|
232
|
-
|
|
233
|
-
爱情 / 亲情 / 友情 / 权力 / 金钱 / 成长 / 复仇 / 悬念 / 搞笑 / 热血 / 日常 / 其他
|
|
211
|
+
## 剧情点完善规则
|
|
234
212
|
|
|
235
|
-
|
|
213
|
+
剧情点必须回答:
|
|
236
214
|
|
|
237
|
-
|
|
215
|
+
> 谁起初想做什么 → 遇到什么阻碍 → 哪个行动或外部事件改变局面 → 谁得到什么、谁失去什么 → 结果怎样约束后续行动
|
|
238
216
|
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
-
|
|
243
|
-
-
|
|
244
|
-
- 不是通用称呼
|
|
245
|
-
|
|
246
|
-
### 不提取以下角色
|
|
247
|
-
- 群体称呼:"孩子们""士兵们""村民们"
|
|
248
|
-
- 无名路人:"一个中年人""路过的商人"
|
|
249
|
-
- 通用称呼(扩展黑名单):
|
|
250
|
-
- 亲属:大哥-九哥、大姐-三姐、姐姐、妹妹、哥哥、弟弟、叔叔、阿姨、伯伯、舅舅、姑姑、姨妈、爷爷、奶奶、外公、外婆、父亲、母亲、爸爸、妈妈、爹、娘、儿子、女儿、孩子
|
|
251
|
-
- 社交:朋友、兄弟、哥们、姐妹、闺蜜、老同学、同学、老乡、邻居、室友、战友、同事、伙伴
|
|
252
|
-
- 身份:老师、老板、师傅、徒弟、学生、医生、护士、律师、警察、士兵、将军、商人、猎人、农民、工人、新娘、新郎、仆人、侍女、丫鬟、管家、护卫、侍卫、掌柜、小二、店主、老板娘
|
|
253
|
-
- 年龄/外貌:臭小子、小丫头、小姑娘、小伙子、少年、青年、老头、老太太、老人、年轻人、中年人、小家伙、小鬼、小娃娃
|
|
254
|
-
- 尊称/贬称:先生、女士、小姐、少爷、公子、大人、阁下、陛下、殿下、王爷、皇上、圣上、家伙、混蛋、废物、蠢货、王八蛋
|
|
255
|
-
- 通用指代:那人、此人、那家伙、这家伙、某人、路人、过客、陌生人、外人
|
|
256
|
-
- 纯职位(无姓名):科长、处长、局长、秘书、主任、县长、镇长、书记、市长、省长、厅长、董事长、总经理、经理、总监、主管、队长、组长、班长(含所有副/代理前缀变体)
|
|
257
|
-
- 组合职位:县长秘书、市长秘书、政府办主任、办公室主任
|
|
258
|
-
- 单字称呼(无唯一性):"雷""风""龙"等单字不可作为角色名
|
|
259
|
-
|
|
260
|
-
### 别名去后缀
|
|
261
|
-
提取别名时,去除常见称谓后缀:公子、姑娘、师父、老伯、大人、先生、小姐。
|
|
262
|
-
如"林公子"→别名为"林",不保留"林公子"。注意:去后缀后若只剩单字且无唯一性(如"林"),该别名无效,丢弃不保留。
|
|
263
|
-
|
|
264
|
-
### 判断标准
|
|
265
|
-
如果一个称呼可以指代任意人物(无唯一性),则不能作为角色名或别名。
|
|
266
|
-
|
|
267
|
-
### 本章重要性分级
|
|
268
|
-
|
|
269
|
-
| 等级 | 标准 |
|
|
270
|
-
|------|------|
|
|
271
|
-
| **major** | 本章核心角色:台词 ≥3 句 OR 推动本章主线 OR 有重要决策/行动 |
|
|
272
|
-
| **supporting** | 本章配角:台词 1-2 句 OR 参与互动但非核心 OR 提供关键信息 |
|
|
273
|
-
| **minor** | 本章次要角色:仅被提及 OR 无台词但有名字 OR 一次性互动 |
|
|
274
|
-
|
|
275
|
-
### 别名提取规则
|
|
276
|
-
- 提取:专名、绰号、特殊称呼(如"林雷""龙血战士林雷")
|
|
277
|
-
- 提取:姓+称呼(如"李科长""王秘书")
|
|
278
|
-
- 不提取:纯职位(如"科长""队长""镇长")
|
|
279
|
-
- 不提取:通用称呼(如"大哥""那个人")
|
|
280
|
-
- 不提取:组合职位(如"县长秘书""副科长")
|
|
281
|
-
|
|
282
|
-
### 本章表现描述
|
|
283
|
-
- 100-200 字
|
|
284
|
-
- 只描述本章可见的行为、对话、情绪、关系变化
|
|
285
|
-
- **禁止**:推测完整背景、总结整体性格、引用其他章节信息
|
|
217
|
+
- 一个剧情点可以跨多章、跨读取批次;一个读取批次也可以包含多个剧情点。
|
|
218
|
+
- 本批只是延续已有目标时,沿用上批 ID 并补充变化,不能另建一个同义剧情点。
|
|
219
|
+
- 本批结束仍未结算时标 `open`,把状态传给下一批。
|
|
220
|
+
- 连续微动作服务同一局面变化时合并,不拆动作凑数量。
|
|
221
|
+
- 转场或日常过渡没有独立局面变化时,只写入章节事实和节奏作用,不强造剧情点。
|
|
286
222
|
|
|
287
|
-
|
|
223
|
+
## 双时间线与三维节奏
|
|
288
224
|
|
|
289
|
-
|
|
225
|
+
- 每批只提交可能进入主线或关键转折的候选;Stage 3 从全书候选中精选约 8–15 个关键节点形成双时间线,不为所有小事件建表。
|
|
226
|
+
- 关键事件只登记一次;异常、线索、解释、确认合并为其披露路径,分别记录读者和关键角色当时知道什么,以及披露后判断怎样改变。
|
|
227
|
+
- 事件推进看目标、风险、资源、关系、知识或行动方向的变化。
|
|
228
|
+
- 读者情绪写文本触发的期待、紧张、甜、压抑、释然等变化。
|
|
229
|
+
- 篇幅安排写哪些节点被展开、压缩、跳过或反复,以及这样安排的作用。
|
|
230
|
+
- 分数只用于比较,文字理由和证据不能省略。
|
|
290
231
|
|
|
291
|
-
|
|
232
|
+
## 输出前检查
|
|
292
233
|
|
|
293
|
-
1.
|
|
294
|
-
2.
|
|
295
|
-
3.
|
|
296
|
-
4.
|
|
297
|
-
5.
|
|
298
|
-
6.
|
|
299
|
-
7.
|
|
300
|
-
8.
|
|
301
|
-
9.
|
|
302
|
-
10.
|
|
303
|
-
|
|
304
|
-
|
|
234
|
+
1. 输入模式只有一种,范围与运行计划一致。
|
|
235
|
+
2. `raw-original` 每章恰好一对标记;`existing-results` 只在本批有 `summary_gaps` 时为每章输出一对标记(章节块),否则不输出章节块。
|
|
236
|
+
3. 没有读取计划外原文,没有按章另起任务。
|
|
237
|
+
4. 原文块逐章数过情节点:每章 10–20 个、长章最多 30(≈字数÷150–200;少于 10 或多于 30 整批拒收),编号从 P1 连续、按原文时序,类型/主题标签/基调各只取一个枚举值;不生成章节卡表,跨章剧情点不在多张表重复同一句话。
|
|
238
|
+
5. 每个剧情点有局面变化或明确标为未闭合/过渡,不把读取批次直接当剧情点。
|
|
239
|
+
6. 关键客观事件和披露路径可区分,三维节奏分别解释;普通小事件没有重复建表。
|
|
240
|
+
7. 跨批状态足以延续剧情点,又不携带已解决悬念。
|
|
241
|
+
8. 输出不含模板占位符或候选项列表。
|
|
242
|
+
9. 完整输出已写入指定文件、回复只有一行回执;没有写其他文件。
|
|
243
|
+
10. **写完先用 Grep 机械自查输出文件再回执**(`output_mode: count`,只看数字;本批有章节块时做):设 P=`^P[0-9]+ ` 的行数。
|
|
244
|
+
- `^P[0-9]+ \*\*[^*]+\*\*[::] ?类型` 的行数必须等于 P——每个情节点行都有加粗短标题,冒号后紧跟类型;
|
|
245
|
+
- `^主题标签` 的行数必须等于 P——每个情节点都有自己单独一行「主题标签X | 基调:Y」;
|
|
246
|
+
- `^\*\*(概要|因果|关键行动|局面结果|涉及人物|信息变化|状态变化|三维节奏|章尾钩子|证据)\*\*[::]` 的行数必须等于 10 × 本批章数——十个章级字段每章一个不少,最常漏的是 `涉及人物`。
|
|
305
247
|
|
|
306
|
-
|
|
248
|
+
任一项对不上:用 Grep 不带 count 找出缺的那几行,Read 附近片段,**用 Edit 就地补齐**(不整份重写),再查一遍,全部对上才回执。
|
|
307
249
|
|
|
308
|
-
|
|
250
|
+
输入不符合计划、章界错误或无法覆盖全部范围时,不写文件,只回复:
|
|
309
251
|
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
- **不创作**:概要只叙述原文已有的事实与因果,不添加主观解读或评价
|
|
314
|
-
- **一人一实体**:每个角色只对应一个真实人物,不确定时分开列
|
|
252
|
+
```text
|
|
253
|
+
BATCH_ERROR: 批次ID | 错误原因 | 受影响章节
|
|
254
|
+
```
|
|
@@ -22,7 +22,7 @@ maxTurns: 25
|
|
|
22
22
|
|
|
23
23
|
## 参考文件路径规则
|
|
24
24
|
|
|
25
|
-
**确定项目根目录:**
|
|
25
|
+
**确定项目根目录:** 直接使用宿主交给你的当前工作区/项目根;不要执行 shell。以下所有路径均从该根目录解析。
|
|
26
26
|
|
|
27
27
|
读取参考文件时,直接 Read 当前 Claude 部署的 canonical 路径,禁止先用 Glob/Grep 搜索:
|
|
28
28
|
1. `{项目根}/.claude/skills/story-setup/references/agent-references/{文件名}`
|
|
@@ -40,14 +40,14 @@ maxTurns: 15
|
|
|
40
40
|
|
|
41
41
|
### 第一步:发现项目关键术语
|
|
42
42
|
|
|
43
|
-
|
|
43
|
+
不硬编码任何题材术语。先扫描项目自身的设定文件,动态构建检查词表。**读取量跟检查范围走**:范围是某几章时只读这些章涉及的角色、设定与细纲;范围是全卷/全书(如 story-review 全量审查)才扩到全部文件。
|
|
44
44
|
|
|
45
|
-
1. 列出 `设定/角色/`
|
|
46
|
-
2.
|
|
45
|
+
1. 列出 `设定/角色/` 的文件名建角色名表;只整读检查范围内正文出场或申报涉及的角色卡,提取别名、称号与属性
|
|
46
|
+
2. 用正文与申报里的力量体系、术语、地名 Grep `设定/世界观/`,只读命中的文件
|
|
47
47
|
3. 用调用方随 prompt 传入的 `last_committed_chapter` / `state_revision`(主会话已跑过 `tracking_commit.py check`);prompt 里没有这两个值时不自行读取 `_tracking-state.json`(完整 state 不进 prompt,读取量不随章数增长),只读 `追踪/上下文.md` 头部的 `状态修订:{N}` 作参考;对不上时先把派生视图不可信列为 S1,不继续用它们作一致性结论
|
|
48
48
|
4. 读取 `追踪/伏笔.md` 的已埋当前行,以及本次涉及角色的 `追踪/角色状态/{角色名}.md`
|
|
49
49
|
5. 按检查目标读取 `追踪/时间线/作者真相.md` 或 `读者已知.md`;检查知识差时同时读取两个派生视图
|
|
50
|
-
6.
|
|
50
|
+
6. 从检查范围内各章的 `大纲/细纲_第NNN章.md`(全卷/全书范围才读全部)提取 `逻辑线`、`人物关系变化`、`出场顺序`、`行动成本(可无)/收益归属` 和 `结尾设定`,作为后续正文一致性检查的预期链条;缺必需字段时标证据不足,不用其它旧字段替代
|
|
51
51
|
|
|
52
52
|
### 第二步:基于术语执行冲突扫描
|
|
53
53
|
|