[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6HQMKRVSJCZX6H9P9VXT6NY":3,"skill-same:01M6HQMKRVSJCZX6H9P9VXT6NY":77},{"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":23,"publishedAt":49,"linkOnly":50,"markdownContent":51,"markdownBody":52,"frontMatter":53,"refName":54,"commitSha":55,"skillDirectory":56,"forksCount":57,"repositoryHtmlUrl":58,"repositoryHomepageUrl":59,"ownerHtmlUrl":60,"ownerBlogUrl":61,"ownerDescription":6,"updatedAt":62,"install":63,"resources":76},"01M6HQMKRVSJCZX6H9P9VXT6NY","effectcraft",null,"Headless motion graphics with EffectCraft (After-Effects-style comps, layers, text presets, keyframes), provisioned on demand by pi-craft - animate a composition and render a transparent ProRes 4444 overlay, mp4, GIF or still. Use for \"make an animated title with a transparent background\", \"render a lower third as a mov with alpha\", \"export a still frame of this comp\".","BlackBeltTechnology\u002Fpi-agent-dashboard","BlackBeltTechnology","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F8101592?v=4","01M6HQDX7QAJA0QP4NYRYBMJ8A","BlackBelt Technology","01M6HQDXCC7719N9YDMQVH9JS6",348,"MIT","https:\u002F\u002Fgithub.com\u002FBlackBeltTechnology\u002Fpi-agent-dashboard\u002Fblob\u002Fdevelop\u002Fpackages\u002Fcraft-apps\u002F.pi\u002Fskills\u002Feffectcraft\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[5,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],"style","title","overlay","effects","for","layers","comps","headless","with","render","make","comp","graphics","as","craft","motion","export","use","pi","motion graphics","animate","text","mp4","Composition","alpha","2026-11-10 10:12:30",false,"---\nname: effectcraft\ndescription: Headless motion graphics with EffectCraft (After-Effects-style comps, layers, text presets, keyframes), provisioned on demand by pi-craft - animate a composition and render a transparent ProRes 4444 overlay, mp4, GIF or still. Use for \"make an animated title with a transparent background\", \"render a lower third as a mov with alpha\", \"export a still frame of this comp\".\n---\n\n# EffectCraft — headless motion graphics\n\nEffectCraft is ArtCraft's compositing\u002Fmotion app (comps, layers, 731 commands, 300+ effects). `pi-craft`\nprovisions the headless `effectcraft-cli` on first use (no desktop app). Choosing between apps, the\ndiscover → execute → save → verify loop, the hand-off formats and the MCP policy live in `craft-studio`\n(an alpha overlay for FilmCraft is **mov ProRes 4444 with rgba channels** — this skill produces it).\n\n## What it is for \u002F formats\n\nCompositions of text, shapes, footage and effects with keyframes, expressions and text animation presets.\nProject file: `.ecproj`. Renders `h264 hevc av1 prores webm gif`, image sequences `png jpeg tiff exr`, audio\n`wav aiff`; a single still via `render-frame` (png). For finished video editing use FilmCraft, for a still\nraster edit PhotoCraft.\n\n## CLI dialect\n\n`pi-craft effectcraft exec \u003Cargs…>` passes the arguments to `effectcraft-cli`.\n**Project flags come before the subcommand** (`--empty`, `--project F.ecproj`, `--save`, `--save-as F`).\n\n```bash\neffectcraft-cli commands [--filter TEXT] [--enabled] [--json]   # list ids; --json adds the parameter schema\neffectcraft-cli exec \u003Cid> --params JSON                         # one command (\"exec --list\" = commands)\neffectcraft-cli run \u003Cid> \u003Cjson> [\u003Cid> \u003Cjson> …]                 # several, in order (each id followed by its JSON)\neffectcraft-cli script FILE.jsx [F.ecproj] | --eval CODE        # After-Effects-style JS object model (project, comps, layers)\neffectcraft-cli info | props \u003Ccomp> \u003Clayer> [--flat] | get \u003Ccomp> \u003Clayer> \u003Cpath> [--time S] | set \u003Ccomp> \u003Clayer> \u003Cpath> \u003Cvalue> [--time S]\neffectcraft-cli render [--comp C] --out FILE --format F [--prores 4444] [--channels rgb|rgba] [--resolution half] [--start S --end S]\neffectcraft-cli render-frame [--comp C] --time S|--frame N [--max-side PX] --out F.png [--transparent]\n```\n\n- `\u003Ccomp>`: id or name, **`-` = the active comp**. `\u003Clayer>`: id, `#n` (index) or name. Property paths are\n  slash paths from `props --flat` (e.g. `transform\u002Fopacity`, `transform\u002Fposition`).\n- `run` takes **JSON as the next argument**, not `--params`: `run comp.new '{…}' layer.newText '{…}'`. Each command\n  prints its result (`{\"comp\":1}`, `{\"layer\":2}`) — keep ids for later steps.\n- Text animation presets: `layer.applyTextPreset '{\"preset\":\"fadeUpCharacters\"}'` (also `typewriter`, `blurIn`,\n  `trackingIn`, `dropInLines`, …); it applies to the last layer when `layer` is omitted.\n- Keyframes: `prop.addKey '{\"layer\":\"Name\",\"path\":\"transform\u002Fopacity\",\"time\":1,\"value\":100}'`.\n\n## State between invocations\n\nA bare `run`\u002F`exec`\u002F`set` changes an in-memory project and **throws it away on exit**. Persist explicitly:\n\n- first time: `--empty --save-as t.ecproj run …` (creates the file);\n- later: `--project t.ecproj --save run …` (open, edit, write back). `--project t.ecproj run …` **without\n  `--save` discards the edit**; a `render`\u002F`render-frame`\u002F`info` on `--project` only reads.\n- `--save` also works on `set` (`--project t.ecproj --save set Title Hello transform\u002Fopacity 100 --time 1`).\n\n## Discovery first\n\nCommand ids change between releases and parameters are optional-heavy objects — read the schema.\n\n```bash\npi-craft effectcraft exec commands --filter newText            # id, label, shortcut, params\npi-craft effectcraft exec commands --json --filter prop.addKey  # JSON schema (+ \"enabled\"\u002F\"why\")\npi-craft effectcraft exec --project t.ecproj info              # comps, layers, active comp\npi-craft effectcraft exec --project t.ecproj props - '#1' --flat   # property paths of layer 1 in the active comp\n```\n\n## Traps\n\n- **No `--project`\u002F`--empty` ⇒ a pre-populated demo project** (folders, \"Lower Third\", 90+ items), not a blank one.\n  Always start with `--empty --save-as X.ecproj` so a leftover demo item cannot end up in your render.\n- **Alpha needs both** `--format prores --prores 4444` **and** `--channels rgba` (`.mov`). Without `--channels rgba`\n  the file is `yuv444p12le` and `verify --alpha` fails; with it the pixel format is `yuva444p12le` and the\n  background really is transparent (comp background colour is not painted).\n- `render-frame` is opaque `rgb24` unless you add `--transparent` (then `rgba`).\n- A PNG render (`--format png`) is a **sequence**: `--out nocomp.png` writes `nocomp_00025.png` (frame number\n  appended). For one frame use `render-frame`.\n- `render-frame --time` is in seconds, `--frame` in frames; `--max-side 640` \u002F `--scale K` shrinks the still.\n- `set … --time T` creates a **keyframe** at T (the property becomes animated with a single key); omit `--time`\n  for a static value. Use `prop.addKey` pairs for a real animation.\n- `pi-craft verify --frame-diff 1.5:still.png\\>0.1` fails with \"no frame at 1.5 s\" because a still only has a\n  frame at 0 — write **`1.5:still.png@0\\>0.1`** (`@\u003Cref time>`). The diff compares luma, so a 1 % result for a\n  title on transparency is normal.\n- The `--out` of `render` is relative to the working directory; the render line prints the absolute path.\n- Layer names: the text layer is named after its text unless `name` is passed; duplicates make `Name` ambiguous\n  — use `#n` or the returned id.\n\n## MCP route (opt-in)\n\n`pi-craft effectcraft mcp --register` writes a `craft-effectcraft` entry into `.pi\u002Fmcp.json` (27 tools). It is\nconfined to the project directory (automation read\u002Fwrite roots; scripts are refused). Use MCP for a long\ninteractive session on one open document, bash for everything above. GUI bridging (`--bridge`) is out of scope.\n\n## Recipes\n\n```bash recipe: title-alpha\n# Animated title (fades in over 1 s) -> ProRes 4444 overlay with real transparency.\npi-craft effectcraft exec --empty --save-as t.ecproj run \\\n  comp.new '{\"name\":\"Title\",\"width\":1280,\"height\":720,\"frameRate\":25,\"duration\":2}' \\\n  layer.newText '{\"text\":\"Fade\",\"size\":120,\"position\":[640,360]}' \\\n  prop.addKey '{\"layer\":\"Fade\",\"path\":\"transform\u002Fopacity\",\"time\":0,\"value\":0}' \\\n  prop.addKey '{\"layer\":\"Fade\",\"path\":\"transform\u002Fopacity\",\"time\":1,\"value\":100}'\npi-craft effectcraft exec --project t.ecproj render --out title.mov --format prores --prores 4444 --channels rgba\npi-craft effectcraft exec --project t.ecproj render-frame --time 0 --out blank.png --transparent\npi-craft verify title.mov --alpha --size 1280x720 --duration 2±0.1 --frame-diff 1.5:blank.png@0\\>0.1\n```\n\n```bash recipe: still-frame\n# A still from an animated text preset; --max-side halves it, --transparent keeps alpha.\npi-craft effectcraft exec --empty --save-as t.ecproj run \\\n  comp.new '{\"name\":\"Title\",\"width\":1280,\"height\":720,\"frameRate\":25,\"duration\":2}' \\\n  layer.newText '{\"text\":\"Hello\",\"size\":120,\"position\":[640,360]}' \\\n  layer.applyTextPreset '{\"preset\":\"fadeUpCharacters\"}'\npi-craft effectcraft exec --project t.ecproj render-frame --time 0 --out first.png --transparent\npi-craft effectcraft exec --project t.ecproj render-frame --time 1.5 --max-side 640 --out still.png --transparent\npi-craft verify still.png --alpha --size 640x360\n```\n\n```bash recipe: mp4-resume\n# Re-open the saved project with --save to add a layer, then render a half-resolution mp4.\npi-craft effectcraft exec --empty --save-as t.ecproj run \\\n  comp.new '{\"name\":\"Card\",\"width\":1280,\"height\":720,\"frameRate\":25,\"duration\":2,\"background\":\"#203040\"}' \\\n  layer.newText '{\"text\":\"One\",\"name\":\"One\",\"size\":100,\"position\":[640,260]}'\npi-craft effectcraft exec --project t.ecproj --save run \\\n  layer.newText '{\"text\":\"Two\",\"name\":\"Two\",\"size\":100,\"position\":[640,460]}'\npi-craft effectcraft exec --project t.ecproj render --out card.mp4 --format h264 --resolution half\npi-craft verify card.mp4 --size 640x360 --duration 2±0.1 --has-video\n```\n\n```bash recipe: script-comp\n# The After-Effects-style object model: build a comp from JavaScript, save, render.\ncat > build.jsx \u003C\u003C'JS'\nvar A = app;\nvar C = A.project.items.addComp(\"Scripted\", 640, 360, 1, 2, 25);\nC.layers.addText(\"Hi\");\nwriteLn(C.name + \" \" + C.layers.length);\nJS\npi-craft effectcraft exec --empty --save-as s.ecproj script build.jsx\npi-craft effectcraft exec --project s.ecproj render-frame --time 0 --out frame.png\npi-craft verify frame.png --size 640x360\n```\n","# EffectCraft — headless motion graphics\n\nEffectCraft is ArtCraft's compositing\u002Fmotion app (comps, layers, 731 commands, 300+ effects). `pi-craft`\nprovisions the headless `effectcraft-cli` on first use (no desktop app). Choosing between apps, the\ndiscover → execute → save → verify loop, the hand-off formats and the MCP policy live in `craft-studio`\n(an alpha overlay for FilmCraft is **mov ProRes 4444 with rgba channels** — this skill produces it).\n\n## What it is for \u002F formats\n\nCompositions of text, shapes, footage and effects with keyframes, expressions and text animation presets.\nProject file: `.ecproj`. Renders `h264 hevc av1 prores webm gif`, image sequences `png jpeg tiff exr`, audio\n`wav aiff`; a single still via `render-frame` (png). For finished video editing use FilmCraft, for a still\nraster edit PhotoCraft.\n\n## CLI dialect\n\n`pi-craft effectcraft exec \u003Cargs…>` passes the arguments to `effectcraft-cli`.\n**Project flags come before the subcommand** (`--empty`, `--project F.ecproj`, `--save`, `--save-as F`).\n\n```bash\neffectcraft-cli commands [--filter TEXT] [--enabled] [--json]   # list ids; --json adds the parameter schema\neffectcraft-cli exec \u003Cid> --params JSON                         # one command (\"exec --list\" = commands)\neffectcraft-cli run \u003Cid> \u003Cjson> [\u003Cid> \u003Cjson> …]                 # several, in order (each id followed by its JSON)\neffectcraft-cli script FILE.jsx [F.ecproj] | --eval CODE        # After-Effects-style JS object model (project, comps, layers)\neffectcraft-cli info | props \u003Ccomp> \u003Clayer> [--flat] | get \u003Ccomp> \u003Clayer> \u003Cpath> [--time S] | set \u003Ccomp> \u003Clayer> \u003Cpath> \u003Cvalue> [--time S]\neffectcraft-cli render [--comp C] --out FILE --format F [--prores 4444] [--channels rgb|rgba] [--resolution half] [--start S --end S]\neffectcraft-cli render-frame [--comp C] --time S|--frame N [--max-side PX] --out F.png [--transparent]\n```\n\n- `\u003Ccomp>`: id or name, **`-` = the active comp**. `\u003Clayer>`: id, `#n` (index) or name. Property paths are\n  slash paths from `props --flat` (e.g. `transform\u002Fopacity`, `transform\u002Fposition`).\n- `run` takes **JSON as the next argument**, not `--params`: `run comp.new '{…}' layer.newText '{…}'`. Each command\n  prints its result (`{\"comp\":1}`, `{\"layer\":2}`) — keep ids for later steps.\n- Text animation presets: `layer.applyTextPreset '{\"preset\":\"fadeUpCharacters\"}'` (also `typewriter`, `blurIn`,\n  `trackingIn`, `dropInLines`, …); it applies to the last layer when `layer` is omitted.\n- Keyframes: `prop.addKey '{\"layer\":\"Name\",\"path\":\"transform\u002Fopacity\",\"time\":1,\"value\":100}'`.\n\n## State between invocations\n\nA bare `run`\u002F`exec`\u002F`set` changes an in-memory project and **throws it away on exit**. Persist explicitly:\n\n- first time: `--empty --save-as t.ecproj run …` (creates the file);\n- later: `--project t.ecproj --save run …` (open, edit, write back). `--project t.ecproj run …` **without\n  `--save` discards the edit**; a `render`\u002F`render-frame`\u002F`info` on `--project` only reads.\n- `--save` also works on `set` (`--project t.ecproj --save set Title Hello transform\u002Fopacity 100 --time 1`).\n\n## Discovery first\n\nCommand ids change between releases and parameters are optional-heavy objects — read the schema.\n\n```bash\npi-craft effectcraft exec commands --filter newText            # id, label, shortcut, params\npi-craft effectcraft exec commands --json --filter prop.addKey  # JSON schema (+ \"enabled\"\u002F\"why\")\npi-craft effectcraft exec --project t.ecproj info              # comps, layers, active comp\npi-craft effectcraft exec --project t.ecproj props - '#1' --flat   # property paths of layer 1 in the active comp\n```\n\n## Traps\n\n- **No `--project`\u002F`--empty` ⇒ a pre-populated demo project** (folders, \"Lower Third\", 90+ items), not a blank one.\n  Always start with `--empty --save-as X.ecproj` so a leftover demo item cannot end up in your render.\n- **Alpha needs both** `--format prores --prores 4444` **and** `--channels rgba` (`.mov`). Without `--channels rgba`\n  the file is `yuv444p12le` and `verify --alpha` fails; with it the pixel format is `yuva444p12le` and the\n  background really is transparent (comp background colour is not painted).\n- `render-frame` is opaque `rgb24` unless you add `--transparent` (then `rgba`).\n- A PNG render (`--format png`) is a **sequence**: `--out nocomp.png` writes `nocomp_00025.png` (frame number\n  appended). For one frame use `render-frame`.\n- `render-frame --time` is in seconds, `--frame` in frames; `--max-side 640` \u002F `--scale K` shrinks the still.\n- `set … --time T` creates a **keyframe** at T (the property becomes animated with a single key); omit `--time`\n  for a static value. Use `prop.addKey` pairs for a real animation.\n- `pi-craft verify --frame-diff 1.5:still.png\\>0.1` fails with \"no frame at 1.5 s\" because a still only has a\n  frame at 0 — write **`1.5:still.png@0\\>0.1`** (`@\u003Cref time>`). The diff compares luma, so a 1 % result for a\n  title on transparency is normal.\n- The `--out` of `render` is relative to the working directory; the render line prints the absolute path.\n- Layer names: the text layer is named after its text unless `name` is passed; duplicates make `Name` ambiguous\n  — use `#n` or the returned id.\n\n## MCP route (opt-in)\n\n`pi-craft effectcraft mcp --register` writes a `craft-effectcraft` entry into `.pi\u002Fmcp.json` (27 tools). It is\nconfined to the project directory (automation read\u002Fwrite roots; scripts are refused). Use MCP for a long\ninteractive session on one open document, bash for everything above. GUI bridging (`--bridge`) is out of scope.\n\n## Recipes\n\n```bash recipe: title-alpha\n# Animated title (fades in over 1 s) -> ProRes 4444 overlay with real transparency.\npi-craft effectcraft exec --empty --save-as t.ecproj run \\\n  comp.new '{\"name\":\"Title\",\"width\":1280,\"height\":720,\"frameRate\":25,\"duration\":2}' \\\n  layer.newText '{\"text\":\"Fade\",\"size\":120,\"position\":[640,360]}' \\\n  prop.addKey '{\"layer\":\"Fade\",\"path\":\"transform\u002Fopacity\",\"time\":0,\"value\":0}' \\\n  prop.addKey '{\"layer\":\"Fade\",\"path\":\"transform\u002Fopacity\",\"time\":1,\"value\":100}'\npi-craft effectcraft exec --project t.ecproj render --out title.mov --format prores --prores 4444 --channels rgba\npi-craft effectcraft exec --project t.ecproj render-frame --time 0 --out blank.png --transparent\npi-craft verify title.mov --alpha --size 1280x720 --duration 2±0.1 --frame-diff 1.5:blank.png@0\\>0.1\n```\n\n```bash recipe: still-frame\n# A still from an animated text preset; --max-side halves it, --transparent keeps alpha.\npi-craft effectcraft exec --empty --save-as t.ecproj run \\\n  comp.new '{\"name\":\"Title\",\"width\":1280,\"height\":720,\"frameRate\":25,\"duration\":2}' \\\n  layer.newText '{\"text\":\"Hello\",\"size\":120,\"position\":[640,360]}' \\\n  layer.applyTextPreset '{\"preset\":\"fadeUpCharacters\"}'\npi-craft effectcraft exec --project t.ecproj render-frame --time 0 --out first.png --transparent\npi-craft effectcraft exec --project t.ecproj render-frame --time 1.5 --max-side 640 --out still.png --transparent\npi-craft verify still.png --alpha --size 640x360\n```\n\n```bash recipe: mp4-resume\n# Re-open the saved project with --save to add a layer, then render a half-resolution mp4.\npi-craft effectcraft exec --empty --save-as t.ecproj run \\\n  comp.new '{\"name\":\"Card\",\"width\":1280,\"height\":720,\"frameRate\":25,\"duration\":2,\"background\":\"#203040\"}' \\\n  layer.newText '{\"text\":\"One\",\"name\":\"One\",\"size\":100,\"position\":[640,260]}'\npi-craft effectcraft exec --project t.ecproj --save run \\\n  layer.newText '{\"text\":\"Two\",\"name\":\"Two\",\"size\":100,\"position\":[640,460]}'\npi-craft effectcraft exec --project t.ecproj render --out card.mp4 --format h264 --resolution half\npi-craft verify card.mp4 --size 640x360 --duration 2±0.1 --has-video\n```\n\n```bash recipe: script-comp\n# The After-Effects-style object model: build a comp from JavaScript, save, render.\ncat > build.jsx \u003C\u003C'JS'\nvar A = app;\nvar C = A.project.items.addComp(\"Scripted\", 640, 360, 1, 2, 25);\nC.layers.addText(\"Hi\");\nwriteLn(C.name + \" \" + C.layers.length);\nJS\npi-craft effectcraft exec --empty --save-as s.ecproj script build.jsx\npi-craft effectcraft exec --project s.ecproj render-frame --time 0 --out frame.png\npi-craft verify frame.png --size 640x360\n```\n",{"name":5,"description":7},"develop","fb9a5af356f540de4839ef851ebbe14bcce64c0f","packages\u002Fcraft-apps\u002F.pi\u002Fskills\u002Feffectcraft",55,"https:\u002F\u002Fgithub.com\u002FBlackBeltTechnology\u002Fpi-agent-dashboard","https:\u002F\u002Fpi-dashboard.dev\u002F","https:\u002F\u002Fgithub.com\u002FBlackBeltTechnology","https:\u002F\u002Fwww.blackbelt.hu","2026-11-11 22:13:06",{"source":8,"skillName":5,"commands":64,"prompt":74,"zipAvailable":75},[65,68,71],{"tool":66,"command":67},"npx","npx skills add BlackBeltTechnology\u002Fpi-agent-dashboard --skill effectcraft",{"tool":69,"command":70},"bunx","bunx skills add BlackBeltTechnology\u002Fpi-agent-dashboard --skill effectcraft",{"tool":72,"command":73},"pnpm","pnpm dlx skills add BlackBeltTechnology\u002Fpi-agent-dashboard --skill effectcraft","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FBlackBeltTechnology\u002Fpi-agent-dashboard\u002Fblob\u002Fdevelop\u002Fpackages\u002Fcraft-apps\u002F.pi\u002Fskills\u002Feffectcraft\u002FSKILL.md",true,[],[78,107,135,157,179,201],{"skillNo":79,"name":80,"nameZh":6,"description":81,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":82,"categories":83,"keywords":87,"publishedAt":49},"01M6HQYQ5B82AM5T9Y299S9CFY","youtube-srt","Download YouTube subtitles (SRT + timestamped TXT) for a channel, playlist or video via yt-dlp, no media download; optionally mine them into a categorized catalog (e.g. AI models by function, open weights, local runnability, hardware tier). Use on \"download the srt of this video\", \"transcripts of channel X for the last N months\", \"catalog the models AI Search talked about\", \"update docs\u002Fmodels\".","https:\u002F\u002Fgithub.com\u002FBlackBeltTechnology\u002Fpi-agent-dashboard\u002Fblob\u002Fdevelop\u002Fpackages\u002Fvideo-transcription\u002F.pi\u002Fskills\u002Fyoutube-srt\u002FSKILL.md",[84],{"categoryNo":85,"categoryName":86,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000016","图像与多媒体",[88,89,90,91,92,93,94,95,96,97,98,41,99,100,101,102,103,104,105,28,106],"youtube","srt","youtube srt","update","search","subtitles","dlp","Video","Media","open","catalog","update docs","yt-dlp","local","mine","via","ai models","last","media download",{"skillNo":108,"name":109,"nameZh":6,"description":110,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":111,"categories":112,"keywords":117,"publishedAt":49},"01M6HQYJBKSXR55T5RSYNJQG4D","video-transcription","Transcribe video and audio files to SRT subtitles with speaker diarization using the Soniox (default) or AssemblyAI API. Use when the user wants to transcribe meetings, videos, or audio files. Supports MKV, MP4, MOV, M4A, MP3. Triggers on \"\u002Ftranscribe\", \"transcribe my meetings\", \"transcribe videos in ~\u002FMovies\", or any request to convert audio\u002Fvideo to text.","https:\u002F\u002Fgithub.com\u002FBlackBeltTechnology\u002Fpi-agent-dashboard\u002Fblob\u002Fdevelop\u002Fpackages\u002Fvideo-transcription\u002F.pi\u002Fskills\u002Fvideo-transcription\u002FSKILL.md",[113,116],{"categoryNo":114,"categoryName":115,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":85,"categoryName":86,"taxonomyType":21,"taxonomyTypeDesc":22},[95,118,119,120,93,121,122,123,46,45,124,41,125,126,127,128,32,129,130,89,131,132,133,134],"transcription","video transcription","transcribe","api","Audio","convert","meetings","files","default","mp3","triggers","videos","assemblyai","my","srt subtitles","request","when",{"skillNo":136,"name":137,"nameZh":6,"description":138,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":139,"categories":140,"keywords":141,"publishedAt":49},"01M6HQYECMVDC5TDHHW22VC5RX","speaker-id","Name anonymous diarized SRT speakers from a persistent local voiceprint library and repair speaker drift; local, CPU-only, no API key. Triggers \"who is speaker 2\", \"put names on the transcript\", \"label the meeting SRT\", \"the diarization split one person into three\", \"enroll my voice\". Backed by the pi-voiceid CLI.","https:\u002F\u002Fgithub.com\u002FBlackBeltTechnology\u002Fpi-agent-dashboard\u002Fblob\u002Fdevelop\u002Fpackages\u002Fvideo-transcription\u002F.pi\u002Fskills\u002Fspeaker-id\u002FSKILL.md",[],[142,143,144,145,121,146,42,147,148,149,150,101,128,151,152,153,154,89,155,156],"id","speaker id","cli","transcript","voice","only","three","drift","repair","name","CPU","meeting","anonymous","split","person",{"skillNo":158,"name":159,"nameZh":6,"description":160,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":161,"categories":162,"keywords":164,"publishedAt":49},"01M6HQYAZWDXE9QJEG592E5PXK","veo-showreel-production-kit","Turn a video timeline + voiceover into a reproducible, sliceable Veo 3.1 prompt package with a consistency anchor and AI storyboard sketches.","https:\u002F\u002Fgithub.com\u002FBlackBeltTechnology\u002Fpi-agent-dashboard\u002Fblob\u002Fdevelop\u002Fpackages\u002Fvideo-production\u002F.pi\u002Fskills\u002Fveo-showreel-production-kit\u002FSKILL.md",[163],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[165,166,167,168,169,170,171,95,172,173,174,175,32,176,177,178],"Production","veo","kit","veo showreel production kit","package","Reproducible","timeline","prompt","voiceover","storyboard","anchor","consistency","veo 3","2026",{"skillNo":180,"name":181,"nameZh":6,"description":182,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":183,"categories":184,"keywords":187,"publishedAt":49},"01M6HQY6TJ0X1ADDKYPMVJY6NV","veo-generator","Render a scripted video project into mp4 clips with the Google Veo 3.1 API. Reads a project's shot package (shots\u002F*.md), one clip per camera cut, reusing each shot's prompt and sketch — world anchor only with `--with-reference`, seed unless `--no-seed`. Use on \"render the Veo video for \u003Cproject>\", \"generate the videos from the shot scripts\", \"make the clips with Veo\".","https:\u002F\u002Fgithub.com\u002FBlackBeltTechnology\u002Fpi-agent-dashboard\u002Fblob\u002Fdevelop\u002Fpackages\u002Fvideo-production\u002F.pi\u002Fskills\u002Fveo-generator\u002FSKILL.md",[185,186],{"categoryNo":85,"categoryName":86,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[166,188,189,190,191,169,121,95,46,172,41,192,147,193,194,195,196,197,175,198,199,34,33,32,200,28,177],"generator","veo generator","google","generate","clip","sketch","camera","world","seed","project","cut","scripts","google veo",{"skillNo":202,"name":203,"nameZh":6,"description":204,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":205,"categories":206,"keywords":207,"publishedAt":49},"01M6HQY1K2NZJ3B2YHSJJPPVAF","hyperframes-showreel","Turn real screen and site footage into a rhythmic showreel rendered with HyperFrames: sampling, edit script, redacted clips, a generated composition, Veo only as additive FX, music edit + camera punches, delivery render and export QA. Use on \"make a showreel from these recordings\", \"build the HyperFrames video\", \"assemble the footage edit\", \"render and QA the showreel\".","https:\u002F\u002Fgithub.com\u002FBlackBeltTechnology\u002Fpi-agent-dashboard\u002Fblob\u002Fdevelop\u002Fpackages\u002Fvideo-production\u002F.pi\u002Fskills\u002Fhyperframes-showreel\u002FSKILL.md",[],[208,209,210,95,47,211,212,41,213,40,214,147,215,216,37,217,218,33,32,219],"hyperframes","hyperframes showreel","qa","edit","generated","assemble","sampling","build","delivery","fx","screen","script"]