[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6J87TFBFRANZXTA6VMDP5YF":3,"skill-same:01M6J87TFBFRANZXTA6VMDP5YF":93},{"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":26,"publishedAt":47,"linkOnly":48,"markdownContent":49,"markdownBody":50,"frontMatter":51,"refName":55,"commitSha":56,"skillDirectory":57,"forksCount":58,"repositoryHtmlUrl":59,"repositoryHomepageUrl":6,"ownerHtmlUrl":60,"ownerBlogUrl":61,"ownerDescription":62,"updatedAt":63,"install":64,"resources":77},"01M6J87TFBFRANZXTA6VMDP5YF","higgsfield-video-explainer",null,"Build a complete non-photoreal narrated explainer or story video from\nordered 10-second blocks: one narrator, one universal style key, one Seed\nAudio take and one Gemini Omni clip per block, then server-side assembly\nwith explainer_video. Use when: \"make an explainer video\", \"explain this in\na video\", \"turn this topic or document into a narrated video\", \"tell this\nstory as an animated video\", \"make a faceless narrated video\", or \"show me\nexplainer styles\". Supports live CMS presets, custom style references,\nmascot\u002Ffaceless modes, two aspects, and optional burned subtitles. NOT for:\nphotoreal films, ads\u002FUGC, talking heads, podcasts, motion typography reels,\none-off clips without narration, or editing a finished video.","sgomez-dev\u002Fclaude-skills","sgomez-dev","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F81492002?v=4","01M6J7TFP3PR3PTGBAG3N9Z007","Santiago Gómez de la Torre Romero","01M6J7TFT704JY40NG1YE3V5JQ",1,"MIT","https:\u002F\u002Fgithub.com\u002Fsgomez-dev\u002Fclaude-skills\u002Fblob\u002Fmain\u002Fexternal\u002Fhiggsfield-video-explainer\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000016","图像与多媒体","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],"Video","higgsfield video explainer","higgsfield","explainer","take","source","live","seed","me","show","references","files","explainer video","assembly","typography","ads","Bash","show me","Audio","server","2026-11-10 10:12:30",false,"---\nversion: 0.13.0\nname: higgsfield-video-explainer\ndescription: |\n  Build a complete non-photoreal narrated explainer or story video from\n  ordered 10-second blocks: one narrator, one universal style key, one Seed\n  Audio take and one Gemini Omni clip per block, then server-side assembly\n  with explainer_video. Use when: \"make an explainer video\", \"explain this in\n  a video\", \"turn this topic or document into a narrated video\", \"tell this\n  story as an animated video\", \"make a faceless narrated video\", or \"show me\n  explainer styles\". Supports live CMS presets, custom style references,\n  mascot\u002Ffaceless modes, two aspects, and optional burned subtitles. NOT for:\n  photoreal films, ads\u002FUGC, talking heads, podcasts, motion typography reels,\n  one-off clips without narration, or editing a finished video.\nargument-hint: \"[topic or source files] [duration] [language] [aspect ratio]\"\nallowed-tools: Bash\n---\n\n# Higgsfield Video Explainer\n\nRun the MCP video-explainer workflow through Higgsfield CLI. Lock one visual style key, write one narration line and one matching visual prompt per 10-second block, generate every voice take first, generate every clip second, then immediately assemble the ordered pairs with `explainer_video`.\n\nNever use the monolithic `video_explainer` job in this skill.\n\n## MCP-to-CLI mapping\n\n| MCP workflow operation | CLI equivalent |\n|---|---|\n| `get_explainer_presets` | `higgsfield preset list video-explainer --json` |\n| `resolve_explainer_preset` | `higgsfield preset resolve video-explainer \u003Cpreset_id> --json` |\n| `generate_image` \u002F `nano_banana_pro` | `higgsfield generate create nano_banana_2 ...` |\n| `list_voices` | `higgsfield voices list --json` |\n| `generate_audio` \u002F `seed_audio` | `higgsfield generate create seed_audio ...` |\n| `generate_video` \u002F `gemini_omni` | `higgsfield generate create gemini_omni ...` |\n| `job_status` | `--wait --json` or `higgsfield generate wait \u003Cjob_id> --json` |\n| `explainer_video` | `higgsfield generate create explainer_video ...` |\n\n`nano_banana_2` is the public CLI id for the Nano Banana Pro style-key model used by the MCP workflow.\n\n## Bootstrap\n\n1. If `higgsfield` is unavailable, install it:\n\n   ```bash\n   curl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002Fhiggsfield-ai\u002Fcli\u002Fmain\u002Finstall.sh | sh\n   ```\n\n2. If `higgsfield account status` fails, ask the user to run `higgsfield auth login`, then wait.\n3. Inspect the live contracts before the first submission:\n\n   ```bash\n   higgsfield model get nano_banana_2\n   higgsfield model get seed_audio\n   higgsfield model get gemini_omni\n   higgsfield model get explainer_video\n   ```\n\n## Phase 0 — ask first\n\nCollect choices in two separate turns, in this order. Never merge them.\n\n### Turn 1 — style only\n\nAlways load the live CMS catalog:\n\n```bash\nhiggsfield preset list video-explainer --json\n```\n\nShow the preset names with their thumbnail\u002Fvideo preview URLs. Say one short line asking the user to pick a preset, describe a custom style, or attach style-reference images, then end the turn. Do not ask production questions in the same turn. Choosing a style is mandatory; never choose silently unless the user explicitly says “you choose.”\n\nSkip this turn only when the request already contains `explainer preset id: \u003Cuuid>`. Confirm that UUID exists in the live catalog and keep it for Phase 1.\n\n### Turn 2 — production settings\n\nOnly after style selection, collect every unresolved setting:\n\n- Duration: one to ten whole minutes. `N = duration_minutes × 6` fixed 10-second blocks.\n- Narration language: English by default, but still offer the choice.\n- Character: recurring mascot or faceless stylistic scenes. Always ask.\n- Aspect: `16:9` by default or `9:16` vertical.\n- Subtitles: off by default. Explain that subtitles cost 0.05 credit per voiced block. If enabled, make the user choose `patrick`, `caveat`, `marker`, or `anton`; never choose silently.\n\nEvery choice belongs to the user unless they explicitly delegate it.\n\n## Inputs\n\n- Topic or personal\u002Fphilosophical story.\n- Optional local source documents; read\u002Fextract them before scripting. They are factual input, not generation media.\n- Optional preset UUID, mutually exclusive with custom style-reference images.\n- Optional style-reference images. Use only their rendering style and color grading; never copy their people, text, logos, or objects unless requested.\n- Duration, language, character mode, aspect, and subtitle choice from Phase 0.\n\nFor local style donors, pass each path with a repeated `--image`. For a web image, download it locally first or use an existing uploaded media ID.\n\n## Hard rules\n\n- Keep every visual strictly non-photorealistic. Repeat the same STYLE descriptor and non-realism negatives in every clip prompt.\n- Keep all spoken words out of video generation. Clip audio is ambient sound or music only; no dialogue, lip-sync, or baked narration.\n- Use exactly one narration take and one clip per labeled block. Block N audio always maps to Block N video.\n- Attach the same style-key image to every clip.\n- Write all image\u002Fvideo prompts in English. Only narration uses the selected language.\n- Research real topics before scripting. Do not invent quotes, dates, numbers, or events.\n- Assemble automatically in the same run. Returning loose clips is a failure.\n\n## Pipeline\n\n| Phase | Output | CLI |\n|---|---|---|\n| 0 Ask | style first; then duration, language, character, aspect, subtitles | `preset list` + user questions |\n| R Research | verified facts and sources | available research tools |\n| 1 Style key | one universal style image | `preset resolve` or `nano_banana_2` |\n| 2 Narration | N labeled narration lines | reasoning |\n| 3 Block prompts | N labeled video prompts | reasoning |\n| 4 Voice | user selects one voice; generate N takes | `voices list` + `seed_audio` |\n| 5 Clips | generate N 10-second clips | `gemini_omni` |\n| 6 Assemble | one final MP4 | `explainer_video` |\n\nRead `references\u002Fprompts.md` before Phases 1–3.\n\n## Phase R — research\n\nFor a real topic, use available web research tools and authoritative sources to verify enough facts for every block. Keep a short Sources list. Never script a factual explainer from memory alone.\n\nFor a personal story, skip web research and use only details supplied by the user. Invent nothing factual.\n\n## Phase 1 — create or resolve the style key\n\nWrite one reusable STYLE descriptor: medium, palette, line\u002Ffill behavior, texture\u002Ffinish, then `non-photorealistic, illustrated, not a photo, no live-action, no realism`.\n\n### Selected CMS preset\n\nResolve the hidden style image into the active workspace:\n\n```bash\nhiggsfield preset resolve video-explainer \"\u003Cpreset UUID>\" --json\n```\n\nKeep the returned `media_id` as `STYLE_KEY_ID`. Skip image generation: this imported media is the style key. Build the STYLE descriptor from the returned preset name plus the mandatory non-photoreal rules. Do not recreate a preset from its name.\n\nThe preset reference controls framing. If it conflicts with the aspect requested in Phase 0, stop and let the user choose rather than silently fighting the reference.\n\n### Custom style or reference images\n\nGenerate exactly one key image. Use the abstract swatch template from `references\u002Fprompts.md`, or its mascot variant when character mode is enabled. Repeat `--image` for every style donor:\n\n```bash\nhiggsfield generate create nano_banana_2 \\\n  --prompt \"\u003Cstyle-key prompt>\" \\\n  --aspect_ratio 16:9 \\\n  --resolution 2k \\\n  --wait \\\n  --json\n```\n\nUse `9:16` for vertical. Keep the completed image job UUID as `STYLE_KEY_ID`; later CLI generations can reuse a completed job UUID as an image reference.\n\n## Phase 2 — write narration\n\nWrite exactly `N` labeled narration blocks in the selected language:\n\n```text\nBlock 1\n\u003Cline spoken over clip 1>\nBlock 2\n\u003Cline spoken over clip 2>\n```\n\n- One line per block, usually 20–24 words and about 8–9 seconds.\n- Keep every take under roughly 9.5 seconds.\n- Use plain spoken text only: no timecodes, emotion cues, parentheticals, or stage directions.\n- Spell numbers out.\n- Use a concrete tone and never say “in this video.”\n- For a topic, build from hook through payoff. For a personal story, preserve the user's details and protagonist.\n\n## Phase 3 — write matching video prompts\n\nWrite exactly `N` labeled English prompts using the template in `references\u002Fprompts.md`:\n\n```text\nBlock N\nSTYLE REFERENCE: Match the attached reference image EXACTLY. \u003Csame STYLE descriptor>\nSCENE: \u003Cone scene and action matching Block N narration>\nMOTION: \u003Ccamera move and animation behavior>\nAUDIO: \u003Cambient SFX or music only; no voice, dialogue, or narration>\nNEGATIVE: \u003Cstyle drift and realism bans; no lip-sync, captions, text, logos, or watermark>\n```\n\nFor mascot mode, Block 1 greets by gesture with mouth closed, the final block waves a sign-off, and middle blocks use consistent cameos only when useful. For faceless mode, use stylistic scenes only. Keep one clear action per block.\n\n## Phase 4 — generate every voice take first\n\nList the live voices, present the choices, and wait for the user to select one narrator:\n\n```bash\nhiggsfield voices list --json\n```\n\nKeep the selected voice's exact `id` and `type` (`preset` or `element`). Never invent or auto-pick a voice unless the user explicitly delegates it.\n\nGenerate one completed `seed_audio` job per narration block, always with the same voice:\n\n```bash\nhiggsfield generate create seed_audio \\\n  --prompt \"\u003CBlock N narration only>\" \\\n  --voice_type \"\u003Cpreset|element>\" \\\n  --voice_id \"\u003Cvoice UUID>\" \\\n  --wait \\\n  --json\n```\n\nRecord every audio job UUID in block order. Regenerate only a failed or excessively long take. Shorten that block or adjust `--speech_rate` modestly when needed. Do not begin Phase 5 until all `N` audio jobs are complete.\n\n## Phase 5 — generate every clip second\n\nGenerate one completed 10-second `gemini_omni` clip per block. Attach the same style key to every call:\n\n```bash\nhiggsfield generate create gemini_omni \\\n  --prompt \"\u003CBlock N video prompt>\" \\\n  --image \"\u003CSTYLE_KEY_ID>\" \\\n  --duration 10 \\\n  --resolution 720p \\\n  --aspect_ratio 16:9 \\\n  --wait \\\n  --json\n```\n\nUse `9:16` when selected. Record every video job UUID in block order. Independent jobs may run concurrently inside this phase, but the audio-phase barrier is strict. Re-submit only failed blocks. Never silently replace `gemini_omni`; inspect the live video catalog if the model is unavailable.\n\n## Phase 6 — assemble immediately\n\nCreate `blocks.json` with at least two ordered block pairs. The CLI model contract requires typed references, so use the generic completed-job types:\n\n```json\n[\n  {\n    \"video\": {\"id\": \"\u003Cclip 1 job UUID>\", \"type\": \"video_job\"},\n    \"audio\": {\"id\": \"\u003Cvoice 1 job UUID>\", \"type\": \"audio_job\"}\n  },\n  {\n    \"video\": {\"id\": \"\u003Cclip 2 job UUID>\", \"type\": \"video_job\"},\n    \"audio\": {\"id\": \"\u003Cvoice 2 job UUID>\", \"type\": \"audio_job\"}\n  }\n]\n```\n\nSubmit the server-side assembler immediately:\n\n```bash\nhiggsfield generate create explainer_video \\\n  --items @blocks.json \\\n  --width 1280 \\\n  --height 720 \\\n  --wait \\\n  --json\n```\n\nUse `--width 720 --height 1280` for vertical. When subtitles are enabled, add the chosen font:\n\n```bash\n--subtitles '{\"font\":\"patrick\"}'\n```\n\nThe assembler keeps each block at exactly 10 seconds: it centers short voice takes, pitch-safely speeds small overruns, never stretches video, concatenates blocks in order, and optionally burns timed captions. Total duration is exactly `N × 10` seconds.\n\nDo not use local ffmpeg, the legacy assembly scripts, or the monolithic `video_explainer` job.\n\n## Checkpoints and recovery\n\n- Before Phase 5: require one style key, exactly `N` narration lines and prompts, one selected voice, and `N` completed audio jobs.\n- Before Phase 6: require `N` completed video jobs and exact one-to-one block pairing with no missing or duplicate IDs.\n- Preset missing: refresh `preset list`; never reuse or fabricate an ID.\n- Preset resolve failure: verify workspace selection and retry once.\n- Style drift or realism: strengthen the shared STYLE and NEGATIVE text, then regenerate only that clip.\n- Timeout: rejoin with `higgsfield generate wait \u003Cjob_id> --json`; never duplicate a running job.\n- Two identical failures mean the prompt or parameters must change.\n\n## Deliver\n\nReturn the final assembled video URL, exact duration, aspect, narration language, selected style, narrator, subtitle status, and a Sources list for researched topics. Keep intermediate job IDs and loose asset URLs internal unless requested.\n","# Higgsfield Video Explainer\n\nRun the MCP video-explainer workflow through Higgsfield CLI. Lock one visual style key, write one narration line and one matching visual prompt per 10-second block, generate every voice take first, generate every clip second, then immediately assemble the ordered pairs with `explainer_video`.\n\nNever use the monolithic `video_explainer` job in this skill.\n\n## MCP-to-CLI mapping\n\n| MCP workflow operation | CLI equivalent |\n|---|---|\n| `get_explainer_presets` | `higgsfield preset list video-explainer --json` |\n| `resolve_explainer_preset` | `higgsfield preset resolve video-explainer \u003Cpreset_id> --json` |\n| `generate_image` \u002F `nano_banana_pro` | `higgsfield generate create nano_banana_2 ...` |\n| `list_voices` | `higgsfield voices list --json` |\n| `generate_audio` \u002F `seed_audio` | `higgsfield generate create seed_audio ...` |\n| `generate_video` \u002F `gemini_omni` | `higgsfield generate create gemini_omni ...` |\n| `job_status` | `--wait --json` or `higgsfield generate wait \u003Cjob_id> --json` |\n| `explainer_video` | `higgsfield generate create explainer_video ...` |\n\n`nano_banana_2` is the public CLI id for the Nano Banana Pro style-key model used by the MCP workflow.\n\n## Bootstrap\n\n1. If `higgsfield` is unavailable, install it:\n\n   ```bash\n   curl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002Fhiggsfield-ai\u002Fcli\u002Fmain\u002Finstall.sh | sh\n   ```\n\n2. If `higgsfield account status` fails, ask the user to run `higgsfield auth login`, then wait.\n3. Inspect the live contracts before the first submission:\n\n   ```bash\n   higgsfield model get nano_banana_2\n   higgsfield model get seed_audio\n   higgsfield model get gemini_omni\n   higgsfield model get explainer_video\n   ```\n\n## Phase 0 — ask first\n\nCollect choices in two separate turns, in this order. Never merge them.\n\n### Turn 1 — style only\n\nAlways load the live CMS catalog:\n\n```bash\nhiggsfield preset list video-explainer --json\n```\n\nShow the preset names with their thumbnail\u002Fvideo preview URLs. Say one short line asking the user to pick a preset, describe a custom style, or attach style-reference images, then end the turn. Do not ask production questions in the same turn. Choosing a style is mandatory; never choose silently unless the user explicitly says “you choose.”\n\nSkip this turn only when the request already contains `explainer preset id: \u003Cuuid>`. Confirm that UUID exists in the live catalog and keep it for Phase 1.\n\n### Turn 2 — production settings\n\nOnly after style selection, collect every unresolved setting:\n\n- Duration: one to ten whole minutes. `N = duration_minutes × 6` fixed 10-second blocks.\n- Narration language: English by default, but still offer the choice.\n- Character: recurring mascot or faceless stylistic scenes. Always ask.\n- Aspect: `16:9` by default or `9:16` vertical.\n- Subtitles: off by default. Explain that subtitles cost 0.05 credit per voiced block. If enabled, make the user choose `patrick`, `caveat`, `marker`, or `anton`; never choose silently.\n\nEvery choice belongs to the user unless they explicitly delegate it.\n\n## Inputs\n\n- Topic or personal\u002Fphilosophical story.\n- Optional local source documents; read\u002Fextract them before scripting. They are factual input, not generation media.\n- Optional preset UUID, mutually exclusive with custom style-reference images.\n- Optional style-reference images. Use only their rendering style and color grading; never copy their people, text, logos, or objects unless requested.\n- Duration, language, character mode, aspect, and subtitle choice from Phase 0.\n\nFor local style donors, pass each path with a repeated `--image`. For a web image, download it locally first or use an existing uploaded media ID.\n\n## Hard rules\n\n- Keep every visual strictly non-photorealistic. Repeat the same STYLE descriptor and non-realism negatives in every clip prompt.\n- Keep all spoken words out of video generation. Clip audio is ambient sound or music only; no dialogue, lip-sync, or baked narration.\n- Use exactly one narration take and one clip per labeled block. Block N audio always maps to Block N video.\n- Attach the same style-key image to every clip.\n- Write all image\u002Fvideo prompts in English. Only narration uses the selected language.\n- Research real topics before scripting. Do not invent quotes, dates, numbers, or events.\n- Assemble automatically in the same run. Returning loose clips is a failure.\n\n## Pipeline\n\n| Phase | Output | CLI |\n|---|---|---|\n| 0 Ask | style first; then duration, language, character, aspect, subtitles | `preset list` + user questions |\n| R Research | verified facts and sources | available research tools |\n| 1 Style key | one universal style image | `preset resolve` or `nano_banana_2` |\n| 2 Narration | N labeled narration lines | reasoning |\n| 3 Block prompts | N labeled video prompts | reasoning |\n| 4 Voice | user selects one voice; generate N takes | `voices list` + `seed_audio` |\n| 5 Clips | generate N 10-second clips | `gemini_omni` |\n| 6 Assemble | one final MP4 | `explainer_video` |\n\nRead `references\u002Fprompts.md` before Phases 1–3.\n\n## Phase R — research\n\nFor a real topic, use available web research tools and authoritative sources to verify enough facts for every block. Keep a short Sources list. Never script a factual explainer from memory alone.\n\nFor a personal story, skip web research and use only details supplied by the user. Invent nothing factual.\n\n## Phase 1 — create or resolve the style key\n\nWrite one reusable STYLE descriptor: medium, palette, line\u002Ffill behavior, texture\u002Ffinish, then `non-photorealistic, illustrated, not a photo, no live-action, no realism`.\n\n### Selected CMS preset\n\nResolve the hidden style image into the active workspace:\n\n```bash\nhiggsfield preset resolve video-explainer \"\u003Cpreset UUID>\" --json\n```\n\nKeep the returned `media_id` as `STYLE_KEY_ID`. Skip image generation: this imported media is the style key. Build the STYLE descriptor from the returned preset name plus the mandatory non-photoreal rules. Do not recreate a preset from its name.\n\nThe preset reference controls framing. If it conflicts with the aspect requested in Phase 0, stop and let the user choose rather than silently fighting the reference.\n\n### Custom style or reference images\n\nGenerate exactly one key image. Use the abstract swatch template from `references\u002Fprompts.md`, or its mascot variant when character mode is enabled. Repeat `--image` for every style donor:\n\n```bash\nhiggsfield generate create nano_banana_2 \\\n  --prompt \"\u003Cstyle-key prompt>\" \\\n  --aspect_ratio 16:9 \\\n  --resolution 2k \\\n  --wait \\\n  --json\n```\n\nUse `9:16` for vertical. Keep the completed image job UUID as `STYLE_KEY_ID`; later CLI generations can reuse a completed job UUID as an image reference.\n\n## Phase 2 — write narration\n\nWrite exactly `N` labeled narration blocks in the selected language:\n\n```text\nBlock 1\n\u003Cline spoken over clip 1>\nBlock 2\n\u003Cline spoken over clip 2>\n```\n\n- One line per block, usually 20–24 words and about 8–9 seconds.\n- Keep every take under roughly 9.5 seconds.\n- Use plain spoken text only: no timecodes, emotion cues, parentheticals, or stage directions.\n- Spell numbers out.\n- Use a concrete tone and never say “in this video.”\n- For a topic, build from hook through payoff. For a personal story, preserve the user's details and protagonist.\n\n## Phase 3 — write matching video prompts\n\nWrite exactly `N` labeled English prompts using the template in `references\u002Fprompts.md`:\n\n```text\nBlock N\nSTYLE REFERENCE: Match the attached reference image EXACTLY. \u003Csame STYLE descriptor>\nSCENE: \u003Cone scene and action matching Block N narration>\nMOTION: \u003Ccamera move and animation behavior>\nAUDIO: \u003Cambient SFX or music only; no voice, dialogue, or narration>\nNEGATIVE: \u003Cstyle drift and realism bans; no lip-sync, captions, text, logos, or watermark>\n```\n\nFor mascot mode, Block 1 greets by gesture with mouth closed, the final block waves a sign-off, and middle blocks use consistent cameos only when useful. For faceless mode, use stylistic scenes only. Keep one clear action per block.\n\n## Phase 4 — generate every voice take first\n\nList the live voices, present the choices, and wait for the user to select one narrator:\n\n```bash\nhiggsfield voices list --json\n```\n\nKeep the selected voice's exact `id` and `type` (`preset` or `element`). Never invent or auto-pick a voice unless the user explicitly delegates it.\n\nGenerate one completed `seed_audio` job per narration block, always with the same voice:\n\n```bash\nhiggsfield generate create seed_audio \\\n  --prompt \"\u003CBlock N narration only>\" \\\n  --voice_type \"\u003Cpreset|element>\" \\\n  --voice_id \"\u003Cvoice UUID>\" \\\n  --wait \\\n  --json\n```\n\nRecord every audio job UUID in block order. Regenerate only a failed or excessively long take. Shorten that block or adjust `--speech_rate` modestly when needed. Do not begin Phase 5 until all `N` audio jobs are complete.\n\n## Phase 5 — generate every clip second\n\nGenerate one completed 10-second `gemini_omni` clip per block. Attach the same style key to every call:\n\n```bash\nhiggsfield generate create gemini_omni \\\n  --prompt \"\u003CBlock N video prompt>\" \\\n  --image \"\u003CSTYLE_KEY_ID>\" \\\n  --duration 10 \\\n  --resolution 720p \\\n  --aspect_ratio 16:9 \\\n  --wait \\\n  --json\n```\n\nUse `9:16` when selected. Record every video job UUID in block order. Independent jobs may run concurrently inside this phase, but the audio-phase barrier is strict. Re-submit only failed blocks. Never silently replace `gemini_omni`; inspect the live video catalog if the model is unavailable.\n\n## Phase 6 — assemble immediately\n\nCreate `blocks.json` with at least two ordered block pairs. The CLI model contract requires typed references, so use the generic completed-job types:\n\n```json\n[\n  {\n    \"video\": {\"id\": \"\u003Cclip 1 job UUID>\", \"type\": \"video_job\"},\n    \"audio\": {\"id\": \"\u003Cvoice 1 job UUID>\", \"type\": \"audio_job\"}\n  },\n  {\n    \"video\": {\"id\": \"\u003Cclip 2 job UUID>\", \"type\": \"video_job\"},\n    \"audio\": {\"id\": \"\u003Cvoice 2 job UUID>\", \"type\": \"audio_job\"}\n  }\n]\n```\n\nSubmit the server-side assembler immediately:\n\n```bash\nhiggsfield generate create explainer_video \\\n  --items @blocks.json \\\n  --width 1280 \\\n  --height 720 \\\n  --wait \\\n  --json\n```\n\nUse `--width 720 --height 1280` for vertical. When subtitles are enabled, add the chosen font:\n\n```bash\n--subtitles '{\"font\":\"patrick\"}'\n```\n\nThe assembler keeps each block at exactly 10 seconds: it centers short voice takes, pitch-safely speeds small overruns, never stretches video, concatenates blocks in order, and optionally burns timed captions. Total duration is exactly `N × 10` seconds.\n\nDo not use local ffmpeg, the legacy assembly scripts, or the monolithic `video_explainer` job.\n\n## Checkpoints and recovery\n\n- Before Phase 5: require one style key, exactly `N` narration lines and prompts, one selected voice, and `N` completed audio jobs.\n- Before Phase 6: require `N` completed video jobs and exact one-to-one block pairing with no missing or duplicate IDs.\n- Preset missing: refresh `preset list`; never reuse or fabricate an ID.\n- Preset resolve failure: verify workspace selection and retry once.\n- Style drift or realism: strengthen the shared STYLE and NEGATIVE text, then regenerate only that clip.\n- Timeout: rejoin with `higgsfield generate wait \u003Cjob_id> --json`; never duplicate a running job.\n- Two identical failures mean the prompt or parameters must change.\n\n## Deliver\n\nReturn the final assembled video URL, exact duration, aspect, narration language, selected style, narrator, subtitle status, and a Sources list for researched topics. Keep intermediate job IDs and loose asset URLs internal unless requested.\n",{"name":5,"version":52,"description":53,"allowed-tools":43,"argument-hint":54},"0.13.0","Build a complete non-photoreal narrated explainer or story video from\nordered 10-second blocks: one narrator, one universal style key, one Seed\nAudio take and one Gemini Omni clip per block, then server-side assembly\nwith explainer_video. Use when: \"make an explainer video\", \"explain this in\na video\", \"turn this topic or document into a narrated video\", \"tell this\nstory as an animated video\", \"make a faceless narrated video\", or \"show me\nexplainer styles\". Supports live CMS presets, custom style references,\nmascot\u002Ffaceless modes, two aspects, and optional burned subtitles. NOT for:\nphotoreal films, ads\u002FUGC, talking heads, podcasts, motion typography reels,\none-off clips without narration, or editing a finished video.\n","[topic or source files] [duration] [language] [aspect ratio]","main","563fd9d0d01a7240bf22073090c9484e9070e8e8","external\u002Fhiggsfield-video-explainer",0,"https:\u002F\u002Fgithub.com\u002Fsgomez-dev\u002Fclaude-skills","https:\u002F\u002Fgithub.com\u002Fsgomez-dev","https:\u002F\u002Fsgomez.dev","\"Volnuratus non victus\"","2026-10-01 18:25:47",{"source":8,"skillName":5,"commands":65,"prompt":75,"zipAvailable":76},[66,69,72],{"tool":67,"command":68},"npx","npx skills add sgomez-dev\u002Fclaude-skills --skill higgsfield-video-explainer",{"tool":70,"command":71},"bunx","bunx skills add sgomez-dev\u002Fclaude-skills --skill higgsfield-video-explainer",{"tool":73,"command":74},"pnpm","pnpm dlx skills add sgomez-dev\u002Fclaude-skills --skill higgsfield-video-explainer","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fsgomez-dev\u002Fclaude-skills\u002Fblob\u002Fmain\u002Fexternal\u002Fhiggsfield-video-explainer\u002FSKILL.md",true,[78,83,89],{"path":79,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":81,"sourceHtmlUrl":82},"LICENSE","许可证",1070,"https:\u002F\u002Fgithub.com\u002Fsgomez-dev\u002Fclaude-skills\u002Fblob\u002Fmain\u002Fexternal\u002Fhiggsfield-video-explainer\u002FLICENSE",{"path":84,"resourceType":85,"resourceTypeDesc":86,"sizeBytes":87,"sourceHtmlUrl":88},"references\u002Fprompts.md","REFERENCE","参考文档",4812,"https:\u002F\u002Fgithub.com\u002Fsgomez-dev\u002Fclaude-skills\u002Fblob\u002Fmain\u002Fexternal\u002Fhiggsfield-video-explainer\u002Freferences\u002Fprompts.md",{"path":90,"resourceType":85,"resourceTypeDesc":86,"sizeBytes":91,"sourceHtmlUrl":92},"UPSTREAM.md",824,"https:\u002F\u002Fgithub.com\u002Fsgomez-dev\u002Fclaude-skills\u002Fblob\u002Fmain\u002Fexternal\u002Fhiggsfield-video-explainer\u002FUPSTREAM.md",[94,105,113,124,134,143],{"skillNo":95,"name":96,"nameZh":6,"description":97,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":98,"categories":99,"keywords":100,"publishedAt":47},"01M6J8Q0WEP76PV381RJDTRTV4","template","YOUR_DESCRIPTION_HERE (shown in command palette, keep under 80 chars)","https:\u002F\u002Fgithub.com\u002Fsgomez-dev\u002Fclaude-skills\u002Fblob\u002Fmain\u002Ftemplate\u002FSKILL.md",[],[96,101,102,103,104],"command palette","command","palette","keep",{"skillNo":106,"name":107,"nameZh":6,"description":108,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":109,"categories":110,"keywords":111,"publishedAt":47},"01M6J8PY4KNE7SQP5BD2X1YMHJ","multi","Line one continues here.   Second sentence.","https:\u002F\u002Fgithub.com\u002Fsgomez-dev\u002Fclaude-skills\u002Fblob\u002Fmain\u002Fsite\u002Ftests\u002Ffixtures\u002Frepo\u002Fexternal\u002Fmulti\u002FSKILL.md",[],[107,112],"line",{"skillNo":114,"name":115,"nameZh":6,"description":116,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":117,"categories":118,"keywords":119,"publishedAt":47},"01M6J8PVS7AY0AWP36JRQ7T8S6","ffmpeg","FFmpeg recipes for video production.","https:\u002F\u002Fgithub.com\u002Fsgomez-dev\u002Fclaude-skills\u002Fblob\u002Fmain\u002Fsite\u002Ftests\u002Ffixtures\u002Frepo\u002Fexternal\u002Fffmpeg\u002FSKILL.md",[],[115,120,27,121,122,123],"Production","video production","recipes","for",{"skillNo":125,"name":126,"nameZh":6,"description":127,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":128,"categories":129,"keywords":131,"publishedAt":47},"01M6J8PS6NDT2VY6Y72QW3NGGH","secret-skill","Private, never published.","https:\u002F\u002Fgithub.com\u002Fsgomez-dev\u002Fclaude-skills\u002Fblob\u002Fmain\u002Fsite\u002Ftests\u002Ffixtures\u002Frepo\u002Fexternal\u002F.local\u002Fsecret-skill\u002FSKILL.md",[130],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[132,133],"secret skill","never",{"skillNo":135,"name":136,"nameZh":6,"description":137,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":138,"categories":139,"keywords":140,"publishedAt":47},"01M6J8PQETD1FW6BWPPSWXFH5N","external-no-license","Has no license.","https:\u002F\u002Fgithub.com\u002Fsgomez-dev\u002Fclaude-skills\u002Fblob\u002Fmain\u002Fsite\u002Ftests\u002Ffixtures\u002Frepo\u002Fbroken\u002Fexternal-no-license\u002FSKILL.md",[],[141,142],"license","external no license",{"skillNo":144,"name":145,"nameZh":6,"description":146,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":147,"categories":148,"keywords":160,"publishedAt":47},"01M6J8PJ5XGMZZZZGECEDHN13J","write-swift","How to write modern Swift well — modeling with value types, Swift 6 data-race safety and approachable concurrency (@concurrent, main-actor-by-default, actors, task groups), protocols and generics (some vs any), API design, performance and ARC, Swift Testing, macros, and the modern language features agents don't know about yet. Use when writing, reviewing, or migrating Swift, or when a concurrency error, a hang, a data race, a retain cycle, or a performance problem needs fixing.","https:\u002F\u002Fgithub.com\u002Fsgomez-dev\u002Fclaude-skills\u002Fblob\u002Fmain\u002Fexternal\u002Fwrite-swift\u002FSKILL.md",[149,152,155],{"categoryNo":150,"categoryName":151,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":153,"categoryName":154,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":156,"categoryName":157,"taxonomyType":158,"taxonomyTypeDesc":159},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[161,162,163,164,165,166,167,168,169,170,171,172,55,173,174,175,176,177,178,179],"swift","write","write swift","features","retain","testing","types","error","how to","problem","modeling","cycle","default","how","api","concurrency","performance","writing","design"]