akari-video 0.1.0
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/LICENSE +21 -0
- package/README.md +81 -0
- package/bin/akari.mjs +14 -0
- package/package.json +42 -0
- package/src/cli.mjs +140 -0
- package/src/messages.mjs +100 -0
- package/src/path-lookup.mjs +47 -0
- package/src/project-state.mjs +25 -0
- package/src/repo-assets.mjs +59 -0
- package/src/task-labels.mjs +30 -0
- package/src/update-check.mjs +189 -0
- package/vendor/packages/project-scaffold/package.json +11 -0
- package/vendor/packages/project-scaffold/src/index.mjs +523 -0
- package/vendor/packages/project-scaffold/test/create-project.test.mjs +81 -0
- package/vendor/packages/project-scaffold/test/skill-adapter-link.test.mjs +204 -0
- package/vendor/packages/schemas/analysis.schema.json +475 -0
- package/vendor/packages/schemas/asset-meta.schema.json +225 -0
- package/vendor/packages/schemas/avatar-rendition.schema.json +65 -0
- package/vendor/packages/schemas/avatar.schema.json +178 -0
- package/vendor/packages/schemas/bin/validate-asset.mjs +597 -0
- package/vendor/packages/schemas/bin/validate-avatar.mjs +486 -0
- package/vendor/packages/schemas/bin/validate-captions.mjs +316 -0
- package/vendor/packages/schemas/bin/validate-connections.mjs +295 -0
- package/vendor/packages/schemas/bin/validate-edit.mjs +766 -0
- package/vendor/packages/schemas/bin/validate-intake.mjs +185 -0
- package/vendor/packages/schemas/bin/validate-interpretation.mjs +515 -0
- package/vendor/packages/schemas/bin/validate-plan-comments.mjs +170 -0
- package/vendor/packages/schemas/bin/validate-plan.mjs +365 -0
- package/vendor/packages/schemas/bin/validate-recipe.mjs +267 -0
- package/vendor/packages/schemas/bin/validate-research-plan.mjs +510 -0
- package/vendor/packages/schemas/bin/validate-review.mjs +427 -0
- package/vendor/packages/schemas/captions.schema.json +141 -0
- package/vendor/packages/schemas/connections.schema.json +153 -0
- package/vendor/packages/schemas/edit.schema.json +437 -0
- package/vendor/packages/schemas/examples/analysis-person-matte-valid/analysis.json +18 -0
- package/vendor/packages/schemas/examples/captions-text-style-background-mode-invalid/captions.json +18 -0
- package/vendor/packages/schemas/examples/captions-text-style-color-non-hex-invalid/captions.json +14 -0
- package/vendor/packages/schemas/examples/captions-text-style-default-only-valid/captions.json +27 -0
- package/vendor/packages/schemas/examples/captions-text-style-omitted-valid/captions.json +11 -0
- package/vendor/packages/schemas/examples/captions-text-style-opacity-out-of-range-invalid/captions.json +8 -0
- package/vendor/packages/schemas/examples/captions-text-style-record-override-valid/captions.json +27 -0
- package/vendor/packages/schemas/examples/captions-text-style-size-non-positive-invalid/captions.json +14 -0
- package/vendor/packages/schemas/examples/captions-text-style-zone-invalid/captions.json +16 -0
- package/vendor/packages/schemas/examples/connections-v0-invalid-auth/connections.json +32 -0
- package/vendor/packages/schemas/examples/connections-v0-memory-valid/connections.json +42 -0
- package/vendor/packages/schemas/examples/edit-beats-duplicate-id/edit.json +11 -0
- package/vendor/packages/schemas/examples/edit-beats-invalid-id/edit.json +10 -0
- package/vendor/packages/schemas/examples/edit-beats-missing-kind/edit.json +10 -0
- package/vendor/packages/schemas/examples/edit-beats-strength-out-of-range/edit.json +11 -0
- package/vendor/packages/schemas/examples/edit-beats-v0-src-present/edit.json +10 -0
- package/vendor/packages/schemas/examples/edit-beats-v0-valid/edit.json +29 -0
- package/vendor/packages/schemas/examples/edit-beats-v1-src-missing-reference/edit.json +14 -0
- package/vendor/packages/schemas/examples/edit-beats-v1-valid/edit.json +37 -0
- package/vendor/packages/schemas/examples/edit-bgm-ducking-invalid/edit.json +10 -0
- package/vendor/packages/schemas/examples/edit-bgm-fade-invalid/edit.json +10 -0
- package/vendor/packages/schemas/examples/edit-bgm-fade-valid/edit.json +10 -0
- package/vendor/packages/schemas/examples/edit-bgm-in-invalid/edit.json +10 -0
- package/vendor/packages/schemas/examples/edit-bgm-in-valid/edit.json +10 -0
- package/vendor/packages/schemas/examples/edit-bgm-missing-path/edit.json +10 -0
- package/vendor/packages/schemas/examples/edit-bgm-null-valid/edit.json +11 -0
- package/vendor/packages/schemas/examples/edit-bgm-sfx-gain-out-of-range/edit.json +11 -0
- package/vendor/packages/schemas/examples/edit-bgm-sfx-valid/edit.json +23 -0
- package/vendor/packages/schemas/examples/edit-chroma-key-invalid/edit.json +7 -0
- package/vendor/packages/schemas/examples/edit-cuts-at-negative-invalid/edit.json +7 -0
- package/vendor/packages/schemas/examples/edit-cuts-at-track-valid/edit.json +20 -0
- package/vendor/packages/schemas/examples/edit-cuts-opacity-out-of-range-invalid/edit.json +16 -0
- package/vendor/packages/schemas/examples/edit-cuts-track-invalid/edit.json +7 -0
- package/vendor/packages/schemas/examples/edit-cuts-transform-full-valid/edit.json +17 -0
- package/vendor/packages/schemas/examples/edit-cuts-transform-omitted-valid/edit.json +9 -0
- package/vendor/packages/schemas/examples/edit-cuts-transform-partial-valid/edit.json +16 -0
- package/vendor/packages/schemas/examples/edit-cuts-transform-rotate-invalid/edit.json +16 -0
- package/vendor/packages/schemas/examples/edit-cuts-transform-scale-invalid/edit.json +16 -0
- package/vendor/packages/schemas/examples/edit-cuts-transform-unknown-key-invalid/edit.json +16 -0
- package/vendor/packages/schemas/examples/edit-direction-intensity-negative/edit.json +8 -0
- package/vendor/packages/schemas/examples/edit-direction-intensity-not-integer/edit.json +8 -0
- package/vendor/packages/schemas/examples/edit-direction-intensity-out-of-range/edit.json +8 -0
- package/vendor/packages/schemas/examples/edit-direction-missing-preset/edit.json +8 -0
- package/vendor/packages/schemas/examples/edit-direction-overrides-array/edit.json +8 -0
- package/vendor/packages/schemas/examples/edit-direction-preset-only/edit.json +8 -0
- package/vendor/packages/schemas/examples/edit-direction-valid/edit.json +8 -0
- package/vendor/packages/schemas/examples/edit-emphasis-words-empty-word/edit.json +10 -0
- package/vendor/packages/schemas/examples/edit-emphasis-words-invalid-id/edit.json +10 -0
- package/vendor/packages/schemas/examples/edit-emphasis-words-missing-emotion/edit.json +10 -0
- package/vendor/packages/schemas/examples/edit-emphasis-words-range-invalid/edit.json +11 -0
- package/vendor/packages/schemas/examples/edit-emphasis-words-v0-src-present/edit.json +10 -0
- package/vendor/packages/schemas/examples/edit-emphasis-words-v0-valid/edit.json +32 -0
- package/vendor/packages/schemas/examples/edit-emphasis-words-v1-valid/edit.json +39 -0
- package/vendor/packages/schemas/examples/edit-layers-invalid-bad-blend/edit.json +17 -0
- package/vendor/packages/schemas/examples/edit-layers-invalid-chroma-key-on-baked/edit.json +17 -0
- package/vendor/packages/schemas/examples/edit-layers-invalid-duplicate-id/edit.json +11 -0
- package/vendor/packages/schemas/examples/edit-layers-track-invalid/edit.json +8 -0
- package/vendor/packages/schemas/examples/edit-layers-valid/edit.json +31 -0
- package/vendor/packages/schemas/examples/edit-look-invalid/edit.json +7 -0
- package/vendor/packages/schemas/examples/edit-master-invalid/edit.json +8 -0
- package/vendor/packages/schemas/examples/edit-narration-gain-out-of-range/edit.json +18 -0
- package/vendor/packages/schemas/examples/edit-narration-invalid-id/edit.json +17 -0
- package/vendor/packages/schemas/examples/edit-narration-missing-provenance/edit.json +16 -0
- package/vendor/packages/schemas/examples/edit-narration-valid/edit.json +36 -0
- package/vendor/packages/schemas/examples/edit-narration-voicevox-missing-credit/edit.json +20 -0
- package/vendor/packages/schemas/examples/edit-render-basics-valid/edit.json +22 -0
- package/vendor/packages/schemas/examples/edit-sfx-in-invalid/edit.json +10 -0
- package/vendor/packages/schemas/examples/edit-sfx-in-out-valid/edit.json +10 -0
- package/vendor/packages/schemas/examples/edit-sfx-out-invalid/edit.json +10 -0
- package/vendor/packages/schemas/examples/edit-sfx-out-type-invalid/edit.json +10 -0
- package/vendor/packages/schemas/examples/edit-sfx-t-invalid/edit.json +10 -0
- package/vendor/packages/schemas/examples/edit-sfx-track-invalid/edit.json +8 -0
- package/vendor/packages/schemas/examples/edit-speed-invalid/edit.json +7 -0
- package/vendor/packages/schemas/examples/edit-timeline-declared-valid/edit.json +14 -0
- package/vendor/packages/schemas/examples/edit-timeline-duplicate-id-invalid/edit.json +13 -0
- package/vendor/packages/schemas/examples/edit-timeline-interleaved-valid/edit.json +22 -0
- package/vendor/packages/schemas/examples/edit-timeline-omitted-valid/edit.json +7 -0
- package/vendor/packages/schemas/examples/edit-timeline-ref-invalid/edit.json +13 -0
- package/vendor/packages/schemas/examples/edit-tracks-section-invalid/edit.json +8 -0
- package/vendor/packages/schemas/examples/edit-tracks-section-valid/edit.json +13 -0
- package/vendor/packages/schemas/examples/edit-transition-invalid/edit.json +10 -0
- package/vendor/packages/schemas/examples/edit-v0-sample/edit.json +27 -0
- package/vendor/packages/schemas/examples/edit-v0-sample/overlays/cap-a.html +17 -0
- package/vendor/packages/schemas/examples/edit-v0-sample/overlays/cap-b.html +17 -0
- package/vendor/packages/schemas/examples/edit-v1-bgm-sfx-valid/edit.json +13 -0
- package/vendor/packages/schemas/examples/edit-v1-sample/edit.json +14 -0
- package/vendor/packages/schemas/examples/plan-comments-v0-sample/plan-comments.json +19 -0
- package/vendor/packages/schemas/examples/plan-v0-sample/plan.json +39 -0
- package/vendor/packages/schemas/examples/recipe-v0-sample/product-demo-quick-cuts.json +23 -0
- package/vendor/packages/schemas/examples/review-v1-sample/review.json +11 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-avatar-md-136-lines/AVATAR.md +159 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-avatar-md-136-lines/avatar.json +22 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-avatar-md-136-lines/renditions/2d-bustup/happy.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-avatar-md-136-lines/renditions/2d-bustup/neutral-half.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-avatar-md-136-lines/renditions/2d-bustup/neutral-open.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-avatar-md-136-lines/renditions/2d-bustup/neutral.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-avatar-md-136-lines/renditions/2d-bustup/rendition.json +18 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-avatar-md-136-lines/renditions/2d-fullbody/happy.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-avatar-md-136-lines/renditions/2d-fullbody/neutral-half.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-avatar-md-136-lines/renditions/2d-fullbody/neutral-open.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-avatar-md-136-lines/renditions/2d-fullbody/neutral.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-avatar-md-136-lines/renditions/2d-fullbody/rendition.json +18 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-default-role/AVATAR.md +30 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-default-role/avatar.json +22 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-default-role/renditions/2d-bustup/happy.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-default-role/renditions/2d-bustup/neutral-half.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-default-role/renditions/2d-bustup/neutral-open.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-default-role/renditions/2d-bustup/neutral.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-default-role/renditions/2d-bustup/rendition.json +18 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-default-role/renditions/2d-fullbody/happy.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-default-role/renditions/2d-fullbody/neutral-half.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-default-role/renditions/2d-fullbody/neutral-open.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-default-role/renditions/2d-fullbody/neutral.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-default-role/renditions/2d-fullbody/rendition.json +18 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-energy-out-of-range/AVATAR.md +30 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-energy-out-of-range/avatar.json +22 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-energy-out-of-range/renditions/2d-bustup/happy.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-energy-out-of-range/renditions/2d-bustup/neutral-half.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-energy-out-of-range/renditions/2d-bustup/neutral-open.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-energy-out-of-range/renditions/2d-bustup/neutral.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-energy-out-of-range/renditions/2d-bustup/rendition.json +18 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-energy-out-of-range/renditions/2d-fullbody/happy.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-energy-out-of-range/renditions/2d-fullbody/neutral-half.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-energy-out-of-range/renditions/2d-fullbody/neutral-open.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-energy-out-of-range/renditions/2d-fullbody/neutral.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-energy-out-of-range/renditions/2d-fullbody/rendition.json +18 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-missing-asset/AVATAR.md +30 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-missing-asset/avatar.json +22 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-missing-asset/renditions/2d-bustup/neutral-half.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-missing-asset/renditions/2d-bustup/neutral-open.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-missing-asset/renditions/2d-bustup/neutral.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-missing-asset/renditions/2d-bustup/rendition.json +18 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-missing-asset/renditions/2d-fullbody/happy.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-missing-asset/renditions/2d-fullbody/neutral-half.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-missing-asset/renditions/2d-fullbody/neutral-open.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-missing-asset/renditions/2d-fullbody/neutral.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-missing-asset/renditions/2d-fullbody/rendition.json +18 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-missing-rights/AVATAR.md +30 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-missing-rights/avatar.json +21 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-missing-rights/renditions/2d-bustup/happy.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-missing-rights/renditions/2d-bustup/neutral-half.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-missing-rights/renditions/2d-bustup/neutral-open.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-missing-rights/renditions/2d-bustup/neutral.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-missing-rights/renditions/2d-bustup/rendition.json +18 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-missing-rights/renditions/2d-fullbody/happy.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-missing-rights/renditions/2d-fullbody/neutral-half.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-missing-rights/renditions/2d-fullbody/neutral-open.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-missing-rights/renditions/2d-fullbody/neutral.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-missing-rights/renditions/2d-fullbody/rendition.json +18 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-no-avatar-json/AVATAR.md +30 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-person-in-catalog/catalog/avatars/impostor/AVATAR.md +30 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-person-in-catalog/catalog/avatars/impostor/avatar.json +22 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-person-in-catalog/catalog/avatars/impostor/renditions/2d-bustup/happy.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-person-in-catalog/catalog/avatars/impostor/renditions/2d-bustup/neutral-half.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-person-in-catalog/catalog/avatars/impostor/renditions/2d-bustup/neutral-open.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-person-in-catalog/catalog/avatars/impostor/renditions/2d-bustup/neutral.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-person-in-catalog/catalog/avatars/impostor/renditions/2d-bustup/rendition.json +18 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-person-in-catalog/catalog/avatars/impostor/renditions/2d-fullbody/happy.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-person-in-catalog/catalog/avatars/impostor/renditions/2d-fullbody/neutral-half.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-person-in-catalog/catalog/avatars/impostor/renditions/2d-fullbody/neutral-open.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-person-in-catalog/catalog/avatars/impostor/renditions/2d-fullbody/neutral.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-person-in-catalog/catalog/avatars/impostor/renditions/2d-fullbody/rendition.json +18 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-person-sellable/AVATAR.md +30 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-person-sellable/avatar.json +22 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-person-sellable/renditions/2d-bustup/happy.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-person-sellable/renditions/2d-bustup/neutral-half.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-person-sellable/renditions/2d-bustup/neutral-open.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-person-sellable/renditions/2d-bustup/neutral.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-person-sellable/renditions/2d-bustup/rendition.json +18 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-person-sellable/renditions/2d-fullbody/happy.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-person-sellable/renditions/2d-fullbody/neutral-half.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-person-sellable/renditions/2d-fullbody/neutral-open.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-person-sellable/renditions/2d-fullbody/neutral.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/invalid-person-sellable/renditions/2d-fullbody/rendition.json +18 -0
- package/vendor/packages/schemas/fixtures/avatar/unsupported-version/AVATAR.md +30 -0
- package/vendor/packages/schemas/fixtures/avatar/unsupported-version/avatar.json +22 -0
- package/vendor/packages/schemas/fixtures/avatar/unsupported-version/renditions/2d-bustup/happy.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/unsupported-version/renditions/2d-bustup/neutral-half.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/unsupported-version/renditions/2d-bustup/neutral-open.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/unsupported-version/renditions/2d-bustup/neutral.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/unsupported-version/renditions/2d-bustup/rendition.json +18 -0
- package/vendor/packages/schemas/fixtures/avatar/unsupported-version/renditions/2d-fullbody/happy.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/unsupported-version/renditions/2d-fullbody/neutral-half.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/unsupported-version/renditions/2d-fullbody/neutral-open.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/unsupported-version/renditions/2d-fullbody/neutral.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/unsupported-version/renditions/2d-fullbody/rendition.json +18 -0
- package/vendor/packages/schemas/fixtures/avatar/valid/AVATAR.md +30 -0
- package/vendor/packages/schemas/fixtures/avatar/valid/avatar.json +22 -0
- package/vendor/packages/schemas/fixtures/avatar/valid/renditions/2d-bustup/happy.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/valid/renditions/2d-bustup/neutral-half.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/valid/renditions/2d-bustup/neutral-open.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/valid/renditions/2d-bustup/neutral.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/valid/renditions/2d-bustup/rendition.json +18 -0
- package/vendor/packages/schemas/fixtures/avatar/valid/renditions/2d-fullbody/happy.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/valid/renditions/2d-fullbody/neutral-half.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/valid/renditions/2d-fullbody/neutral-open.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/valid/renditions/2d-fullbody/neutral.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/valid/renditions/2d-fullbody/rendition.json +18 -0
- package/vendor/packages/schemas/fixtures/avatar/valid-unknown-fields/AVATAR.md +30 -0
- package/vendor/packages/schemas/fixtures/avatar/valid-unknown-fields/avatar.json +23 -0
- package/vendor/packages/schemas/fixtures/avatar/valid-unknown-fields/renditions/2d-bustup/happy.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/valid-unknown-fields/renditions/2d-bustup/neutral-half.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/valid-unknown-fields/renditions/2d-bustup/neutral-open.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/valid-unknown-fields/renditions/2d-bustup/neutral.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/valid-unknown-fields/renditions/2d-bustup/rendition.json +18 -0
- package/vendor/packages/schemas/fixtures/avatar/valid-unknown-fields/renditions/2d-fullbody/happy.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/valid-unknown-fields/renditions/2d-fullbody/neutral-half.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/valid-unknown-fields/renditions/2d-fullbody/neutral-open.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/valid-unknown-fields/renditions/2d-fullbody/neutral.png +0 -0
- package/vendor/packages/schemas/fixtures/avatar/valid-unknown-fields/renditions/2d-fullbody/rendition.json +18 -0
- package/vendor/packages/schemas/fixtures/avatar/valid-voice-only/AVATAR.md +28 -0
- package/vendor/packages/schemas/fixtures/avatar/valid-voice-only/avatar.json +19 -0
- package/vendor/packages/schemas/fixtures/intake/invalid-duplicate-task/intake.json +8 -0
- package/vendor/packages/schemas/fixtures/intake/invalid-missing-submitted-at/intake.json +8 -0
- package/vendor/packages/schemas/fixtures/intake/invalid-target-exclusive/intake.json +8 -0
- package/vendor/packages/schemas/fixtures/intake/invalid-unknown-task/intake.json +8 -0
- package/vendor/packages/schemas/fixtures/intake/valid-draft/intake.json +8 -0
- package/vendor/packages/schemas/fixtures/intake/valid-submitted/intake.json +8 -0
- package/vendor/packages/schemas/fixtures/plan/invalid-bad-confidence-enum/plan.json +15 -0
- package/vendor/packages/schemas/fixtures/plan/invalid-constraint-bad-applies-to/plan.json +18 -0
- package/vendor/packages/schemas/fixtures/plan/invalid-dangling-media-path/plan.json +15 -0
- package/vendor/packages/schemas/fixtures/plan/invalid-duplicate-slot-id/plan.json +25 -0
- package/vendor/packages/schemas/fixtures/plan/invalid-missing-required-field/plan.json +14 -0
- package/vendor/packages/schemas/fixtures/plan/unsupported-version/plan.json +4 -0
- package/vendor/packages/schemas/fixtures/plan/valid/plan.json +40 -0
- package/vendor/packages/schemas/fixtures/plan/valid/scaffold/beat-01.png +1 -0
- package/vendor/packages/schemas/fixtures/plan/valid/scaffold/beat-01.wav +1 -0
- package/vendor/packages/schemas/fixtures/plan/valid/scaffold/broll.mp4 +1 -0
- package/vendor/packages/schemas/fixtures/plan/warns-confidence-gap/plan.json +28 -0
- package/vendor/packages/schemas/fixtures/plan-comments/invalid-bad-pass/plan-comments.json +6 -0
- package/vendor/packages/schemas/fixtures/plan-comments/invalid-bad-target-id-for-index-kind/plan-comments.json +13 -0
- package/vendor/packages/schemas/fixtures/plan-comments/invalid-bad-target-kind/plan-comments.json +13 -0
- package/vendor/packages/schemas/fixtures/plan-comments/invalid-comments-not-array/plan-comments.json +6 -0
- package/vendor/packages/schemas/fixtures/plan-comments/invalid-missing-comment-field/plan-comments.json +12 -0
- package/vendor/packages/schemas/fixtures/plan-comments/invalid-missing-version/plan-comments.json +5 -0
- package/vendor/packages/schemas/fixtures/plan-comments/unsupported-version/plan-comments.json +6 -0
- package/vendor/packages/schemas/fixtures/plan-comments/valid/plan-comments.json +19 -0
- package/vendor/packages/schemas/fixtures/plan-comments/valid-unknown-fields/plan-comments.json +15 -0
- package/vendor/packages/schemas/fixtures/recipe/invalid-bad-aspect/recipe.json +13 -0
- package/vendor/packages/schemas/fixtures/recipe/invalid-bad-confirmed-by/recipe.json +13 -0
- package/vendor/packages/schemas/fixtures/recipe/invalid-bad-name-casing/recipe.json +13 -0
- package/vendor/packages/schemas/fixtures/recipe/invalid-bad-workflow/recipe.json +13 -0
- package/vendor/packages/schemas/fixtures/recipe/invalid-duplicate-overlay-kind/recipe.json +13 -0
- package/vendor/packages/schemas/fixtures/recipe/invalid-empty-confirmed/recipe.json +9 -0
- package/vendor/packages/schemas/fixtures/recipe/invalid-empty-narration/recipe.json +13 -0
- package/vendor/packages/schemas/fixtures/recipe/invalid-missing-version/recipe.json +12 -0
- package/vendor/packages/schemas/fixtures/recipe/invalid-provenance-mismatch/recipe.json +15 -0
- package/vendor/packages/schemas/fixtures/recipe/invalid-source-project-path/recipe.json +13 -0
- package/vendor/packages/schemas/fixtures/recipe/unsupported-version/recipe.json +13 -0
- package/vendor/packages/schemas/fixtures/recipe/valid/recipe.json +15 -0
- package/vendor/packages/schemas/fixtures/recipe/valid-unknown-fields/recipe.json +16 -0
- package/vendor/packages/schemas/fixtures/review/invalid-malformed-canvas-target/review.json +6 -0
- package/vendor/packages/schemas/fixtures/review/invalid-malformed-doc-target/review.json +6 -0
- package/vendor/packages/schemas/fixtures/review/invalid-malformed-image-target/review.json +6 -0
- package/vendor/packages/schemas/fixtures/review/invalid-strokes-bad-space/review.json +6 -0
- package/vendor/packages/schemas/fixtures/review/invalid-strokes-canvas-rect-with-frame/review.json +6 -0
- package/vendor/packages/schemas/fixtures/review/invalid-strokes-image-rect-with-frame/review.json +6 -0
- package/vendor/packages/schemas/fixtures/review/invalid-video-null-sourcet/review.json +6 -0
- package/vendor/packages/schemas/fixtures/review/valid/review.json +8 -0
- package/vendor/packages/schemas/fixtures/review/valid-canvas-target/review.json +7 -0
- package/vendor/packages/schemas/fixtures/review/valid-input-session/review.json +6 -0
- package/vendor/packages/schemas/fixtures/review/valid-strokes/review.json +8 -0
- package/vendor/packages/schemas/intake.schema.json +117 -0
- package/vendor/packages/schemas/interpretation.schema.json +419 -0
- package/vendor/packages/schemas/package.json +18 -0
- package/vendor/packages/schemas/plan-comments.schema.json +52 -0
- package/vendor/packages/schemas/plan.schema.json +129 -0
- package/vendor/packages/schemas/recipe.schema.json +106 -0
- package/vendor/packages/schemas/research-plan.schema.json +230 -0
- package/vendor/packages/schemas/review.schema.json +227 -0
- package/vendor/packages/schemas/test/fixtures/asset/invalid-matched-by/audio/whoosh-transition/meta.json +31 -0
- package/vendor/packages/schemas/test/fixtures/asset/valid-catalog/audio/whoosh-transition/meta.json +31 -0
- package/vendor/packages/schemas/test/fixtures/asset/valid-library/telop/lower-third-clean/fragment.html +139 -0
- package/vendor/packages/schemas/test/fixtures/asset/valid-library/telop/lower-third-clean/meta.json +32 -0
- package/vendor/packages/schemas/test/fixtures/asset/valid-library/telop/lower-third-clean/preview.png +0 -0
- package/vendor/packages/schemas/test/fixtures/interpretation/invalid-analyses-missing-ref/interpretation.json +131 -0
- package/vendor/packages/schemas/test/fixtures/interpretation/invalid-analyses-ref-mismatch/interpretation.json +132 -0
- package/vendor/packages/schemas/test/fixtures/interpretation/invalid-arc-empty-refs/interpretation.json +126 -0
- package/vendor/packages/schemas/test/fixtures/interpretation/invalid-context-missing-interview/interpretation.json +126 -0
- package/vendor/packages/schemas/test/fixtures/interpretation/invalid-context-null-intake/interpretation.json +133 -0
- package/vendor/packages/schemas/test/fixtures/interpretation/invalid-dangling-arc-ref/interpretation.json +132 -0
- package/vendor/packages/schemas/test/fixtures/interpretation/invalid-duplicate-asset-ref/interpretation.json +132 -0
- package/vendor/packages/schemas/test/fixtures/interpretation/invalid-flag-bad-type/interpretation.json +132 -0
- package/vendor/packages/schemas/test/fixtures/interpretation/invalid-flag-missing-evidence/interpretation.json +131 -0
- package/vendor/packages/schemas/test/fixtures/interpretation/invalid-missing-required-field/interpretation.json +131 -0
- package/vendor/packages/schemas/test/fixtures/interpretation/invalid-open-question-answer-present-when-open/interpretation.json +133 -0
- package/vendor/packages/schemas/test/fixtures/interpretation/invalid-open-question-answered-without-answer/interpretation.json +131 -0
- package/vendor/packages/schemas/test/fixtures/interpretation/invalid-relations-dangling-target/interpretation.json +132 -0
- package/vendor/packages/schemas/test/fixtures/interpretation/invalid-relations-self-reference/interpretation.json +132 -0
- package/vendor/packages/schemas/test/fixtures/interpretation/invalid-section-end-before-start/interpretation.json +132 -0
- package/vendor/packages/schemas/test/fixtures/interpretation/invalid-section-mismatched-start-end/interpretation.json +131 -0
- package/vendor/packages/schemas/test/fixtures/interpretation/invalid-unknown-root-field/interpretation.json +133 -0
- package/vendor/packages/schemas/test/fixtures/interpretation/unsupported-version/interpretation.json +132 -0
- package/vendor/packages/schemas/test/fixtures/interpretation/valid/interpretation.json +132 -0
- package/vendor/packages/schemas/test/fixtures/research-plan/invalid-bad-category-enum/research-plan.json +128 -0
- package/vendor/packages/schemas/test/fixtures/research-plan/invalid-dangling-chapter-ref/research-plan.json +128 -0
- package/vendor/packages/schemas/test/fixtures/research-plan/invalid-dangling-shot-list-ref/research-plan.json +128 -0
- package/vendor/packages/schemas/test/fixtures/research-plan/invalid-decided-at-mismatch/research-plan.json +128 -0
- package/vendor/packages/schemas/test/fixtures/research-plan/invalid-duplicate-candidate-id/research-plan.json +128 -0
- package/vendor/packages/schemas/test/fixtures/research-plan/invalid-japan-sns-notes-empty/research-plan.json +128 -0
- package/vendor/packages/schemas/test/fixtures/research-plan/invalid-missing-required-field/research-plan.json +127 -0
- package/vendor/packages/schemas/test/fixtures/research-plan/invalid-selected-missing-candidate/research-plan.json +128 -0
- package/vendor/packages/schemas/test/fixtures/research-plan/invalid-structure-confirmed-mismatch/research-plan.json +128 -0
- package/vendor/packages/schemas/test/fixtures/research-plan/unsupported-version/research-plan.json +128 -0
- package/vendor/packages/schemas/test/fixtures/research-plan/valid/research-plan.json +79 -0
- package/vendor/packages/schemas/test/fixtures/research-plan/warns-empty-sources/research-plan.json +120 -0
- package/vendor/packages/schemas/test/validate-asset.test.mjs +38 -0
- package/vendor/packages/schemas/test/validate-avatar.test.mjs +109 -0
- package/vendor/packages/schemas/test/validate-captions.test.mjs +59 -0
- package/vendor/packages/schemas/test/validate-connections.test.mjs +31 -0
- package/vendor/packages/schemas/test/validate-edit.test.mjs +490 -0
- package/vendor/packages/schemas/test/validate-intake.test.mjs +66 -0
- package/vendor/packages/schemas/test/validate-interpretation.test.mjs +167 -0
- package/vendor/packages/schemas/test/validate-plan-comments.test.mjs +70 -0
- package/vendor/packages/schemas/test/validate-plan.test.mjs +67 -0
- package/vendor/packages/schemas/test/validate-recipe.test.mjs +107 -0
- package/vendor/packages/schemas/test/validate-research-plan.test.mjs +98 -0
- package/vendor/packages/schemas/test/validate-review.test.mjs +102 -0
- package/vendor/skills/.gitkeep +0 -0
- package/vendor/skills/address-review/SKILL.md +84 -0
- package/vendor/skills/address-review/bin/core/review-store.mjs +210 -0
- package/vendor/skills/address-review/bin/list.mjs +198 -0
- package/vendor/skills/address-review/bin/respond.mjs +89 -0
- package/vendor/skills/address-review/dev-fixtures/fixture-project/captions.json +22 -0
- package/vendor/skills/address-review/dev-fixtures/fixture-project/edit.json +12 -0
- package/vendor/skills/address-review/dev-fixtures/fixture-project/review.json +100 -0
- package/vendor/skills/address-review/test/review-store.test.mjs +201 -0
- package/vendor/skills/analyze-footage/SKILL.md +35 -0
- package/vendor/skills/analyze-footage/analysis-json.md +185 -0
- package/vendor/skills/analyze-footage/bin/person-matte/person-matte-helper.swift +343 -0
- package/vendor/skills/analyze-footage/bin/person-matte/person-matte.mjs +415 -0
- package/vendor/skills/analyze-footage/bin/speechanalyzer-helper.swift +138 -0
- package/vendor/skills/analyze-footage/bin/transcribe-cloud.mjs +486 -0
- package/vendor/skills/analyze-footage/bin/transcribe-sa.mjs +189 -0
- package/vendor/skills/analyze-footage/events-and-hooks.md +93 -0
- package/vendor/skills/analyze-footage/keyframes-and-review.md +130 -0
- package/vendor/skills/analyze-footage/media-and-transcript.md +219 -0
- package/vendor/skills/analyze-footage/person-matte.md +121 -0
- package/vendor/skills/analyze-footage/references/akari-data-contract.md +18 -0
- package/vendor/skills/analyze-footage/references/asset.meta.example.json +23 -0
- package/vendor/skills/analyze-footage/test/fixtures/scribe-punctuation-inflation.json +17 -0
- package/vendor/skills/analyze-footage/test/normalize-scribe.test.mjs +76 -0
- package/vendor/skills/analyze-footage/workflow.md +95 -0
- package/vendor/skills/analyze-project/SKILL.md +58 -0
- package/vendor/skills/analyze-project/collect.md +51 -0
- package/vendor/skills/analyze-project/decision-record.md +55 -0
- package/vendor/skills/analyze-project/interpretation.md +128 -0
- package/vendor/skills/analyze-project/interview.md +66 -0
- package/vendor/skills/analyze-project/references/interpretation-shape.md +42 -0
- package/vendor/skills/analyze-project/references/open-questions-examples.md +35 -0
- package/vendor/skills/analyze-project/validate-and-render.md +66 -0
- package/vendor/skills/bake-3d/SKILL.md +78 -0
- package/vendor/skills/compile-review-session/SKILL.md +78 -0
- package/vendor/skills/compile-review-session/bin/compile-review-session.mjs +799 -0
- package/vendor/skills/compile-review-session/bin/core/canvas-compiler.mjs +105 -0
- package/vendor/skills/compile-review-session/bin/core/compiler.mjs +221 -0
- package/vendor/skills/compile-review-session/bin/core/review-store.mjs +74 -0
- package/vendor/skills/compile-review-session/bin/core/time-mapping.mjs +370 -0
- package/vendor/skills/compile-review-session/bin/core/transcription.mjs +721 -0
- package/vendor/skills/compile-review-session/compilation-rules.md +98 -0
- package/vendor/skills/compile-review-session/dev-fixtures/README.md +24 -0
- package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0001/audio.wav +0 -0
- package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0001/edit.snapshot.json +12 -0
- package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0001/events.jsonl +2 -0
- package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0001/session.json +11 -0
- package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0002/audio.wav +0 -0
- package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0002/edit.snapshot.json +12 -0
- package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0002/events.jsonl +5 -0
- package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0002/session.json +11 -0
- package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0003/audio.wav +0 -0
- package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0003/edit.snapshot.json +12 -0
- package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0003/events.jsonl +19 -0
- package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0003/session.json +11 -0
- package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0004/audio.wav +0 -0
- package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0004/edit.snapshot.json +12 -0
- package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0004/events.jsonl +2 -0
- package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0004/session.json +11 -0
- package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0005/session.json +1 -0
- package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0006/audio.wav +0 -0
- package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0006/events.jsonl +2 -0
- package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0006/session.json +11 -0
- package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0007/audio.wav +0 -0
- package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0007/edit.snapshot.json +13 -0
- package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0007/events.jsonl +9 -0
- package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0007/session.json +11 -0
- package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0008/audio.wav +0 -0
- package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0008/edit.snapshot.json +12 -0
- package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0008/events.jsonl +2 -0
- package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0008/session.json +11 -0
- package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review/sessions/s-0008/transcript.json +9 -0
- package/vendor/skills/compile-review-session/dev-fixtures/fixture-project/review.json +7 -0
- package/vendor/skills/compile-review-session/test/canvas-compiler.test.mjs +283 -0
- package/vendor/skills/compile-review-session/test/compiler.test.mjs +458 -0
- package/vendor/skills/create-project/SKILL.md +46 -0
- package/vendor/skills/create-project/bin/create-project.mjs +88 -0
- package/vendor/skills/edit-lint/SKILL.md +73 -0
- package/vendor/skills/edit-plan/SKILL.md +64 -0
- package/vendor/skills/edit-plan/approvals-and-generation.md +106 -0
- package/vendor/skills/edit-plan/avatar-resolution.md +241 -0
- package/vendor/skills/edit-plan/beat-sync.md +545 -0
- package/vendor/skills/edit-plan/beats.md +197 -0
- package/vendor/skills/edit-plan/emphasis-detection.md +366 -0
- package/vendor/skills/edit-plan/execution.md +157 -0
- package/vendor/skills/edit-plan/expression-selection.md +290 -0
- package/vendor/skills/edit-plan/plan-json.md +52 -0
- package/vendor/skills/edit-plan/recipe.md +74 -0
- package/vendor/skills/edit-plan/references/asset.decisions.example.json +12 -0
- package/vendor/skills/edit-plan/references/event.example.json +7 -0
- package/vendor/skills/edit-plan/report-guide.md +192 -0
- package/vendor/skills/edit-plan/workflow.md +108 -0
- package/vendor/skills/generate-narration/SKILL.md +40 -0
- package/vendor/skills/generate-narration/assets/reading-script-v1.md +18 -0
- package/vendor/skills/generate-narration/avatar-voice.md +54 -0
- package/vendor/skills/generate-narration/bin/generate-narration.mjs +572 -0
- package/vendor/skills/generate-narration/engines.md +78 -0
- package/vendor/skills/generate-narration/reading-text.md +36 -0
- package/vendor/skills/generate-narration/voice-profile-setup.md +77 -0
- package/vendor/skills/harvest-asset/SKILL.md +132 -0
- package/vendor/skills/manage-connections/SKILL.md +75 -0
- package/vendor/skills/manage-connections/bin/doctor.mjs +341 -0
- package/vendor/skills/overlay-authoring/3d.md +143 -0
- package/vendor/skills/overlay-authoring/SKILL.md +30 -0
- package/vendor/skills/overlay-authoring/motion.md +58 -0
- package/vendor/skills/overlay-authoring/table.md +41 -0
- package/vendor/skills/overlay-authoring/telop.md +69 -0
- package/vendor/skills/overlay-authoring/text-behind-person.md +224 -0
- package/vendor/skills/overlay-authoring/thumbnail.md +126 -0
- package/vendor/skills/render-cut/SKILL.md +66 -0
- package/vendor/skills/research-plan/SKILL.md +75 -0
- package/vendor/skills/research-plan/competitor.md +50 -0
- package/vendor/skills/research-plan/ideate.md +56 -0
- package/vendor/skills/research-plan/shotlist.md +46 -0
- package/vendor/skills/research-plan/storyboard.md +48 -0
- package/vendor/skills/research-plan/trends.md +33 -0
- package/vendor/skills/setup-audio-library/SKILL.md +93 -0
- package/vendor/skills/setup-audio-library/candidate-list.md +72 -0
- package/vendor/skills/setup-audio-library/drop-folder.md +72 -0
- package/vendor/skills/setup-audio-library/gallery.md +43 -0
- package/vendor/skills/setup-library/SKILL.md +33 -0
- package/vendor/skills/setup-library/fetch-and-validate.md +102 -0
- package/vendor/skills/setup-library/starter-pack.md +55 -0
- package/vendor/skills/setup-library/tools-check.md +83 -0
- package/vendor/skills/verify/SKILL.md +137 -0
- package/vendor/templates/project-default/.akari/cache/.gitkeep +0 -0
- package/vendor/templates/project-default/.akari/connections.json +233 -0
- package/vendor/templates/project-default/.akari/diffs/.gitkeep +1 -0
- package/vendor/templates/project-default/.akari/events/.gitkeep +1 -0
- package/vendor/templates/project-default/.akari/reports/.gitkeep +0 -0
- package/vendor/templates/project-default/.akari/sidecars/.gitkeep +1 -0
- package/vendor/templates/project-default/.akari/work/.gitkeep +0 -0
- package/vendor/templates/project-default/.akari/workflow.json +48 -0
- package/vendor/templates/project-default/.claude/settings.json +15 -0
- package/vendor/templates/project-default/.claude/skills/README.md +26 -0
- package/vendor/templates/project-default/AGENTS.md +49 -0
- package/vendor/templates/project-default/CLAUDE.md +35 -0
- package/vendor/templates/project-default/assets/.gitkeep +1 -0
- package/vendor/templates/project-default/exports/.gitkeep +1 -0
- package/vendor/templates/project-default/planning/.gitkeep +1 -0
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
# 見せ場マーカー(beats)を導出する
|
|
2
|
+
|
|
3
|
+
## 原則
|
|
4
|
+
|
|
5
|
+
`beats[]`(人間向けの呼称は **見せ場マーカー**)は、素材のどこに見せ場があるかという
|
|
6
|
+
**素材固有の事実**を記録する解析結果であり、編集で何を置いたかという結果ではない。
|
|
7
|
+
データの器と検証責務の正は
|
|
8
|
+
[edit.json v1 見せ場マーカー契約](../../docs/contract-2026-07-22-edit-json-v1-beats.md) にある
|
|
9
|
+
(`id` は `^b-\d{4}$` でファイル内一意 / `t` は source 秒 / `kind` は例示 5 種で enum 強制なし /
|
|
10
|
+
`strength` は `[0, 1]` / `basis` は任意 / `src` は v1 のみ)。本リーフはその器へ**何を書くか**、
|
|
11
|
+
すなわち検証済み `analysis.json` から beats を導出する規約を定める。
|
|
12
|
+
|
|
13
|
+
- **入力**は検証済み `analysis.json` の `events`(`hook` / `chapter` / `highlight`)と `transcript`。
|
|
14
|
+
- **根拠のない見せ場を発明しない**。書いたすべての beat は、analysis に対応する event または
|
|
15
|
+
発話を指せなければならない。指せない候補は書かない。
|
|
16
|
+
|
|
17
|
+
## 既定マッピング表
|
|
18
|
+
|
|
19
|
+
| analysis 側 | beats.kind | strength |
|
|
20
|
+
|---|---|---|
|
|
21
|
+
| `hook` event | `hook` | hookScore の値をそのまま |
|
|
22
|
+
| `chapter` event | `turn` | 0.5 既定(章の重要度判断で ±0.2 まで調整可) |
|
|
23
|
+
| `highlight` event **または** transcript のオチ・決め台詞・数値実績の提示(エージェント判断) | `punchline` | highlight 由来: score があればその値、なければ 0.6<br>transcript 由来: 0.5〜0.8。根拠発話を `basis` に引用 |
|
|
24
|
+
| transcript の感情語・登場/種明かし表現(エージェント判断) | `emotion` / `reveal` | 0.5〜0.8。根拠発話を `basis` に引用 |
|
|
25
|
+
|
|
26
|
+
`punchline` の供給源を transcript へ広げたのは、**`highlight` event が 0 件の素材では
|
|
27
|
+
`punchline` が原理的に 1 件も生まれない**という実測が dogfood であったためである。transcript
|
|
28
|
+
由来の `punchline` は `emotion` / `reveal` の行と同型に扱う(0.5〜0.8・根拠発話を `basis` に引用)。
|
|
29
|
+
highlight 由来の strength は従来どおり正規化表に従う。
|
|
30
|
+
|
|
31
|
+
### スキーマとの突き合わせ(正規化)
|
|
32
|
+
|
|
33
|
+
`strength` は `[0, 1]` の連続値だが、[analysis.schema.json](../../packages/schemas/analysis.schema.json)
|
|
34
|
+
の該当フィールドは 1〜5 の整数尺度である。上表の「そのまま」「その値」は、次の決定的な
|
|
35
|
+
正規化を通した値を指す。独自の重み付けを発明せず、この式だけを使う。
|
|
36
|
+
|
|
37
|
+
| 元の値 | 正規化 | 例 |
|
|
38
|
+
|---|---|---|
|
|
39
|
+
| `hook` event の `score`(5 軸 `hook` / `self_contained` / `emotion` / `density` / `punch` を各 1〜5 で採点したオブジェクト。単一のスカラーではない) | `(5 軸合計 − 5) / 20`。小数第 2 位で丸める | 合計 21/25 → `0.8`。hook 候補登録の初期閾値 16/25 → `0.55` |
|
|
40
|
+
| `highlight` event の重要度(Schema 上のフィールド名は `score` ではなく `importance`。1〜5 の整数・任意) | `importance / 5` | `importance` 4 → `0.8`。`importance` 省略時は既定 `0.6` |
|
|
41
|
+
| `chapter` event | 尺度フィールドを持たない | 既定 `0.5`。章の重要度判断で ±0.2 まで調整してよい(調整したら理由を `basis` に書く) |
|
|
42
|
+
|
|
43
|
+
## 座標
|
|
44
|
+
|
|
45
|
+
- `t` は該当 event / 発話の **source 秒をそのまま**使う(timeline 秒へ変換して書かない)。
|
|
46
|
+
区間を持つ event(`hook` / `highlight`)は `start` を `t` にする。
|
|
47
|
+
- マルチソース(v1)では `src` に該当素材の `sources[].id` を入れる。v0(単一 `source`)では
|
|
48
|
+
`src` の存在自体が検証エラーになるため書かない。
|
|
49
|
+
- `overlays[].start` / `audio.bgm` / `audio.sfx` / `audio.narration[].t` が timeline 秒であることと
|
|
50
|
+
対照的である。beats だけは source 秒であることを取り違えない。
|
|
51
|
+
|
|
52
|
+
## basis
|
|
53
|
+
|
|
54
|
+
- 由来を必ず書く(例: `"hookScore 0.82 @ 12.4s"` / `"発話『ついに来ました』"`)。
|
|
55
|
+
- 空の `basis` を量産しない。`basis` は任意フィールドだが、「後から誰が読んでも同じ analysis の
|
|
56
|
+
同じ箇所へ戻れる」ことが見せ場マーカーの価値であり、省略はその価値を捨てることに等しい。
|
|
57
|
+
- 発話を引用するときは transcript の実発言に忠実に書く(要約・言い換えをしない)。
|
|
58
|
+
|
|
59
|
+
## v0 導出段のガードレール(下限と根拠だけ)
|
|
60
|
+
|
|
61
|
+
導出段で課すのは次の 2 つだけである(D3 のツマミ導入までの暫定。素材ジャンルによる調整は
|
|
62
|
+
ツマミ側の仕事であり、ここで勝手に緩めない)。
|
|
63
|
+
|
|
64
|
+
- **`strength < 0.5` は書かない**(下限)
|
|
65
|
+
- **根拠必須**(§basis。analysis の event または発話を指せない候補は書かない)
|
|
66
|
+
|
|
67
|
+
下限を割る候補は「不採用候補」として編集判断レポート(現行運用では
|
|
68
|
+
[decision-log.md](report-guide.md#decision_log) への追記)に残し、`beats` には書かない。
|
|
69
|
+
黙って捨てない・黙って詰め込まないの両方を守る。
|
|
70
|
+
|
|
71
|
+
### 密度は導出段で課さない(発火段へ移した)
|
|
72
|
+
|
|
73
|
+
「60 秒あたり最大 2 件」「同一 kind の連続は 20 秒以上空ける」の 2 つは、以前は本リーフの
|
|
74
|
+
導出段にあったが**削除した**。適用先は発火段([beat-sync.md](beat-sync.md) §評価順の「密度
|
|
75
|
+
ガードレール」)であり、**射影後の timeline 秒**で数える。
|
|
76
|
+
|
|
77
|
+
理由は 2 つある。
|
|
78
|
+
|
|
79
|
+
- `beats` は**素材固有の事実**であり、演出過多の抑制は「素材にいくつ見せ場があるか」ではなく
|
|
80
|
+
「出力にいくつ演出を置くか」の問題である。関心事が違うものを同じ段で混ぜない。
|
|
81
|
+
- 導出段(source 秒)で密度を課すと、**カットで消える区間の beat が密度枠を消費し、生き残る
|
|
82
|
+
べき発火を押し出す**。この取りこぼしは dogfood で実測された。射影後に数えれば、落とした
|
|
83
|
+
区間の見せ場は枠を消費しない。
|
|
84
|
+
|
|
85
|
+
## worked example
|
|
86
|
+
|
|
87
|
+
### 入力(`analysis.json` の断片)
|
|
88
|
+
|
|
89
|
+
```json
|
|
90
|
+
{
|
|
91
|
+
"version": 0,
|
|
92
|
+
"source": "assets/main.mp4",
|
|
93
|
+
"transcript": [
|
|
94
|
+
{ "start": 12.4, "end": 15.8, "text": "ついに来ました、今日はこれを全部お見せします。" },
|
|
95
|
+
{ "start": 96.2, "end": 99.5, "text": "正直、ここまで変わるとは思っていませんでした。" }
|
|
96
|
+
],
|
|
97
|
+
"events": [
|
|
98
|
+
{
|
|
99
|
+
"type": "hook",
|
|
100
|
+
"start": 12.4,
|
|
101
|
+
"end": 24.0,
|
|
102
|
+
"score": { "hook": 5, "self_contained": 4, "emotion": 4, "density": 4, "punch": 4 }
|
|
103
|
+
},
|
|
104
|
+
{ "type": "chapter", "t": 48.0, "title": "セットアップ手順" },
|
|
105
|
+
{
|
|
106
|
+
"type": "highlight",
|
|
107
|
+
"start": 132.0,
|
|
108
|
+
"end": 138.5,
|
|
109
|
+
"quote": "処理時間は 12 分から 90 秒になりました。",
|
|
110
|
+
"reason": "導入効果を数値で提示(数値・実績)",
|
|
111
|
+
"importance": 4
|
|
112
|
+
}
|
|
113
|
+
]
|
|
114
|
+
}
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### 出力(`edit.json` の `beats`)
|
|
118
|
+
|
|
119
|
+
```json
|
|
120
|
+
{
|
|
121
|
+
"beats": [
|
|
122
|
+
{
|
|
123
|
+
"id": "b-0001",
|
|
124
|
+
"t": 12.4,
|
|
125
|
+
"kind": "hook",
|
|
126
|
+
"strength": 0.8,
|
|
127
|
+
"basis": "hook event 12.4–24.0s / 5 軸合計 21/25 → 0.8。発話『ついに来ました、今日はこれを全部お見せします。』"
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
"id": "b-0002",
|
|
131
|
+
"t": 48.0,
|
|
132
|
+
"kind": "turn",
|
|
133
|
+
"strength": 0.7,
|
|
134
|
+
"basis": "chapter event『セットアップ手順』@ 48.0s。本編の入口として既定 0.5 から +0.2"
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
"id": "b-0003",
|
|
138
|
+
"t": 96.2,
|
|
139
|
+
"kind": "emotion",
|
|
140
|
+
"strength": 0.7,
|
|
141
|
+
"basis": "発話『正直、ここまで変わるとは思っていませんでした。』@ 96.2s"
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
"id": "b-0004",
|
|
145
|
+
"t": 132.0,
|
|
146
|
+
"kind": "punchline",
|
|
147
|
+
"strength": 0.8,
|
|
148
|
+
"basis": "highlight event importance 4『処理時間は 12 分から 90 秒になりました。』@ 132.0s"
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
"id": "b-0005",
|
|
152
|
+
"t": 12.4,
|
|
153
|
+
"kind": "emotion",
|
|
154
|
+
"strength": 0.6,
|
|
155
|
+
"basis": "発話『ついに来ました、今日はこれを全部お見せします。』@ 12.4s。冒頭の高揚を hook とは別に感情の山として記録"
|
|
156
|
+
}
|
|
157
|
+
]
|
|
158
|
+
}
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
この `beats` を v0 サンプル(`version: 0` + 単一 `source`)へ足したファイルは
|
|
162
|
+
`validate-edit.mjs` / `edit-lint` の双方を PASS する。v1(`sources[]`)で同じ beats を書く場合は
|
|
163
|
+
各要素へ `"src": "s1"` のように `sources[].id` を足すだけでよく、`t` の値は変えない。
|
|
164
|
+
|
|
165
|
+
### この例で働いたガードレール
|
|
166
|
+
|
|
167
|
+
- `strength < 0.5` 不採用: 5 件とも 0.6 以上で下限を満たす。`chapter` の既定 0.5 は下限ちょうどで
|
|
168
|
+
採用可だが、ここでは章の重要度判断で +0.2 して 0.7 とし、その理由を `basis` に残した。
|
|
169
|
+
- 根拠必須: 5 件とも analysis の event か transcript の発話を指しており、`basis` から同じ箇所へ
|
|
170
|
+
戻れる。指せない「盛り上がりそうな箇所」は 1 件も書いていない。
|
|
171
|
+
- **密度は数えていない**: `b-0005`(12.4s の `emotion`)は同一 60 秒窓に `hook`(12.4s)と
|
|
172
|
+
`turn`(48.0s)があり、旧規則(導出段の 60 秒 2 件)なら不採用だった候補である。改訂後は
|
|
173
|
+
下限と根拠を満たす限り**素材の事実として書く**。演出過多の抑制は発火段が担い、この beat は
|
|
174
|
+
[beat-sync.md](beat-sync.md) の worked example で強度ゲートに落ちて無音の見せ場になる。
|
|
175
|
+
- **不採用候補**: 下限 0.5 を割る候補(例: 相槌・言い淀みだけを根拠にした `emotion` 候補)は
|
|
176
|
+
`beats` に書かず、`decision-log.md` に不採用候補として残す。
|
|
177
|
+
|
|
178
|
+
## 検証
|
|
179
|
+
|
|
180
|
+
書いた beats は既存の検証手順([execution.md](execution.md) §4 の
|
|
181
|
+
[edit-lint](../edit-lint/SKILL.md) 実行)で `edit.json` ごと検証する。edit-lint は `beats[]` の
|
|
182
|
+
構造・`id` の一意性・`src` の参照整合をエラーとして弾き、`beats` の不在はエラーにしない。
|
|
183
|
+
|
|
184
|
+
## よくある間違い
|
|
185
|
+
|
|
186
|
+
- `t` に timeline 秒(cut 連結後の時刻)を書く。beats だけは source 秒である。
|
|
187
|
+
- v0 の edit.json に `src` を書く(参照先が定義できないため検証エラー)。
|
|
188
|
+
- hook の 5 軸スコアをスカラーだと思い込み、1〜5 の整数をそのまま `strength` に入れる(範囲外)。
|
|
189
|
+
- 根拠の指せない「盛り上がりそうな箇所」を beats に足す。
|
|
190
|
+
- `basis` を空にする、または「重要」「盛り上がり」のような由来を復元できない語で埋める。
|
|
191
|
+
- 下限 0.5 を割る候補を黙って捨て、不採用候補として記録しない。
|
|
192
|
+
- 導出段で密度(60 秒あたり 2 件・同一 kind の 20 秒間隔)を課して beats を間引く。密度は発火段
|
|
193
|
+
([beat-sync.md](beat-sync.md))の関心事であり、**射影後の timeline 秒**で数える。source 秒で
|
|
194
|
+
数えると、カットで消える区間の beat が枠を消費して生き残るべき発火を押し出す。
|
|
195
|
+
- `highlight` event が 0 件だからと `punchline` を 1 件も書かずに終える(transcript のオチ・
|
|
196
|
+
決め台詞・数値実績の提示も供給源である)。
|
|
197
|
+
- `id` を連番以外(`b-1` / `beat-0001` 等)で振る。`^b-\d{4}$` の 4 桁ゼロ埋めである。
|
|
@@ -0,0 +1,366 @@
|
|
|
1
|
+
# 語レベル演出(emphasis_words)を導出する
|
|
2
|
+
|
|
3
|
+
## 原則
|
|
4
|
+
|
|
5
|
+
`emphasis_words[]`(人間向けの呼称は **語レベル演出**)は、素材のどの語を演出の対象にするかを
|
|
6
|
+
記録する解析結果である。データの器と検証責務の正は
|
|
7
|
+
[edit.json v1 語レベル演出契約](../../docs/contract-2026-07-23-edit-json-v1-emphasis-words.md) にある
|
|
8
|
+
(`id` は `^e-\d{4}$` でファイル内一意 / `t_start` / `t_end` は source 秒で `t_end > t_start` /
|
|
9
|
+
`word` は transcript の実表記 / `emotion` は例示 6 値で enum 強制なし / `style_hint` は任意の提案 /
|
|
10
|
+
`src` は v1 のみ)。本リーフはその器へ**どの語を選ぶか**、すなわち検証済み `analysis.json` の
|
|
11
|
+
word-level タイムスタンプから emphasis_words を導出する規約を定める。
|
|
12
|
+
|
|
13
|
+
- **入力**は検証済み `analysis.json` の `transcript[].words`([analysis.schema.json](../../packages/schemas/analysis.schema.json)
|
|
14
|
+
の `$defs/word` = `start` / `end` / `text`)。
|
|
15
|
+
- **根拠のない強調を発明しない**。書いたすべての語は、`words` の実要素を 1 つ指せなければならない。
|
|
16
|
+
指せない候補は書かない([beats.md](beats.md) の「根拠のない見せ場を発明しない」と同じ規律)。
|
|
17
|
+
- **語レベル演出は「感情・主張の瞬間」の第一候補の手段**である
|
|
18
|
+
([expression-selection.md](expression-selection.md) の意味 → 手段の対応表)。手段として選ばれて
|
|
19
|
+
いないシーンで語だけ光らせない。
|
|
20
|
+
|
|
21
|
+
## 入力と対象 tier(2026-07-23 実測に基づく確定事項)
|
|
22
|
+
|
|
23
|
+
`transcript[].words` を出せる STT tier は複数あるが、**語照合の成否は tier で分かれる**。次は
|
|
24
|
+
2026-07-23 の 4 tier 実測(同一素材 45 秒・日本語独話)で確定した事項であり、推測ではない。
|
|
25
|
+
|
|
26
|
+
- **whisper.cpp tier の `words` では語照合をしない。** 規約どおりの正規化を通しても
|
|
27
|
+
`words[]` の連結が `segment.text` と一致しない(171 → 160 文字・**11 文字欠落 = 6.4%**)。
|
|
28
|
+
0 秒長 token を規約の「`end > start` を保てない word は捨てる」で落とすため、「後」「な」「つ」等の
|
|
29
|
+
1 文字が構造的に消える。消えた語を強調対象に選べば `word` と実発話がずれ、契約 §4 の
|
|
30
|
+
「transcript の実表記に忠実」を満たせない。
|
|
31
|
+
- **`words` が無い素材・連結が `segment.text` と一致しない素材では `emphasis_words` を書かない。**
|
|
32
|
+
導出の前に「該当セグメントの `words[].text` を順に連結したものが `segment.text` と一致するか」を
|
|
33
|
+
確認し、一致しなければその素材は**語レベル演出の対象外**とする。対象外にしたことと理由を
|
|
34
|
+
編集判断レポート([decision-log.md](report-guide.md#decision_log))へ 1 行残す。黙って空にしない。
|
|
35
|
+
- **語頭の早出しは実測で存在するが、時刻は補正しない。** ポーズ直後の語頭は tier により最大
|
|
36
|
+
**-0.92 秒**(実際の発声開始より 0.92 秒早い)ずれる実測がある。誤差の符号は一貫して負で、
|
|
37
|
+
外れるのはすべて「直前にポーズまたは長い鼻音がある語頭」である。それでも `t_start` / `t_end` は
|
|
38
|
+
**`words` の実測値をそのまま写す**(契約 §4「語の中間で発明しない」)。表示をどう合わせるか
|
|
39
|
+
(語頭スナップ・オフセット・先読み)は**描画側の関心事**であり、本リーフはデータ側で先回りしない。
|
|
40
|
+
時刻を導出段で動かすと、ずれの原因が認識器にあるのか描画側にあるのか切り分けられなくなる。
|
|
41
|
+
|
|
42
|
+
## 選定規則
|
|
43
|
+
|
|
44
|
+
### 1. 候補の絞り込み
|
|
45
|
+
|
|
46
|
+
候補は次の 4 種に限る。
|
|
47
|
+
|
|
48
|
+
| 種別 | 例 |
|
|
49
|
+
|---|---|
|
|
50
|
+
| 感情表現 | 「やばい」「うれしい」「しんどかった」 |
|
|
51
|
+
| 強い形容・副詞 | 「最高」「完全に」「圧倒的に」 |
|
|
52
|
+
| 決め台詞の核 | オチ・結論の中心となる 1 語 |
|
|
53
|
+
| 数値実績の核 | 「90 秒」「3 倍」 |
|
|
54
|
+
|
|
55
|
+
**フィラー・接続詞・助詞は選ばない**(「えー」「あの」「で」「が」「は」)。文全体の意味を担って
|
|
56
|
+
いない語を光らせても、視聴者の注意はどこにも向かない。
|
|
57
|
+
|
|
58
|
+
### 2. 見せ場連動を優先する
|
|
59
|
+
|
|
60
|
+
**`beats[]` の `emotion` / `punchline` / `reveal` の ±5 秒内にある候補を最優先する。**
|
|
61
|
+
③語レベルは②見せ場と同期する、が演出文法の原則であり、見せ場から離れた場所で語だけが跳ねると
|
|
62
|
+
演出の主従が壊れる。
|
|
63
|
+
|
|
64
|
+
- 距離は **source 秒**で測る(`beats[].t` も `emphasis_words[].t_start` も source 秒である)。
|
|
65
|
+
- 優先の対象は `emotion` / `punchline` / `reveal` の 3 種だけである。`hook` / `turn` は
|
|
66
|
+
区間・章の入口を指すマーカーであり、語レベルの同期先ではない。
|
|
67
|
+
- 枠(§3 の密度)が余ったときに限り、見せ場外の候補を採ってよい。その場合も候補は §1 の 4 種に限る。
|
|
68
|
+
|
|
69
|
+
### 3. 密度既定
|
|
70
|
+
|
|
71
|
+
- **60 秒あたり最大 3 語**
|
|
72
|
+
- **同一文(`transcript` の 1 セグメント)内 1 語**
|
|
73
|
+
|
|
74
|
+
過多は演出をつぶす。同一文に候補が複数あるときは §2 の距離が近い方を採り、残りは不採用候補として
|
|
75
|
+
記録する(§根拠の記録)。
|
|
76
|
+
|
|
77
|
+
> **席(写像は定義しない)**: `direction { preset, intensity }`([beat-sync.md](beat-sync.md))に
|
|
78
|
+
> よる密度スケールの席は将来開くが、本リーフは写像を定義しない。現時点では上の既定値を固定で使う。
|
|
79
|
+
|
|
80
|
+
## emotion の割当
|
|
81
|
+
|
|
82
|
+
`emotion` には `joy` / `pain` / `surprise` / `anger` / `sadness` を割り当て、**判断に迷う強調は
|
|
83
|
+
`emphasis`** にする(契約 §2 の例示 6 値。enum 強制はされないが、語彙を勝手に増やさない)。
|
|
84
|
+
|
|
85
|
+
**語義でなく文脈で決める。** 同じ語が文脈によって違う感情になる。
|
|
86
|
+
|
|
87
|
+
| 発話(文脈) | 対象語 | `emotion` | 理由 |
|
|
88
|
+
|---|---|---|---|
|
|
89
|
+
| 「うわ、やばい、これ完全に想定外です。」 | やばい | `surprise` | 直後が「想定外」= 予期しない事態への反応 |
|
|
90
|
+
| 「やばい、これめちゃくちゃ美味しい。」 | やばい | `joy` | 直後が肯定評価 = 快の表明 |
|
|
91
|
+
|
|
92
|
+
語だけを辞書で引いて `emotion` を決めない。決めるのは**同じ文・直前直後の発話**である。
|
|
93
|
+
文脈からどちらとも取れる場合は `emphasis` に落とす(誤った感情を当てるより、感情を主張しない方が
|
|
94
|
+
描画側の劣化が小さい)。
|
|
95
|
+
|
|
96
|
+
## style_hint の目安
|
|
97
|
+
|
|
98
|
+
`style_hint` は**提案止まりであり、描画側に強制しない**(契約 §2 / §6。消費側が無視しても契約違反では
|
|
99
|
+
ない)。迷ったら省略してよい。付けるときの目安は次のとおり。
|
|
100
|
+
|
|
101
|
+
| `emotion` | `style_hint` |
|
|
102
|
+
|---|---|
|
|
103
|
+
| `pain` / `surprise` / `anger` | `one-char-bang` |
|
|
104
|
+
| `joy` / `emphasis` | `size-pulse` |
|
|
105
|
+
| `sadness`・控えめな文脈 | `color-accent` |
|
|
106
|
+
|
|
107
|
+
同じ `emotion` でも、静かな場面・落ち着いたトーンの発話では `color-accent` へ寄せてよい。
|
|
108
|
+
表に無い値を発明しない(未知値はエラーにならないが、描画側が解釈できず無視されるだけである)。
|
|
109
|
+
|
|
110
|
+
## 根拠の記録
|
|
111
|
+
|
|
112
|
+
**`emphasis_words` には `basis` に相当する根拠フィールドが無い**(`beats[]` との違い)。したがって
|
|
113
|
+
選定根拠はデータの外に残す。
|
|
114
|
+
|
|
115
|
+
- 採用した語ごとに、**語・理由・対応する beat または発話**を編集判断レポートの素材計画
|
|
116
|
+
([decision-log.md](report-guide.md#decision_log) の `material` category)へ **1 行ずつ**記録する。
|
|
117
|
+
- 不採用候補(密度で落とした語・見せ場から遠い語・語照合できない素材)も同じ形式で 1 行残す。
|
|
118
|
+
黙って捨てない・黙って詰め込まないの両方を守る([beats.md](beats.md) §v0 導出段のガードレールと同じ)。
|
|
119
|
+
|
|
120
|
+
## worked example
|
|
121
|
+
|
|
122
|
+
### 入力(`analysis.json` の断片)
|
|
123
|
+
|
|
124
|
+
```json
|
|
125
|
+
{
|
|
126
|
+
"version": 0,
|
|
127
|
+
"source": "assets/main.mp4",
|
|
128
|
+
"transcript": [
|
|
129
|
+
{
|
|
130
|
+
"start": 12.05,
|
|
131
|
+
"end": 14.30,
|
|
132
|
+
"text": "正直、最初はうまくいくと思っていませんでした。",
|
|
133
|
+
"words": [
|
|
134
|
+
{ "start": 12.05, "end": 12.48, "text": "正直" },
|
|
135
|
+
{ "start": 12.60, "end": 13.05, "text": "最初は" },
|
|
136
|
+
{ "start": 13.10, "end": 13.72, "text": "うまくいく" },
|
|
137
|
+
{ "start": 13.72, "end": 13.85, "text": "と" },
|
|
138
|
+
{ "start": 13.85, "end": 14.05, "text": "思って" },
|
|
139
|
+
{ "start": 14.05, "end": 14.30, "text": "いませんでした" }
|
|
140
|
+
]
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
"start": 32.10,
|
|
144
|
+
"end": 34.60,
|
|
145
|
+
"text": "ここで問題が起きます。配線が届かない。",
|
|
146
|
+
"words": [
|
|
147
|
+
{ "start": 32.10, "end": 32.48, "text": "ここで" },
|
|
148
|
+
{ "start": 32.48, "end": 32.95, "text": "問題が" },
|
|
149
|
+
{ "start": 32.95, "end": 33.40, "text": "起きます" },
|
|
150
|
+
{ "start": 33.60, "end": 34.05, "text": "配線が" },
|
|
151
|
+
{ "start": 34.05, "end": 34.60, "text": "届かない" }
|
|
152
|
+
]
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
"start": 61.30,
|
|
156
|
+
"end": 63.80,
|
|
157
|
+
"text": "うわ、やばい、これ完全に想定外です。",
|
|
158
|
+
"words": [
|
|
159
|
+
{ "start": 61.30, "end": 61.55, "text": "うわ" },
|
|
160
|
+
{ "start": 61.62, "end": 62.05, "text": "やばい" },
|
|
161
|
+
{ "start": 62.20, "end": 62.42, "text": "これ" },
|
|
162
|
+
{ "start": 62.42, "end": 62.90, "text": "完全に" },
|
|
163
|
+
{ "start": 62.95, "end": 63.55, "text": "想定外" },
|
|
164
|
+
{ "start": 63.55, "end": 63.80, "text": "です" }
|
|
165
|
+
]
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
"start": 96.20,
|
|
169
|
+
"end": 98.20,
|
|
170
|
+
"text": "正直、この結果は最高でした。",
|
|
171
|
+
"words": [
|
|
172
|
+
{ "start": 96.20, "end": 96.62, "text": "正直" },
|
|
173
|
+
{ "start": 96.70, "end": 96.90, "text": "この" },
|
|
174
|
+
{ "start": 96.90, "end": 97.35, "text": "結果は" },
|
|
175
|
+
{ "start": 97.40, "end": 97.92, "text": "最高" },
|
|
176
|
+
{ "start": 97.92, "end": 98.20, "text": "でした" }
|
|
177
|
+
]
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
"start": 132.60,
|
|
181
|
+
"end": 135.30,
|
|
182
|
+
"text": "処理時間は、12 分から 90 秒になりました。",
|
|
183
|
+
"words": [
|
|
184
|
+
{ "start": 132.60, "end": 132.98, "text": "処理" },
|
|
185
|
+
{ "start": 132.98, "end": 133.42, "text": "時間は" },
|
|
186
|
+
{ "start": 133.55, "end": 134.00, "text": "12 分から" },
|
|
187
|
+
{ "start": 134.02, "end": 134.66, "text": "90 秒" },
|
|
188
|
+
{ "start": 134.66, "end": 134.78, "text": "に" },
|
|
189
|
+
{ "start": 134.78, "end": 135.30, "text": "なりました" }
|
|
190
|
+
]
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
"start": 158.40,
|
|
194
|
+
"end": 160.61,
|
|
195
|
+
"text": "終わってみると、ほんとうに、しんどかった。",
|
|
196
|
+
"words": [
|
|
197
|
+
{ "start": 158.40, "end": 158.82, "text": "終わって" },
|
|
198
|
+
{ "start": 158.82, "end": 159.20, "text": "みると" },
|
|
199
|
+
{ "start": 159.35, "end": 159.80, "text": "ほんとうに" },
|
|
200
|
+
{ "start": 159.85, "end": 160.61, "text": "しんどかった" }
|
|
201
|
+
]
|
|
202
|
+
}
|
|
203
|
+
]
|
|
204
|
+
}
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
この素材は SpeechAnalyzer tier で、6 セグメントとも `words[].text` の連結が `segment.text` と
|
|
208
|
+
一致することを確認済みとする(§入力と対象 tier のゲートを通過)。
|
|
209
|
+
|
|
210
|
+
### 同じ `edit.json` に既にある `beats`([beats.md](beats.md) で導出済み)
|
|
211
|
+
|
|
212
|
+
| id | `t` | `kind` | 由来 |
|
|
213
|
+
|---|---|---|---|
|
|
214
|
+
| `b-0001` | 12.05 | `hook` | 冒頭の hook event |
|
|
215
|
+
| `b-0002` | 61.30 | `emotion` | 発話『うわ、やばい、これ完全に想定外です。』 |
|
|
216
|
+
| `b-0003` | 96.20 | `emotion` | 発話『正直、この結果は最高でした。』 |
|
|
217
|
+
| `b-0004` | 132.60 | `punchline` | 数値実績の提示『処理時間は、12 分から 90 秒になりました。』 |
|
|
218
|
+
| `b-0005` | 158.40 | `emotion` | 発話『終わってみると、ほんとうに、しんどかった。』 |
|
|
219
|
+
|
|
220
|
+
### 出力(`edit.json` の `emphasis_words`)
|
|
221
|
+
|
|
222
|
+
```json
|
|
223
|
+
{
|
|
224
|
+
"emphasis_words": [
|
|
225
|
+
{
|
|
226
|
+
"id": "e-0001",
|
|
227
|
+
"t_start": 61.62,
|
|
228
|
+
"t_end": 62.05,
|
|
229
|
+
"word": "やばい",
|
|
230
|
+
"emotion": "surprise",
|
|
231
|
+
"style_hint": "one-char-bang"
|
|
232
|
+
},
|
|
233
|
+
{
|
|
234
|
+
"id": "e-0002",
|
|
235
|
+
"t_start": 97.40,
|
|
236
|
+
"t_end": 97.92,
|
|
237
|
+
"word": "最高",
|
|
238
|
+
"emotion": "joy",
|
|
239
|
+
"style_hint": "size-pulse"
|
|
240
|
+
},
|
|
241
|
+
{
|
|
242
|
+
"id": "e-0003",
|
|
243
|
+
"t_start": 134.02,
|
|
244
|
+
"t_end": 134.66,
|
|
245
|
+
"word": "90 秒",
|
|
246
|
+
"emotion": "emphasis",
|
|
247
|
+
"style_hint": "size-pulse"
|
|
248
|
+
},
|
|
249
|
+
{
|
|
250
|
+
"id": "e-0004",
|
|
251
|
+
"t_start": 159.85,
|
|
252
|
+
"t_end": 160.61,
|
|
253
|
+
"word": "しんどかった",
|
|
254
|
+
"emotion": "pain",
|
|
255
|
+
"style_hint": "one-char-bang"
|
|
256
|
+
}
|
|
257
|
+
]
|
|
258
|
+
}
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
### この例で働いた規則
|
|
262
|
+
|
|
263
|
+
- **時刻はすべて `words` の実測値の写し**である。`e-0003` の `t_start` 134.02 は
|
|
264
|
+
`{ "start": 134.02, "end": 134.66, "text": "90 秒" }` そのものであり、セグメント時刻
|
|
265
|
+
(132.60–135.30)から按分していない。`word` も `"90 秒"` と実表記どおり(半角スペース込み)で、
|
|
266
|
+
`"90秒"` へ正規化していない。
|
|
267
|
+
- **見せ場連動**: 4 件とも `emotion` / `punchline` beat の ±5 秒内にある
|
|
268
|
+
(+0.32 / +1.20 / +1.42 / +1.45 秒)。
|
|
269
|
+
- **emotion は文脈で決めた**: `e-0001` の「やばい」は直後の「想定外」から `surprise`。
|
|
270
|
+
`e-0003` の「90 秒」は感情語ではなく数値実績の核なので `emphasis` に落とした
|
|
271
|
+
(joy と読むこともできるが、発話に快の表明が無いため感情を主張しない側を採った)。
|
|
272
|
+
- **密度**: 4 語 / 160 秒。どの 60 秒窓を取っても最大 2 語(隣接間隔が 35.78 / 36.62 / 25.83 秒)で、
|
|
273
|
+
上限 3 語に収まる。同一文からは 1 語だけを採っている。
|
|
274
|
+
|
|
275
|
+
### 不採用例(1 件)
|
|
276
|
+
|
|
277
|
+
| 語 | 位置 | 不採用の理由 |
|
|
278
|
+
|---|---|---|
|
|
279
|
+
| 想定外 | 62.95–63.55(`b-0002` の +1.65 秒) | ①**同一文内 1 語**(§3)— 同じセグメント『うわ、やばい、これ完全に想定外です。』から既に `e-0001`「やばい」を採用済み。②**見せ場連動を優先**(§2)— 同じ `emotion` beat(61.30)に対し「やばい」は +0.32 秒、「想定外」は +1.65 秒で、beat に近い「やばい」を採る。 |
|
|
280
|
+
|
|
281
|
+
「想定外」は §1 の「強い形容・副詞」に当たる正当な候補であり、規則が無ければ採用され得た。
|
|
282
|
+
規則で落としたので、`decision-log.md` へ不採用候補として残す。
|
|
283
|
+
|
|
284
|
+
参考までに、`e-0001`〜`e-0004` と不採用 1 件を記録した `decision-log.md` の行は次の形になる。
|
|
285
|
+
|
|
286
|
+
```
|
|
287
|
+
2026-07-23T10:12+09:00 | material | 語レベル演出 e-0001 | 採用 | 「やばい」= 感情表現。b-0002(emotion @61.30s)の +0.32 秒。発話『うわ、やばい、これ完全に想定外です。』 | エージェント | Checkpoint 2
|
|
288
|
+
2026-07-23T10:12+09:00 | material | 語レベル演出 e-0002 | 採用 | 「最高」= 強い形容。b-0003(emotion @96.20s)の +1.20 秒。発話『正直、この結果は最高でした。』 | エージェント | Checkpoint 2
|
|
289
|
+
2026-07-23T10:12+09:00 | material | 語レベル演出 e-0003 | 採用 | 「90 秒」= 数値実績の核。b-0004(punchline @132.60s)の +1.42 秒。発話『処理時間は、12 分から 90 秒になりました。』 | エージェント | Checkpoint 2
|
|
290
|
+
2026-07-23T10:12+09:00 | material | 語レベル演出 e-0004 | 採用 | 「しんどかった」= 感情表現。b-0005(emotion @158.40s)の +1.45 秒。発話『終わってみると、ほんとうに、しんどかった。』 | エージェント | Checkpoint 2
|
|
291
|
+
2026-07-23T10:12+09:00 | material | 語レベル演出 不採用「想定外」 | 不採用 | 同一文内 1 語で e-0001「やばい」を採用済み。b-0002 からの距離も +1.65 秒で「やばい」より遠い | エージェント | Checkpoint 2
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
### v0 / v1
|
|
295
|
+
|
|
296
|
+
上の `emphasis_words` を v0 サンプル(`version: 0` + 単一 `source`)へ足したファイルは
|
|
297
|
+
`validate-edit.mjs` / `edit-lint` の双方を PASS する(§検証に実測ログ)。v1(`sources[]`)で同じ
|
|
298
|
+
語を書く場合は各要素へ `"src": "s1"` のように `sources[].id` を足すだけでよく、`t_start` / `t_end` の
|
|
299
|
+
値は変えない。v0 では `src` の存在自体が検証エラーになるため書かない。
|
|
300
|
+
|
|
301
|
+
## 検証
|
|
302
|
+
|
|
303
|
+
書いた `emphasis_words` は既存の検証手順([execution.md](execution.md) §4 の
|
|
304
|
+
[edit-lint](../edit-lint/SKILL.md) 実行)で `edit.json` ごと検証する。edit-lint は
|
|
305
|
+
`emphasis_words[]` の構造・`id` の一意性と形式・`t_end > t_start`・`src` の参照整合をエラーとして
|
|
306
|
+
弾き、`emphasis_words` の不在はエラーにしない。
|
|
307
|
+
|
|
308
|
+
上の worked example を v0 の `edit.json`(`beats` 込み)へ入れて実測した結果は次のとおり
|
|
309
|
+
(2026-07-23、一時ファイルで実行)。
|
|
310
|
+
|
|
311
|
+
```
|
|
312
|
+
$ node packages/schemas/bin/validate-edit.mjs <tmp>/edit.json
|
|
313
|
+
OK: <tmp>/edit.json
|
|
314
|
+
$ node packages/edit-lint/bin/edit-lint.mjs <tmp>/edit.json
|
|
315
|
+
PASS: <tmp>/edit.json (0 findings, 5 skipped)
|
|
316
|
+
|
|
317
|
+
# 同じ語へ "src": "s1" を足しただけの v1 版(sources[] / cuts[].src / beats[].src も v1 化)
|
|
318
|
+
$ node packages/schemas/bin/validate-edit.mjs <tmp>/v1/edit.json
|
|
319
|
+
OK: <tmp>/v1/edit.json
|
|
320
|
+
$ node packages/edit-lint/bin/edit-lint.mjs <tmp>/v1/edit.json
|
|
321
|
+
PASS: <tmp>/v1/edit.json (0 findings, 5 skipped)
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
同じ例で `e-0001.id` を `"e-1"` に、`e-0002.t_end` を `t_start` と同値に壊すと両者ともエラーで落ちる
|
|
325
|
+
(PASS が素通しでないことの確認)。
|
|
326
|
+
|
|
327
|
+
```
|
|
328
|
+
$ node packages/schemas/bin/validate-edit.mjs <tmp>/bad/edit.json
|
|
329
|
+
NG: <tmp>/bad/edit.json
|
|
330
|
+
- emphasis_words[0].id は e- に続く 4 桁の数字である必要があります
|
|
331
|
+
- emphasis_words[1].t_end は t_start より大きい必要があります
|
|
332
|
+
$ node packages/edit-lint/bin/edit-lint.mjs <tmp>/bad/edit.json
|
|
333
|
+
FAIL: <tmp>/bad/edit.json (2 findings, 5 skipped)
|
|
334
|
+
- [error] emphasis_words.id: id must match e- followed by four digits (edit.json#emphasis_words[0])
|
|
335
|
+
- [error] emphasis_words.range: t_end must be greater than t_start (edit.json#emphasis_words[1])
|
|
336
|
+
```
|
|
337
|
+
|
|
338
|
+
`edit-lint` は入力ファイル名が `edit.json` であることを要求する(別名だと `exit 2`)。一時検証でも
|
|
339
|
+
ファイル名は `edit.json` のままディレクトリを分ける。
|
|
340
|
+
|
|
341
|
+
**検証がしないこと**(契約 §7)。ここを検証に頼らない。
|
|
342
|
+
|
|
343
|
+
- `word` / `t_start` / `t_end` を `analysis.json` の word-level タイムスタンプと突き合わせない。
|
|
344
|
+
§入力と対象 tier・§選定規則は**書き手が守る規律**であり、静的検証は素通しする。
|
|
345
|
+
- 時刻が素材の実尺を超えていないかを見ない(`--media` なしでメディアをデコードしない規律)。
|
|
346
|
+
- どの cut にも含まれない語をエラーにしない(射影結果 0 件は正常)。
|
|
347
|
+
|
|
348
|
+
## よくある間違い
|
|
349
|
+
|
|
350
|
+
- `t_start` / `t_end` をセグメント時刻から按分して作る。**`words` の実測値だけを使う**。
|
|
351
|
+
- 語頭の早出し(最大 -0.92 秒)をデータ側で補正して書く。補正は描画側の関心事である。
|
|
352
|
+
- whisper.cpp tier の `words` で語照合をして `word` を書く。連結が `segment.text` と一致しない
|
|
353
|
+
素材は**語レベル演出の対象外**であり、`emphasis_words` を書かずにレポートへ記録する。
|
|
354
|
+
- `word` を正規化・整形して書く(「90 秒」→「90秒」、送り仮名の統一等)。参照元と突き合わせられなくなる。
|
|
355
|
+
- 見せ場から遠い語を density 枠が空いているという理由だけで大量に採る。優先は
|
|
356
|
+
`emotion` / `punchline` / `reveal` の ±5 秒内である。
|
|
357
|
+
- `hook` / `turn` beat を語レベルの同期先に使う。同期先は `emotion` / `punchline` / `reveal` の 3 種。
|
|
358
|
+
- フィラー・接続詞・助詞(「えー」「で」「が」)を強調対象に選ぶ。
|
|
359
|
+
- 同一文から 2 語以上、または 60 秒に 4 語以上を採る。
|
|
360
|
+
- `emotion` を語義(辞書)で決める。決めるのは同じ文・直前直後の**文脈**である。
|
|
361
|
+
- 迷った強調に無理に感情を当てる。迷ったら `emphasis` に落とす。
|
|
362
|
+
- `style_hint` を描画への指定だと思って必須にする。提案止まりであり、省略してよい。
|
|
363
|
+
- 不採用候補を黙って捨て、`decision-log.md` に残さない。
|
|
364
|
+
- `id` を連番以外(`e-1` / `emphasis-0001` 等)で振る。`^e-\d{4}$` の 4 桁ゼロ埋めである。
|
|
365
|
+
- v0 の `edit.json` に `src` を書く(参照先が定義できないため検証エラー)。
|
|
366
|
+
- `t_start` / `t_end` に timeline 秒(cut 連結後の時刻)を書く。emphasis_words は source 秒である。
|