@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
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
# 写给作者看的话
|
|
2
|
+
|
|
3
|
+
拆文的读者是网文作者,不是工程师。作者会看到的东西有两类:对话里的回复(进度、停下来问、拆完汇报、出错说明),和落盘给人读的文件(`快速预览.md`、`拆文报告.md`、`人物关系图/人物关系图.md`)。这两类都按本文件写;本文件代码块里的内容就是作者会看到的原样,守卫脚本会检查代码块里有没有工程词。
|
|
4
|
+
|
|
5
|
+
## 总规则
|
|
6
|
+
|
|
7
|
+
1. **说书,不说系统**:讲这本书、这几章、读者的感受和作者能怎么用。进度用「拆到第几章 / 共几章」,不说阶段编号、批次或命令。
|
|
8
|
+
2. **不出现工程痕迹**:脚本名和命令、JSON 字段名(如检查器和计划器输出里的分类、推荐路径、阶段修复、最终状态)、状态值、批次编号、内部文件(运行进度、缓存、机械章节表)、hash、质量指标名(置信度、覆盖率、重叠率)、证据分级字母、「三维」这类内部口径。这些只在你自己的判断里用。
|
|
9
|
+
3. **编号必须带人话名**:情绪模块卡、关系、事件的编号单独出现作者看不懂。要么只写名称,要么写成「退婚当众打脸」(情绪模块卡 EM-003);关系写成「林远 → 苏晴:由信任到反目(第9章宗门大比)」,不写关系编号。
|
|
10
|
+
4. **证据强弱说人话**:原文直接写了的直接陈述;由几处细节推出来的写「从第3、5章的细节看,大概率……」;证据不够的写「推测,待回原文核实:……」。
|
|
11
|
+
5. **需要作者拿主意时**:问一个具体问题,给出推荐选项和理由,并说明不回答时按哪个默认继续。一次只问一件事。
|
|
12
|
+
6. **工程细节默认不写**:作者追问或排障确实需要时,放在回复最后单独一行「(技术备注:……)」,不超过一行。
|
|
13
|
+
7. 脚本输出里带 `author_message` 的,按它的意思转述给作者(可润色,不改事实、不删选项),不要贴 JSON、错误码或 `detail`。
|
|
14
|
+
|
|
15
|
+
## 对话里的回复
|
|
16
|
+
|
|
17
|
+
### 开头三章拆完、停下来问
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
《{书名}》开头三章拆完了,速览写在 快速预览.md。
|
|
21
|
+
|
|
22
|
+
一句话判断:{开篇靠什么抓人、主角怎么立住,一两句}。
|
|
23
|
+
最值得学的一点:{最有借鉴价值的写法,一句}。
|
|
24
|
+
|
|
25
|
+
要继续把后面 {剩余章数} 章也拆完吗?我建议{继续 / 只拆某一段 / 到此为止},因为{理由}。
|
|
26
|
+
|
|
27
|
+
继续的话,想怎么拆?
|
|
28
|
+
1. 一段接一段按顺序拆:前后章的人物称呼、没收尾的剧情都接得最稳;最慢。
|
|
29
|
+
2. 每次同时拆三段:快两三倍;段和段之间偶尔要等全部拆完汇总时再对齐人物和剧情。
|
|
30
|
+
3. 能同时拆多少就拆多少:最快;前后接续全靠最后汇总时对齐,汇总会多花些工夫。电脑或账号扛不住时我会自动放慢。
|
|
31
|
+
|
|
32
|
+
不回复的话我按「{推荐选项}」、每次同时拆三段处理。
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### 拆的过程中报进度
|
|
36
|
+
|
|
37
|
+
每拆完约一成或每隔几次提交报一次,不要每批都报。
|
|
38
|
+
|
|
39
|
+
```text
|
|
40
|
+
《{书名}》拆到第 {已拆章} / {总章数} 章(约 {百分比}%)。
|
|
41
|
+
刚拆完的这段:{这几章的看点,一句话}。
|
|
42
|
+
接下来拆第 {起章}–{止章} 章。
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
某几章连续没拆成、正在缩小范围重试时,只在重试也失败后才说:
|
|
46
|
+
|
|
47
|
+
```text
|
|
48
|
+
第 {起章}–{止章} 章拆了两次都没成功,{原因的人话说法,如:这几章特别长 / 内容格式识别不了}。
|
|
49
|
+
其余章节不受影响,我先继续往后拆;这几章{稍后单章重试 / 需要你看一下原文是否完整}。
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### 全部拆完
|
|
53
|
+
|
|
54
|
+
```text
|
|
55
|
+
《{书名}》拆完了:共 {总章数} 章、约 {总字数} 万字,{全部拆完 / 第 {x}–{y} 章没拆成:{原因}}。
|
|
56
|
+
|
|
57
|
+
这本书最值得学的三点:
|
|
58
|
+
1. {开篇怎么钩住读者——在第几章、用了什么手法}
|
|
59
|
+
2. {读者追着看的核心情绪或爽点,怎样一次次兑现}
|
|
60
|
+
3. {节奏上的特点:哪里快、哪里慢、为什么这样安排}
|
|
61
|
+
|
|
62
|
+
可以直接借用的套路:
|
|
63
|
+
- {套路名}:{在什么场景用、怎么起效}
|
|
64
|
+
- {套路名}:{……}
|
|
65
|
+
|
|
66
|
+
不建议学的:{一条,附原因}
|
|
67
|
+
|
|
68
|
+
去哪看:
|
|
69
|
+
- 先看总报告:拆文报告.md
|
|
70
|
+
- 开头三章逐章怎么写的:章节/第1-3章_深度拆解.md
|
|
71
|
+
- 节奏和信息怎么一步步放出来:剧情/节奏.md
|
|
72
|
+
- 读者爱看的情绪套路(可以拿去用的模块):剧情/情绪模块.md
|
|
73
|
+
- 故事主线和每段剧情:剧情/故事线.md 和 剧情/ 下的各段
|
|
74
|
+
- 人物和人物关系:角色/,关系图看 人物关系图/人物关系图.md
|
|
75
|
+
- 世界观和设定:设定/
|
|
76
|
+
- 想模仿它的文风:文风.md
|
|
77
|
+
- 查某一章发生了什么:章节/第N章_摘要.md
|
|
78
|
+
|
|
79
|
+
{需要你定的:一个问题 + 推荐选项;没有就不写这一段}
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
只拆了一部分、或只补了某几个文件时,删掉用不上的「去哪看」条目,只列这次新增或更新的文件,并说清哪些是上次就有的。
|
|
83
|
+
|
|
84
|
+
### 停下来或出错时
|
|
85
|
+
|
|
86
|
+
先说发生了什么、对这本书有什么影响,再给出路;有选择就按总规则第 5 条问。常见情况:
|
|
87
|
+
|
|
88
|
+
```text
|
|
89
|
+
没找到拆文目录:
|
|
90
|
+
「没找到 拆文库/{书名},书名或路径对吗?」
|
|
91
|
+
|
|
92
|
+
原文和上次拆的时候不一样了:
|
|
93
|
+
「原文和上次拆的时候不一样了({改了哪几章 / 换了文件})。已拆好的章节不会被改动,只有改过的章会重读{上次楔子并进了第一章时加:;楔子这次也照样并进第一章}。按新原文继续吗?(推荐:继续)」
|
|
94
|
+
重建后前面的章号对不上时,转述脚本给出的说明和两个选项,推荐第一个。
|
|
95
|
+
|
|
96
|
+
原文里认不出章节:
|
|
97
|
+
「原文里认不出章节标题(比如“第1章”“楔子”这类),能看一下原文开头的格式吗?」
|
|
98
|
+
|
|
99
|
+
旧拆文的章号和这次对不上:
|
|
100
|
+
(转述脚本给出的说明和选项,问作者选哪一个:开头有楔子时是三个选项,推荐「按旧章号继续」;没有楔子时是两个选项,推荐「换一个新目录」)
|
|
101
|
+
|
|
102
|
+
选题决策缺栏目:
|
|
103
|
+
「选题决策.md 缺「能爆的原因」这一栏,这次先不回填。想回填的话,重新做一次长篇扫榜的选题决策再回来。」
|
|
104
|
+
|
|
105
|
+
关系图画不出中文:
|
|
106
|
+
「{照转脚本返回的原因:当前环境不能画图片 / 这台电脑没有中文字体 / 电脑上的中文字体显示不了图里的某几个字},关系图没做成图片,已经写成 人物关系图/人物关系图.md,用能预览 Markdown 的编辑器打开就能看到中文。」
|
|
107
|
+
|
|
108
|
+
文风没生成:
|
|
109
|
+
「文风这部分没生成:{缺原文 / 样本太少}。其他结果都能用;{补上原文 / 多给几章} 后我可以单独补文风。」
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
## 快速预览.md
|
|
113
|
+
|
|
114
|
+
开头三章拆完后的快照,只用开头三章和全书概要里已经有的信息。`拆文报告.md` 沿用「基本信息」「黄金三章评分」两节的同名同结构,拆完后两份并存,不删快速预览。
|
|
115
|
+
|
|
116
|
+
```markdown
|
|
117
|
+
# 快速预览:{书名}
|
|
118
|
+
|
|
119
|
+
> 根据开头三章和全书概要做的早期判断;全书拆完后以 拆文报告.md 为准。
|
|
120
|
+
> 进度:开头三章已拆完,{等你决定是否继续 / 正在继续拆后面的章节}。
|
|
121
|
+
|
|
122
|
+
## 基本信息
|
|
123
|
+
|
|
124
|
+
书名 | 题材 | 总章数 | 总字数 | 目标平台(原书所在平台,看不出来就留空)
|
|
125
|
+
|
|
126
|
+
## 黄金三章评分
|
|
127
|
+
|
|
128
|
+
| 维度 | 评分(1-5) | 为什么这么打 |
|
|
129
|
+
|------|------|------|
|
|
130
|
+
| 开篇钩子 | | |
|
|
131
|
+
| 主角塑造 | | |
|
|
132
|
+
| 爽点设计 | | |
|
|
133
|
+
| 世界观铺设 | | |
|
|
134
|
+
| 章尾悬念 | | |
|
|
135
|
+
|
|
136
|
+
## 开篇判断
|
|
137
|
+
|
|
138
|
+
- 开头靠什么抓人,效果怎样;
|
|
139
|
+
- 主角是怎么立住的;
|
|
140
|
+
- 世界观是怎么一点点交代的;
|
|
141
|
+
- 三章各自承担什么任务。
|
|
142
|
+
|
|
143
|
+
## 早期可借鉴点
|
|
144
|
+
|
|
145
|
+
3-5 条,每条写清「在第几章、用了什么写法、为什么有效」。
|
|
146
|
+
|
|
147
|
+
## 值不值得拆完
|
|
148
|
+
|
|
149
|
+
一句话建议:{继续拆完 / 重点拆某一段 / 参考价值有限},理由:{……}。
|
|
150
|
+
|
|
151
|
+
## 继续拆会得到什么
|
|
152
|
+
|
|
153
|
+
逐章摘要、主线和每段剧情、节奏与信息释放、读者爱看的情绪套路、人物和设定、人物关系图、完整拆文报告、文风。
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
## 拆文报告.md
|
|
157
|
+
|
|
158
|
+
全书的阅读入口。只综合已经落盘的剧情、节奏、情绪模块、角色、设定和文风结果,不为写报告重读全文,也不复制逐章摘要;细节写一句结论再指向对应文件。下列一级小节名被导入、写作和选题回填读取,保留原名。
|
|
159
|
+
|
|
160
|
+
```markdown
|
|
161
|
+
# 拆文报告:{书名}
|
|
162
|
+
|
|
163
|
+
> 一句话:{这本书靠什么留住读者}
|
|
164
|
+
> 拆到哪:全书 {总章数} 章、约 {总字数} 万字,{全部拆完 / 第 {x}–{y} 章没拆成:{原因}}。
|
|
165
|
+
|
|
166
|
+
## 基本信息
|
|
167
|
+
|
|
168
|
+
书名 | 题材 | 总章数 | 总字数 | 目标平台(与 快速预览.md 同结构)
|
|
169
|
+
|
|
170
|
+
## 核心发现
|
|
171
|
+
|
|
172
|
+
3-5 条这本书为什么好看:每条写「发现 + 在哪几章能看到 + 你写书时可以怎么用」。
|
|
173
|
+
|
|
174
|
+
## 黄金三章评分
|
|
175
|
+
|
|
176
|
+
与 快速预览.md 同一张五项表;「为什么这么打」一栏写一句人话理由。
|
|
177
|
+
|
|
178
|
+
## 读者在追什么
|
|
179
|
+
|
|
180
|
+
读者最想看的 1-3 件事、每次怎样被满足、满足之后为什么还想往下看。详细的情绪套路见 剧情/情绪模块.md。
|
|
181
|
+
|
|
182
|
+
## 故事怎么推进
|
|
183
|
+
|
|
184
|
+
主线和主要副线各一句。再按大段落写:主角想要什么 → 卡在哪 → 靠自己、别人还是意外翻过去 → 得到什么、付出什么 → 引出下一段的什么。每段注明章节范围,细节见 剧情/ 下的各段剧情。
|
|
185
|
+
|
|
186
|
+
## 人物与关系
|
|
187
|
+
|
|
188
|
+
主角、主要对手、核心配角各一两句:是谁、想要什么、在故事里起什么作用。
|
|
189
|
+
关系图见 人物关系图/人物关系图.md(有图片版时在这里嵌入 人物关系图/核心人物关系.png)。
|
|
190
|
+
关键关系的变化逐条写成「甲 → 乙:由……到……(第几章,因为……)」;甲保护乙、乙依赖甲这类方向不同的关系分开写。
|
|
191
|
+
|
|
192
|
+
## 读者知道的和角色知道的
|
|
193
|
+
|
|
194
|
+
挑几个关键秘密或真相:它实际发生在哪一章、读者在第几章知道、主要角色在第几章知道,这个时间差带来了什么悬念或爽感。详见 剧情/节奏.md。
|
|
195
|
+
|
|
196
|
+
## 节奏
|
|
197
|
+
|
|
198
|
+
- 事情推进:哪几段推得快、哪几段在铺垫,转折落在哪几章;
|
|
199
|
+
- 读者情绪:高点在哪几章、低谷拉了多长、怎么拉回来;
|
|
200
|
+
- 笔墨分配:作者在哪些场面上花大篇幅、哪些一笔带过,这样安排的效果。
|
|
201
|
+
|
|
202
|
+
### 爽点密度
|
|
203
|
+
|
|
204
|
+
大约每 {几章 / 几万字} 一次明显的爽点,{偏高 / 适中 / 偏低};最长的空档在第 {x}–{y} 章,作者用{什么}撑住。
|
|
205
|
+
|
|
206
|
+
## 伏笔与冲突
|
|
207
|
+
|
|
208
|
+
跨章较远或影响主线的伏笔:在第几章埋下、第几章揭开、揭开时读者是什么感受。冲突怎么一级级升级,最后落到哪里。
|
|
209
|
+
|
|
210
|
+
## 核心机制
|
|
211
|
+
|
|
212
|
+
这本书反复使用的爽点类型、节奏套路和更新上的做法,各一两句。
|
|
213
|
+
|
|
214
|
+
## 角色体系
|
|
215
|
+
|
|
216
|
+
主角 / 对手 / 核心配角 / 功能性角色各有哪些人、分别承担什么戏份。
|
|
217
|
+
|
|
218
|
+
## 可借鉴套路
|
|
219
|
+
|
|
220
|
+
1. {套路名}:在什么场景用、怎么起效、第几章能看到(对应情绪模块卡「{模块名}」(EM-{编号}))
|
|
221
|
+
2. ……
|
|
222
|
+
|
|
223
|
+
## 可复现模块
|
|
224
|
+
|
|
225
|
+
从 剧情/情绪模块.md 挑最值得复用的三张卡,每张写:读者想看什么、情绪链、戏剧单元、可替换项、不可照搬。
|
|
226
|
+
|
|
227
|
+
## 写法技巧
|
|
228
|
+
|
|
229
|
+
1. {技巧名}:怎么用、在第几章能看到。优先覆盖一笔两用、延迟揭示、视角欺骗、对比锚点、行为循环、用身体反应代替心理描写、跨章回扣(同一件物品或意象在不同章节承担不同作用)。
|
|
230
|
+
|
|
231
|
+
## 不建议模仿
|
|
232
|
+
|
|
233
|
+
1. {问题}:{为什么不建议、写的时候怎么避开}
|
|
234
|
+
|
|
235
|
+
## 文风一句话
|
|
236
|
+
|
|
237
|
+
{句子长短、对话习惯、情绪起伏的特点};详细见 文风.md。
|
|
238
|
+
|
|
239
|
+
## 还不确定的地方
|
|
240
|
+
|
|
241
|
+
- 没拆到的章和原因;
|
|
242
|
+
- 原文没有直接写、靠推测得出的结论(写成「推测:……,依据:第几章……」);
|
|
243
|
+
- 没能生成的内容和原因(照转脚本给的原因,例如不能画图片或缺中文字体时关系图只有 Markdown 版);
|
|
244
|
+
- 值得回原文再核一下的地方。
|
|
245
|
+
```
|
|
@@ -7,12 +7,12 @@
|
|
|
7
7
|
|-----------|-------------|------|
|
|
8
8
|
| 核心情绪控制 | Stage 1(黄金三章)| 判断开篇情绪是否到位 |
|
|
9
9
|
| 题材边界与核心梗 | Stage 0(概要提取)| 识别题材类型和核心梗 |
|
|
10
|
-
| 拆书方法论 | Stage 1-2
|
|
10
|
+
| 拆书方法论 | Stage 1-2(三章+连续章节块)| 拆解视角和提取方法 |
|
|
11
11
|
| 结构设计与节奏 | Stage 3(聚合分析)| 节奏地图和情绪曲线构建 |
|
|
12
12
|
| 卖点循环设计 | Stage 3(聚合分析)| 爽点循环模式识别 |
|
|
13
13
|
| 桥段词表 | Stage 3(聚合分析)| 给剧情模块打桥段标签 |
|
|
14
14
|
| 经典作品拆解 | Stage 1-2 | 对标拆解参考框架 |
|
|
15
|
-
| 拆书实操技巧 | Stage 2
|
|
15
|
+
| 拆书实操技巧 | Stage 2(连续章节块提取)| 情绪折线图、期待分析 |
|
|
16
16
|
| 对标书选择 | Stage 0(概要提取)| 确定拆解对象 |
|
|
17
17
|
| 抽象拆书法 | Stage 3(聚合分析)| 三幕式结构归纳 |
|
|
18
18
|
| 影视拉片与情绪控制 | Stage 2-3 | 情绪曲线精细化分析 |
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
# 三层灵感库管道
|
|
2
|
+
|
|
3
|
+
story-long-analyze 的可选后置管道:把 Stage 3 已抽象好的 EM 机制卡组织成可跨书检索的机制资产。不重新拆文,不写新故事;**单书拆文不自动入库**——只在用户提出「灵感库 / 提炼灵感 / 跨书灵感聚合 / 更新灵感库」时运行。
|
|
4
|
+
|
|
5
|
+
## 复用优先(第一原则)
|
|
6
|
+
|
|
7
|
+
机制与案例分析在拆文主管道已完成一次:`剧情/情绪模块.md` 的 EM 卡是机制全文的**唯一维护点**,剧情单元是案例的唯一维护点。本管道只做登记(IA)、单书归并(NM)、跨书聚合与打标(CBA),任何一层都**不复制** EM 卡正文;卡内引用一律用 `书名/EM-xxx` 式裸 ID,需要读原文时按 ID 经 `灵感索引.csv` 回查(或用 `resolve` 子命令),禁止在卡里堆路径链接——`validate` 会机械拒绝。
|
|
8
|
+
|
|
9
|
+
## 输入边界
|
|
10
|
+
|
|
11
|
+
只读:各书 `剧情/情绪模块.md`(EM 完整卡+其他机制索引)、按 EM 卡「关联节奏/证据来源」定点查证的 `剧情/节奏.md` 与剧情单元、现有 `灵感库/灵感索引.csv` 与 NM/CBA 卡。
|
|
12
|
+
|
|
13
|
+
**禁止读取 `原文/`、`chapter_index.csv` 与逐章摘要正文。** 一本书没有 `剧情/情绪模块.md` 或完整卡字段不全时,停止并返回 `repair_action`:先用 `--intent enhance` 补跑 Stage 3+(从既有摘要聚合,原文读取可为 0),不得在灵感层代写机制卡。原文追加或局部变化后,主管道 rebuild 并更新 EM 卡,再重跑登记即可(幂等);`validate` 的 `ia_em_set_mismatch` 会指出未重登记的书。
|
|
14
|
+
|
|
15
|
+
## 公共目录
|
|
16
|
+
|
|
17
|
+
从当前工作区向上定位最近的现有 `灵感库/`;没有时在工作区根创建:
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
灵感库/
|
|
21
|
+
├── 灵感索引.csv # 三层统一索引,也是 ID → 位置的唯一解析表
|
|
22
|
+
├── 单小说灵感合并/{书名}/NM-001.md # 仅在确有合并时创建
|
|
23
|
+
└── 跨书灵感聚合/CBA-001_{机制名}.md
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
- 原子灵感 = Inspiration Atom,ID `IA-001`。**只是索引行,没有文件**——对一张 EM 卡的登记,编号镜像 EM 编号。
|
|
27
|
+
- 单小说灵感合并 = Single-Novel Merge,ID `NM-001`。
|
|
28
|
+
- 跨书灵感聚合 = Cross-Book Aggregation,ID `CBA-001`。
|
|
29
|
+
|
|
30
|
+
## 管道三步
|
|
31
|
+
|
|
32
|
+
### 1. 原子灵感登记(确定性机械步骤)
|
|
33
|
+
|
|
34
|
+
```text
|
|
35
|
+
{PYTHON} "{story-long-analyze skill 根}/scripts/inspiration_index.py" register-atoms --root "{灵感库}" --module "{拆文目录}/剧情/情绪模块.md" --book "{书名}"
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
- 完整卡(读者想看什么/情绪链/戏剧单元/可替换项/不可照搬 五字段齐)登记为 `grade=full`;「其他机制索引」条目登记为 `grade=index`。
|
|
39
|
+
- 五字段缺失报 `em_fields_missing`,字段在而值空报 `em_field_value_empty`(多行值合法:值可写在字段名行之后、下一个字段/标题之前的列表或段落里)。机制字段(标题/读者想看什么/情绪链/戏剧单元/可替换项)的专名检查分两级:本卡「不可照搬」已点名该词却仍在抽象字段使用、或 `可替换项` 写成「专名→任意X」(报 `replaceable_antipattern`),都是高置信真引用,报 `source_specific_name_in_mechanism` error;仅角色卡文件名子串命中而无佐证的降为 `leak_suspect` warning 并列出命中字段,人工复核。都指回 Stage 3 修复;「不可照搬」字段本身例外——点名原书专名正是它的职责。
|
|
40
|
+
- 泄漏门的角色名单取自工作区 `拆文库/{书}/角色/`。工作区从 `--root` 向上探测含 `拆文库/` 的目录,探测不到报 `workspace_not_located`(可加 `--workspace` 显式指定),不得回退空名单静默通过;输出恒带 `character_roster` 数,书目录在而 `角色/` 缺失报 `character_roster_missing` warning,提示人工确认无专名。
|
|
41
|
+
- 所有卡的所有问题一次收集报全(`errors` 数组),有任一 error 即整体不写盘。落盘 `剧情/情绪模块.md` 后先用只读的 `check-atoms`(与 register-atoms 同参数)自检:输出卡数、索引数、名单规模与全部问题,不写任何文件。
|
|
42
|
+
- 一次原子写入、重跑逐字节幂等;多本书逐本串行登记,不要并行跑 `register-atoms`。`--module` 必须是 `拆文库/{--book}/` 下的文件(`module_book_mismatch`);卡头须为 `### EM-xxx 名称`,缺名称报 `em_title_missing`,认不出的 EM 标题行报 `em_header_unrecognized`,同卡重复字段报 `em_field_duplicate`——三者都意味着卡被截断或并进了上一张。本步不得调用模型重新概括机制。
|
|
43
|
+
|
|
44
|
+
### 2. 单小说灵感合并
|
|
45
|
+
|
|
46
|
+
只在一本书内确有 ≥2 张 EM 卡同构时创建 NM;孤立机制不建 NM。卡内容是**合并增量**,机制链不抄写:
|
|
47
|
+
|
|
48
|
+
```markdown
|
|
49
|
+
# NM-001:{簇名}
|
|
50
|
+
|
|
51
|
+
- 合并对象:EM-001、EM-003
|
|
52
|
+
- 合并理由:{为何同构,一两句}
|
|
53
|
+
- 差异形态:{各卡触发物/场合/规模的不同}
|
|
54
|
+
- 本书特有偏置:
|
|
55
|
+
- 共同反例/边界:
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### 3. 跨书灵感聚合
|
|
59
|
+
|
|
60
|
+
把各书 IA/NM 与现有 CBA 轻量索引比较,只读可能匹配的 active CBA。已建库后的增量先跑只读的 `coverage`:它列出尚未进入任何 active CBA 闭包的原子与现存单书假设卡——聚合比较只对 uncovered 原子做,顺带复核单书假设卡是否因新证据升级为「跨书重复验证」;uncovered 为空即无事可做,不重读已覆盖的 EM 卡。CBA 是**唯一供写作反复读取的卡**,必须自包含跨书归纳的抽象(聚合新产出,不是 EM 原文复制):
|
|
61
|
+
|
|
62
|
+
```markdown
|
|
63
|
+
# CBA-001:{机制名}
|
|
64
|
+
|
|
65
|
+
- 验证状态:{单书假设/跨书重复验证}
|
|
66
|
+
- 来源:{甲书/EM-001、甲书/NM-002、乙书/EM-003}(溯源按 ID 查 灵感索引.csv 或用 resolve)
|
|
67
|
+
|
|
68
|
+
## 共同机制链
|
|
69
|
+
{触发 → 读者认知/情绪变化 → 持续阅读动力 → 兑现}
|
|
70
|
+
|
|
71
|
+
## 可变参数
|
|
72
|
+
- 人物功能位:/关系动作:/冲突载体:/兑现规模:/节奏位置:
|
|
73
|
+
|
|
74
|
+
## 可能适用于
|
|
75
|
+
- 题材:/读者需求:/情绪:/关系动作(可空):/剧情功能:/节奏位置(可空):/适用阶段:/风险:
|
|
76
|
+
|
|
77
|
+
## 条件、反例与边界
|
|
78
|
+
- 成立条件:/反例:/不可照搬:/误用风险:
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
`novel_count`/`atom_count` 不手写进卡——由索引 `source_ids` 闭包自动核算并校验。只有一部书支持时,最多激活 3 张最有写作复用价值的 CBA 并标 `单书假设`;两部及以上独立来源才标 `跨书重复验证`。标签只表达适用性,一本书来源不能写成市场定论。
|
|
82
|
+
|
|
83
|
+
## 索引与受控标签
|
|
84
|
+
|
|
85
|
+
`灵感索引.csv` 表头严格为:
|
|
86
|
+
|
|
87
|
+
```csv
|
|
88
|
+
item_id,layer,title,source_book,path,source_ids,novel_count,atom_count,grade,tags,status
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
- IA 行 `path` 为空、`grade` 取 `full/index`;NM/CBA 行 `grade` 留空;IA/NM 的 `tags` 留空,避免写作绕过聚合层。
|
|
92
|
+
- `source_ids` 来源图:IA 行=单个 `EM-xxx`;NM 行=同书 ≥2 个 `EM-xxx`(`|` 分隔);CBA 行=`书名/EM-xxx` 与 `书名/NM-xxx` 混合列表(必须带书名前缀)。引用 NM 时其成员 EM 自动并入闭包,**不需要也不应该再展开列出**;`novel_count`=闭包内不同小说数,`atom_count`=闭包内不同 EM 数。
|
|
93
|
+
- 标签序列化为 `轴=值1|值2;轴=值`。CBA 必填轴:题材、读者需求、情绪、剧情功能、适用阶段、风险;可选轴:关系动作、节奏位置。同义值先归一;不用「好看/有趣/高级」等不可执行词。
|
|
94
|
+
- **标签值受控于库内 `灵感库/标签词表.md`**(每轴一节 `## 轴`、一行一值 `- 值`):建库首轮聚合把用到的值落盘成首版,此后打标先读词表。扩表走同义判定——候选新值逐一与该轴现有值语义比对,重合或从属就用现有值,确属新维度才追加一行;词表膨胀就是查询失效的前兆。query 命中靠值的精确匹配,写入侧与查询侧共用这一张表。
|
|
95
|
+
- `validate` 校验:表头、ID 前缀、EM↔IA 集合一致、NM/CBA 闭包与计数、必填标签轴、单书 active CBA ≤3、验证状态标记、**卡内无路径引用**;词表存在时另拒表外值(`tag_value_not_in_vocabulary`)与缺必填轴的词表(`vocabulary_axis_missing`)——词表缺失时这两项不查(旧库兼容),应尽快补建;同义值靠扩表时的人工比对,不做机械子串判定。列数不对的索引行报 `column_count_mismatch`。
|
|
96
|
+
- `query --tag 轴=值 …` 只筛 `layer=跨书灵感聚合` 且 `status=active`,核心轴(题材/读者需求/情绪/剧情功能/适用阶段)2 分、其余 1 分,无核心轴命中不返回,按分数/来源数/ID 稳定排序取 Top 3–8。返回值另带 `unmatched_tags`(请求值在全库该轴零出现)与 `axis_inventory`(所查各轴现存值):零命中先按它们纠词重查一次,仍零命中才算「库里没有」。
|
|
97
|
+
- `resolve --ref 书名/EM-xxx --ref CBA-001` 把裸 ID 解析为可读位置——需要时才查,不预先展开进任何卡。
|
|
98
|
+
|
|
99
|
+
## 写作侧消费约定
|
|
100
|
+
|
|
101
|
+
写作模块只读标签命中的 active CBA 全卡(Top 3–8),不沿来源下钻 EM/NM;CBA 不作文风样本,也不触发原文读取;同一 CBA 最多派生 2 个候选变化。消费入口只在 story-long-write 的开书、卷纲、细纲三处(适用阶段=设定/卷纲/细纲);逐章写前召回和写手 prompt 不读灵感库,灵感经细纲进入正文。
|
|
102
|
+
|
|
103
|
+
## 断点与禁止事项
|
|
104
|
+
|
|
105
|
+
不设进度文件——索引与卡片现状就是状态;中断后重跑登记(幂等),用 `validate` 报错清单定位未完成层。禁止:回读原文、二次逐块语义分析、任何层复制 EM 卡机制全文、卡内路径链接、自动生成故事种子/角色组合/成稿桥段、复制原作专名与原句(跨书层连角色名都不得出现)、为凑数硬并语义不同的机制。
|