@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
|
@@ -1,96 +1,60 @@
|
|
|
1
|
-
#
|
|
1
|
+
# 生成素材的可用区间
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
带外的帧无论怎么剪都不成立。剪辑第一步不是选精彩瞬间,是先把这条带子划出来。
|
|
3
|
+
## 先检查素材
|
|
5
4
|
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
逐段播放素材,记录实际时长、可用区间,以及不能使用的部分及原因。
|
|
6
|
+
重点检查起始等待、动作回弹、身份或道具漂移、异常提亮、重复表演和口型错位。
|
|
7
|
+
静止、暗部和停顿是否可用,取决于它们是否符合镜头职责。
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
需要比较画面变化时,可每 0.25–0.5 秒抽帧;在疑似缺陷附近加密到逐帧查看。
|
|
10
|
+
亮度测量可以辅助发现缓慢漂移,身份、动作和局部细节仍需看画面。
|
|
10
11
|
|
|
11
|
-
|
|
12
|
+
可用区间短于计划时长时:
|
|
12
13
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
具体的记录能回到上游变成提示词修订;模糊的记录只能留在剪辑里被反复重看。
|
|
14
|
+
- 已完整承载信息和表演,可以缩短。
|
|
15
|
+
- 其他素材能够承接缺失信息,可以换镜或调整镜序。
|
|
16
|
+
- 必要动作、台词或反应仍缺失,列出缺口并请求补素材。
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
不要只为避开画面缺陷而丢掉故事所需的信息。若画面不可用而对白完整,可评估保留声音、
|
|
19
|
+
另配画面的剪法;外部混音与画面处理须记录在剪辑单中。
|
|
19
20
|
|
|
20
|
-
|
|
21
|
-
也不保证在你的模型和参数下同样出现;每一条都以你自己这一段素材的实测为准。
|
|
21
|
+
## 把缺陷反馈给上游
|
|
22
22
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
播放时容易被当成「一个亮结尾」放过去。
|
|
27
|
-
- **重复表演**:同一个情绪或姿态在一段里演两遍。第二遍通常质量更差,也让这一段显得比实际长。
|
|
28
|
-
- **口型与台词错位**:有声模型在同一次生成里出画面和声音,超出容量的台词会被赶或直接不发声。
|
|
29
|
-
边界必须按实际听到的声音定,不按提示词里写了几个字定。
|
|
23
|
+
描述缺陷发生的时间和画面,再给出希望保留的状态,例如「结尾高光过曝,需保持桌面纹理可辨」。
|
|
24
|
+
正面描述通常更容易说明目标;确有必要的排除条件可以保留,不按否定词数量判错。
|
|
25
|
+
重出后比较同一处是否改善,不把某次生成结果当作所有模型的规律。
|
|
30
26
|
|
|
31
|
-
##
|
|
32
|
-
|
|
33
|
-
用抽帧对比,不要只靠播放。做法:
|
|
34
|
-
|
|
35
|
-
1. 按固定间隔抽帧(0.25–0.5 秒一帧足够定位大多数问题),拼成一张接触图。
|
|
36
|
-
2. 沿着接触图找第一次出现「和前一帧不属于同一个动作」的位置——那通常就是带的一端。
|
|
37
|
-
3. 在候选边界前后再按 0.1 秒抽一次,把边界收紧到可用的最后一帧。
|
|
38
|
-
|
|
39
|
-
亮度类问题额外测一遍逐帧平均亮度,因为眼睛对缓慢提亮不敏感。姿态与身份漂移则相反:数值不会
|
|
40
|
-
动,必须靠眼睛比对同一处细节(发际线、领口、手里的东西)。**两种方法各有各的盲区,
|
|
41
|
-
需要交叉验证的场合两种都用一次。** 只用其中一种得出的结论,其可靠程度取决于这个问题恰好
|
|
42
|
-
落在哪一边——而这一点事先并不知道。
|
|
43
|
-
|
|
44
|
-
## 带很短怎么办
|
|
45
|
-
|
|
46
|
-
可用带短于上游声明的时长是常态。三条路,按代价排序:
|
|
47
|
-
|
|
48
|
-
1. **接受更短的一段。** 一秒半能把信息说完就用一秒半。这是默认选择,也是成片总时长可以
|
|
49
|
-
低于目标的正当原因。
|
|
50
|
-
2. **换一段素材承担这条信息。** 别的镜头如果已经把这件事说清楚了,这一镜可以整段不用。
|
|
51
|
-
3. **回上游重出。** 只在前两条都不成立时走。重出前先把带外形态写具体——「结尾发白」比
|
|
52
|
-
「重生成一次」更可能真的换来一段能用的素材。
|
|
53
|
-
|
|
54
|
-
不要走第四条:把缺陷帧留在成片里,指望观众不注意。缺陷帧在竖屏全屏播放下比在工作监视器上
|
|
55
|
-
明显得多。
|
|
56
|
-
|
|
57
|
-
## 负面指令的边界
|
|
58
|
-
|
|
59
|
-
想避开某个缺陷时,直觉做法是在重出的提示词里写「不要发白 / 不要泛光」。本套件在实测中见过
|
|
60
|
-
这样的重出反而使该缺陷更重的情况(视觉质地类),也见过同样写法对具体物体不产生影响的情况
|
|
61
|
-
(物体类)。样本很小,不足以下断言。
|
|
27
|
+
## 接镜与色彩一致性
|
|
62
28
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
29
|
+
逐段生成的素材曝光各不相同,同一场景里切过去会像闪了一下。`render` 默认在同一场景内自动接镜:
|
|
30
|
+
剪辑单里相邻、并经《视频提示词.md》的「分镜」与《分镜.md》的「来源」追到同一场景 ID 的几段为一组,
|
|
31
|
+
测量每段的逐通道均值与离散度,各向组内中位数拉近 70%,每个通道只用一个增益和偏移。
|
|
32
|
+
它只让切点不再跳,不把各段拉成同一均值;换场、插叙和追不到场景的段不动。
|
|
33
|
+
实际用到的数值列在 render 输出的「自动接镜」里。
|
|
66
34
|
|
|
67
|
-
|
|
68
|
-
遇到时,报告回去,不要在剪辑里自己改提示词重投。
|
|
35
|
+
自动接镜看的是全画面统计,会受景别、服装面积和背景影响,以下情况在对应 CUT 处理:
|
|
69
36
|
|
|
70
|
-
|
|
37
|
+
- 段内有意的光态变化(关灯、闪回、冷暖对比)写 `- 画面:不校`:这一段不校正,也不计入组内中位数。
|
|
38
|
+
- 自动接镜后仍有可见偏差,先按同一光态选脸、衣物或中性表面作基准比较,再写校正。
|
|
39
|
+
写了校正的段只用这里的值,不再自动接镜,也不计入中位数:
|
|
71
40
|
|
|
72
|
-
|
|
73
|
-
|
|
41
|
+
```text
|
|
42
|
+
- 画面:亮度 +0.06;色温 -6
|
|
43
|
+
```
|
|
74
44
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
45
|
+
- `亮度`:加法偏移,工具支持 −0.25…+0.25。
|
|
46
|
+
- `饱和`:倍数,工具支持 0…2。
|
|
47
|
+
- `色温`:工具的冷暖校正量,支持 −30…+30,正数提红压蓝;不是开尔文值。
|
|
78
48
|
|
|
79
|
-
|
|
49
|
+
这些范围是内置工具的处理范围,不是画面质量标准。需要更大或更精细的校正时使用调色工具。
|
|
50
|
+
先试小幅校正,再看渲染结果和相同区域的测量。人物身份漂移、错误光源或缺失动作应交回上游。
|
|
51
|
+
整集都不要自动接镜时,在交付规格写 `- 接镜匹配:无`。
|
|
80
52
|
|
|
81
|
-
|
|
82
|
-
再拼一张接触图用眼睛过一遍。数字会漏掉「只有暗部偏色」这种局部问题,
|
|
83
|
-
眼睛会漏掉缓慢的整体漂移——本套件在这两个方向上都栽过。
|
|
84
|
-
2. **选一条作基准,别求全组一致。** 通常选信息最重的那一镜(有台词的、有转折的)。
|
|
85
|
-
把明显偏离的那一两条拉向它,不要把七条都往中间挪——那会让原本对的镜也被动过。
|
|
86
|
-
3. **在剪辑单里写下来。** 在那一段写 `- 画面:亮度 +0.06;色温 -6`。
|
|
87
|
-
三项的含义:`亮度` 是 −0.25…+0.25 的加法偏移,`饱和` 是倍数,
|
|
88
|
-
`色温` 是 −30…+30,正数偏暖(提红压蓝)。超出范围会被 `check` 拒绝——
|
|
89
|
-
那种幅度不是接镜,是重新调色,应该回上游重出或交给专门的调色工具。
|
|
53
|
+
生成阶段仍应保持已接受的光线和色调;已有素材只差可校正的曝光或白平衡时,优先评估后期修正。
|
|
90
54
|
|
|
91
|
-
|
|
55
|
+
## 颗粒
|
|
92
56
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
57
|
+
项目需要时,在交付规格写 `- 颗粒:6`;不写或写「无」就不加。
|
|
58
|
+
内置工具支持 0–20 的动态噪点强度,在拼接后对整片统一应用。
|
|
59
|
+
这是一种可选质感处理,不保证产生胶片效果,也不能修复身份、动作和光线错误。
|
|
60
|
+
需要按场景区别处理时,使用外部调色工具并记录决定。
|
|
@@ -1,113 +1,65 @@
|
|
|
1
1
|
# 声音、字幕与音乐
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
每一个剪辑点留下一道能听见的断层——即使画面切得干净。
|
|
3
|
+
## 声音接缝
|
|
5
4
|
|
|
6
|
-
|
|
5
|
+
在相邻镜头拼接后回听底噪、混响、环境声和音乐是否突然变化。
|
|
6
|
+
可按需要采用音轨交叉淡入、连续环境底、对白与画面分离或补充音乐。
|
|
7
|
+
保留有叙事作用的静默、音效和相对响度。
|
|
7
8
|
|
|
8
|
-
|
|
9
|
-
|
|
9
|
+
**内置工具范围**:`edit_tool.py render` 保留素材原声,按 `音效` 行把单个声音文件混进指定时刻,
|
|
10
|
+
并可做整片响度标准化;混音不压低原声,响度在混入音效之后测量。
|
|
11
|
+
CUT 的 `声音` 行是剪辑说明,工具不解析它,不执行静音、交叉淡入、配乐进入或 ducking。
|
|
12
|
+
需要这些处理时用 ffmpeg 或剪辑软件另行完成,记录命令或工程及实际输出;完成后再验收。
|
|
13
|
+
不能把写下声音方案或 render 成功当成已经混音。
|
|
10
14
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
1. **在生成阶段避免。** 视频提示词阶段声明非叙事音乐不由单镜承载(对应该阶段的音乐规则),
|
|
14
|
-
让每段素材只带必要的叙事声音。这是最干净的做法,但要在生产之前决定。
|
|
15
|
-
2. **在剪辑点做短交叉淡入。** 只处理音轨,不动画面。适合底噪差异不大的相邻段。
|
|
16
|
-
3. **铺一层统一的环境底。** 把各段原声压低到统一水平,再补一条贯穿全片的环境层。
|
|
17
|
-
代价是丢掉一部分逐段的声音细节,且这是一个明显的创作决定,要写进剪辑单的「声音」行。
|
|
18
|
-
|
|
19
|
-
选哪条取决于差异有多大,先测再选:逐段测底噪水平,差异小的用第 2 条,差异大的才考虑第 3 条。
|
|
20
|
-
|
|
21
|
-
## 台词必须能听见
|
|
22
|
-
|
|
23
|
-
成片里每一句留下来的台词都要完整可听。检查方式是**在成片上**重新转写一遍,逐句对照剧本原文:
|
|
24
|
-
|
|
25
|
-
- 少一句 → 某一刀切掉了它,或者它被别的声音盖住了。
|
|
26
|
-
- 半句 → 边界切在了句中,回去按发声区间重定。
|
|
27
|
-
- 转写结果和原文有出入 → 转写工具的误差,也可能是生成时口型/发音本身就不清楚。
|
|
28
|
-
分辨方法是听,不是看转写文本。转写只是筛子,不是判据。
|
|
29
|
-
|
|
30
|
-
转写做在成片上,不做在逐段素材上。逐段都对、拼起来丢了一句,正是这一步要抓的情况。
|
|
15
|
+
## 响度
|
|
31
16
|
|
|
32
|
-
|
|
17
|
+
两遍测量不保证归一化后恰好达到目标。线性增益会超过峰值或动态范围目标时,
|
|
18
|
+
`loudnorm` 会退回动态处理;短片和稀疏音效仍需测量编码后的实际 LUFS 与真峰。
|
|
19
|
+
内置归一化输出使用 48 kHz,避免动态处理的内部升采样直接决定 AAC 采样率。
|
|
20
|
+
不达标时按声音设计通过外部工具处理瞬态、限幅或混音,再核对成片;不要把目标值当实测值。
|
|
33
21
|
|
|
34
|
-
|
|
35
|
-
还是只想换个表演——新的一条发声位置几乎一定不同,而旧的窗口还留在剪辑单里。
|
|
22
|
+
## 台词与时间
|
|
36
23
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
字幕比口型早了 1.6 秒,是外部审片者看出来的,不是任何检查抓到的。
|
|
24
|
+
先在源素材上定位发声区间,再在成片上逐句回听,核对留下的台词完整、可辨。
|
|
25
|
+
转写可以辅助查漏和定位,最终文字按剧本核对,识别有出入时回听确认。
|
|
40
26
|
|
|
41
|
-
|
|
42
|
-
`check`
|
|
43
|
-
不能代替你自己重测,但至少不让它无声地过去。
|
|
27
|
+
重出素材会改变发声位置,应重测相关字幕时间并更新剪辑单。
|
|
28
|
+
`check` 会提示素材比剪辑单新;这个时间戳检查不能证明字幕已经重新对齐。
|
|
44
29
|
|
|
45
30
|
## 字幕
|
|
46
31
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
转写会把人名或成语听成同音的另一个词,一旦进了字幕,成片上就出现一句剧本里根本不存在的
|
|
52
|
-
台词,而且没有任何环节会再发现它。
|
|
32
|
+
竖屏短剧默认硬字幕,服从用户的字幕选择。
|
|
33
|
+
字幕文字逐字取自《剧本.md》,剪辑单照抄剧本标点。转写仅辅助定位,不覆盖原文。
|
|
34
|
+
render 烧录时按 GY/T 288 与短剧惯例改写显示形式:去掉句末标点,保留 `?` `!`,
|
|
35
|
+
句中的 `,。、;:` 换成全角空格;`字幕.srt` 用的也是这一形式,`check` 仍按剧本原文核对。
|
|
53
36
|
|
|
54
|
-
|
|
37
|
+
- 字幕一行显示。超过 12 个字的句子,render 在句中停顿处拆成先后显示的几条,
|
|
38
|
+
按字数分配这句的时间;没有停顿的长短语按字数均分。重点词不会被拆到两条里。
|
|
39
|
+
- 一镜有多句时使用 `字幕 1`、`字幕 2` 等编号,每句给出时间。
|
|
40
|
+
- 字幕时间相对本 CUT 的入点,不相对源素材起点;落在该段使用区间内。
|
|
41
|
+
- 累计成片位置使用渲染后各段的实际时长,避免帧边界取整产生漂移。
|
|
42
|
+
- 抽帧检查字号、折行、安全区和画内文字遮挡。
|
|
55
43
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
而且没有任何一步会报错——观众听得见、看不见。
|
|
61
|
-
- **字号写在画面像素里,不要再按画面高度乘一遍。** 字幕文件里的字号已经是相对
|
|
62
|
-
`PlayRes` 的单位,渲染时会再缩放一次。本套件第一版按画面高度算了字号,于是放大了两次:
|
|
63
|
-
1344 高的竖屏上本该 46px 的字变成约 161px,字幕被推到画面中部,长句两端切掉。
|
|
64
|
-
`edit_tool.py` 现在自己写 ASS 并把 `PlayRes` 声明成实际画幅,一个单位就是一个像素。
|
|
65
|
-
- 字幕的出入时间跟随发声区间,不跟随剪辑点。
|
|
66
|
-
- **字幕时间按实际渲染出来的分段累加,不按剪辑单里声明的时长累加。** 每段落在帧边界上,
|
|
67
|
-
比声明值长几毫秒;按声明值累加会一路漂移,八段之后能差三分之一秒,字幕于是在人还没说完时就消失。
|
|
68
|
-
- 画内已有文字(屏幕、招牌、聊天记录)的位置要避开,不要让字幕压在需要看清的信息上。
|
|
69
|
-
- 有画内文字要求的镜头,字幕位置在剪辑单的「字幕」行里写明。
|
|
44
|
+
两条路线用同一套尺寸:字高为画面高度的 4.3%,深色描边 0.42%,基线在距底边约 24% 处,
|
|
45
|
+
避开平台自己的底部界面;字色按来源区分,重点词标黄。内置 ffmpeg 路线用实际画幅作为 ASS PlayRes,
|
|
46
|
+
字号按该画幅像素计算;它采用全片统一样式,CUT 的字幕行不支持位置指令。需要逐镜避让或更复杂排版时,
|
|
47
|
+
用外部字幕编辑器或修改 Remotion 字幕层,并对输出抽帧检查。
|
|
70
48
|
|
|
71
|
-
###
|
|
49
|
+
### 渲染路线
|
|
72
50
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
| | `ffmpeg`(默认) | `remotion` |
|
|
51
|
+
| 路线 | 适用范围 | 开销 |
|
|
76
52
|
|---|---|---|
|
|
77
|
-
|
|
|
78
|
-
|
|
|
79
|
-
| 改样式 | 改 `edit_tool.py` 的 ASS 样式 | 改 CSS,`npx remotion studio` 当场可见 |
|
|
80
|
-
| 开销 | 一次滤镜,秒级 | **成片每一帧都过一遍无头浏览器**,分钟级,吃内存 |
|
|
81
|
-
| 许可 | — | Remotion 个人与小团队免费,超出规模需商业授权 |
|
|
82
|
-
|
|
83
|
-
两条都只渲染字幕层,画面本身不经过浏览器重绘。**默认走 `ffmpeg`**,长片尤其;只有排版
|
|
84
|
-
确实要求更多(加粗、描边层次、逐句入场)、而且片子不长时才换 `remotion`——它的叠层逐帧
|
|
85
|
-
过无头浏览器,并发默认压在 2,调高之前先量本机。装法与代价见
|
|
86
|
-
[Remotion 字幕叠层](../assets/remotion/README.md)。
|
|
87
|
-
|
|
88
|
-
无论走哪条,字幕文字仍然逐字来自 `剧本.md`。
|
|
89
|
-
|
|
90
|
-
## 响度
|
|
91
|
-
|
|
92
|
-
成片统一做一次响度标准化,目标写在剪辑单开头的交付规格里。
|
|
93
|
-
|
|
94
|
-
逐段素材的响度差异很大,因为它们是分别生成的。不做统一的结果是观众在播放中途反复调音量,
|
|
95
|
-
而这件事在工作环境里几乎察觉不到——工作时是逐段听的,逐段听不出整体起伏。
|
|
96
|
-
|
|
97
|
-
标准化在最后一步做,做在已经拼接和混音完成的成片上。对逐段素材分别标准化会破坏段间本来
|
|
98
|
-
正确的相对关系(一段耳语和一段喊叫会被拉到同一响度)。
|
|
53
|
+
| `ffmpeg`(默认) | 本机的思源黑体粗体,描边与颜色同上 | 需要带 libass 的 ffmpeg |
|
|
54
|
+
| `remotion` | 思源黑体 Heavy(随叠层安装),描边压在字下、入场弹出、重点词 120 ms 放大 | Node 依赖,逐帧浏览器渲染;并发默认 2 |
|
|
99
55
|
|
|
100
|
-
|
|
56
|
+
Remotion 安装与样式调整见 [Remotion 叠层](../assets/remotion/README.md)。
|
|
57
|
+
两条路线都要在实际成片上检查字幕。
|
|
101
58
|
|
|
102
|
-
|
|
103
|
-
时长。到这里要做的是:
|
|
59
|
+
## 响度与时间线音乐
|
|
104
60
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
2. 长度不够就循环,循环点选在乐句边界上,不选在剪辑点上。
|
|
108
|
-
3. 有台词的段落把音乐压低,在台词发声区间之外恢复。恢复时机跟着句尾停顿走,
|
|
109
|
-
不要在句子中间的换气处就抬起来。
|
|
110
|
-
4. 音乐不填补沉默。剪辑单里写明是沉默的段落就保持沉默——那是一个创作决定,不是待填的空白。
|
|
61
|
+
在剪辑单写交付响度;混音完成后对整片标准化并测量输出。
|
|
62
|
+
同时回听对白与环境的相对关系,整片响度达标不代表各句都清楚。
|
|
111
63
|
|
|
112
|
-
|
|
113
|
-
|
|
64
|
+
时间线音乐按已接受意图选择进入、退出、循环与对白压低区间。
|
|
65
|
+
素材不足时回生产阶段补齐;具体混音通过外部工具执行,并在剪辑单留下可复现记录。
|
|
@@ -4,13 +4,8 @@
|
|
|
4
4
|
`剧集/<EP>/制作成果/成片/` 的成片与中间文件。它继承镜序、镜头职责、台词原文和已生产的素材
|
|
5
5
|
字节,不回写剧本、视觉设定、分镜或视频提示词。
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
台词、起终状态或时长声明——那些改动必须回到拥有它们的上游文档,再重新进入生产。
|
|
10
|
-
|
|
11
|
-
素材与文档不一致是本阶段的正常输入,不是要修好才能开工的前置条件。上游写「三秒推进到特写」,
|
|
12
|
-
生成结果只有前一秒可用,剪辑记录下这个事实并做出取舍;把不一致原样报告回去,比在剪辑里假装
|
|
13
|
-
它不存在更有价值。
|
|
7
|
+
剪辑单记录素材取舍、时间与后期处理。可以缩短、重排或省略素材,但不回写上游的台词、
|
|
8
|
+
镜头职责和状态;确需改变故事内容时交由上游修订。
|
|
14
9
|
|
|
15
10
|
## 本阶段规则
|
|
16
11
|
|
|
@@ -21,20 +16,23 @@
|
|
|
21
16
|
| EDT-01 | structural_invariant | Every `CUT-...` binds one existing `MOTION-...` and one currently readable media file; a cut with no material source cannot exist. |
|
|
22
17
|
| EDT-02 | structural_invariant | 入点, 出点 and 时长 are self-consistent (`出点 - 入点 == 时长`), non-negative, and the 出点 does not exceed the source file's measured duration. |
|
|
23
18
|
| EDT-03 | structural_invariant | Editing selects and orders existing frames. It never rewrites dialogue, shot purpose, start/end state, or any upstream declared duration; a needed semantic change is reported to the owning document instead. |
|
|
24
|
-
| EDT-04 |
|
|
25
|
-
| EDT-05 | structural_invariant |
|
|
19
|
+
| EDT-04 | reviewed_invariant | Dialogue retained in the film remains audibly complete. Picture may cut during a line if the sound remains continuous and the narrative is clear. Separate picture and audio editing requires an external tool; the built-in renderer trims them together. |
|
|
20
|
+
| EDT-05 | structural_invariant | When subtitles are requested, every retained spoken line has a cue derived verbatim from the screenplay; punctuation may follow subtitle convention. Transcription locates speech but does not replace the source text. |
|
|
26
21
|
| EDT-06 | structural_invariant | Two cuts drawn from the same source file do not overlap in source time. Deliberate repetition is declared as repetition and states why the second appearance still earns its place. |
|
|
27
22
|
| EDT-07 | reviewed_invariant | Each cut's in-point and out-point land inside that material's usable band, and 取舍 names what is visible at each boundary rather than citing an abstract need for pace. |
|
|
28
|
-
| EDT-08 |
|
|
29
|
-
| EDT-09 |
|
|
30
|
-
| EDT-10 | reviewed_invariant |
|
|
31
|
-
| EDT-11 | reviewed_invariant |
|
|
23
|
+
| EDT-08 | craft_default | Check adjacent cuts for unintended visual jumps and duplicated information. Similar framing, deliberate repetition and jump cuts are valid when they serve the accepted narrative. |
|
|
24
|
+
| EDT-09 | craft_default | Do not mechanically redistribute trimmed time. Extend another beat only when its performance or readability benefits, and preserve explicit delivery-duration requirements. |
|
|
25
|
+
| EDT-10 | reviewed_invariant | Listen to joins for unintended changes in ambience or music. Use an appropriate documented audio treatment when needed; the built-in renderer does not execute prose mixing instructions. |
|
|
26
|
+
| EDT-11 | reviewed_invariant | Record unused shots with a reason: missing material, unusable quality, or an intentional narrative omission. |
|
|
32
27
|
| EDT-12 | craft_default | The delivered film is loudness-normalized to one declared target, and burned subtitles are the default for vertical short drama. |
|
|
33
|
-
| EDT-13 | craft_default |
|
|
28
|
+
| EDT-13 | craft_default | Distinguish a reference target from a required delivery duration. Report the gap and satisfy a fixed requirement or identify the material needed to do so. |
|
|
34
29
|
| EDT-14 | taste_option | Cut rhythm, whether a beat is held or clipped, and whether a moment repeats are creator choices; the suite records them and does not treat any of them as defects. |
|
|
35
30
|
| EDT-15 | structural_invariant | Rendering, duration match and file existence are technical outcomes. None of them may be reported as a statement about whether the film is good; quality goes to review or to the creator. |
|
|
36
|
-
| EDT-16 | reviewed_invariant |
|
|
37
|
-
| EDT-17 | structural_invariant |
|
|
31
|
+
| EDT-16 | reviewed_invariant | Compare shots within the same scene and lighting state using comparable image regions. Record corrections, then inspect the output. Whole-frame averages alone do not establish a mismatch; intentional lighting changes are valid. |
|
|
32
|
+
| EDT-17 | structural_invariant | After material is regenerated, re-measure the spoken spans and update its subtitle windows before rendering. The material-mtime warning is a prompt to check, not proof of alignment. |
|
|
33
|
+
| EDT-18 | taste_option | Optional grain is declared once in the delivery spec and applied dynamically after assembly by the built-in renderer. Its supported range is a tool limit, not a quality standard; other treatments may use external grading tools. |
|
|
34
|
+
| EDT-19 | craft_default | A dialogue cut enters about 0.25 s before the line's speech onset and leaves about 0.4 s after the line ends, and lasts at least about 1.2 s. Locate these from the sounds that belong to the scripted line, so noise never stretches the cut. |
|
|
35
|
+
| EDT-20 | craft_default | Within one scene, the built-in renderer pulls each cut partway toward the scene's median exposure and colour and reports the values it applied. A cut's stated correction or 「不校」 replaces the automatic match, and the delivery spec can turn it off. |
|
|
38
36
|
|
|
39
37
|
规则分级由高到低:`structural_invariant`(结构缺陷,阻断)、
|
|
40
38
|
`reviewed_invariant`(需证据判断)、`craft_default`(常用做法,可覆盖)、
|