[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M76WMQJAXGQAT6F5SHYN6SGP":3,"skill-same:01M76WMQJAXGQAT6F5SHYN6SGP":47},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":24,"commitSha":25,"skillDirectory":26,"forksCount":27,"repositoryHtmlUrl":28,"repositoryHomepageUrl":6,"ownerHtmlUrl":29,"ownerBlogUrl":30,"ownerDescription":31,"updatedAt":32,"install":33,"resources":46},"01M76WMQJAXGQAT6F5SHYN6SGP","video-production",null,"Complete A\u002FB video pipeline — storyboard, Veo 3 batch generation, browser preview with feedback loop, and ffmpeg assembly into final videos. Use when creating multi-scene videos, running A\u002FB tests on hooks\u002FCTAs, previewing clips before stitching, or assembling a final cut from approved clips.","javimosch\u002Fopen-claw-skills","javimosch","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F12900508?v=4","01M6D3F2AS6PV75ET9PZ1QGP8J","Javier Leandro Arancibia","01M75B8NCTAJG9WH5YNZH7C3D8",0,"MIT","https:\u002F\u002Fgithub.com\u002Fjavimosch\u002Fopen-claw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fomerflo\u002Fvideo-production\u002FSKILL.md",[],[],"2026-11-12 13:55:43",false,"---\nname: video-production\ndescription: Complete A\u002FB video pipeline — storyboard, Veo 3 batch generation, browser preview with feedback loop, and ffmpeg assembly into final videos. Use when creating multi-scene videos, running A\u002FB tests on hooks\u002FCTAs, previewing clips before stitching, or assembling a final cut from approved clips.\n---\n\n# Video Production Skill\n\nGenerate cinematic video clips with Veo 3, review them in a browser preview, iterate with feedback, and assemble final A\u002FB test videos — all with minimal token spend.\n\n## Quick Start\n\n```bash\ncd ~\u002F.openclaw\u002Fworkspace\u002Fskills\u002Fvideo-production\n\n# 1. Generate all clips from storyboard\n.venv\u002Fbin\u002Fpython3 scripts\u002Fbatch_generate.py --storyboard \u002Fpath\u002Fto\u002Fstoryboard.json\n\n# 2. Open browser preview\n.venv\u002Fbin\u002Fpython3 scripts\u002Fgenerate_preview.py --storyboard \u002Fpath\u002Fto\u002Fstoryboard.json\n\n# 3. (After feedback) Re-generate only revised scenes\n.venv\u002Fbin\u002Fpython3 scripts\u002Fapply_feedback.py --storyboard storyboard.json --feedback feedback.json\n\n# 4. Assemble final video\n.venv\u002Fbin\u002Fpython3 scripts\u002Fffmpeg_assembler.py --storyboard storyboard.json\n```\n\n## A\u002FB Video Architecture\n\n**Target: 15-second videos, 3 clips × 5s each**\n\n```\n[HOOK: 5s] → [CORE: 5s] → [CTA\u002FPAYOFF: 5s]\n     ↑                           ↑\n swap for A\u002FB               swap for A\u002FB\n```\n\n**Economics:**\n- 5 Veo prompts → 4 unique A\u002FB videos (2 hooks × 1 core × 2 CTAs)\n- 7 prompts → 9 videos | 9 prompts → 16+ videos\n- Transitions at 5s and 10s marks — clean for analytics\n\n## Pipeline Overview\n\n```\nstoryboard.json\n      ↓\nbatch_generate.py     → clips\u002Fscene_01.mp4 ... scene_05.mp4\n      ↓\ngenerate_preview.py   → preview.html (opens in browser, zero tokens)\n      ↓\n[review + paste feedback JSON to Muffin]\n      ↓\n[Muffin suggests revised prompts, updates storyboard.json]\n      ↓\napply_feedback.py     → re-generates only 'revise' scenes\n      ↓\nffmpeg_assembler.py   → final_AA.mp4, final_BA.mp4, final_AB.mp4, final_BB.mp4\n```\n\n**Token cost:** Only when writing storyboard + interpreting feedback. Preview, generation, and assembly are all zero tokens.\n\n## Storyboard Format\n\n```json\n{\n  \"project\": \"my-video\",\n  \"output_dir\": \"clips\",\n  \"final_output\": \"final.mp4\",\n  \"scenes\": [\n    {\n      \"id\": \"scene_01\",\n      \"role\": \"hook_a\",\n      \"label\": \"Hook A\",\n      \"order\": 1,\n      \"duration\": 5,\n      \"aspect_ratio\": \"16:9\",\n      \"prompt\": \"...\"\n    }\n  ],\n  \"_ab_combinations\": {\n    \"video_1_AA\": [\"scene_01\", \"scene_03\", \"scene_04\"],\n    \"video_2_BA\": [\"scene_02\", \"scene_03\", \"scene_04\"],\n    \"video_3_AB\": [\"scene_01\", \"scene_03\", \"scene_05\"],\n    \"video_4_BB\": [\"scene_02\", \"scene_03\", \"scene_05\"]\n  }\n}\n```\n\nSee `scripts\u002Fstoryboard_template.json` for full template.\n\n## Feedback Format\n\nPaste this JSON to Muffin after reviewing preview.html:\n\n```json\n{\n  \"scenes\": [\n    { \"id\": \"scene_01\", \"action\": \"approve\", \"notes\": \"\" },\n    { \"id\": \"scene_02\", \"action\": \"revise\", \"notes\": \"slower camera, warmer light\" }\n  ]\n}\n```\n\n## Veo 3 API — Current Limits (Gemini API, verified 2026-02-23)\n\n| Parameter | Supported |\n|---|---|\n| `aspect_ratio` | ✅ |\n| `number_of_videos` | ✅ |\n| `negative_prompt` | ✅ |\n| `duration_seconds` | ❌ Broken (throws 400 even with valid values) |\n| `fps` | ❌ Vertex AI only |\n| `compression_quality` | ❌ Vertex AI only |\n| `enhance_prompt` | ❌ Vertex AI only |\n\n**Models:** `veo-3.1-generate-preview` (best) | `veo-3.1-fast-generate-preview` | `veo-3.0-generate-001`\n\n**SDK:** `google-genai` (NOT `google-generativeai`)\n\n## Prompting Techniques\n\n**Motion in every sentence** — Veo produces laggy output from static prompts. Every sentence should describe camera OR subject movement.\n\n**Character continuity** — Veo can't maintain exact characters across clips. Describe physical details explicitly in every scene that includes the same character.\n> ✅ \"The same client character from the opening — dark jacket, professional bearing, 30s-40s\"\n\n**Stitch continuity** — For seamless cuts, open each prompt with the color\u002Flight state the previous clip ends on.\n> ✅ \"Warm amber light, a direct visual continuation from the post-production suite...\"\n\n**Single continuous shot** — Each prompt is one continuous clip. Design it as one camera move that reveals multiple elements — not a montage description.\n\n**Content policy** — Environmental\u002Fprop-only scenes generate reliably. Stressed people on phones can silently return no video. Keep humans calm or describe the environment instead.\n\n## Quota Management\n\nWhen you hit the daily limit (429 RESOURCE_EXHAUSTED), use the quota watcher:\n\n```bash\n# Sets a cron that retries every 30 min, texts Master when done\nchmod +x scripts\u002Fquota_watcher.sh\n\n# Add to crontab:\n(crontab -l 2>\u002Fdev\u002Fnull | grep -v quota_watcher; \\\n echo \"*\u002F30 * * * * \u002Fpath\u002Fto\u002Fquota_watcher.sh >> \u002Ftmp\u002Fquota_watcher.log 2>&1\") | crontab -\n```\n\nSee `api-quota-watcher` skill for the generic pattern.\n\n## Scripts\n\n| Script | Purpose |\n|---|---|\n| `scripts\u002Fbatch_generate.py` | Generate all scenes from storyboard, skip existing |\n| `scripts\u002Fgenerate_preview.py` | Build preview.html with video players + feedback form |\n| `scripts\u002Fapply_feedback.py` | Re-generate only scenes marked 'revise' |\n| `scripts\u002Fffmpeg_assembler.py` | Stitch approved clips → final MP4 (cut or crossfade) |\n| `scripts\u002Fquota_watcher.sh` | Retry + notify cron for quota recovery |\n| `scripts\u002Fstoryboard_template.json` | Starting storyboard template |\n\n## Environment Setup\n\n```bash\ncd ~\u002F.openclaw\u002Fworkspace\u002Fskills\u002Fvideo-production\nuv venv .venv\nuv pip install google-genai Pillow requests\n\n# API key must be in ~\u002F.zshenv:\nexport GOOGLE_API_KEY=\"AIza...\"\n```\n\n## Assembling A\u002FB Combinations\n\nAfter all scenes approved, run assembler for each combo:\n\n```bash\n# Assemble all 4 A\u002FB videos\nfor combo in AA BA AB BB; do\n  # Edit storyboard or pass scene list directly\n  .venv\u002Fbin\u002Fpython3 scripts\u002Fffmpeg_assembler.py \\\n    --storyboard storyboard.json \\\n    --output \"final_${combo}.mp4\"\ndone\n```\n\nOr hardcode in `_ab_combinations` in storyboard.json — assembler reads it automatically.\n\n## Format Adaptation\n\n| Format | Notes |\n|---|---|\n| 16:9 (master) | Default — all scripts use this |\n| 9:16 (vertical) | Change `aspect_ratio` to `\"9:16\"` in storyboard |\n| 1:1 (square) | Change `aspect_ratio` to `\"1:1\"` |\n\nGenerate separate storyboards per format for best results. Don't crop 16:9 to 9:16 in post — re-generate with proper aspect.\n\n## What Veo 3 Does Well\n\n- Atmospheric\u002Fmood shots\n- Smooth camera movements (push-in, crane, tracking)\n- Lighting transitions within a single clip\n- Office\u002Fstudio\u002Furban environments\n- Abstract beauty (nature, space, product)\n\n## What Veo 3 Struggles With\n\n- Exact text on screen (add in post via After Effects\u002FResolve)\n- Maintaining character consistency across clips\n- Very fast montage within a single generation\n- Complex multi-person scenes\n- Specific prop\u002Fbrand details\n\n---\n\n## Character Registry & Learning System\n\n### Clean Slate Default\n**Every new campaign starts fresh.** No inherited characters, no assumed cast, no prompt weights from previous runs. If you want continuity from a past campaign, explicitly say so:\n> \"Use HERO_01 from the MMM campaign\"\n\n### Character IDs (Bootstrap Defaults)\nIf no cast is defined, use these placeholders:\n- `HERO_01` — Primary UGC creator\n- `FRIEND_01` — Recurring side character\n- `HAND_MODEL_01` — Hands-only product handler\n\nFirst approved output becomes the canonical identity baseline for that campaign.\n\n### Character Bible (Per Campaign)\nWhen characters are defined, maintain a `character_registry.json` in the project folder:\n```json\n{\n  \"HERO_01\": {\n    \"identity\": {\n      \"age_range\": \"28-35\",\n      \"gender\": \"male\",\n      \"skin_tone\": \"...\",\n      \"hair\": \"...\",\n      \"build\": \"...\"\n    },\n    \"wardrobe\": {\n      \"preferred\": [],\n      \"avoid\": [],\n      \"signature\": \"\"\n    },\n    \"camera_rules\": {\n      \"preferred_framing\": \"medium close-up\",\n      \"avoid\": []\n    },\n    \"negative_constraints\": [],\n    \"reference_frames\": [],\n    \"phrase_weights\": {}\n  }\n}\n```\n\n### CAST Block Injection\nWhen characters are defined, every prompt must include:\n```\nCAST:\n- HERO: HERO_01 (identity locked; must match reference frames exactly)\nDo not alter identity traits across frames or across future assets.\n```\n\n### Verification Thresholds\nAfter generation, run vision model consistency check against reference frames:\n- **>= 85** → auto-pass\n- **75–84** → escalate to Master (Telegram), do not auto-regen\n- **\u003C= 74** → auto-fail, apply stabilize patch, retry once → then escalate if still failing\n\n### Learning Loop\nAfter every human review decision, update:\n- **Approved** → increase weights for phrases that produced good consistency; add best frames to approved reference set\n- **Rejected** → identify drift attributes; downweight or ban phrases causing drift; add negative constraints\n- **Borderline** → apply stabilize patch for that engine+character+scene combo\n\n### Generation Log\nAppend every attempt to `generation_log.jsonl` (never deleted):\n```json\n{\n  \"timestamp\": \"...\",\n  \"campaign\": \"...\",\n  \"scene_id\": \"...\",\n  \"engine\": \"veo-3.1-generate-preview\",\n  \"attempt\": 1,\n  \"characters\": [\"HERO_01\"],\n  \"prompt\": \"...\",\n  \"output\": \"clips\u002Fscene_01.mp4\",\n  \"verification_score\": 88,\n  \"drift_notes\": \"\",\n  \"decision\": \"auto_pass\",\n  \"human_outcome\": \"approved\",\n  \"worked_phrases\": [],\n  \"failed_phrases\": []\n}\n```\n\n### Escalation Policy — Ask Before Guessing\nEscalate to Master via Telegram (never silently loop) when:\n- Verification score is borderline (75–84)\n- Character is on a new engine for the first time\n- Scene type is new for that character+engine combo\n- Same prompt has failed 2+ times in a row\n\nEscalation message must include: scene ID, engine, score, drift notes, and 2–3 options.\n\n### Archive (Persists Across Campaigns)\nEven though each campaign starts clean, these persist in the skill folder:\n- `generation_log.jsonl` — full audit trail\n- `approved_references\u002F` — canonical frames by campaign, available to load on request\n- `campaign_phrase_weights\u002F` — weight archives per campaign, loadable for continuity\n","# Video Production Skill\n\nGenerate cinematic video clips with Veo 3, review them in a browser preview, iterate with feedback, and assemble final A\u002FB test videos — all with minimal token spend.\n\n## Quick Start\n\n```bash\ncd ~\u002F.openclaw\u002Fworkspace\u002Fskills\u002Fvideo-production\n\n# 1. Generate all clips from storyboard\n.venv\u002Fbin\u002Fpython3 scripts\u002Fbatch_generate.py --storyboard \u002Fpath\u002Fto\u002Fstoryboard.json\n\n# 2. Open browser preview\n.venv\u002Fbin\u002Fpython3 scripts\u002Fgenerate_preview.py --storyboard \u002Fpath\u002Fto\u002Fstoryboard.json\n\n# 3. (After feedback) Re-generate only revised scenes\n.venv\u002Fbin\u002Fpython3 scripts\u002Fapply_feedback.py --storyboard storyboard.json --feedback feedback.json\n\n# 4. Assemble final video\n.venv\u002Fbin\u002Fpython3 scripts\u002Fffmpeg_assembler.py --storyboard storyboard.json\n```\n\n## A\u002FB Video Architecture\n\n**Target: 15-second videos, 3 clips × 5s each**\n\n```\n[HOOK: 5s] → [CORE: 5s] → [CTA\u002FPAYOFF: 5s]\n     ↑                           ↑\n swap for A\u002FB               swap for A\u002FB\n```\n\n**Economics:**\n- 5 Veo prompts → 4 unique A\u002FB videos (2 hooks × 1 core × 2 CTAs)\n- 7 prompts → 9 videos | 9 prompts → 16+ videos\n- Transitions at 5s and 10s marks — clean for analytics\n\n## Pipeline Overview\n\n```\nstoryboard.json\n      ↓\nbatch_generate.py     → clips\u002Fscene_01.mp4 ... scene_05.mp4\n      ↓\ngenerate_preview.py   → preview.html (opens in browser, zero tokens)\n      ↓\n[review + paste feedback JSON to Muffin]\n      ↓\n[Muffin suggests revised prompts, updates storyboard.json]\n      ↓\napply_feedback.py     → re-generates only 'revise' scenes\n      ↓\nffmpeg_assembler.py   → final_AA.mp4, final_BA.mp4, final_AB.mp4, final_BB.mp4\n```\n\n**Token cost:** Only when writing storyboard + interpreting feedback. Preview, generation, and assembly are all zero tokens.\n\n## Storyboard Format\n\n```json\n{\n  \"project\": \"my-video\",\n  \"output_dir\": \"clips\",\n  \"final_output\": \"final.mp4\",\n  \"scenes\": [\n    {\n      \"id\": \"scene_01\",\n      \"role\": \"hook_a\",\n      \"label\": \"Hook A\",\n      \"order\": 1,\n      \"duration\": 5,\n      \"aspect_ratio\": \"16:9\",\n      \"prompt\": \"...\"\n    }\n  ],\n  \"_ab_combinations\": {\n    \"video_1_AA\": [\"scene_01\", \"scene_03\", \"scene_04\"],\n    \"video_2_BA\": [\"scene_02\", \"scene_03\", \"scene_04\"],\n    \"video_3_AB\": [\"scene_01\", \"scene_03\", \"scene_05\"],\n    \"video_4_BB\": [\"scene_02\", \"scene_03\", \"scene_05\"]\n  }\n}\n```\n\nSee `scripts\u002Fstoryboard_template.json` for full template.\n\n## Feedback Format\n\nPaste this JSON to Muffin after reviewing preview.html:\n\n```json\n{\n  \"scenes\": [\n    { \"id\": \"scene_01\", \"action\": \"approve\", \"notes\": \"\" },\n    { \"id\": \"scene_02\", \"action\": \"revise\", \"notes\": \"slower camera, warmer light\" }\n  ]\n}\n```\n\n## Veo 3 API — Current Limits (Gemini API, verified 2026-02-23)\n\n| Parameter | Supported |\n|---|---|\n| `aspect_ratio` | ✅ |\n| `number_of_videos` | ✅ |\n| `negative_prompt` | ✅ |\n| `duration_seconds` | ❌ Broken (throws 400 even with valid values) |\n| `fps` | ❌ Vertex AI only |\n| `compression_quality` | ❌ Vertex AI only |\n| `enhance_prompt` | ❌ Vertex AI only |\n\n**Models:** `veo-3.1-generate-preview` (best) | `veo-3.1-fast-generate-preview` | `veo-3.0-generate-001`\n\n**SDK:** `google-genai` (NOT `google-generativeai`)\n\n## Prompting Techniques\n\n**Motion in every sentence** — Veo produces laggy output from static prompts. Every sentence should describe camera OR subject movement.\n\n**Character continuity** — Veo can't maintain exact characters across clips. Describe physical details explicitly in every scene that includes the same character.\n> ✅ \"The same client character from the opening — dark jacket, professional bearing, 30s-40s\"\n\n**Stitch continuity** — For seamless cuts, open each prompt with the color\u002Flight state the previous clip ends on.\n> ✅ \"Warm amber light, a direct visual continuation from the post-production suite...\"\n\n**Single continuous shot** — Each prompt is one continuous clip. Design it as one camera move that reveals multiple elements — not a montage description.\n\n**Content policy** — Environmental\u002Fprop-only scenes generate reliably. Stressed people on phones can silently return no video. Keep humans calm or describe the environment instead.\n\n## Quota Management\n\nWhen you hit the daily limit (429 RESOURCE_EXHAUSTED), use the quota watcher:\n\n```bash\n# Sets a cron that retries every 30 min, texts Master when done\nchmod +x scripts\u002Fquota_watcher.sh\n\n# Add to crontab:\n(crontab -l 2>\u002Fdev\u002Fnull | grep -v quota_watcher; \\\n echo \"*\u002F30 * * * * \u002Fpath\u002Fto\u002Fquota_watcher.sh >> \u002Ftmp\u002Fquota_watcher.log 2>&1\") | crontab -\n```\n\nSee `api-quota-watcher` skill for the generic pattern.\n\n## Scripts\n\n| Script | Purpose |\n|---|---|\n| `scripts\u002Fbatch_generate.py` | Generate all scenes from storyboard, skip existing |\n| `scripts\u002Fgenerate_preview.py` | Build preview.html with video players + feedback form |\n| `scripts\u002Fapply_feedback.py` | Re-generate only scenes marked 'revise' |\n| `scripts\u002Fffmpeg_assembler.py` | Stitch approved clips → final MP4 (cut or crossfade) |\n| `scripts\u002Fquota_watcher.sh` | Retry + notify cron for quota recovery |\n| `scripts\u002Fstoryboard_template.json` | Starting storyboard template |\n\n## Environment Setup\n\n```bash\ncd ~\u002F.openclaw\u002Fworkspace\u002Fskills\u002Fvideo-production\nuv venv .venv\nuv pip install google-genai Pillow requests\n\n# API key must be in ~\u002F.zshenv:\nexport GOOGLE_API_KEY=\"AIza...\"\n```\n\n## Assembling A\u002FB Combinations\n\nAfter all scenes approved, run assembler for each combo:\n\n```bash\n# Assemble all 4 A\u002FB videos\nfor combo in AA BA AB BB; do\n  # Edit storyboard or pass scene list directly\n  .venv\u002Fbin\u002Fpython3 scripts\u002Fffmpeg_assembler.py \\\n    --storyboard storyboard.json \\\n    --output \"final_${combo}.mp4\"\ndone\n```\n\nOr hardcode in `_ab_combinations` in storyboard.json — assembler reads it automatically.\n\n## Format Adaptation\n\n| Format | Notes |\n|---|---|\n| 16:9 (master) | Default — all scripts use this |\n| 9:16 (vertical) | Change `aspect_ratio` to `\"9:16\"` in storyboard |\n| 1:1 (square) | Change `aspect_ratio` to `\"1:1\"` |\n\nGenerate separate storyboards per format for best results. Don't crop 16:9 to 9:16 in post — re-generate with proper aspect.\n\n## What Veo 3 Does Well\n\n- Atmospheric\u002Fmood shots\n- Smooth camera movements (push-in, crane, tracking)\n- Lighting transitions within a single clip\n- Office\u002Fstudio\u002Furban environments\n- Abstract beauty (nature, space, product)\n\n## What Veo 3 Struggles With\n\n- Exact text on screen (add in post via After Effects\u002FResolve)\n- Maintaining character consistency across clips\n- Very fast montage within a single generation\n- Complex multi-person scenes\n- Specific prop\u002Fbrand details\n\n---\n\n## Character Registry & Learning System\n\n### Clean Slate Default\n**Every new campaign starts fresh.** No inherited characters, no assumed cast, no prompt weights from previous runs. If you want continuity from a past campaign, explicitly say so:\n> \"Use HERO_01 from the MMM campaign\"\n\n### Character IDs (Bootstrap Defaults)\nIf no cast is defined, use these placeholders:\n- `HERO_01` — Primary UGC creator\n- `FRIEND_01` — Recurring side character\n- `HAND_MODEL_01` — Hands-only product handler\n\nFirst approved output becomes the canonical identity baseline for that campaign.\n\n### Character Bible (Per Campaign)\nWhen characters are defined, maintain a `character_registry.json` in the project folder:\n```json\n{\n  \"HERO_01\": {\n    \"identity\": {\n      \"age_range\": \"28-35\",\n      \"gender\": \"male\",\n      \"skin_tone\": \"...\",\n      \"hair\": \"...\",\n      \"build\": \"...\"\n    },\n    \"wardrobe\": {\n      \"preferred\": [],\n      \"avoid\": [],\n      \"signature\": \"\"\n    },\n    \"camera_rules\": {\n      \"preferred_framing\": \"medium close-up\",\n      \"avoid\": []\n    },\n    \"negative_constraints\": [],\n    \"reference_frames\": [],\n    \"phrase_weights\": {}\n  }\n}\n```\n\n### CAST Block Injection\nWhen characters are defined, every prompt must include:\n```\nCAST:\n- HERO: HERO_01 (identity locked; must match reference frames exactly)\nDo not alter identity traits across frames or across future assets.\n```\n\n### Verification Thresholds\nAfter generation, run vision model consistency check against reference frames:\n- **>= 85** → auto-pass\n- **75–84** → escalate to Master (Telegram), do not auto-regen\n- **\u003C= 74** → auto-fail, apply stabilize patch, retry once → then escalate if still failing\n\n### Learning Loop\nAfter every human review decision, update:\n- **Approved** → increase weights for phrases that produced good consistency; add best frames to approved reference set\n- **Rejected** → identify drift attributes; downweight or ban phrases causing drift; add negative constraints\n- **Borderline** → apply stabilize patch for that engine+character+scene combo\n\n### Generation Log\nAppend every attempt to `generation_log.jsonl` (never deleted):\n```json\n{\n  \"timestamp\": \"...\",\n  \"campaign\": \"...\",\n  \"scene_id\": \"...\",\n  \"engine\": \"veo-3.1-generate-preview\",\n  \"attempt\": 1,\n  \"characters\": [\"HERO_01\"],\n  \"prompt\": \"...\",\n  \"output\": \"clips\u002Fscene_01.mp4\",\n  \"verification_score\": 88,\n  \"drift_notes\": \"\",\n  \"decision\": \"auto_pass\",\n  \"human_outcome\": \"approved\",\n  \"worked_phrases\": [],\n  \"failed_phrases\": []\n}\n```\n\n### Escalation Policy — Ask Before Guessing\nEscalate to Master via Telegram (never silently loop) when:\n- Verification score is borderline (75–84)\n- Character is on a new engine for the first time\n- Scene type is new for that character+engine combo\n- Same prompt has failed 2+ times in a row\n\nEscalation message must include: scene ID, engine, score, drift notes, and 2–3 options.\n\n### Archive (Persists Across Campaigns)\nEven though each campaign starts clean, these persist in the skill folder:\n- `generation_log.jsonl` — full audit trail\n- `approved_references\u002F` — canonical frames by campaign, available to load on request\n- `campaign_phrase_weights\u002F` — weight archives per campaign, loadable for continuity\n",{"name":5,"description":7},"main","f9d3fe7cf9ac8f1ea63a0d96e98e1f510a3814db","skills\u002Fomerflo\u002Fvideo-production",1,"https:\u002F\u002Fgithub.com\u002Fjavimosch\u002Fopen-claw-skills","https:\u002F\u002Fgithub.com\u002Fjavimosch","intrane.fr","Building robust, open-source infrastructure for the commons. AI-leveraged, self-hosted, built to last.","2026-06-07 03:34:58",{"source":8,"skillName":5,"commands":34,"prompt":44,"zipAvailable":45},[35,38,41],{"tool":36,"command":37},"npx","npx skills add javimosch\u002Fopen-claw-skills --skill video-production",{"tool":39,"command":40},"bunx","bunx skills add javimosch\u002Fopen-claw-skills --skill video-production",{"tool":42,"command":43},"pnpm","pnpm dlx skills add javimosch\u002Fopen-claw-skills --skill video-production","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjavimosch\u002Fopen-claw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fomerflo\u002Fvideo-production\u002FSKILL.md",true,[],[48,56,63,70,77,84],{"skillNo":49,"name":50,"nameZh":6,"description":51,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":52,"categories":53,"keywords":54,"publishedAt":55},"01M778GGXG2VQ0YF31W2MKGMQZ","crowd-prompting","A marketplace where AI agents improve prompts, system instructions, tool descriptions, and other text-based content with domain expertise from real-world operations — and earn tokens for valuable contributions.","https:\u002F\u002Fgithub.com\u002Fjavimosch\u002Fopen-claw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fzzadrian\u002Fcrowd-prompting\u002FSKILL.md",[],[],"2026-11-15 14:19:17",{"skillNo":57,"name":58,"nameZh":6,"description":59,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":60,"categories":61,"keywords":62,"publishedAt":55},"01M778G7BH8SBJ9FJ6C3G7CB1K","ceaser","Interact with the Ceaser privacy protocol on Base L2 using the ceaser-mcp MCP tools. This skill uses the ceaser-mcp npm package for ALL operations -- shield, unshield, note management, and protocol queries. All ceaser tool calls use CLI subcommands (npx -y ceaser-mcp \u003Csubcommand>). Ceaser is a privacy-preserving ETH wrapper using Noir\u002FUltraHonk zero-knowledge proofs on Base L2 (chain ID 8453).","https:\u002F\u002Fgithub.com\u002Fjavimosch\u002Fopen-claw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fzyra-v21\u002Fceaser\u002FSKILL.md",[],[],{"skillNo":64,"name":65,"nameZh":6,"description":66,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":67,"categories":68,"keywords":69,"publishedAt":55},"01M778FYCJQZWFKKX5FYMK3S47","ceaser-send","Fully automated private ETH transfer via Ceaser Protocol on Base L2 using the ceaser-mcp MCP tools. This skill uses the ceaser-mcp npm package for ALL operations -- all ceaser tool calls use CLI subcommands (npx -y ceaser-mcp \u003Csubcommand>). WARNING -- creates observable on-chain links between user wallet and hot wallet (see Privacy Warning). Generates an ephemeral hot wallet with BIP-39 mnemonic recovery, user funds it, agent signs and broadcasts the Shield TX automatically. Exactly one manual step required (funding the hot wallet with ETH). Uses Noir\u002FUltraHonk zero-knowledge proofs.","https:\u002F\u002Fgithub.com\u002Fjavimosch\u002Fopen-claw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fzyra-v21\u002Fceaser-send\u002FSKILL.md",[],[],{"skillNo":71,"name":72,"nameZh":6,"description":73,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":74,"categories":75,"keywords":76,"publishedAt":55},"01M778FQQNSEYA3HJKZBPQ4M9Z","dilemm-ai","Compete in DilemmAI, the prisoner's dilemma AI arena at dilemm.ai. Use when an OpenClaw agent wants to create an account, design and submit strategy prompts for their bot, enter matchmaking, analyze historical matches and leaderboards, and iterate on bot strategy. Requires headless browser automation (no API available yet).","https:\u002F\u002Fgithub.com\u002Fjavimosch\u002Fopen-claw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fzyori\u002Fdilemm-ai\u002FSKILL.md",[],[],{"skillNo":78,"name":79,"nameZh":6,"description":80,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":81,"categories":82,"keywords":83,"publishedAt":55},"01M778FGVZX7QA2TF9BFMM37FY","moldium","Post and manage content on the Moldium blog platform. Triggered by \"post to Moldium\", \"write a blog post\", \"publish an article\", etc.","https:\u002F\u002Fgithub.com\u002Fjavimosch\u002Fopen-claw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fzyom45\u002Fmoldium\u002FSKILL.md",[],[],{"skillNo":85,"name":86,"nameZh":6,"description":87,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":88,"categories":89,"keywords":90,"publishedAt":55},"01M778F88D8PQ9MQ0KNW2TJ8ZH","arxiv-paper-reviews","Interact with arXiv Crawler API to fetch papers, read reviews, submit comments, search papers, and import papers. Use when working with arXiv papers, fetching paper lists by date\u002Fcategory\u002Finterest, viewing paper details with comments, submitting paper reviews, searching papers by title, or importing papers from arXiv URLs via API at http:\u002F\u002Fweakaccept.top:8000\u002F.","https:\u002F\u002Fgithub.com\u002Fjavimosch\u002Fopen-claw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fzxrys\u002Farxiv-paper-reviews\u002FSKILL.md",[],[]]