@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
|
@@ -0,0 +1,611 @@
|
|
|
1
|
+
# Stage 4–6:反转与写作手法、人物与首尾、综合评估
|
|
2
|
+
|
|
3
|
+
Stage 4–6 时刻读本文件。方法在前,输出模板在后;每个 Stage 写完按 [quality-checklist.md](quality-checklist.md) 对应小节自检。
|
|
4
|
+
|
|
5
|
+
## 方法
|
|
6
|
+
|
|
7
|
+
### Stage 4:反转设计 + 写作手法
|
|
8
|
+
|
|
9
|
+
#### A. 反转分析
|
|
10
|
+
|
|
11
|
+
**前置反转检查**:是否有在故事时间线之前就已存在的谎言/误判。
|
|
12
|
+
|
|
13
|
+
> **无反转型/报应型**:有些故事(复仇爽文、重生文)没有传统反转,爽感来自看反派因果报应逐步兑现。遇到此类故事,跳过反转机制拆解,改为分析"报应设计"——反派如何一步步走向毁灭,每一步的铺垫和满足感。使用报应设计表:每条恶行→对应的报应→爽感来源。理想情况下每条报应与恶行形成精确对应("以彼之道还施彼身")。
|
|
14
|
+
>
|
|
15
|
+
> **主动报应 vs 反派自毁**:报应设计分两种——①主角设局让反派自爆(如香水复仇、比赛设局);②主角不复仇,反派内部反目自己作死。第二种更真实但爽感较低,分析时标注类型。
|
|
16
|
+
|
|
17
|
+
**反转机制拆解**(存在反转时执行):
|
|
18
|
+
- 铺垫线索(≥3条,含原文位置)
|
|
19
|
+
- 误导方向(文本把读者往哪引)
|
|
20
|
+
- 真相揭示(怎么揭开的)
|
|
21
|
+
- 合理性(回看得不失真)
|
|
22
|
+
- 时机(全文百分之几位置)
|
|
23
|
+
- 铺放比(铺垫字数 : 释放字数)
|
|
24
|
+
|
|
25
|
+
**反转链**:部分故事(舆论反转文、套娃反转文)包含多个连续反转,前一个反转的结论被后一个反转推翻。分析时需按顺序列出每个反转:
|
|
26
|
+
- 每个反转:类型 + 触发事件 + 读者认知变化
|
|
27
|
+
- 反转之间的因果关系(前一个反转如何为后一个反转铺垫)
|
|
28
|
+
- 反转链的整体效果(递进/叠加/出其不意)
|
|
29
|
+
|
|
30
|
+
**套娃反转的质量检验**:套娃反转好不好,看反转之间有没有因果关系——反转A必须解释或加深反转B,避免随手堆砌。检验方法:删掉任意一层反转,其他反转还成立吗?如果成立,说明反转之间没有因果关联,只是堆砌。
|
|
31
|
+
|
|
32
|
+
**伏笔式反转**:部分反转依托开头早就给过的信息,读者知道真相后回头看,含义完全变了。这就是伏笔的经典用法——不铺新线索,只是让读者自己"恍然大悟"。分析时标注:伏笔原文位置、初读时读者的理解、知道真相后的新理解。
|
|
33
|
+
|
|
34
|
+
#### B. 写作手法分析
|
|
35
|
+
|
|
36
|
+
逐项分析以下维度的使用情况:
|
|
37
|
+
|
|
38
|
+
| 维度 | 分析内容 |
|
|
39
|
+
|------|----------|
|
|
40
|
+
| POV策略 | 人称选择的效果、叙事距离、可靠性 |
|
|
41
|
+
| 对话手法 | 密度比、潜台词率、模式识别 |
|
|
42
|
+
| 时间操控 | 时间跳跃、场景压缩、平行剪辑 |
|
|
43
|
+
| 信息控制 | 读者知道 vs 角色知道、隐瞒/揭示时机 |
|
|
44
|
+
| 感官锚定 | 五感分布、主导感官、感官切换 |
|
|
45
|
+
| 句式节奏 | 长短句交替、节奏加速/减速、关键句位置 |
|
|
46
|
+
| 对比设计 | 角色对比、前后对比、环境对比 |
|
|
47
|
+
| 意象/物件 | 重复出现的物件、意象、象征 |
|
|
48
|
+
| 留白手法 | 不写之写、省略的艺术、暗示 |
|
|
49
|
+
| 专业技能武器化 | 主角用职业特长作为复仇/对抗工具(调香师用香水、AI工程师用AI、律师用法律)。职业技能越专业,手段越可信越有新意 |
|
|
50
|
+
| 倒计时框架 | 用明确时限(10天/5小时/1分钟)制造紧迫感。每一段倒计时都是情感催化剂,读者和主角一起倒数 |
|
|
51
|
+
| 双视角叙事 | 同一事件从两个角色视角分别体验。先跟A感受痛苦,再跟B感受悔恨。读者情感判断被迫修正,无法简单站队 |
|
|
52
|
+
| 弹幕/评论互动 | 故事内的"读者评论"成为角色——提供任务、吐槽、剧情预告。弹幕本身可以有变化弧线(从自信到崩溃) |
|
|
53
|
+
| 反差萌 | 角色想装一种人却总是暴露本性,每次"装失败"都让对方更喜欢。注意识别重复升级的模式 |
|
|
54
|
+
|
|
55
|
+
每项手法标注:使用位置、效果评价、可复用条件。
|
|
56
|
+
|
|
57
|
+
### Stage 5:人物分析 + 开头结尾
|
|
58
|
+
|
|
59
|
+
#### A. 人物提取
|
|
60
|
+
|
|
61
|
+
短篇人物精简(通常 3-5 人),但每个人物承担多重功能。
|
|
62
|
+
|
|
63
|
+
**人物分类**(二维体系):
|
|
64
|
+
|
|
65
|
+
维度一 — 叙事角色(这人在故事里的位置):
|
|
66
|
+
- **主人公**:故事的第一视角人物或核心焦点人物
|
|
67
|
+
- **重要配角**:戏份重、有独立弧线的人物
|
|
68
|
+
- **功能人物**:承担特定叙事功能(催化剂/对照组等)
|
|
69
|
+
|
|
70
|
+
维度二 — 行动角色(这人在故事里怎么动):
|
|
71
|
+
- **主动型**:主动推动剧情发展、做出关键选择
|
|
72
|
+
- **被动型**:被剧情推着走、被动承受
|
|
73
|
+
- **转变型**:从被动转为主动(或反过来)
|
|
74
|
+
|
|
75
|
+
> 同一人物可以同时是"主人公"+"被动型"(如前期的乔青),也可以从"被动型"转变为"主动型"。两个维度独立标注。
|
|
76
|
+
|
|
77
|
+
**双主人公结构**:部分故事(BE虐文、双向视角文)存在两个主人公,各自驱动故事的不同阶段。识别标准:①两人都有完整的情感弧线(不是扁平的)②故事分为明显的"A段"和"B段",各自以不同角色为中心③读者对两人都有强烈的共情。标注时两人都标为"主人公",并注明各自主驱动的章节范围。
|
|
78
|
+
|
|
79
|
+
| 字段 | 说明 |
|
|
80
|
+
|------|------|
|
|
81
|
+
| 姓名 | 全名 |
|
|
82
|
+
| 分类 | 叙事角色{主人公/重要配角/功能人物} + 行动角色{主动型/被动型/转变型} |
|
|
83
|
+
| 人物性格 | 从行为归纳,不从标签推导 |
|
|
84
|
+
| 内在矛盾 | 核心心理冲突(不是外部遭遇) |
|
|
85
|
+
| 关键台词 | 最能代表该角色的 1-2 句话 |
|
|
86
|
+
| 弧线 | 始→转→终(标注触发事件和位置)。无明显弧线标注"扁平" |
|
|
87
|
+
| 功能标签 | 在故事中承担什么叙事作用 |
|
|
88
|
+
|
|
89
|
+
**人物功能标签**(7 种):
|
|
90
|
+
|
|
91
|
+
| 标签 | 定义 | 示例 |
|
|
92
|
+
|------|------|------|
|
|
93
|
+
| 情绪承载者 | 承载读者共情的主要载体 | 第一人称主角 |
|
|
94
|
+
| 压迫源 | 制造负面情绪的角色 | 冷漠/控制的男主 |
|
|
95
|
+
| 反转触发器 | 触发关键反转的角色 | 绑架事件中的第三方 |
|
|
96
|
+
| 道德锚点 | 代表正常价值观的角色 | 关心/担忧主角的长辈 |
|
|
97
|
+
| 对照组 | 与主角形成对比的角色 | 温和的配角 vs 冷酷的主角 |
|
|
98
|
+
| 催化剂 | 推动剧情但不直接参与核心冲突 | 连接/温暖型角色 |
|
|
99
|
+
| 自毁型 | 自身行为导致自我毁灭的角色 | 重男轻女的母亲、偏执的家属 |
|
|
100
|
+
|
|
101
|
+
一个人物可以有多个标签。
|
|
102
|
+
|
|
103
|
+
**有反差人物**(计入 `character_archetypes`):给人物填三层标签——身份(外界看到的身份)、表现(他展现给人的行为)、内核(真实内心);至少一层与另两层相反,且原文有一处行为对照为证(如表面逆来顺受、暗中录音收证据),算一个。只有标签没有行为对照、或三层一致的不算。要细拆反差手法时才按标题查 analysis-character-design.md「三层标签反差人设法」一节,数人数不必读。
|
|
104
|
+
|
|
105
|
+
#### A2. 人物关系
|
|
106
|
+
|
|
107
|
+
从情节节点中提取人物间的关系和演变:
|
|
108
|
+
|
|
109
|
+
| 字段 | 说明 |
|
|
110
|
+
|------|------|
|
|
111
|
+
| 关系对 | A ↔ B(全名) |
|
|
112
|
+
| 关系本质 | 一句话概括关系核心(如:单向依附→对等拒绝) |
|
|
113
|
+
| 演变轨迹 | 节N:状态A → 节M:状态B,标注触发事件 |
|
|
114
|
+
| 情绪贡献 | 这段关系对情感线的贡献 |
|
|
115
|
+
|
|
116
|
+
提取策略:
|
|
117
|
+
- 只提取有直接互动或明确情感描述的人物对
|
|
118
|
+
- 同一对人物保留最终状态,历史变化写入演变轨迹
|
|
119
|
+
- 关注关系转折的精确位置和触发原因
|
|
120
|
+
|
|
121
|
+
#### B–C. 开头与结尾
|
|
122
|
+
|
|
123
|
+
按下方输出模板「B. 开头分析」「C. 结尾分析」逐项分析;两处情绪强度都用 1-10 绝对量表(只看强弱),不用情感曲线的 -9~+9。
|
|
124
|
+
|
|
125
|
+
#### D. 首尾呼应
|
|
126
|
+
|
|
127
|
+
对比开头和结尾的元素呼应,表见输出模板「D. 首尾呼应分析」。
|
|
128
|
+
|
|
129
|
+
**重读发现**:部分故事的开头包含特殊的伏笔——开头的某句话在初读时是一种含义,读完真相后回头再看含义完全变了。分析时标注:哪些开头语句有这种效果?真相揭示后含义如何变化?
|
|
130
|
+
|
|
131
|
+
#### E. 钩子回收检查
|
|
132
|
+
|
|
133
|
+
列出全文埋设的所有钩子及其回收状态(表见输出模板「E. 钩子回收检查」),未回收的钩子标注为「留白」或「遗漏」。
|
|
134
|
+
|
|
135
|
+
### Stage 6:综合评估报告
|
|
136
|
+
|
|
137
|
+
综合所有阶段数据,输出评估报告:
|
|
138
|
+
- 故事核评价;五维评分(开头吸引力、情感拉扯力、反转设计、节奏控制、结尾余韵);爆点性 + 话题性;共鸣层次;可复用结构(至少 3 条,含适用场景);同类型写作动作。模板见下方输出模板「Stage 6 综合评估」。
|
|
139
|
+
|
|
140
|
+
> **甜宠/喜剧类替代维度**:当故事类型为甜宠/喜剧/反差萌时,"反转设计"维度天然低分(此类故事通常无反转),可替换为"反差萌浓度","情感拉扯力"替换为"甜度曲线"。替代维度:开头吸引力、甜度曲线、反差萌浓度、节奏控制、结尾余韵
|
|
141
|
+
|
|
142
|
+
**投稿层拆解**(拆 Stage 5 开头 / Stage 6 可复用时顺带记录进 拆文报告.md,非阻断;story-short-write 定平台基调时可作初判参考):
|
|
143
|
+
- **平台基调**:判定源文更贴哪一路——知乎盐选(第一人称剥洋葱、细思极恐、章末颠覆认知细节)/ 小程序(开局即地狱、当众打脸、章末卡脖子断点)/ 番茄短篇(顺滑无毒点、金手指直白、大满贯收尾)。
|
|
144
|
+
- **导语写法**:源文开头前 150-220 字(多数就是正文第一段)怎么钩人——四维骨架(起因+核心冲突+人设底色+情绪反转)、黄金三角(具体物件+信息差+留白钩子)各落在哪句。
|
|
145
|
+
- **付费点/最强断点**:源文把最强悬念断点(读者最想往下翻的地方)卡在第几节章末;付费点前后每章剧情点密度是否递增。
|
|
146
|
+
|
|
147
|
+
## 写作手法分析
|
|
148
|
+
|
|
149
|
+
### POV 策略
|
|
150
|
+
|
|
151
|
+
| POV 类型 | 效果 | 适用情绪 |
|
|
152
|
+
|----------|------|----------|
|
|
153
|
+
| 第一人称 | 亲密感、代入感强、可操控信息 | 虐恋、自省、内心戏 |
|
|
154
|
+
| 第三人称限制 | 兼顾代入和观察距离 | 通用 |
|
|
155
|
+
| 第三人称全知 | 上帝视角、多线并进 | 群像、悬疑 |
|
|
156
|
+
| 第二人称 | 极度沉浸 | 实验性、心理恐怖 |
|
|
157
|
+
| 非人视角 | 新奇感、陌生化 | 系统/鬼/动物视角 |
|
|
158
|
+
|
|
159
|
+
分析要点:
|
|
160
|
+
- 选择这个 POV 的好处和代价
|
|
161
|
+
- 有没有 POV 内的信息操控(如不可靠叙述者)
|
|
162
|
+
- POV 切换(如有)的时机和效果
|
|
163
|
+
- **代理人问题**:当POV角色无法直接推动剧情时(如灵魂旁观、昏迷旁观),需依赖"活人代理人"来执行行动。代理人的出场时机和行动力直接影响剧情可信度
|
|
164
|
+
|
|
165
|
+
### 对话手法
|
|
166
|
+
|
|
167
|
+
| 指标 | 计算方式 | 说明 |
|
|
168
|
+
|------|----------|------|
|
|
169
|
+
| 对话占比 | 对话字数 / 全文字数 | 描述该文本,并与同题材、同平台样本对照;不作通用合格线 |
|
|
170
|
+
| 潜台词率 | 含潜台词对话条数 / 总对话条数 | 描述人物回避与信息控制;直说在告知、求救、立规矩等场景也可成立,不把越高当越好 |
|
|
171
|
+
| 审判式对话 | 主角提问→对方自曝的数量 | 记录提问是否迫使选择、暴露矛盾或改变关系,不设最低处数 |
|
|
172
|
+
| 信息差对话 | 读者知道但角色不知道的对话 | 虐文/反转文核心 |
|
|
173
|
+
|
|
174
|
+
**对话模式识别**:
|
|
175
|
+
- 审判式:主角提问 → 对方被迫自爆
|
|
176
|
+
- 压制式:台词短促强硬、句句紧逼 → 对方歇斯底里
|
|
177
|
+
- 信息差式:双方信息不对称,读者在中间
|
|
178
|
+
- 推拉式:靠近又推开,反复循环
|
|
179
|
+
- 称呼变化追踪:不同角色对同一人用不同称呼(如"阿虎"vs"林川"),称呼的变化反映了关系和身份认同的变化。分析时追踪称呼变化轨迹,标注转变的触发事件
|
|
180
|
+
|
|
181
|
+
### 时间操控
|
|
182
|
+
|
|
183
|
+
| 手法 | 定义 | 识别特征 |
|
|
184
|
+
|------|------|----------|
|
|
185
|
+
| 时间跳跃 | 跳过一段时间 | 「三年后」「五年后」 |
|
|
186
|
+
| 场景压缩 | 用几句话概括长时间 | 概述性段落 |
|
|
187
|
+
| 平行剪辑 | 两条时间线交替 | A线/B线交替出现 |
|
|
188
|
+
| 倒叙 | 先说结果再说过程 | 结果先行,回溯原因 |
|
|
189
|
+
| 闪回 | 穿插回忆片段 | 突然插入过去场景 |
|
|
190
|
+
| 实时展开 | 逐秒展开关键时刻 | 关键场景慢动作 |
|
|
191
|
+
|
|
192
|
+
### 信息控制
|
|
193
|
+
|
|
194
|
+
按开头、反转前、反转后(或中段、结尾)逐时刻对比读者、主角、对手各知道什么及信息差,表见输出模板「信息控制」。
|
|
195
|
+
|
|
196
|
+
### 意象/物件追踪
|
|
197
|
+
|
|
198
|
+
表见输出模板「意象/物件追踪」。**主题意象群**:当多个物件/意象都指向同一个主题时,不应单独分析每个物件,而应识别它们的关联。如拳套(身份错位)+纹身(被迫标记)+储物间(精神囚禁)都指向"身份囚禁"这个主题。分析时标注:共同主题、各物件的角度、整体效果。
|
|
199
|
+
|
|
200
|
+
### 留白手法
|
|
201
|
+
|
|
202
|
+
识别文本刻意留白的内容:
|
|
203
|
+
- 省略的背景(留给读者想象)
|
|
204
|
+
- 未说出口的话(对话中的停顿/省略号)
|
|
205
|
+
- 跳过的过程(直接给结果)
|
|
206
|
+
- 留白的结尾(不交代后续)
|
|
207
|
+
|
|
208
|
+
---
|
|
209
|
+
|
|
210
|
+
## 人物提取规则
|
|
211
|
+
|
|
212
|
+
### 提取标准(短篇特化)
|
|
213
|
+
|
|
214
|
+
短篇人物精简,但必须提取所有有名有姓或有叙事功能的人物。
|
|
215
|
+
|
|
216
|
+
**必须提取**:
|
|
217
|
+
- 有名字(≥2字符)且有台词或推动剧情的人物
|
|
218
|
+
- 虽无明确名字但反复出现(≥2节)且承担叙事功能的人物
|
|
219
|
+
|
|
220
|
+
**不提取**:
|
|
221
|
+
- 群体称呼("旁人""大家")
|
|
222
|
+
- 无名路人("一个中年人""助理"——除非有关键台词)
|
|
223
|
+
- 通用称呼黑名单(泛称不当作具体人物):
|
|
224
|
+
- 亲属:大哥-九哥、大姐-三姐、姐姐、妹妹、哥哥、弟弟、叔叔、阿姨、伯伯、舅舅、姑姑、姨妈、爷爷、奶奶、外公、外婆、父亲、母亲、爸爸、妈妈、爹、娘、儿子、女儿、孩子
|
|
225
|
+
- 社交:朋友、兄弟、哥们、姐妹、闺蜜、老同学、同学、老乡、邻居、室友、战友、同事、伙伴
|
|
226
|
+
- 身份:老师、老板、师傅、徒弟、学生、医生、护士、律师、警察、士兵、将军、商人、猎人、农民、工人、新娘、新郎、仆人、侍女、丫鬟、管家、护卫、侍卫、掌柜、小二、店主、老板娘
|
|
227
|
+
- 年龄/外貌:臭小子、小丫头、小姑娘、小伙子、少年、青年、老头、老太太、老人、年轻人、中年人、小家伙、小鬼、小娃娃
|
|
228
|
+
|
|
229
|
+
### 人物内在矛盾提取
|
|
230
|
+
|
|
231
|
+
短篇人物的核心在于内在矛盾,不是外部遭遇:
|
|
232
|
+
|
|
233
|
+
| 错误 | 正确 |
|
|
234
|
+
|------|------|
|
|
235
|
+
| 她被霍庭煜抛弃了(外部遭遇) | 她渴望被爱但学会了在不爱中生存(内在矛盾) |
|
|
236
|
+
| 他对她不好(行为描述) | 他习惯了掌控一切却无法掌控自己的感情(内在矛盾) |
|
|
237
|
+
|
|
238
|
+
### 人物功能评估
|
|
239
|
+
|
|
240
|
+
短篇每个人物都必须"物尽其用":
|
|
241
|
+
|
|
242
|
+
| 指标 | 问题 |
|
|
243
|
+
|------|------|
|
|
244
|
+
| 出场效率 | 第一次出场就完成定位了吗? |
|
|
245
|
+
| 功能密度 | 承担了多少叙事功能? |
|
|
246
|
+
| 可删除性 | 删掉故事还成立吗?(不成立=好,成立=多余) |
|
|
247
|
+
| 对话贡献 | 每次对话都推动剧情或情绪吗? |
|
|
248
|
+
|
|
249
|
+
---
|
|
250
|
+
|
|
251
|
+
## 共鸣分析
|
|
252
|
+
|
|
253
|
+
### 共鸣层次(9 层)
|
|
254
|
+
|
|
255
|
+
| 层次 | 定义 | 分析要点 |
|
|
256
|
+
|------|------|----------|
|
|
257
|
+
| 情感共鸣 | 读者对角色当下情绪的即时共情(如心疼、愤怒) | 共情点在哪里 |
|
|
258
|
+
| 价值观共鸣 | 对故事传达的具体价值观的认同(如"女性不该被定义") | 传达了什么价值观 |
|
|
259
|
+
| 经历共鸣 | 与读者自身经历的相似性 | 哪些经历容易产生代入 |
|
|
260
|
+
| 社会现象共鸣 | 与社会热点/普遍现象的关联 | 映射了什么社会现象 |
|
|
261
|
+
| 文化共鸣 | 与文化传统的共鸣 | 触发了什么文化记忆 |
|
|
262
|
+
| 普世价值共鸣 | 对人类共同追求的宏观认同(如自由、尊严、爱) | 触及了什么普世主题 |
|
|
263
|
+
| 哲学思考共鸣 | 引发对人生/存在的深层思考 | 触发了什么思考 |
|
|
264
|
+
| 情感深度共鸣 | 情绪体验留下的持久影响(读完几天后还在想) | 情绪是否深入持久 |
|
|
265
|
+
| 人物深度共鸣 | 对人物复杂性的理解和认同 | 人物是否有深度 |
|
|
266
|
+
|
|
267
|
+
每层共鸣标注强度:极强(读者强烈共情,无法自控)/ 强(读者明确感知)/ 中(需要细品)/ 弱(若有若无)/ 无(未触发)。至少 3 层达到"强"或"中"的短篇才具备传播潜力。
|
|
268
|
+
|
|
269
|
+
> **易混淆区分**:情感共鸣(与角色当下情绪的即时共情)vs 情感深度共鸣(读完几天后还在想的持久影响);价值观共鸣(对故事传达的具体价值观的认同)vs 普世价值共鸣(对自由、尊严、爱等人类共同追求的宏观认同)。
|
|
270
|
+
|
|
271
|
+
### 爆点性分析
|
|
272
|
+
|
|
273
|
+
评估故事的爆点(容易引发传播/讨论的关键点):
|
|
274
|
+
- 核心爆点是什么?
|
|
275
|
+
- 爆点的铺垫是否充分?
|
|
276
|
+
- 爆点的释放是否到位?
|
|
277
|
+
- 爆点是否具有传播性?
|
|
278
|
+
|
|
279
|
+
### 话题性分析
|
|
280
|
+
|
|
281
|
+
评估故事的话题性:
|
|
282
|
+
- 读者读完会讨论什么?
|
|
283
|
+
- 是否有争议点?
|
|
284
|
+
- 是否有代入式的自省?
|
|
285
|
+
- 是否有"如果是我会怎样"的讨论空间?
|
|
286
|
+
|
|
287
|
+
---
|
|
288
|
+
|
|
289
|
+
## 结构类型速查
|
|
290
|
+
|
|
291
|
+
| 结构 | 特点 | 适合情绪 |
|
|
292
|
+
|------|------|----------|
|
|
293
|
+
| 三幕反转式 | 铺垫→升级→反转 | 震惊、意难平 |
|
|
294
|
+
| 双线交叉式 | 明线暗线交替推进 | 悬疑、真相揭晓 |
|
|
295
|
+
| 时间跳跃式 | 过去/现在穿插 | 遗憾、成长 |
|
|
296
|
+
| 套娃反转式 | 多层反转嵌套 | 惊讶、烧脑 |
|
|
297
|
+
| 对话驱动式 | 通过对话推进叙事 | 虐恋、人际冲突 |
|
|
298
|
+
| 独白式 | 第一人称内心独白 | 治愈、自省 |
|
|
299
|
+
| 重生反常式 | 重生后做相反的事→对手自乱 | 爽、解气 |
|
|
300
|
+
| 灵魂旁观式 | 死后灵魂看世界→揭露真相 | 意难平、愤怒 |
|
|
301
|
+
| 双重生博弈式 | 两人都重生→信息战 | 紧张、痛快 |
|
|
302
|
+
| 隐忍布局式 | 表面顺从暗中布局→反攻 | 压抑→极致释放 |
|
|
303
|
+
| 非人视角式 | 鬼/系统/灵魂看人间 | 新奇、恐怖、爽 |
|
|
304
|
+
| 成长救赎式 | 苦难中被人拉一把→自我救赎→与救赎者约定未来 | 温暖、心酸、治愈 |
|
|
305
|
+
| 舆论反转式 | 舆论多次反转→证据反击→最终真相大白 | 爽、解气、震惊 |
|
|
306
|
+
| 冷面复仇式 | 冷静主角收集证据→果断出手→全身而退 | 爽、痛快、满足 |
|
|
307
|
+
| 倒计时告别式 | 明确时限的告别/离开→倒计时推进→最终诀别 | 心酸、意难平、通透 |
|
|
308
|
+
|
|
309
|
+
### 匹配分析要点
|
|
310
|
+
|
|
311
|
+
1. **主结构识别**:主要使用了哪种结构?
|
|
312
|
+
2. **混合结构**:大部分优秀短篇都是混合型。标注方式:主结构(主)+ 副结构(副),如"灵魂旁观式(主)+ 压缩弹簧(副)"。主结构决定叙事框架,副结构决定情绪节奏
|
|
313
|
+
3. **结构创新**:有没有对标准结构的创新使用?如"AI系统×复仇"的类型嫁接
|
|
314
|
+
4. **结构适配度**:这个结构是否最适合这个题材和目标情绪?
|
|
315
|
+
|
|
316
|
+
---
|
|
317
|
+
|
|
318
|
+
## 节奏分析
|
|
319
|
+
|
|
320
|
+
### 节奏指标
|
|
321
|
+
|
|
322
|
+
| 维度 | 计算方式 | 对照方式 | 说明 |
|
|
323
|
+
|------|----------|----------|------|
|
|
324
|
+
| 事件密度 | 节点数 / 全文字数 × 1000 | 同题材、同平台样本及本文前后分布 | 结合节点是否真实改变状态判断,不用数量直接判水或赶 |
|
|
325
|
+
| 对话密度 | 对话字数 / 全文字数 × 100% | 同题材、同平台样本 | 只描述文本倾向;对白功能与无对白场景的推进方式另行判断 |
|
|
326
|
+
| 冲突密度 | 冲突节点数 / 总节点数 × 100% | 同题材、同平台样本及本文压力来源 | 任务、证据、等待、空间和关系压力须另行记录,不用直接冲突占比代替张力判断 |
|
|
327
|
+
| 信息密度 | 信息节点数 / 总节点数 × 100% | 本文读者模型变化与后果篇幅 | 判断新信息是否可理解、会改写判断并得到消化,不设通用比例 |
|
|
328
|
+
|
|
329
|
+
### 节奏异常检测
|
|
330
|
+
|
|
331
|
+
| 异常模式 | 文本信号 | 复核问题 |
|
|
332
|
+
|----------|----------|----------|
|
|
333
|
+
| 节奏塌陷 | 连续叙事单元没有状态变化、因果后果或读者模型更新 | 场景是在蓄力、完成任务,还是原地复述? |
|
|
334
|
+
| 压力过载 | 多次升级之间没有选择、损失、反应或后果 | 读者是否来得及理解每次升级改变了什么? |
|
|
335
|
+
| 信息洪峰 | 新事实连续出现,却没有查证、定位、行动或旧线索改义 | 哪些信息真正改变判断,哪些只是清单? |
|
|
336
|
+
| 对白失效 | 对话可整段删除,或只剩问答、复述和设定讲解 | 每轮是否改变信息、策略、权力、关系或行动? |
|
|
337
|
+
| 对白挤压场景 | 人物只说不做,空间、任务和后果消失 | 是否需要动作或留白承接,而不是按占比截断? |
|
|
338
|
+
| 反转过载 | 新反转在上一层尚未产生选择或后果时就将其抹掉 | 每层是否有证据、读者模型变化和可感后果? |
|
|
339
|
+
|
|
340
|
+
---
|
|
341
|
+
|
|
342
|
+
## 输出模板
|
|
343
|
+
|
|
344
|
+
## Stage 4 反转+写作手法
|
|
345
|
+
|
|
346
|
+
<!-- output to: 拆文报告.md(反转分析段) + 写作手法.md(独立成文:POV/对话/时间/信息/其他/意象) -->
|
|
347
|
+
|
|
348
|
+
### A. 反转分析
|
|
349
|
+
|
|
350
|
+
#### 前置反转检查
|
|
351
|
+
|
|
352
|
+
> 是否有在故事时间线之前就已存在的谎言/误判?
|
|
353
|
+
|
|
354
|
+
| 前置反转 | 谁被骗/被蒙蔽 | 何时揭穿 | 揭穿方式 | 对主反转的作用 |
|
|
355
|
+
|----------|--------------|----------|----------|--------------|
|
|
356
|
+
| {如:三年前的"灌醉"事件实为做局} | {霍庭煜} | {第9章} | {沈暮月当面驳斥} | {铺垫:证明判断基于错误前提} |
|
|
357
|
+
|
|
358
|
+
若不存在前置反转,注明"无"。
|
|
359
|
+
|
|
360
|
+
#### 报应设计(无反转/报应型故事适用)
|
|
361
|
+
|
|
362
|
+
> 当故事无传统反转时,跳过反转机制拆解,改为分析报应设计。
|
|
363
|
+
|
|
364
|
+
| 阶段 | 反派的恶行 | 报应结果 | 爽感来源 |
|
|
365
|
+
|------|-----------|----------|----------|
|
|
366
|
+
| {如:虐待妻女} | {具体行为} | {对应惩罚} | {以彼之道还施彼身/自食恶果} |
|
|
367
|
+
|
|
368
|
+
报应链效果:{递进/一一对应/连锁反应}
|
|
369
|
+
|
|
370
|
+
#### 反转链(多反转故事适用)
|
|
371
|
+
|
|
372
|
+
> 如故事包含多个连续反转(舆论反转文、套娃反转文),按顺序列出:
|
|
373
|
+
|
|
374
|
+
| 序号 | 反转类型 | 触发事件 | 读者认知变化 | 与前层因果关系 |
|
|
375
|
+
|------|----------|----------|-------------|---------------|
|
|
376
|
+
| 1 | {类型} | {事件} | {从A认知变为B认知} | — |
|
|
377
|
+
| 2 | {类型} | {事件} | {从B认知变为C认知} | {反转1如何解释/加深反转2} |
|
|
378
|
+
|
|
379
|
+
反转链效果:{递进/叠加/出其不意}
|
|
380
|
+
因果链强度:{强/中/弱——删除任一层反转,其他是否仍成立?}
|
|
381
|
+
|
|
382
|
+
**伏笔式反转**:如有开头语句在真相揭示后含义完全改变,标注:
|
|
383
|
+
- 回看语句原文 + 位置
|
|
384
|
+
- 初读理解 vs 回看理解
|
|
385
|
+
- 触发认知升级的事件
|
|
386
|
+
|
|
387
|
+
单一反转的故事跳过此表,直接用下方主/副反转分析。
|
|
388
|
+
|
|
389
|
+
#### 主/副反转分析(单反转故事适用)
|
|
390
|
+
|
|
391
|
+
**反转类型**:{视角反转/身份反转/动机反转/时间线反转/信息反转/认知反转}
|
|
392
|
+
|
|
393
|
+
> **认知反转**:读者对某个角色/关系的整体理解被颠覆(如"母亲其实一直爱她")。不同于信息反转(单条信息),认知反转改变的是读者对整个角色/关系的感情色彩。
|
|
394
|
+
|
|
395
|
+
**反转机制**:
|
|
396
|
+
- 铺垫线索:{文本埋了哪些线索,含位置}
|
|
397
|
+
- 误导方向:{文本把读者往哪个方向引}
|
|
398
|
+
- 真相揭示:{反转怎么揭开的}
|
|
399
|
+
- 合理性:{反转是否经得起回看}
|
|
400
|
+
|
|
401
|
+
**时机**:全文{X}%位置 | 铺垫:释放 = {X:1}
|
|
402
|
+
|
|
403
|
+
**效果**:惊喜度{1-5} | 合理性{1-5} | 情绪冲击{1-5}
|
|
404
|
+
|
|
405
|
+
### B. 写作手法
|
|
406
|
+
|
|
407
|
+
> 方法论见上方「写作手法分析」。
|
|
408
|
+
|
|
409
|
+
#### POV 策略
|
|
410
|
+
|
|
411
|
+
| 维度 | 分析 |
|
|
412
|
+
|------|------|
|
|
413
|
+
| POV 类型 | {第一/第三人称/全知/其他} |
|
|
414
|
+
| 选择效果 | {亲密感/信息控制/距离感} |
|
|
415
|
+
| 信息操控 | {不可靠叙述者/选择性回忆/隐瞒} |
|
|
416
|
+
| POV 切换 | {如有:切换位置、切换方式、效果评价。如无:填"无"} |
|
|
417
|
+
| POV 代价 | {丧失了什么视角/信息} |
|
|
418
|
+
|
|
419
|
+
#### 对话手法
|
|
420
|
+
|
|
421
|
+
> 对话占比只描述该文本。判断须引用具体场景功能,并与同题材、同平台对标样本比较;不套通用范围。
|
|
422
|
+
|
|
423
|
+
| 指标 | 数值 | 评价 |
|
|
424
|
+
|------|------|------|
|
|
425
|
+
| 对话占比 | {X%} | {该文本倾向/相对对标偏高/相对对标偏低,并说明场景功能} |
|
|
426
|
+
| 潜台词率 | {X%} | {结合告知/求救/试探/回避等具体场景说明效果,不以越高越好} |
|
|
427
|
+
| 对话模式 | {审判式/压制式/信息差式/推拉式/称呼变化} | {具体说明} |
|
|
428
|
+
|
|
429
|
+
#### 时间操控
|
|
430
|
+
|
|
431
|
+
| 手法 | 位置 | 效果 |
|
|
432
|
+
|------|------|------|
|
|
433
|
+
| {时间跳跃/场景压缩/倒叙/闪回/实时展开} | {节N} | {具体效果} |
|
|
434
|
+
|
|
435
|
+
#### 信息控制
|
|
436
|
+
|
|
437
|
+
| 时刻 | 读者知道的 | 主角知道的 | 对手知道的 | 信息差 |
|
|
438
|
+
|------|-----------|-----------|-----------|--------|
|
|
439
|
+
| 开头 | | | | |
|
|
440
|
+
| 中段 | | | | |
|
|
441
|
+
| 结尾 | | | | |
|
|
442
|
+
|
|
443
|
+
#### 其他手法
|
|
444
|
+
|
|
445
|
+
| 手法 | 位置 | 效果 | 可复用度 |
|
|
446
|
+
|------|------|------|----------|
|
|
447
|
+
| {感官锚定/句式节奏/对比设计/意象物件/留白/首尾呼应} | {节N} | {具体效果} | {高/中/低} |
|
|
448
|
+
|
|
449
|
+
#### 意象/物件追踪
|
|
450
|
+
|
|
451
|
+
| 物件/意象 | 出现位置 | 每次承载的含义 | 演变轨迹 |
|
|
452
|
+
|-----------|---------|---------------|---------|
|
|
453
|
+
| {物件名} | {节1, 节5, 节9} | {含义变化} | {从A到B} |
|
|
454
|
+
|
|
455
|
+
如无重复物件/意象,注明"无明显意象重复"。
|
|
456
|
+
|
|
457
|
+
**手法总计**:{N} 项 | 核心手法{Top3} | 创新手法{如有}
|
|
458
|
+
|
|
459
|
+
---
|
|
460
|
+
|
|
461
|
+
## Stage 5 人物+开头结尾
|
|
462
|
+
|
|
463
|
+
<!-- output to: 拆文报告.md(人物分析 + 开头分析 + 结尾分析 + 首尾呼应 + 钩子回收检查 各段) -->
|
|
464
|
+
|
|
465
|
+
### A. 人物分析
|
|
466
|
+
|
|
467
|
+
> 方法论见上方「人物提取规则」。
|
|
468
|
+
|
|
469
|
+
**人物总览**:有名人物{N}人
|
|
470
|
+
|
|
471
|
+
| 人物 | 叙事角色 | 行动角色 | 功能标签 | 内在矛盾 | 弧线 | 关键台词 |
|
|
472
|
+
|------|----------|----------|----------|----------|------|----------|
|
|
473
|
+
| {主角名} | {主人公/重要配角} | {主动型/被动型/转变型} | {情绪承载者/...} | {核心心理冲突} | {始→转→终} | "{最具代表性的台词}" |
|
|
474
|
+
| {配角名} | {重要配角/功能人物} | {主动型/被动型} | {压迫源/...} | {矛盾} | {弧线/扁平} | "{台词}" |
|
|
475
|
+
|
|
476
|
+
> 若识别到双主人公结构,人物总览表中两人均标注为"主人公",并在表下方注明各自主驱动的章节范围。
|
|
477
|
+
|
|
478
|
+
**人物功能评估**:
|
|
479
|
+
|
|
480
|
+
| 人物 | 出场效率 | 功能密度 | 可删除性 | 对话贡献 |
|
|
481
|
+
|------|----------|----------|----------|----------|
|
|
482
|
+
| {名} | {高/中/低} | {承担N项功能} | {不可删/可删} | {每句都推动/部分推动} |
|
|
483
|
+
|
|
484
|
+
**人物关系**:
|
|
485
|
+
|
|
486
|
+
| 关系对 | 关系本质 | 演变轨迹 | 对情感线的贡献 |
|
|
487
|
+
|--------|----------|----------|---------------|
|
|
488
|
+
| A ↔ B | {如:单向依附→对等拒绝} | {节N:状态A → 节M:状态B} | {制造了什么情绪} |
|
|
489
|
+
|
|
490
|
+
### B. 开头分析
|
|
491
|
+
|
|
492
|
+
**前 3 句**:{原文引用}
|
|
493
|
+
|
|
494
|
+
| 维度 | 分析 |
|
|
495
|
+
|------|------|
|
|
496
|
+
| 钩子类型 | {悬念/冲突/反差/代入/信息差} |
|
|
497
|
+
| 前50字 | {有无冲突/异常?有/无} |
|
|
498
|
+
| 前100字 | {读者是否知道核心矛盾?是/否} |
|
|
499
|
+
| 信息密度 | {高/中/低} |
|
|
500
|
+
| 代入感 | {强(立刻在意主角)/中(需几段投入)/弱(缺乏共鸣点)} |
|
|
501
|
+
| 声音辨识度 | {强(一句话能辨认谁在说话)/中(有特征但不够突出)/弱(角色声音同质化)} |
|
|
502
|
+
| 开头情绪强度 | {1-10,绝对强度量表,非情感曲线的-9~+9} |
|
|
503
|
+
|
|
504
|
+
### C. 结尾分析
|
|
505
|
+
|
|
506
|
+
**最后一段**:{原文引用或概括}
|
|
507
|
+
|
|
508
|
+
| 维度 | 分析 |
|
|
509
|
+
|------|------|
|
|
510
|
+
| 结尾类型 | {HE满足/BE遗憾/开放式/反转余韵/留白} |
|
|
511
|
+
| 情绪落点 | {读者离开时在想什么} |
|
|
512
|
+
| 余韵设计 | {有/无,具体描述} |
|
|
513
|
+
| 传播欲 | {读者是否会推荐,为什么} |
|
|
514
|
+
| 收束完整性 | {所有钩子是否回收,未回收的列出} |
|
|
515
|
+
| 价值观传达 | {这篇故事最终想说什么?如"爱情只是调味剂,不是必需品"} |
|
|
516
|
+
| 结尾情绪强度 | {1-10,绝对强度量表(非情感曲线的-9~+9)。参考标准:虐≥8/爽≥7/治愈≥6/通透满足≥5/震惊反转≥7/BE意难平≥8} |
|
|
517
|
+
|
|
518
|
+
### D. 首尾呼应分析
|
|
519
|
+
|
|
520
|
+
| 呼应元素 | 开头位置 | 结尾位置 | 呼应方式 | 效果 |
|
|
521
|
+
|----------|----------|----------|----------|------|
|
|
522
|
+
| {元素} | {如:第1节"私生子而已"} | {如:结尾终身未娶} | {对比/反转/升级} | {形成闭环/制造遗憾} |
|
|
523
|
+
|
|
524
|
+
**重读发现**:如有开头语句在真相揭示后含义完全改变,列出:语句原文 + 位置 + 初读理解 vs 知道真相后的理解。
|
|
525
|
+
|
|
526
|
+
### E. 钩子回收检查
|
|
527
|
+
|
|
528
|
+
| 钩子 | 埋设位置 | 类型 | 回收位置 | 回收方式 | 状态 |
|
|
529
|
+
|------|----------|------|----------|----------|------|
|
|
530
|
+
| {描述} | {节N} | {悬念/冲突/信息差} | {节M} | {如何回收} | {已回收/留白/遗漏} |
|
|
531
|
+
|
|
532
|
+
---
|
|
533
|
+
|
|
534
|
+
## Stage 6 综合评估
|
|
535
|
+
|
|
536
|
+
<!-- output to: 拆文报告.md(综合段:五维评分 + 爆点性 + 话题性 + 共鸣 + 核心手法 + 可复用结构 + 同类型写作动作 + 节奏速报)+ _meta.json.structure_counts(数值计入元数据,详见下方「_meta.json.structure_counts 产出模板」) -->
|
|
537
|
+
|
|
538
|
+
**一句话评价**:{成功核心原因——具体指出成功机制,避免泛泛赞美}
|
|
539
|
+
|
|
540
|
+
### 五维评分
|
|
541
|
+
|
|
542
|
+
| 维度 | 评分 | 说明 |
|
|
543
|
+
|------|------|------|
|
|
544
|
+
| 开头吸引力 | 1-5 | {具体说明:钩子类型+效果+改进空间} |
|
|
545
|
+
| 情感拉扯力 | 1-5 | {具体说明:曲线形态+极值+翻转} |
|
|
546
|
+
| 反转设计 | 1-5 | {具体说明:反转类型+铺垫质量+合理性} |
|
|
547
|
+
| 节奏控制 | 1-5 | {具体说明:密度分布+异常检测+节奏匹配} |
|
|
548
|
+
| 结尾余韵 | 1-5 | {具体说明:结尾类型+落点+传播欲} |
|
|
549
|
+
|
|
550
|
+
### 爆点性
|
|
551
|
+
|
|
552
|
+
{核心爆点是什么?铺垫是否充分?释放是否到位?传播性如何?}
|
|
553
|
+
|
|
554
|
+
### 话题性
|
|
555
|
+
|
|
556
|
+
{读者会讨论什么?争议点?代入式自省?"如果是我会怎样"的讨论空间?}
|
|
557
|
+
|
|
558
|
+
### 共鸣分析
|
|
559
|
+
|
|
560
|
+
| 共鸣层次 | 强度 | 触发点 |
|
|
561
|
+
|----------|------|--------|
|
|
562
|
+
| 情感共鸣 | {强/中/弱/无} | {具体触发点} |
|
|
563
|
+
| 价值观共鸣 | {强/中/弱/无} | {具体触发点} |
|
|
564
|
+
| 经历共鸣 | {强/中/弱/无} | {具体触发点} |
|
|
565
|
+
| 社会现象共鸣 | {强/中/弱/无} | {具体触发点} |
|
|
566
|
+
| 文化共鸣 | {强/中/弱/无} | {具体触发点} |
|
|
567
|
+
| 普世价值共鸣 | {强/中/弱/无} | {具体触发点} |
|
|
568
|
+
| 哲学思考共鸣 | {强/中/弱/无} | {具体触发点} |
|
|
569
|
+
| 情感深度共鸣 | {强/中/弱/无} | {具体触发点} |
|
|
570
|
+
| 人物深度共鸣 | {强/中/弱/无} | {具体触发点} |
|
|
571
|
+
|
|
572
|
+
### 核心手法
|
|
573
|
+
|
|
574
|
+
反转类型{...} | 情感曲线形态{...} | 关键钩子{...} | 核心手法Top3{...}
|
|
575
|
+
|
|
576
|
+
### 可复用结构
|
|
577
|
+
|
|
578
|
+
1. **{手法名}**:{用法} — 适用场景:{什么类型的短篇}
|
|
579
|
+
2. **{手法名}**:{用法} — 适用场景:{...}
|
|
580
|
+
3. **{手法名}**:{用法} — 适用场景:{...}
|
|
581
|
+
|
|
582
|
+
### 同类型写作动作
|
|
583
|
+
|
|
584
|
+
{具体行动——可直接进入下一份 artifact 的操作,避免只写"多练习"}
|
|
585
|
+
|
|
586
|
+
### 节奏速报
|
|
587
|
+
|
|
588
|
+
| 指标 | 数值 | 判断 |
|
|
589
|
+
|------|------|------|
|
|
590
|
+
| 事件密度 | {X个/千字} | {文本分布与真实状态变化} |
|
|
591
|
+
| 对话密度 | {Y%} | {文本倾向、对白功能与无对白推进方式} |
|
|
592
|
+
| 冲突密度 | {Z%} | {直接冲突与其他压力来源的关系} |
|
|
593
|
+
|
|
594
|
+
### _meta.json.structure_counts 产出模板
|
|
595
|
+
|
|
596
|
+
> Stage 6 完成时,把这一节的结构计数写入 `_meta.json.structure_counts`,作为「structure_counts 数值校验」
|
|
597
|
+
> 数值检查的依据。分析叙事正文写到 `拆文报告.md` 的对应段,不要重复在 JSON 里再讲一遍。
|
|
598
|
+
> 字段定义与阈值见 [output-contract.md](output-contract.md)。
|
|
599
|
+
|
|
600
|
+
```jsonc
|
|
601
|
+
"structure_counts": {
|
|
602
|
+
"beats": 5, // 来自 Stage 2 结构段数(开端/发展/高潮/结局,≥4)
|
|
603
|
+
"hooks": 4, // 来自 Stage 3 钩子数(≥3)
|
|
604
|
+
"setup_clues": 3, // 来自 Stage 4 反转铺垫数(≥3;无反转题材填 0 并跳过该阈值)
|
|
605
|
+
"character_archetypes": 3, // 来自 Stage 5 有反差人物数(≥2)
|
|
606
|
+
"reusable_structures": 3, // 来自 Stage 6 可复用条数(≥3)
|
|
607
|
+
"reversal_type": "视角反转" // 枚举: 视角/身份/动机/时间线/信息/认知/无反转
|
|
608
|
+
}
|
|
609
|
+
```
|
|
610
|
+
|
|
611
|
+
---
|