Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions AUTOPILOT_MANIFEST.json
Original file line number Diff line number Diff line change
Expand Up @@ -303,6 +303,7 @@
"codex-skill/video-autopilot/references/motion-asset-library.md",
"codex-skill/video-autopilot/references/mrbeast-and-yingshi-benchmark.md",
"codex-skill/video-autopilot/references/mrbeast-production-source-map.md",
"codex-skill/video-autopilot/references/music-video-motion.md",
"codex-skill/video-autopilot/references/niche-editing-grammar.md",
"codex-skill/video-autopilot/references/niche-fonts-colors.md",
"codex-skill/video-autopilot/references/publish-hub-and-remix.md",
Expand Down Expand Up @@ -386,6 +387,7 @@
"src/longform_maker/word_captions.py",
"src/motion_asset_pack.py",
"src/motion_renderers.py",
"src/music_mv_preflight.py",
"src/outcome_learning.py",
"src/platform_compat.py",
"src/project_kernel.py",
Expand Down
17 changes: 14 additions & 3 deletions codex-skill/video-autopilot/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,9 @@ description: Plan, build, review, package, release, and improve long-form videos

Turn a content brief and creator-owned source material into reviewable video
artifacts and publishing packages. The workflow supports long-form video,
YouTube Shorts, Instagram Reels, and reusable image or motion assets. It does
not ship a maintainer profile: voice, face policy, captions, palette, outro,
YouTube Shorts, Instagram Reels, illustrated music videos, and reusable image
or motion assets. It does not ship a maintainer profile: voice, face policy,
captions, palette, outro,
channel links, performance baselines, and aesthetic choices come from the
active creator configuration or an explicit brief.

Expand Down Expand Up @@ -44,14 +45,23 @@ active creator configuration or an explicit brief.
apply it atomically through the workflow contract, and retain immutable
receipts. Older plan versions may be imported for migration but not applied
as the current workflow.
6. Programmatic motion uses `hao.motion-composition/v1`; Editkin Motion also
6. Programmatic motion uses the registered `hao.motion-composition/v1` or
`hao.motion-composition/v2` contract; Editkin Motion also
supports editable 2.5D floating video frames, portrait perspective orbit,
and two rear portrait panels through the registered MCP presets. Use the
read-only scene compiler and include its commands in the audited v4 plan as
described in [Workflow execution](references/editkin-workflow-execution.md).
Effects, tracking, masks, generated assets, and transitions require a
semantic purpose and the evidence needed by their adapters. Missing
evidence falls back to a clean cut or clean hold.
For an illustrated music video, use the separate
[illustrated music MV route](references/music-video-motion.md): original
layered character and scene art, verified musical phrases, frame-aligned
kinetic typography, editable silhouettes and foreground accents. Call
`prepare_illustrated_music_video_draft` to create a read-only scene draft,
then bind its commands and text events into the audited v4 plan. The
live-action `prepare_music_video_draft` route is used only when the creator
explicitly requests live-action montage.
7. Render only after prerequisites pass. Run technical QA, content-integrity
checks, and a human review bundle. Machine checks may block known failures;
they do not certify taste or authorize publication.
Expand Down Expand Up @@ -103,6 +113,7 @@ require confirmation; unknown files are never deleted implicitly.

- [Editorial intelligence contract](references/editorial-intelligence-contract.md)
- [Workflow execution](references/editkin-workflow-execution.md)
- [Illustrated music MV route](references/music-video-motion.md)
- [Plugin automation](references/editkin-plugin-automation.md)
- [Mobile device binding](references/editkin-mobile-device-binding.md)
- [Model and context adaptation](references/model-and-context-adaptation.md)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"schema_version": 1,
"standard_id": "public-aesthetic-standard",
"version": "2.2.0",
"version": "2.3.0",
"reference_basis": {
"dna_file": "knowledge/runtime/design_reference_dna.json",
"compiler": "design_system_v6.py",
Expand Down Expand Up @@ -312,6 +312,20 @@
"music"
]
},
"illustrated_mv": {
"label_zh": "插畫角色節奏敘事",
"templates": [],
"traits": [
"original illustrated character integrated with layered scenery",
"pose and expression changes across musical sections",
"kinetic spatial type shaped around the character silhouette",
"frame-aligned accents with quiet holds",
"scene colour progression and motivated cuts"
],
"best_for": [
"music"
]
},
"ticket_ribbon": {
"label_zh": "票券與緞帶動態排版",
"templates": [
Expand Down Expand Up @@ -525,6 +539,19 @@
"all beats using the same transition"
]
},
"illustrated_music_mv": {
"primary": "illustrated_mv",
"support": [
"night_signal",
"arcade_pop",
"brush_culture"
],
"avoid": [
"static lyric cards over unrelated footage",
"one pose across every phrase",
"cuts on every beat without phrasing"
]
},
"culture": {
"primary": "brush_culture",
"support": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,11 +63,22 @@
"brush_culture": ["dry brush", "flat colour plane", "stamp accent"],
"cobalt_lime_ui": ["clean UI plane", "selection mark", "technical line"],
"iridescent_future": ["glass or chrome hero", "spectral light", "clean cyclorama"],
"illustrated_mv": ["painted scene layers", "soft character alpha", "subtle halftone accent"],
"ticket_ribbon": ["printed ribbon", "paper curl", "perspective depth"],
"arcade_pop": ["sticker edge", "comic halftone", "flat colour burst"],
"pixel_terminal": ["one-bit pixel", "bitmap window", "scan texture"],
"japanese_lifestyle_calm": ["warm paper", "natural wood", "linen", "soft daylight"],
}
ORIGINAL_FAMILY_TOKENS = {
# This new family is authored from the MV brief, not inferred from reference
# images. Explicit defaults keep an empty reference set from yielding an
# arbitrary palette, typography or motion treatment.
"illustrated_mv": {
"palette": ["indigo or dawn base chosen by song section", "one warm character accent", "legible light or ink type"],
"motion": ["character pose or expression change at phrases", "layer parallax with short held frames", "spatial type entry on verified beats", "motivated silhouette or foreground reveal"],
"type": ["one oversized display voice integrated with character negative space", "short secondary voice only when necessary"],
},
}
EXCLUSIVE_DISPLAY_FAMILIES = {"arcade_pop", "pixel_terminal", "iridescent_future"}
ROLE_LAYOUT_PREFERENCES = {
"first_frame": ["centered", "diagonal", "corner_anchor", "image_bleed"],
Expand Down Expand Up @@ -210,12 +221,13 @@ def _compile_visual_tokens(examples: list[dict[str, Any]],
primary: str, energy: float) -> dict[str, Any]:
accent_budget = 1 if energy < .45 else 2
density = "quiet" if energy < .35 else ("controlled" if energy < .78 else "impact")
original = ORIGINAL_FAMILY_TOKENS.get(primary, {})
return {
"palette_candidates": _dimension_candidates(examples, "palette", "palette", 5, art_take=2),
"palette_candidates": _dimension_candidates(examples, "palette", "palette", 5, art_take=2) or original.get("palette", []),
"accent_colour_budget": accent_budget,
"material_candidates": _dimension_candidates(examples, "material", "material", 4, art_take=2) or MATERIAL_PRESETS[primary],
"motion_candidates": _dimension_candidates(examples, "motion", "motion", 4),
"type_candidates": _dimension_candidates(examples, "type", "type", 3),
"motion_candidates": _dimension_candidates(examples, "motion", "motion", 4) or original.get("motion", []),
"type_candidates": _dimension_candidates(examples, "type", "type", 3) or original.get("type", []),
"composition_candidates": _dimension_candidates(composition_examples, "composition", "composition", 3),
"hierarchy_candidates": _dimension_candidates(hierarchy_examples, "hierarchy", "hierarchy", 3),
"density": density,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,10 @@ Skill source precedence 與 Editkin 完全一致:明確 invocation path →
`~/.codex/skills/video-autopilot/SKILL.md`;workflow contract 永遠取該 Skill 同層檔案。
workspace `.claude` 相容副本不得自動成為 governance source。

## Editkin Music MV

在固定 DAG 的歌曲/素材收據齊全後,依 `references/music-video-motion.md` 預檢節拍,聽歌核對樂段,建立原創角色、背景及畫面文字的分鏡。動畫 MV 先取得有權利的插畫層;輸入同畫幅完整畫布的角色透明 PNG 與背景(可保留高解析原稿),呼叫只讀 `prepare_illustrated_music_video_draft` 編出背景和角色獨立軌、逐格關鍵幀、樂段切鏡及空間字。回傳的 `editorialGraphics`、精確命令順序、來源與 beat/phrase 證據放進同一份 v4 plan,逐項綁 `editorial.motionTreatment` 與 `designEvidence`。先 `audit_autopilot_plan`,再 `apply_autopilot_plan`,最後原生 render、技術 QA、手機及人工美術審片。歌曲或插畫缺失時停在素材製作/缺口,不得改以實拍歌詞卡冒充動畫 MV。只有使用者明確選擇實拍蒙太奇才用 `prepare_music_video_draft`。

## 快速與續跑規則

- 建立 run 時直接 hash 真實素材 bytes;同路徑換檔會使來源失效,不能只信舊 metadata。
Expand Down
53 changes: 53 additions & 0 deletions codex-skill/video-autopilot/references/music-video-motion.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
# Illustrated music MV route

An illustrated music MV uses an original character, layered scenes, graphic
symbols, expressive typography and musical editing. A live-action montage
with lyric cards is a separate route. Existing videos may inform the rhythm
and visual grammar; do not copy their characters, costumes, logos, song,
shots or exact layouts.

## Required inputs

- A song the creator may use, with verified duration and musical sections.
- Original or licensed background, character poses and foreground art with
provenance and distribution scope. Character and foreground layers need
usable alpha. Do not substitute unrelated stock footage for missing art.
- Lyrics verified against the audio. A title or graphic word can come from
the creative brief; unverified words cannot be labeled as lyrics.
- A storyboard with section boundaries, framing changes, emotional purpose,
colour progression, text events and cut or transition evidence.

## Editkin plan

1. Run `python src/music_mv_preflight.py <song> --window 45 --output <run>/music-preflight.json`
for beat candidates, then listen to confirm
downbeats, phrases, syncopation and holds. The preflight does not certify
musical structure or lyrics. Avoid cutting on every beat by default.
2. Make contiguous, frame-aligned sections. Route original background,
character, optional silhouette and transparent foreground accents to
separate editable tracks. Use distinct poses and expressions at musical
turns, with meaningful camera and depth motion. Same-aspect, high-resolution
cels can use evidence-bound `characterFrame` positioning to preserve soft
alpha edges and space for text.
3. Use `prepare_illustrated_music_video_draft` for a read-only command
candidate. The tool requires image rights, alpha, continuous music and
explicit evidence references. Its source project remains unchanged.
4. Bind its flat commands plus title and verified lyric events into one
`hao.video-autopilot.edit-plan/v4`; audit, apply atomically and render.
Preserve the command receipt and re-open the project before export.
5. Animate text at the phrase and syllable level where warranted: staggered
character entrances, brief beat words, `impact` or center-out `ripple`
treatment, exit timing, negative space and contrast that remain legible over
the character. A short `accent_flash` needs evidence on both sides of a
musical cut and frame-by-frame overexposure review. Transitions, silhouette
reveals and foreground effects should accent scene meaning.

## Acceptance

Inspect the rendered video and delivered native editor project. Verify every
cut, silhouette edge, text motion, colour handoff, effect and musical accent
against the storyboard; check frame count, audio continuity, decode, preview
responsiveness, render time and memory. Technical success is not art approval.
Keep the result in review until a person assesses character consistency,
posing, compositing, typography and the complete viewing rhythm. A short
engineering sample cannot be reported as a finished MV.
29 changes: 28 additions & 1 deletion knowledge/runtime/aesthetic_standard.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"schema_version": 1,
"standard_id": "public-aesthetic-standard",
"version": "2.2.0",
"version": "2.3.0",
"reference_basis": {
"dna_file": "knowledge/runtime/design_reference_dna.json",
"compiler": "design_system_v6.py",
Expand Down Expand Up @@ -312,6 +312,20 @@
"music"
]
},
"illustrated_mv": {
"label_zh": "插畫角色節奏敘事",
"templates": [],
"traits": [
"original illustrated character integrated with layered scenery",
"pose and expression changes across musical sections",
"kinetic spatial type shaped around the character silhouette",
"frame-aligned accents with quiet holds",
"scene colour progression and motivated cuts"
],
"best_for": [
"music"
]
},
"ticket_ribbon": {
"label_zh": "票券與緞帶動態排版",
"templates": [
Expand Down Expand Up @@ -525,6 +539,19 @@
"all beats using the same transition"
]
},
"illustrated_music_mv": {
"primary": "illustrated_mv",
"support": [
"night_signal",
"arcade_pop",
"brush_culture"
],
"avoid": [
"static lyric cards over unrelated footage",
"one pose across every phrase",
"cuts on every beat without phrasing"
]
},
"culture": {
"primary": "brush_culture",
"support": [
Expand Down
18 changes: 15 additions & 3 deletions scripts/public_skill_skeleton.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
"editkin-plugin-automation.md",
"editkin-workflow-execution.md",
"model-and-context-adaptation.md",
"music-video-motion.md",
"open-source-release-and-upgrade.md",
"publish-hub-and-remix.md",
"script-retention-2026.md",
Expand Down Expand Up @@ -108,8 +109,9 @@ def validate_canonical_frontmatter(canonical_text: str) -> Dict[str, str]:

Turn a content brief and creator-owned source material into reviewable video
artifacts and publishing packages. The workflow supports long-form video,
YouTube Shorts, Instagram Reels, and reusable image or motion assets. It does
not ship a maintainer profile: voice, face policy, captions, palette, outro,
YouTube Shorts, Instagram Reels, illustrated music videos, and reusable image
or motion assets. It does not ship a maintainer profile: voice, face policy,
captions, palette, outro,
channel links, performance baselines, and aesthetic choices come from the
active creator configuration or an explicit brief.

Expand Down Expand Up @@ -145,14 +147,23 @@ def validate_canonical_frontmatter(canonical_text: str) -> Dict[str, str]:
apply it atomically through the workflow contract, and retain immutable
receipts. Older plan versions may be imported for migration but not applied
as the current workflow.
6. Programmatic motion uses `hao.motion-composition/v1`; Editkin Motion also
6. Programmatic motion uses the registered `hao.motion-composition/v1` or
`hao.motion-composition/v2` contract; Editkin Motion also
supports editable 2.5D floating video frames, portrait perspective orbit,
and two rear portrait panels through the registered MCP presets. Use the
read-only scene compiler and include its commands in the audited v4 plan as
described in [Workflow execution](references/editkin-workflow-execution.md).
Effects, tracking, masks, generated assets, and transitions require a
semantic purpose and the evidence needed by their adapters. Missing
evidence falls back to a clean cut or clean hold.
For an illustrated music video, use the separate
[illustrated music MV route](references/music-video-motion.md): original
layered character and scene art, verified musical phrases, frame-aligned
kinetic typography, editable silhouettes and foreground accents. Call
`prepare_illustrated_music_video_draft` to create a read-only scene draft,
then bind its commands and text events into the audited v4 plan. The
live-action `prepare_music_video_draft` route is used only when the creator
explicitly requests live-action montage.
7. Render only after prerequisites pass. Run technical QA, content-integrity
checks, and a human review bundle. Machine checks may block known failures;
they do not certify taste or authorize publication.
Expand Down Expand Up @@ -204,6 +215,7 @@ def validate_canonical_frontmatter(canonical_text: str) -> Dict[str, str]:

- [Editorial intelligence contract](references/editorial-intelligence-contract.md)
- [Workflow execution](references/editkin-workflow-execution.md)
- [Illustrated music MV route](references/music-video-motion.md)
- [Plugin automation](references/editkin-plugin-automation.md)
- [Mobile device binding](references/editkin-mobile-device-binding.md)
- [Model and context adaptation](references/model-and-context-adaptation.md)
Expand Down
Loading
Loading