@oh-story/dsh 0.1.9 → 0.1.11
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 +209 -73
- package/lib/client.js.map +3 -3
- package/lib/drama/manifest.json +248 -168
- package/lib/drama/skills/short-drama/SKILL.md +16 -4
- 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/creator_markdown_check.py +14 -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/character-and-look.md +10 -0
- package/lib/drama/skills/short-drama-assets/references/continuity-lock.md +6 -9
- 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-assets/references/voice-direction.md +28 -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 +65 -44
- 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 +6 -4
- package/lib/drama/skills/short-drama-edit/references/cut-craft.md +26 -67
- package/lib/drama/skills/short-drama-edit/references/delivery-verify.md +31 -56
- package/lib/drama/skills/short-drama-edit/references/generated-footage.md +42 -78
- package/lib/drama/skills/short-drama-edit/references/sound-and-subtitles.md +44 -92
- package/lib/drama/skills/short-drama-edit/references/stage-contract.md +14 -16
- package/lib/drama/skills/short-drama-edit/scripts/edit_tool.py +1272 -125
- package/lib/drama/skills/short-drama-edit/scripts/selftest.py +113 -9
- package/lib/drama/skills/short-drama-image-prompts/SKILL.md +2 -0
- package/lib/drama/skills/short-drama-image-prompts/references/common-recipe.md +11 -0
- 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-produce/SKILL.md +5 -1
- package/lib/drama/skills/short-drama-produce/references/adapter-contract.md +14 -20
- package/lib/drama/skills/short-drama-produce/references/providers/minimax-h3-video.md +8 -26
- package/lib/drama/skills/short-drama-produce/references/providers/minimax-speech.md +41 -0
- package/lib/drama/skills/short-drama-produce/scripts/provider_adapters.py +142 -1
- package/lib/drama/skills/short-drama-review/SKILL.md +4 -5
- package/lib/drama/skills/short-drama-review/references/production-quality-gates.md +6 -19
- 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 +24 -35
- package/lib/drama/skills/short-drama-review/references/stage-contract.md +3 -0
- package/lib/drama/skills/short-drama-storyboard/SKILL.md +23 -11
- package/lib/drama/skills/short-drama-storyboard/references/blocking-playbooks.md +1 -1
- package/lib/drama/skills/short-drama-storyboard/references/lighting-craft.md +39 -0
- 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 +139 -34
- package/lib/drama/skills/short-drama-storyboard/references/stage-contract.md +5 -3
- package/lib/drama/skills/short-drama-video-prompts/SKILL.md +15 -12
- package/lib/drama/skills/short-drama-video-prompts/references/camera-audio-continuity.md +29 -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 +52 -39
- package/lib/drama/skills/short-drama-video-prompts/references/motion-recipe.md +24 -21
- package/lib/drama/skills/short-drama-video-prompts/references/performance-action-timing.md +9 -23
- package/lib/drama/skills/short-drama-video-prompts/references/production-prompt-grammar.md +14 -26
- package/lib/drama/skills/short-drama-video-prompts/references/review-and-fixtures.md +1 -1
- package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.0.md +2 -3
- package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.5.md +34 -9
- package/lib/drama/skills/short-drama-video-prompts/references/stage-contract.md +3 -2
- 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 +10 -7
- 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 +346 -98
- 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 +7 -12
- 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 +13 -14
- 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 +13 -15
- package/lib/novel-to-game/skills/game-concept/references/concept-method.md +28 -75
- package/lib/novel-to-game/skills/game-qa/SKILL.md +6 -7
- package/lib/novel-to-game/skills/game-qa/references/test-design-method.md +9 -5
- package/lib/novel-to-game/skills/game-world-design/SKILL.md +12 -16
- 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 +4 -10
- 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 +9 -21
- package/lib/novel-to-game/skills/novel-to-game/references/intake-method.md +5 -4
- package/lib/novel-to-game/skills/novel-to-game/references/pipeline-contract.md +5 -8
- package/lib/oh-story/manifest.json +607 -327
- package/lib/oh-story/roles/chapter-extractor.md +177 -237
- package/lib/oh-story/roles/character-designer.md +1 -2
- package/lib/oh-story/roles/consistency-checker.md +15 -13
- package/lib/oh-story/roles/narrative-writer.md +36 -38
- 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 +15 -9
- 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 +46 -94
- 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 +59 -73
- 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 +12 -11
- 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 +46 -94
- package/lib/oh-story/skills/story-deslop/references/banned-words.md +2 -2
- package/lib/oh-story/skills/story-deslop/references/deslop-gates.md +22 -5
- 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 +934 -170
- package/lib/oh-story/skills/story-deslop/scripts/check-ai-patterns.js +155 -8
- package/lib/oh-story/skills/story-import/SKILL.md +64 -584
- package/lib/oh-story/skills/story-import/references/character-state-reverse.md +1 -1
- 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/state-tracking.md +4 -69
- package/lib/oh-story/skills/story-import/references/structure-mapping-long.md +98 -92
- 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 +15 -11
- 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 +132 -27
- package/lib/oh-story/skills/story-import/scripts/tracking_commit.py +478 -15
- package/lib/oh-story/skills/story-import/scripts/wordcount_core.py +182 -23
- package/lib/oh-story/skills/story-long-analyze/SKILL.md +81 -270
- package/lib/oh-story/skills/story-long-analyze/references/author-facing.md +252 -0
- package/lib/oh-story/skills/story-long-analyze/references/deconstruction-notes.md +3 -3
- 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/inspiration-library.md +105 -0
- package/lib/oh-story/skills/story-long-analyze/references/pipeline-ops.md +138 -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/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 +55 -128
- package/lib/oh-story/skills/story-long-analyze/references/style-profile-protocol.md +6 -6
- package/lib/oh-story/skills/story-long-analyze/references/synthesis-inputs.md +39 -0
- 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 +1145 -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 +45 -194
- 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 +49 -81
- 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 +12 -11
- package/lib/oh-story/skills/story-long-write/references/artifact-protocols.md +24 -202
- 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 +46 -94
- 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 +7 -11
- package/lib/oh-story/skills/story-long-write/references/character-relations.md +49 -1
- package/lib/oh-story/skills/story-long-write/references/cross-book-recall.md +26 -0
- package/lib/oh-story/skills/story-long-write/references/deslop-gates.md +171 -0
- package/lib/oh-story/skills/story-long-write/references/dialogue-mastery.md +4 -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/emotional-methods.md +2 -2
- 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 +7 -15
- 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 +19 -13
- package/lib/oh-story/skills/story-long-write/references/reader-contract-and-progression.md +13 -5
- package/lib/oh-story/skills/story-long-write/references/reference-index.md +5 -6
- 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 +15 -11
- package/lib/oh-story/skills/story-long-write/references/workflow-chapter.md +81 -121
- package/lib/oh-story/skills/story-long-write/references/workflow-daily.md +41 -139
- 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 +57 -67
- package/lib/oh-story/skills/story-long-write/references/workflow-setup.md +112 -253
- 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 +6 -4
- package/lib/oh-story/skills/story-long-write/references/writing-craft.md +19 -65
- 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_architect_brief.py +260 -0
- package/lib/oh-story/skills/story-long-write/scripts/build_writer_prompt.py +226 -25
- 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 +132 -27
- 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 +7 -4
- package/lib/oh-story/skills/story-long-write/scripts/storyctl.py +304 -46
- package/lib/oh-story/skills/story-long-write/scripts/tracking_commit.py +478 -15
- package/lib/oh-story/skills/story-long-write/scripts/wordcount_core.py +182 -23
- package/lib/oh-story/skills/story-review/SKILL.md +31 -302
- 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 +12 -11
- 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 +46 -94
- 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/dialogue-mastery.md +4 -0
- package/lib/oh-story/skills/story-review/references/review-quality.md +6 -11
- 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 +15 -11
- 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 +155 -8
- package/lib/oh-story/skills/story-review/scripts/tracking_commit.py +478 -15
- package/lib/oh-story/skills/story-review/scripts/wordcount_core.py +182 -23
- package/lib/oh-story/skills/story-setup/SKILL.md +71 -452
- 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 +12 -11
- 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 +22 -5
- package/lib/oh-story/skills/story-setup/references/agent-references/dialogue-mastery.md +4 -0
- 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-emotional-methods.md +2 -2
- 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 +19 -65
- package/lib/oh-story/skills/story-setup/references/diagnostics.md +4 -4
- package/lib/oh-story/skills/story-short-analyze/SKILL.md +56 -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/stage4-6-reversal-summary.md +611 -0
- package/lib/oh-story/skills/story-short-scan/SKILL.md +35 -65
- 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 -175
- 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 +46 -94
- 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/dialogue-mastery.md +4 -0
- 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 -47
- 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 +21 -13
- package/lib/oh-story/skills/story-short-write/references/workflow-draft.md +116 -0
- package/lib/oh-story/skills/story-short-write/references/workflow-revision.md +99 -0
- 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 +934 -170
- 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/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 +16 -0
- package/lib/types/client/production-runtime.d.ts.map +1 -1
- package/lib/types/client/video-studio.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 +53 -1
- 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/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-script/scripts/agent_brief.py → video-understanding/scripts/briefing/builder.py} +38 -35
- package/lib/video-recap/skills/video-understanding/scripts/{brief_context.py → 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-script/scripts/brief_timeline.py → video-understanding/scripts/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 +45 -45
- package/lib/novel-to-game/skills/game-world-design/references/dialogue-design-method.md +0 -58
- 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 -38
- package/lib/oh-story/skills/story-long-analyze/references/material-decomposition.md +0 -530
- package/lib/oh-story/skills/story-long-analyze/references/output-templates.md +0 -559
- package/lib/oh-story/skills/story-long-scan/references/scan-output-format.md +0 -207
- package/lib/oh-story/skills/story-long-write/references/state-tracking.md +0 -108
- package/lib/oh-story/skills/story-short-analyze/references/material-decomposition.md +0 -678
- 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/brief_context.py +0 -348
- package/lib/video-recap/skills/video-script/scripts/narration.py +0 -12
- package/lib/video-recap/skills/video-understanding/scripts/agent_brief.py +0 -399
- package/lib/video-recap/skills/video-understanding/scripts/brief_inputs.py +0 -290
- package/lib/video-recap/skills/video-understanding/scripts/brief_timeline.py +0 -327
- /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
|
@@ -32,7 +32,7 @@ metadata: {"openclaw":{"source":"https://github.com/zenstory-ai/oh-story-claudec
|
|
|
32
32
|
|
|
33
33
|
### Phase 1:确认平台和方向
|
|
34
34
|
|
|
35
|
-
|
|
35
|
+
问用户:**「你想看哪个平台?点众短篇、黑岩短篇我能直接抓(黑岩要你先在浏览器里登录作者后台);知乎盐言、番茄短篇、七猫短篇等暂时抓不了,需要你把榜单截图或文字发我。有没有想写的类型方向?」**
|
|
36
36
|
|
|
37
37
|
关键判断:
|
|
38
38
|
- 用户已有方向 → 针对该方向做深度扫榜
|
|
@@ -47,108 +47,75 @@ metadata: {"openclaw":{"source":"https://github.com/zenstory-ai/oh-story-claudec
|
|
|
47
47
|
|
|
48
48
|
| 优先级 | 模式 | 说明 | 何时用 |
|
|
49
49
|
|--------|------|------|--------|
|
|
50
|
-
| 1 |
|
|
51
|
-
| 2 |
|
|
52
|
-
| 3 | **内置知识** | 基于知识库中的趋势数据和方法论做分析 |
|
|
50
|
+
| 1 | **脚本采集** | 点众、黑岩:直接抓取平台页面,产出结构化文件 | 有 Chrome 环境时(优先) |
|
|
51
|
+
| 2 | **作者提供** | 没有脚本的平台,或作者已有榜单 | 知乎盐言/番茄短篇/七猫短篇等 |
|
|
52
|
+
| 3 | **内置知识** | 基于知识库中的趋势数据和方法论做分析 | 无法联网、作者也没有数据时 |
|
|
53
53
|
|
|
54
|
-
|
|
54
|
+
1. 只读所选平台那一份:[点众](references/platform-dianzhong.md) / [黑岩](references/platform-heiyan.md) / [没有脚本的平台](references/manual-rank-input.md)。里面有网址、命令、字段、故障排查、平台分析维度,以及作者提供的榜单怎么整理成文件。
|
|
55
|
+
2. 每次扫榜新建输出目录 `扫榜/{YYYYMMDD}/`(同日再扫加 `-2`)存本次榜单,不往旧目录追加;文件名 `{平台}{类型}_{YYYYMMDD}.md`,某平台失败就跳过。对比读上个日期目录的 `扫榜聚合.md`。
|
|
56
|
+
3. 聚合:`node scripts/aggregate-rank.js {输出目录} --out {输出目录}/扫榜聚合.md --sparse 10 --scale short`。**主会话只读这份聚合**,要看开头与人设原文再抽样:`node scripts/aggregate-rank.js {输出目录} --sample {题材/标签/书名词} --n 5`。
|
|
55
57
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
**点众采集目标**:
|
|
59
|
-
|
|
60
|
-
| 页面 | URL | 核心字段 |
|
|
61
|
-
|------|-----|----------|
|
|
62
|
-
| 男频短篇 | ishugui.com/browse | 书名·作者·标签·状态·字数·评分·最新章节 |
|
|
63
|
-
| 女频短篇 | ishugui.com/browse/on3 | 书名·作者·标签·状态·字数·评分·最新章节 |
|
|
64
|
-
|
|
65
|
-
**黑岩采集目标**:
|
|
66
|
-
|
|
67
|
-
| 页面 | URL | 核心字段 |
|
|
68
|
-
|------|-----|----------|
|
|
69
|
-
| 书库列表 | manage.zhangwenpindu.cn/books/booklist | 书名·作者·字数·分类·类型·价格·创建/更新时间·标签(详情模式) |
|
|
70
|
-
|
|
71
|
-
> **黑岩需要登录!** 必须先在 Chrome 中手动登录 `manage.zhangwenpindu.cn`,脚本才能从 Cookie 中提取 Bearer token 调用后端 API。未登录会报错提示。**黑岩采集失败时标记为 SKIP,继续其他平台采集,不中断本轮数据采集。**
|
|
72
|
-
|
|
73
|
-
- 黑岩专用:`--pages N`(每页 20 条)、`--detail`(逐本详情,含标签/简介,速度较慢)、`--channel male/female`
|
|
74
|
-
- 点众专用:`--channel male/female/all`
|
|
75
|
-
|
|
76
|
-
**文件命名**:`{平台}{类型}_{YYYYMMDD}.md`,例:`点众男频短篇_20260501.md`
|
|
77
|
-
|
|
78
|
-
**用户提供操作指引:**
|
|
79
|
-
- 请用户截图或复制粘贴榜单内容
|
|
80
|
-
- 如果用户提供链接,用 WebFetch 抓取页面内容
|
|
81
|
-
- 如果用户只提供故事名列表,直接进入分析
|
|
82
|
-
|
|
83
|
-
**内置知识操作指引:**
|
|
84
|
-
- 加载 `references/real-market-data.md`(跨平台写作差异对照)
|
|
85
|
-
- 明确标注:「以下分析基于历史趋势数据;未完成实时榜单校验前只能作为候选假设。」并列出需要复扫的平台页面。
|
|
58
|
+
**内置知识:** 加载 `references/real-market-data.md`(跨平台写作差异对照),明确标注「以下分析基于历史趋势数据;未完成实时榜单校验前只能作为候选假设。」并列出需要复扫的平台页面。
|
|
86
59
|
|
|
87
60
|
---
|
|
88
61
|
|
|
89
62
|
### Phase 3:数据分析
|
|
90
63
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
| 维度 | 看什么 |
|
|
94
|
-
|---|---|
|
|
95
|
-
| 热门榜单 | 当前最受关注的故事 |
|
|
96
|
-
| 高赞故事 | 口碑最好的作品结构 |
|
|
97
|
-
| 新作者上榜 | 非头部账号的题材选择与开篇模式 |
|
|
98
|
-
| 付费转化率 | 哪些题材读者愿意付费 |
|
|
99
|
-
| 标签分布 | 热门标签的变化趋势 |
|
|
100
|
-
|
|
101
|
-
#### 通用分析维度
|
|
102
|
-
|
|
103
|
-
对每个平台提取:
|
|
64
|
+
以聚合结果为主,按所选平台参考里的「分析维度」看,再对每个平台提取:
|
|
104
65
|
|
|
105
|
-
1.
|
|
66
|
+
1. **情绪类型分布**:当前哪种情绪拉扯最火(虐恋/反转/悬疑/治愈/打脸),从题材表与标签热词归并
|
|
106
67
|
2. **题材热点**:具体什么设定/场景反复出现
|
|
107
|
-
3.
|
|
108
|
-
4.
|
|
109
|
-
5. **结尾类型**:HE(好结局)/BE(坏结局)/开放式
|
|
110
|
-
6.
|
|
68
|
+
3. **篇幅分布**:字数分布与各题材字数中位
|
|
69
|
+
4. **开头模式**:对候选方向抽样,看第一段/第一句怎么写
|
|
70
|
+
5. **结尾类型**:HE(好结局)/BE(坏结局)/开放式 的比例(抽样可见时)
|
|
71
|
+
6. **标题模式**:书名常见词 + 代表作标题
|
|
111
72
|
7. **人设模型**:反复出现的主角类型
|
|
112
73
|
|
|
113
74
|
---
|
|
114
75
|
|
|
115
76
|
### Phase 4:输出扫榜报告
|
|
116
77
|
|
|
117
|
-
|
|
118
|
-
|
|
78
|
+
报告写给作者:讲市场结论和能写的方向。脚本名、命令和 SKIP 这类采集状态不进报告;某个平台没采到,就说一句「XX 这次没拿到(原因),结论不含它」。
|
|
79
|
+
|
|
80
|
+
报告展示给作者,同时写进输出目录的 `短篇扫榜结论.md`:文件不存在就先按 [references/topic-match.md](references/topic-match.md) 的模板写文件头,再把报告作为「扫榜结论」一节写入(已存在就整节替换)。
|
|
81
|
+
|
|
82
|
+
<!-- author-report -->
|
|
83
|
+
```md
|
|
84
|
+
## 扫榜结论:{平台名称}
|
|
119
85
|
|
|
120
|
-
|
|
86
|
+
### 市场概况
|
|
121
87
|
- 扫榜时间:{日期}
|
|
122
88
|
- 核心发现:{一句话总结}
|
|
89
|
+
- 可信度:{样本多少篇、来自哪几个榜};建议 {日期} 前后再扫一次
|
|
123
90
|
|
|
124
|
-
|
|
91
|
+
### 情绪热度排行
|
|
125
92
|
| 排名 | 情绪类型 | 榜上数量 | 趋势 | 代表作 |
|
|
126
93
|
|------|----------|----------|------|--------|
|
|
127
94
|
| 1 | {类型} | {N篇} | ↑/→/↓ | {标题} |
|
|
128
95
|
|
|
129
|
-
|
|
96
|
+
### 题材热点
|
|
130
97
|
| 题材 | 热度 | 竞争程度 | 门槛 | 代表作 |
|
|
131
98
|
|------|------|----------|------|--------|
|
|
132
99
|
| {题材} | 高/中/低 | 激烈/一般/蓝海 | 高/中/低 | {标题} |
|
|
133
100
|
|
|
134
|
-
|
|
101
|
+
### 关键数据洞察
|
|
135
102
|
- 篇幅区间:热门短篇集中在 {X}-{Y} 字
|
|
136
103
|
- 开头模式:{高频开头模式}
|
|
137
104
|
- 结尾偏好:{HE/BE/开放式的比例}
|
|
138
105
|
- 标题特征:{命名规律}
|
|
139
106
|
- 人设热词:{高频主角类型}
|
|
140
107
|
|
|
141
|
-
|
|
108
|
+
### 风口预警
|
|
142
109
|
- 🔥 正在爆发:{题材} — {依据}
|
|
143
110
|
- ⚡ 即将起风:{题材} — {依据}
|
|
144
111
|
- ⚠️ 即将饱和:{题材} — {依据}
|
|
145
112
|
|
|
146
|
-
|
|
113
|
+
### 值得写的方向
|
|
147
114
|
1. {方向 + 情绪拉扯方式 + 可行性}
|
|
148
115
|
2. {方向 + 情绪拉扯方式 + 可行性}
|
|
149
116
|
3. {方向 + 情绪拉扯方式 + 可行性}
|
|
150
117
|
|
|
151
|
-
|
|
118
|
+
### 一句话
|
|
152
119
|
{犀利总结}
|
|
153
120
|
```
|
|
154
121
|
|
|
@@ -156,7 +123,7 @@ metadata: {"openclaw":{"source":"https://github.com/zenstory-ai/oh-story-claudec
|
|
|
156
123
|
|
|
157
124
|
### Phase 5:选题匹配
|
|
158
125
|
|
|
159
|
-
|
|
126
|
+
先读 `短篇扫榜结论.md` 的「扫榜结论」和 `扫榜聚合.md`,不靠对话记忆;再结合项目条件输出选题匹配,按 [references/topic-match.md](references/topic-match.md) 写进同一文件的「选题匹配」一节:
|
|
160
127
|
|
|
161
128
|
- 低复杂度候选:反转类、打脸类(结构清晰、验证成本低)
|
|
162
129
|
- 高复杂度候选:悬疑类、虐恋类(技术壁垒高,需要伏笔、反转和情绪控制证据)
|
|
@@ -199,10 +166,13 @@ metadata: {"openclaw":{"source":"https://github.com/zenstory-ai/oh-story-claudec
|
|
|
199
166
|
|
|
200
167
|
| 文件 | 何时加载 |
|
|
201
168
|
|------|----------|
|
|
169
|
+
| 三份平台参考(链接见 Phase 2 第 1 步) | 「确定数据来源」:只读所选平台那份 |
|
|
170
|
+
| [references/topic-match.md](references/topic-match.md) | Phase 4/5:`短篇扫榜结论.md` 模板、可行性上限与交付 |
|
|
171
|
+
| [scripts/aggregate-rank.js](scripts/aggregate-rank.js) | 把输出目录里的原始榜单聚合成短表(`--out` 落盘,`--sample` 抽原始条目),主会话只读它 |
|
|
202
172
|
| [references/real-market-data.md](references/real-market-data.md) | **核心参考**:跨平台写作差异对照表、各平台简介公式速查、题材爆款公式速查表、各平台写作特征 |
|
|
203
173
|
| [scripts/cdp-utils.js](scripts/cdp-utils.js) | CDP 公共工具函数(ab/sleep/evalJSON/safeStr/scrollLoad/getArg),各采集脚本共用 |
|
|
204
|
-
| [scripts/dz-browse-scraper.js](scripts/dz-browse-scraper.js) |
|
|
205
|
-
| [scripts/heiyan-booklist-scraper.js](scripts/heiyan-booklist-scraper.js) |
|
|
174
|
+
| [scripts/dz-browse-scraper.js](scripts/dz-browse-scraper.js) | 点众短篇采集(男频/女频),用法见点众参考 |
|
|
175
|
+
| [scripts/heiyan-booklist-scraper.js](scripts/heiyan-booklist-scraper.js) | 黑岩书库列表采集(需登录),用法见黑岩参考 |
|
|
206
176
|
|
|
207
177
|
---
|
|
208
178
|
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# 没有采集脚本的平台:作者提供榜单
|
|
2
|
+
|
|
3
|
+
知乎盐言、番茄短篇、七猫短篇等平台目前没有采集脚本,需要作者提供榜单。作者选了这些平台才读本文。
|
|
4
|
+
|
|
5
|
+
## 向作者要什么
|
|
6
|
+
|
|
7
|
+
「这个平台我没法自动抓,麻烦把榜单截图或复制的文字发给我,最好带上书名、作者、题材/标签、字数、热度(赞同、收藏、在读都行),有简介更好。给个链接也行,我试着打开。」
|
|
8
|
+
|
|
9
|
+
- 链接 → 用 WebFetch 抓取;抓不到就请作者改发截图或文字
|
|
10
|
+
- 只有故事名列表 → 可以直接分析,但报告的可信度写低一档
|
|
11
|
+
|
|
12
|
+
## 整理成文件再聚合
|
|
13
|
+
|
|
14
|
+
把作者给的内容整理成下面的格式,存进本次输出目录(文件名 `{平台}{榜单}_{YYYYMMDD}.md`),再和脚本采集的榜单一起聚合:
|
|
15
|
+
|
|
16
|
+
```markdown
|
|
17
|
+
# 知乎盐言 · 热门榜
|
|
18
|
+
|
|
19
|
+
### #1 {书名}
|
|
20
|
+
*{作者} · {题材} · {状态} · {字数}字 · {热度数字}收藏*
|
|
21
|
+
**标签:** {标签1}、{标签2}
|
|
22
|
+
|
|
23
|
+
> {简介}
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
热度写成「数字 + 口径」(如 `2.3万收藏`、`1.2万热度`),聚合才认得。缺的字段直接省略,不要编。
|
|
27
|
+
|
|
28
|
+
## 知乎盐言分析维度
|
|
29
|
+
|
|
30
|
+
| 维度 | 看什么 |
|
|
31
|
+
|---|---|
|
|
32
|
+
| 热门榜单 | 当前最受关注的故事 |
|
|
33
|
+
| 高赞故事 | 口碑最好的作品结构 |
|
|
34
|
+
| 新作者上榜 | 非头部账号的题材选择与开篇模式 |
|
|
35
|
+
| 付费转化 | 哪些题材读者愿意付费 |
|
|
36
|
+
| 标签分布 | 热门标签的变化趋势 |
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# 点众短篇:采集与分析
|
|
2
|
+
|
|
3
|
+
作者选了点众才读本文。需先用 `/browser-cdp` 启动 Chrome;不需要登录。脚本按 bookId 聚合页面链接解出书名、评分、简介、作品页(避免把 UI 文字或简介误当书名),带连通性自检和书名解析率质量门。
|
|
4
|
+
|
|
5
|
+
## 页面与命令
|
|
6
|
+
|
|
7
|
+
| 页面 | URL |
|
|
8
|
+
|------|-----|
|
|
9
|
+
| 男频短篇 | ishugui.com/browse |
|
|
10
|
+
| 女频短篇 | ishugui.com/browse/on3 |
|
|
11
|
+
|
|
12
|
+
`node scripts/dz-browse-scraper.js --channel male|female|all --outdir {输出目录}`,文件名 `点众{男频/女频}短篇_{YYYYMMDD}.md`。
|
|
13
|
+
|
|
14
|
+
## 字段
|
|
15
|
+
|
|
16
|
+
书名、作者、标签(聚合时当题材)、状态、字数、评分(聚合的热度口径)、最新章节、作品页、简介。文件头 `数据质量` 标 `[书名解析异常]` 时,多为页面结构变动或未加载完:人工打开对应 URL 确认页面正常后重采。
|
|
17
|
+
|
|
18
|
+
## 分析维度
|
|
19
|
+
|
|
20
|
+
| 维度 | 看什么 |
|
|
21
|
+
|---|---|
|
|
22
|
+
| 标签分布 | 家庭复仇、假千金、弹幕流等题材的集中度 |
|
|
23
|
+
| 评分 | 同题材里口碑拉开差距的作品 |
|
|
24
|
+
| 字数 | 主力篇幅(通常 1-2 万字、5-10 章) |
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# 黑岩短篇:采集与分析
|
|
2
|
+
|
|
3
|
+
作者选了黑岩才读本文。**黑岩需要登录**:先用 `/browser-cdp` 启动 Chrome,请作者在 Chrome 里手动登录 `manage.zhangwenpindu.cn`,脚本再从 Cookie 取 Bearer token 调后端接口;未登录会报错提示。采集失败就跳过黑岩继续其他平台,报告里说明结论不含它。
|
|
4
|
+
|
|
5
|
+
## 页面与命令
|
|
6
|
+
|
|
7
|
+
书库列表:manage.zhangwenpindu.cn/books/booklist
|
|
8
|
+
|
|
9
|
+
`node scripts/heiyan-booklist-scraper.js --channel male|female|all --pages N --outdir {输出目录}`(每页 20 条;`--detail` 逐本取标签和简介,较慢),文件名 `黑岩书库列表_{频道}_{YYYYMMDD}.md`。脚本区分 CDP 未连、未登录、超时、接口错误,并带书名命中率质量门。
|
|
10
|
+
|
|
11
|
+
## 字段
|
|
12
|
+
|
|
13
|
+
书名、作者、分类/类型(聚合时类型当题材)、字数、价格、创建/更新时间、标签与简介(`--detail`)。书库列表没有热度字段,聚合按列表顺序取代表作,热度结论要靠标签和更新时间旁证,可信度写低一档。
|
|
14
|
+
|
|
15
|
+
## 分析维度
|
|
16
|
+
|
|
17
|
+
| 维度 | 看什么 |
|
|
18
|
+
|---|---|
|
|
19
|
+
| 类型分布 | 虐恋、复仇、身份反转的占比 |
|
|
20
|
+
| 创建/更新时间 | 近期新开的集中在哪些类型 |
|
|
21
|
+
| 标签组合 | 极端情绪的具体包装方式 |
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# 短篇扫榜结论:落盘与交接
|
|
2
|
+
|
|
3
|
+
短篇扫榜的结论写进输出目录的 `短篇扫榜结论.md`:Phase 4 写文件头和「扫榜结论」,Phase 5 写「选题匹配」。`/story-short-write` 定目标情绪时会读它,所以作者不必记住上次聊了什么。
|
|
4
|
+
|
|
5
|
+
## 短篇扫榜结论.md 模板
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
# 短篇扫榜结论:{平台/方向}
|
|
9
|
+
- 扫榜日期:{YYYYMMDD}
|
|
10
|
+
- 复扫日期:{YYYYMMDD} # 短篇风口有效期短,通常扫榜后 2-4 周;过了这天结论只当参考
|
|
11
|
+
- 数据来源:{榜单文件名 / 作者提供 / 内置知识}
|
|
12
|
+
- 聚合表:扫榜聚合.md # 同目录;内置知识模式写「无」
|
|
13
|
+
|
|
14
|
+
## 扫榜结论:{平台名称}
|
|
15
|
+
{Phase 4 报告正文}
|
|
16
|
+
|
|
17
|
+
## 选题匹配
|
|
18
|
+
|
|
19
|
+
### 方向 1:{一句话方向}
|
|
20
|
+
- 目标情绪:{读者读完的感觉,如意难平/爽感释放/反转震撼}
|
|
21
|
+
- 题材与设定:{题材包 + 核心设定}
|
|
22
|
+
- 开头钩子:{前 3 句建立的冲突、身份差或情绪钩子}
|
|
23
|
+
- 传播引擎:{反转 / 强共鸣 / 强话题 / 强余韵}
|
|
24
|
+
- 复杂度:低/高 — {低:反转、打脸;高:悬疑、虐恋}
|
|
25
|
+
- 可行性:高/中/低 — {同方向样本几篇 + 趋势 + 作者素材能否撑住}
|
|
26
|
+
- 篇幅/平台:{建议字数 + 目标平台}
|
|
27
|
+
- 验证动作:{开写前怎么低成本验证}
|
|
28
|
+
|
|
29
|
+
### 方向 2 ...
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
2-3 个方向为宜,按可行性排序(高的在前)。
|
|
33
|
+
|
|
34
|
+
## 规则
|
|
35
|
+
|
|
36
|
+
- 可行性上限:聚合表标「少」、样本不到 10 篇或来自作者只给的故事名列表 ⇒ 不许给「高」;内置知识模式一律给「中」。
|
|
37
|
+
- 重跑时整节替换,不追加第二份;「扫榜结论」和「选题匹配」都保留在同一个文件里。
|
|
38
|
+
- 交付时告诉作者路径:「开写时把小说项目建在扫榜时的文件夹里或和它同级,`/story-short-write` 会自动找到;隔得远就把 `短篇扫榜结论.md` 复制到项目根。」
|
|
@@ -10,23 +10,26 @@ metadata: {"openclaw":{"source":"https://github.com/zenstory-ai/oh-story-claudec
|
|
|
10
10
|
|
|
11
11
|
**执行规则:短篇以情绪为目标,所有内容为情绪服务。**
|
|
12
12
|
|
|
13
|
-
##
|
|
13
|
+
## 写前必读(强制,先读后写)
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
短篇按作者时刻加载:每个时刻只读自己的文件,后一时刻只靠落盘文件接上前一时刻。创建或修改故事文件前,先判断当前时刻并完整读取它的必读项(分块直到 EOF;`rg` 检索或局部摘读不算读完)。**只读本 SKILL.md 不算完成门禁。**
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
| 时刻 | 作者确认什么 | 读什么 | 落盘 |
|
|
18
|
+
|---|---|---|---|
|
|
19
|
+
| 定情绪(Phase 1) | 读者读完的感觉、题材方向 | 本文件 | 进构思时写入 `设定.md` |
|
|
20
|
+
| 构思(Phase 2) | 故事核、人物、反转、付费点 | ① `references/workflow-design.md` + `references/writing-workflow.md`、`references/submission-craft.md`、`references/short-craft.md`、`references/short-reversal.md` ② 核心 10 题材读一个精确的 `references/genre-styles/{题材}.md`,冷门题材读 `references/genre-writing-formulas.md` ③ 有反派或真相揭露设计时读 `references/villain-and-reveal.md`,不适用时在设计校验区写明原因 | `设定.md`、`小节大纲.md` |
|
|
21
|
+
| 写正文(Phase 3–4) | 成稿 | Phase 3 写正文前完整读取 `references/workflow-draft.md`,按其「写前加载」读写作手法;Phase 4 精修前完整读取 `references/workflow-revision.md` | `正文.md` |
|
|
18
22
|
|
|
19
|
-
|
|
20
|
-
2. 核心 10 题材再读取一个精确的 `references/genre-styles/{题材}.md`;冷门题材改读 `references/genre-writing-formulas.md`
|
|
21
|
-
3. 有反派或真相揭露设计时再读 `references/villain-and-reveal.md`;不适用时在设计校验区写明原因
|
|
23
|
+
构思必读项在第一次写入 `设定.md` / `小节大纲.md` 前读完。任一必需路径不存在、不可读或题材尚未解析到唯一 reference 时,立即停止,报告准确路径/待定项,**不得创建或修改故事产物**。不要把“已读 references”的回执写进故事文件;选出的题材招式、反转计算等应用证据写进正常设计字段。每个时刻按当前任务完整回读,不得用早先读过代替。
|
|
22
24
|
|
|
23
|
-
|
|
25
|
+
**交接只靠落盘**:作者在对话里定下的字数、平台、人称、偏好、红线和否掉的方案,构思交付前写进 `设定.md`;写正文只读两份设计文件与本时刻的写作手法,不重读构思方法论,也不回翻对话。
|
|
26
|
+
**换上下文**:构思读得最多。构思汇报末尾建议作者新开一个对话说「写正文」;作者要在本对话接着写也照做。新对话里两份设计文件已通过构思完成门禁时,直接进入写正文。
|
|
24
27
|
|
|
25
28
|
---
|
|
26
29
|
|
|
27
|
-
> Agent 只查当前端 canonical 目录(Claude `.claude/agents`、OpenCode `.opencode/agents`、Codex `.codex/agents` TOML、Antigravity `.agents/agents
|
|
30
|
+
> Agent 只查当前端 canonical 目录(Claude `.claude/agents`、OpenCode `.opencode/agents`、Codex `.codex/agents` TOML、Antigravity `.agents/agents`),不跨端误判。Claude 用 `subagent_type`,OpenCode 用 `subagent` 的 `agent`,Codex 用 `agent_type`,Antigravity 用 `invoke_subagent` + `TypeName`。主会话自己写正文、去味是常态,不报;作者明确要交给写作助手而能力/文件缺失、unknown agent 或 ZCode 3.3.4 时,由主会话接手并一句白话告诉作者(如「写作助手用不了,由我直接写」),`Fallback: project custom agents unavailable -> solo` 原文只写进汇报最后一行「技术备注:」。
|
|
28
31
|
>
|
|
29
|
-
> Spawn 版本提示(不阻断 spawn):先读取项目根 `.story-deployed` 的 `agents_version`。与本版 `agents_version:
|
|
32
|
+
> Spawn 版本提示(不阻断 spawn):先读取项目根 `.story-deployed` 的 `agents_version`。与本版 `agents_version: 34` 不一致时(标记缺失、字段缺失/非整数、小于或大于 34)**照常按文件存在性检查并 spawn**,同时用一句白话提示作者「写作助手是旧版,运行 /story-setup 后新开对话」,`Notice: agents bundle 版本不匹配(项目 {N},本版 34)` 原文写进技术备注行;大于 34 时额外提示先更新 oh-story-claudecode,不要用本地旧版 setup 降级覆盖。只有 agent 文件缺失、或运行时不暴露 custom agent 时才降级 solo/direct,`Fallback: ... -> solo` 同样只进技术备注行。
|
|
30
33
|
|
|
31
34
|
**文风裁决**:正文写作、改写或审稿前先读 [references/style-resolution.md](references/style-resolution.md),加载本书文风并形成 `style_resolution`;无作者记忆也执行。当前请求、本书文风和 active 偏好按维度覆盖通用 references;同一裁决交给后续执行者。
|
|
32
35
|
|
|
@@ -40,30 +43,24 @@ Phase 2 必须在第一次写入 `设定.md` / `小节大纲.md` 前按顺序完
|
|
|
40
43
|
|
|
41
44
|
---
|
|
42
45
|
|
|
43
|
-
## 格式规范(最高优先级)
|
|
44
|
-
|
|
45
|
-
详细规则见 `references/short-format.md`,写作前必须加载。**主会话与 narrative-writer 子代理使用同一套正文格式**:正文只允许保存在 `正文.md`,正文相邻段落之间只允许一个换行符 `\n`(不得出现空行/`\n\n`),对话引号风格按项目/平台约定统一(默认半角双引号,盐言可用「」),短篇小节标记全文统一(默认 `###1.`/`###2.`)。如果子代理输出与主会话格式不一致,按本格式规范重排后再写入文件。
|
|
46
|
-
|
|
47
|
-
---
|
|
48
|
-
|
|
49
46
|
## 核心方法
|
|
50
47
|
|
|
51
48
|
除了上面的执行规则,构思和写作时遵循:
|
|
52
49
|
|
|
53
|
-
-
|
|
54
|
-
-
|
|
55
|
-
- **只加载必需信息**:写每节前明确目标情绪和要用的技法,答不出就先回读参考
|
|
56
|
-
- **复用作者习惯**:若作者记忆 state 已存在,正文前用 `scripts/author_memory_commit.py query --kind prose_style --kind story_design` 获取相关 active 条目(总输出 ≤2KB),传给实际正文/改写 agent 作为自然倾向,不逐条展示或最大化命中,不牺牲连贯、节奏和字数;硬门禁、当前请求和本篇设定优先。明确长期声明在收尾用 `record` 写入并回传回执,细则见 [references/author-memory.md](references/author-memory.md)。
|
|
50
|
+
- **定方向就换风格**:题材一旦确定,腔调、开篇、钩子、情绪烈度、金句、招式、收尾全部切到该题材包(追妻含时代变体与小三/死人文学分支);冷门题材用公式结构骨架兜底,腔调按 `short-craft.md`
|
|
51
|
+
- **复用作者习惯**:有作者记忆时,正文前用 `scripts/author_memory_commit.py query --workspace {工作区} --book-root {项目目录} --kind prose_style --kind story_design [--genre {题材}] [--workflow 短篇]` 获取 active 条目(≤2KB),传给正文/改写 agent 作为自然倾向,不逐条展示或最大化命中,不牺牲连贯、节奏和字数;硬门禁、当前请求和本篇设定优先。长期声明在收尾用 `record` 写入并回传回执,细则见 [references/author-memory.md](references/author-memory.md)。
|
|
57
52
|
|
|
58
53
|
---
|
|
59
54
|
|
|
60
55
|
## 写作流程
|
|
61
56
|
|
|
62
|
-
### Phase 1
|
|
57
|
+
### Phase 1:确定目标情绪
|
|
58
|
+
|
|
59
|
+
从项目根及上一级往下 3 层找到 `短篇扫榜结论.md`(多份取最新)时先读其「选题匹配」,排第一的方向带着目标情绪当候选问作者;过了复扫日期就提醒可能过期。
|
|
63
60
|
|
|
64
61
|
问用户:**「你想让读者读完什么感觉?有没有想写的题材方向或灵感?」**
|
|
65
62
|
|
|
66
|
-
|
|
63
|
+
用户已说清读者读完的感觉 → 直接进入 Phase 2;只给了题材或梗、没说情绪 → 从下表带一个推荐情绪问一句,作者点头再进。
|
|
67
64
|
|
|
68
65
|
如果用户只有模糊想法 → 帮用户做情绪选择:
|
|
69
66
|
|
|
@@ -80,63 +77,19 @@ Phase 2 必须在第一次写入 `设定.md` / `小节大纲.md` 前按顺序完
|
|
|
80
77
|
|
|
81
78
|
### Phase 2:构思核心框架
|
|
82
79
|
|
|
83
|
-
> 如果用户有参考小说,先用 `/story-short-analyze` 拆解。默认输出存入项目根目录 `拆文库/{书名}/`;如用户指定当前短篇引用目录,则可输出/同步到 `{短篇标题}/对标/{书名}/`。写作时会自动查找并读取这些拆文结果,不需要用户手动复制到 prompt。
|
|
84
|
-
|
|
85
80
|
#### 对标上下文加载
|
|
86
81
|
|
|
87
82
|
存在本篇 `对标/`、项目根 `拆文库/` 或用户提供参考小说时,先完整读取 [references/benchmark-recall.md](references/benchmark-recall.md),执行对标发现、排除本书续写基线、题材匹配与召回。无外部对标时仍按原题材包执行。
|
|
88
83
|
|
|
89
84
|
#### 构思、设计与验收
|
|
90
85
|
|
|
91
|
-
完整步骤见 [references/workflow-design.md](references/workflow-design.md)
|
|
86
|
+
完整步骤见 [references/workflow-design.md](references/workflow-design.md)。按首屏「写前必读」读完后执行;两份设计文件通过其中的 Phase 2 完成门禁,才可进入 Phase 3。
|
|
92
87
|
|
|
93
88
|
---
|
|
94
89
|
|
|
95
90
|
### Phase 3:逐场景写作
|
|
96
91
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
**导入项目续写基线**:`设定.md` 存在「本书续写基线」时先读取,作为已写内容的内部连续性与既有写法约束;它不是对标摘要,不参与主/副对标排序,也不复制到 `对标/`。
|
|
100
|
-
|
|
101
|
-
> 术语说明:Phase 3 按「段」划分叙事结构(开头段/铺垫段/升级段/反转段/结尾段),每段包含若干「小节」(数字编号的 beat)。「场景」指写作时的具体画面。
|
|
102
|
-
|
|
103
|
-
**交付参数先锁定**:用户明确的字数范围优先,逐字取其最小值/最大值与节数;只给单一目标时用目标的 95%-105%;都未给时用 8000-20000 字和大纲节数。后文的默认字数不得覆盖用户范围。
|
|
104
|
-
|
|
105
|
-
**写前参数验收**:给 Phase 4 的交付命令加 `--check-contract` 先运行。参数通过不算交付;冲突时停在写前,报告字数范围与节数,请用户选择调整项,不代改用户约束。
|
|
106
|
-
|
|
107
|
-
**写前准备**(每个场景写前执行 2 步,是核心方法的落地:确认情绪目标 → 召回技法模块):
|
|
108
|
-
- **步骤 1:记忆+召回**:① 本场景目标情绪词?② 借鉴哪个参考文件的哪个技法?③ 具体用在哪个段落?答不出 → 先回读参考再动笔。如有 `对标/` 或 `拆文库/` 结构化产出,按 [references/benchmark-recall.md](references/benchmark-recall.md) 的对标上下文加载规则检索与当前场景最相关的结构/情绪/反转/写作手法模块作为参考,并写入“拆文召回摘要”
|
|
109
|
-
- **多对标书时**:参 `references/cross-book-recall.md`,副对标/参考对标按阶段预算进入"副对标召回摘要";正文只传摘要,不传副书文风或原文
|
|
110
|
-
- **步骤 2:指令确认**:用一句话概括本场景写作意图(情绪+技法+适配段落),并确认本场景是否有任务卡点、它卡出哪种情绪变化或新证据;没有就不强补。确认后开始写作
|
|
111
|
-
|
|
112
|
-
**写作指令:按三维度揉进逐场景写作,不照搬大纲腔。**
|
|
113
|
-
|
|
114
|
-
- 每个场景让读者和主角一起经历;发生、感知、反应揉在同一段连续正文里,不按维度分三段。
|
|
115
|
-
- 段落按戏剧单元/画面自然断开:新动作、新线索、新对话、视线切换另起;完整推理、氛围或情绪链可稍长。
|
|
116
|
-
- 高潮/打脸/反转压短,沉淀/推理/收束可长一点;爽点 beat 写密,过场 beat 写疏,避免通篇同长度。
|
|
117
|
-
- 主语节奏:段首或主语重置时可点名;同一动作链内优先代词/省略;关键转折再点名。
|
|
118
|
-
- 标点跟语气走:质问用问号,爆发处少量感叹;犹豫、未尽、打断用动作停顿、短句或换行处理,正文不使用 `……` / `——` / `—` / `--`。
|
|
119
|
-
- 短篇默认第一人称在场:受虐段可直白宣泄,反击段可冷静审判;只删中立无情绪的作者讲解,不删带主角偏色的审判/预告。
|
|
120
|
-
- 情绪可以直写,按 `references/short-craft.md` 第 2 节检查上下文支撑,不逐句补动作或物件。
|
|
121
|
-
- 任务卡点也可以承接情绪,但必须直接加重羞辱、误会、背叛、证据、反击或心死节点;删掉后情绪/证据/关系无损就压缩。
|
|
122
|
-
- 情绪宁烈不温,冲突前置、爽点具体、台词带刺;心死/余韵等以克制为爽感的桥段按题材包收敛。
|
|
123
|
-
|
|
124
|
-
#### Agent 调用:narrative-writer
|
|
125
|
-
|
|
126
|
-
正文写作阶段默认由主会话按 2-3 节/批分批写正文;主会话输出是短篇正文的标准形态,不要求单次 agent spawn 完成 8000+ 字全文。
|
|
127
|
-
|
|
128
|
-
- 每批写完后更新“已写小节摘要”(3-5 条:已揭示信息、情绪位置、未回收伏笔、下一批衔接句)。
|
|
129
|
-
- 下一批先读该摘要和 `正文.md` 尾部 300-500 字再续写。
|
|
130
|
-
- 只有用户明确要求子代理、主会话上下文不足,或需要隔离试写时,才检查 narrative-writer agent(查找顺序见顶部)。
|
|
131
|
-
- 如可用,spawn `Agent(subagent_type: "narrative-writer", prompt: ...)`,只传项目目录、输出文件、情绪目标、题材风格包、小节大纲、角色、主/副对标召回摘要、本书文风全文路径与 style_resolution、作者偏好 query 中的文风/故事设计项、格式硬约束和写作硬约束,并传入检查分工:本批只做内容覆盖与格式自检,完整语义去味由 Phase 4 负责,最终文件扫描由主会话负责。
|
|
132
|
-
- 不把本 skill 整段规则塞进 prompt;细节以已加载的 `short-format.md`、题材包和 `short-craft.md` 为准。
|
|
133
|
-
- 无论谁写,写入 `正文.md` 前都按同一格式规范重排,保证主会话与子代理输出一致。
|
|
134
|
-
|
|
135
|
-
⚠️ **硬约束只作用于整篇交付范围,不设统一逐节最低字数或行数**。
|
|
136
|
-
写完每批后按 `short-format.md`「字数统计」检查整篇累计值与各节分布。某节明显短于相邻节时,先核对批准情节点、可见动作和后果是否已经完整;完整就保留,缺失才补回原计划内容。不得为拉齐节长新增冲突、对话、回忆、配角反应或独立事件。整篇以锁定的用户交付范围为准;未给范围时才使用 8000-20000 字默认值。
|
|
137
|
-
**⚠️ 未进入锁定范围 = 正文未完成。禁止越界后结束;不足只扩已有情节点,超出只压重复解释,不借 repair 新增或删除关键剧情。**
|
|
138
|
-
|
|
139
|
-
**节数守恒**:正文节数必须等于小节大纲规划节数。不得合并多节为一节。如果写作中发现某节不需要独立存在,应回到大纲阶段调整,而非在写作时偷减。
|
|
92
|
+
进入正文写作前,完整读取 [references/workflow-draft.md](references/workflow-draft.md),执行交付参数锁定、写前验收与逐场景写作;只做构思或精修时不加载。
|
|
140
93
|
|
|
141
94
|
**小节完整性流程**:
|
|
142
95
|
1. **写作时**:每节围绕一个主问题推进;让风险、信息、关系、资源、决定、行动或读者理解至少发生一项可见变化。相关情节点可以由同一动作链或对话同时兑现,不为拆成多个“子事件”重复铺陈。
|
|
@@ -144,85 +97,6 @@ Phase 2 必须在第一次写入 `设定.md` / `小节大纲.md` 前按顺序完
|
|
|
144
97
|
3. **发现缺口时**:只补回原计划中漏掉的动作、证据、选择或后果;若本节已经完成职责,即使很短也不加任务卡点、对话、回忆或环境来凑长度。
|
|
145
98
|
4. **发现冗余时**:删除不改变风险、信息、关系、资源、决定、行动或可信度的阻碍、复述与旁人反应;不把“有冲突”本身当成保留理由。
|
|
146
99
|
|
|
147
|
-
每个小节按「场景信息揉进」写作(详见 short-craft.md 第 10 节):发生是主干,感知和反应只在提供新信息时加入;用到的维度揉进同一镜头。揉进不等于按维度分段——禁止"先写发生再补感知再补反应"的堆叠写法,也不要求三项齐全;同样不等于一段到底,按新动作、新物件、新信息或新对话断段。完整推理、氛围、手艺、等待或情绪链可以连续展开,不按固定字数切断。
|
|
148
|
-
|
|
149
|
-
按以下结构分段写:
|
|
150
|
-
|
|
151
|
-
#### 第一段:开头(前 300-500 字)
|
|
152
|
-
|
|
153
|
-
**目标**:3 句话内抓住读者。**必须包含一个开篇钩子**(从 hooks-chapter.md 选择类型)。
|
|
154
|
-
|
|
155
|
-
**先写导语**:正文开头前先按 `references/submission-craft.md`「导语」写一条 150-220 字导语——四维骨架(起因+核心冲突+人设底色+情绪反转)配黄金三角(具体物件+信息差+留白钩子),一句一段(黑岩/盐言导语形态;番茄导语按 short-format.md 短段叙织)——完整句各自独立成段,不是拆成三字碎句。它就是正文开头的头几段,写好顺势往下接、不重写,所以首句同样守下面的开头零环境和前 100 字事件密度≥3(首句是事件/动作/信息炸弹,不是背景或弧线概括),剧透钩子放导语后半。
|
|
156
|
-
|
|
157
|
-
**技法指令**:前 100 字事件密度 ≥ 3,不做背景铺垫,直接上事件链。
|
|
158
|
-
|
|
159
|
-
**开头零环境规则**(默认适用;悬疑、惊悚、灾难、强氛围题材可例外):
|
|
160
|
-
- 前 3 句禁止出现无事件承载的环境描写(灯光、天气、气味、温度、装修)
|
|
161
|
-
- 前 3 句必须是:事件 / 对话 / 动作 / 信息炸弹,四种之一
|
|
162
|
-
- 任务卡点可以作为动作/事件钩子,但必须立刻带出赌注或矛盾,不能先写流程再解释意义
|
|
163
|
-
- 环境细节只能揉进角色的动作和感知中自然带出,不能独立成句;例外题材中,环境也必须携带威胁、异常或信息差
|
|
164
|
-
- 检查方法:标出前 3 句的主语,如果主语是环境物件(灯光/走廊/房间/天气),重写
|
|
165
|
-
|
|
166
|
-
开头技巧:
|
|
167
|
-
|
|
168
|
-
| 技巧 | 说明 | 示例 |
|
|
169
|
-
|------|------|------|
|
|
170
|
-
| 冲突前置 | 第一句就是矛盾 | 「离婚协议放在桌上,他已经签了。」 |
|
|
171
|
-
| 信息差钩 | 给读者一个角色不知道的信息 | 「她不知道,对面那个男人已经在计划第三次了。」 |
|
|
172
|
-
| 反常行为 | 用一个不合常理的行为引起好奇 | 「她把订婚戒指冲进了马桶。」 |
|
|
173
|
-
| 重生反常 | 重生后做前世绝不会做的事 | 「沈栀心念成灰,支着一口气找到了媒婆:郭家的那个天阉,我来嫁。」 |
|
|
174
|
-
| 超自然身份 | 开篇揭示非人类身份 | 「我是世上仅存的红衣厉鬼。我不知自己是怎么死的。」 |
|
|
175
|
-
| 灵魂旁观 | 以灵魂视角描述死亡现场 | 「我的尸体躺在透明棺材里,三个哥哥在外面笑着说:她演得真像。」 |
|
|
176
|
-
| 悬念句 | 抛出一个需要解释的事实 | 「我死后的第三天,老公发了一条朋友圈。」 |
|
|
177
|
-
| 替嫁被弃 | 被迫接受不公正的命运 | 「三个月后,我代替皇后的嫡亲公主坐上了去漠北和亲的轿撵。」 |
|
|
178
|
-
| 代入式提问 | 直接让读者产生共鸣 | 「你有没有在深夜接到过一个不该接的电话?」 |
|
|
179
|
-
|
|
180
|
-
#### 第二段:铺垫(占全文 30-40%)
|
|
181
|
-
|
|
182
|
-
- 用物件/数字/习惯建立羁绊(详见 emotional-methods.md「羁绊铺设」)
|
|
183
|
-
- 埋入至少 3 个反转线索,分散在不同小节
|
|
184
|
-
- 在会改变读者预期、行动方向或关系判断的位置埋钩;连续多个小节只有提问没有局部兑现时再调整,不按固定节数填格(类型从 hooks-paragraph.md 选择)
|
|
185
|
-
- 小节用数字分割,每小节推进一个情节点
|
|
186
|
-
- 情绪强度逐节递增,不允许连续 2 节无情绪变化
|
|
187
|
-
- **贯穿道具第 1 次出现必须在此段完成**
|
|
188
|
-
- **反派作恶按阶梯递增**(小恶→中恶,见 villain-and-reveal.md)
|
|
189
|
-
|
|
190
|
-
#### 第三段:升级(占全文 20-30%)
|
|
191
|
-
|
|
192
|
-
- 冲突必须比上一段升级(强度/范围/代价至少一个维度上升)
|
|
193
|
-
- 插入倒计时钩子或代价钩子制造紧迫感
|
|
194
|
-
- 随风险和选择升级提高牵引强度;用新证据、代价、误判修正或局部反击推动,不按固定节数另塞钩子(按题材见 genre-writing-formulas.md)
|
|
195
|
-
- 埋入误导信息,让读者猜错反转方向
|
|
196
|
-
- **数字/金额递增作为叙事工具**(具体数字替代模糊描述,见各 genre-styles 招式库「数字承重」)
|
|
197
|
-
- **场景引擎有变化**:行动、对话、证据、任务、等待、空间压力与关系选择按因果需要切换;不为动静交替补无功能小动作
|
|
198
|
-
|
|
199
|
-
#### 第四段:反转(占全文 10-15%)
|
|
200
|
-
|
|
201
|
-
- 反转在一节内完成揭示,不拖延
|
|
202
|
-
- 揭示后确保前面铺垫的线索可被回溯(读者能找到「原来如此」的伏笔)
|
|
203
|
-
- 反转节的情绪冲击强度必须 > 前面所有节的最高值
|
|
204
|
-
- **用证物/证人/偷听/剥洋葱揭露真相**(4 种方式见 villain-and-reveal.md)
|
|
205
|
-
- **贯穿道具第 2 次出现必须在此段完成**(意义被颠覆)
|
|
206
|
-
|
|
207
|
-
#### 第五段:结尾(占全文 5-10%)
|
|
208
|
-
|
|
209
|
-
- 章末必须有钩子(悬念或余韵)
|
|
210
|
-
- 用安静细节收尾(一个物件、一个动作、一句短话),不写大段抒情
|
|
211
|
-
- 结尾方式见下表,参考 emotional-methods.md「余韵钝痛」
|
|
212
|
-
- **贯穿道具第 3 次出现(回扣暴击)**
|
|
213
|
-
|
|
214
|
-
结尾类型:
|
|
215
|
-
|
|
216
|
-
| 类型 | 效果 | 适合情绪 |
|
|
217
|
-
|------|------|----------|
|
|
218
|
-
| 余韵式 | 不说完,让读者自己想 | 意难平 |
|
|
219
|
-
| 呼应式 | 首尾呼应,形成闭环 | 治愈、成长 |
|
|
220
|
-
| 开放式 | 留下悬念 | 细思极恐 |
|
|
221
|
-
| 反转再反转 | 结尾再来一个小反转 | 震惊 |
|
|
222
|
-
| 金句式 | 一句话点题 | 共鸣 |
|
|
223
|
-
|
|
224
|
-
---
|
|
225
|
-
|
|
226
100
|
### Phase 3 完成门槛(进入 Phase 4 前必须通过)
|
|
227
101
|
|
|
228
102
|
- [ ] 总字数进入锁定的用户范围;未指定时进入 8000-20000 默认范围
|
|
@@ -239,27 +113,7 @@ Phase 2 必须在第一次写入 `设定.md` / `小节大纲.md` 前按顺序完
|
|
|
239
113
|
|
|
240
114
|
### Phase 4:精修打磨
|
|
241
115
|
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
加载 `references/writing-workflow.md` 中的精修清单完成检查。
|
|
245
|
-
重点:开头钩子、情绪曲线、反转铺垫、每句话价值、格式规范、AI 腔。文件模式依次运行 `node scripts/check-ai-patterns.js --check --fail-on=blocking 正文.md`、`node scripts/check-outline-copy.js --outline 小节大纲.md 正文.md`、`node scripts/normalize-punctuation.js 正文.md`、`node scripts/check-degeneration.js --check 正文.md`。blocking 或确属细纲照搬先改正文再复扫;其他提示仅作读感复核,功能性写法可保留。
|
|
246
|
-
|
|
247
|
-
上述修改全部落盘后,运行 `node scripts/check-delivery-contract.js --json --min-chars {MIN} --max-chars {MAX} --sections {N} {短篇目录}`。exit 0 才可交付;exit 1 只按 `repair_scope` 最小修复并重跑受影响的质量检查与本命令,最多 2 轮;仍失败则报告检查 ID 并停止。exit 2、脚本缺失或不可执行时不得声称交付契约通过。本 verifier 只验用户字数、节数与排版形状,不替代正文质量判断。
|
|
248
|
-
|
|
249
|
-
#### Agent 调用:narrative-writer(去AI味)+ consistency-checker
|
|
250
|
-
|
|
251
|
-
精修阶段,如果项目已部署对应 agent,可 spawn:
|
|
252
|
-
- `Agent(subagent_type: "narrative-writer", prompt: "项目目录:{dir}\n任务描述:去AI味+格式检查\n检查分工:你负责本次语义去味及原定自检;最终文件扫描由主会话执行,不在子代理内重复\n检查范围:{正文文件}\nstyle_resolution:{与写作一致的本次文风裁决,含全文路径}\n作者偏好:{query 命中的 prose_style/story_design 项}\n删除优先:每条 AI 味项先判能否删除——删后不丢伏笔/钩子/角色/情节/必要信息的直接删,会丢才润色(删除受比例上限与字数下限约束,跌破下限改降AI重写)\n必须检查:先否定再肯定的翻转句式,发现后直接改成后项或动作细节;检查像/好像/仿佛/如同等比喻是否成片堆叠,确属堆叠时只留最有功能的少数比喻,其余回到具体画面;检查是否连续使用头皮发紧/眼皮一跳/心口一沉/胃里翻涌等精致戏剧反应,能写普通动作/普通感觉就写普通动作/普通感觉;已有手机/聊天记录/公告/账单/病历/证据截图等信息,保留为角色看到或处理的场内载体,不改成叙述者解释;任务卡点只在角色本来有要办的事且能加重情绪/证据/关系/反转时使用,不为自然感补流程")` — 执行去AI味(7 Gate)和格式合规检查
|
|
253
|
-
- `Agent(subagent_type: "consistency-checker", prompt: "项目目录:{dir}\n检查范围:{正文文件}\n检查类型:事实冲突+伏笔断线+角色属性不一致")` — 执行一致性检查
|
|
254
|
-
|
|
255
|
-
如 agent 不可用,由主线程直接执行。
|
|
256
|
-
|
|
257
|
-
**正文洁净规则**:
|
|
258
|
-
- 自检(字数统计、禁用词扫描、格式检查)是过程动作,结果直接在对话里说明,不落盘成文件
|
|
259
|
-
- **绝对不能**把自检记录附加到正文文件末尾
|
|
260
|
-
- 正文中不得出现任何 `<!-- 自检 -->` 或类似的检查标记注释
|
|
261
|
-
|
|
262
|
-
不通过 → 回退补足。
|
|
116
|
+
精修或质量自检前,完整读取 [references/workflow-revision.md](references/workflow-revision.md),按其职责分工去味、查一致性、做最终扫描与交付验收;只做构思时不加载。
|
|
263
117
|
|
|
264
118
|
---
|
|
265
119
|
|
|
@@ -268,19 +122,13 @@ Phase 3 写手负责内容覆盖与格式自检,不提前执行完整语义去
|
|
|
268
122
|
**流水线:** 短篇
|
|
269
123
|
**位置:** 写作(第 3/3 步)
|
|
270
124
|
|
|
271
|
-
|
|
272
|
-
|---|---|---|
|
|
273
|
-
| 有参考小说想对标 | story-short-analyze | `/story-short-analyze` → 输出存入 `拆文库/{书名}/` |
|
|
274
|
-
| 写完,去 AI 味 | story-deslop | `/story-deslop` |
|
|
275
|
-
| 想自检 | 本 skill 质量自检 | 用 Phase 4 自检流程 + `references/short-prose-quality.md` 逐项核对 |
|
|
276
|
-
| 需要市场方向 | story-short-scan | `/story-short-scan` |
|
|
277
|
-
| 设定太大,适合长篇 | story-long-write | `/story-long-write` |
|
|
125
|
+
有参考小说想对标 → `/story-short-analyze`(存入 `拆文库/{书名}/`);写完去 AI 味 → `/story-deslop`;想自检 → Phase 4 流程 + `references/short-prose-quality.md`;要市场方向 → `/story-short-scan`;设定太大适合长篇 → `/story-long-write`。
|
|
278
126
|
|
|
279
127
|
---
|
|
280
128
|
|
|
281
129
|
## 参考资料
|
|
282
130
|
|
|
283
|
-
|
|
131
|
+
阶段必读项按首屏「写前必读」执行;其他资料按 [参考索引](references/reference-index.md) 的加载条件选用。
|
|
284
132
|
|
|
285
133
|
## 语言
|
|
286
134
|
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# agent-calls.md:短篇派写手的调用方式
|
|
2
|
+
|
|
3
|
+
只在要 spawn narrative-writer 时读;主会话自己写正文、自己去味时不读。何时派由 workflow-draft.md / workflow-revision.md 决定,这里只放 prompt 与必须附带的内容。Antigravity 用 `invoke_subagent` + 同名 `TypeName`。
|
|
4
|
+
|
|
5
|
+
## 写正文
|
|
6
|
+
|
|
7
|
+
spawn `Agent(subagent_type: "narrative-writer", prompt: ...)`,只传项目目录、输出文件、目标情绪、题材风格包、小节大纲、角色、主/副对标召回摘要、本书文风全文路径与 style_resolution、作者偏好 query 中的文风/故事设计项、格式硬约束和写作硬约束,并传入检查分工:本批只做内容覆盖与格式自检,完整语义去味由 Phase 4 负责,最终文件扫描由主会话负责。
|
|
8
|
+
|
|
9
|
+
不把本 skill 整段规则塞进 prompt;细节以 `short-format.md`、题材包、`short-craft.md` 与 `scene-craft.md` 为准。收回后按 workflow-draft.md 的格式规范重排再写入 `正文.md`。
|
|
10
|
+
|
|
11
|
+
## 精修去味
|
|
12
|
+
|
|
13
|
+
spawn `Agent(subagent_type: "narrative-writer", prompt: "项目目录:{dir}\n任务描述:去AI味+格式检查\n检查分工:你负责本次语义去味及原定自检;最终文件扫描由主会话执行,不在子代理内重复\n检查范围:{正文文件}\nstyle_resolution:{与写作一致的本次文风裁决,含全文路径}\n作者偏好:{query 命中的 prose_style/story_design 项}\n篇幅:短篇\n卖点保留:第一人称审判句、火葬场预告、心死式章尾留,只删中立作者讲解与空洞升华\nAI味等级:{轻度/中度/重度;未分级按轻度}\n删除优先:每条 AI 味项先判能否删除——删后不丢伏笔/钩子/角色/情节/必要信息的直接删,会丢才润色(删除受比例上限与本次字数范围下沿约束,跌破改降AI重写)\n必须检查:检查是否连续使用头皮发紧/眼皮一跳/心口一沉/胃里翻涌等精致戏剧反应,能写普通动作/普通感觉就写普通动作/普通感觉;已有手机/聊天记录/公告/账单/病历/证据截图等信息,保留为角色看到或处理的场内载体,不改成叙述者解释;任务卡点只在角色本来有要办的事且能加重情绪/证据/关系/反转时使用,不为自然感补流程")`
|