Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add anymouschina/TapCanvas --skill generate-mediagit clone --depth 1 https://github.com/anymouschina/TapCanvasWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/anymouschina/tapcanvas/generate-media)<a href="https://agentmods.dev/skills/anymouschina/tapcanvas/generate-media"><img src="https://agentmods.dev/badge/skills/anymouschina/tapcanvas/generate-media/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/anymouschina/tapcanvas/generate-media"><img src="https://agentmods.dev/badge/skills/anymouschina/tapcanvas/generate-media.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00088 | $0.01474 |
| Opus 5 | $0.00044 | $0.00737 |
| Sonnet 5 | $0.00018 | $0.00295 |
| Haiku 4.5 | $0.00009 | $0.00147 |
Grade A, and why
generate-media scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 11d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 93 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Generate Media (TapCanvas Public API)
Goal
将短剧/小说分镜生产链路中的“角色卡与分镜图”从简化版本升级为可复用的生产素材,且统一走 TapCanvas 公共接口:
- 图像生成:通过
tapcanvas-api调用/public/draw - 任务轮询:通过
tapcanvas-api调用/public/tasks/result
禁止直接在技能内耦合三方 SDK(如 google-genai);模型选择通过 extras.modelAlias 完成。
Required Inputs
- 项目与作品标识:
projectId、bookId - 目标章节或集数范围:
chapter或start/end - 视觉风格:
assets.styleBible(styleLocked、consistencyRules、negativeDirectives、referenceImages) - 角色/场景/道具元数据:
chapters[].characters/props/scenes/locations - 已有角色卡:
assets.roleCards(用于一致性参考)
Output Contract
必须产出并回填以下结构(无兜底):
roleCards: 每角色至少 1 张主参考图(可选多视角合成) 1.5visualRefs:category=scene_prop:每章节至少 1 张“场景+道具”参考图(默认单张 3x3 九宫格,最多 9 个元素)category=spell_fx:涉及法术/特效时至少 1 张特效参考图
storyboardChunks: 每组镜头输出frameUrls与tailFrameUrlref_index与media_index(按 book 维度)- 若任一步骤关键输入缺失,直接失败并返回可追踪错误
Workflow
-
触发判定(先判定再生成)
- 非强制全量生成。仅当资产满足“可复用/需持久化”条件时触发生图。
- 推荐判定:同名角色/场景/道具在跨章节复现(>=2 章)或被上游显式标记为长期锚点。
- 未命中持久化条件时,不应为了凑齐素材而生成新图。
-
风格锁定检查
- 若缺少已确认角色卡,不再中断流程;进入自动补齐阶段。
-
角色卡生成(Phase 1)
- 以角色档案 + 章节阶段信息生成结构化 prompt。
- 使用
tapcanvas-api调/public/draw的kind=image_edit|text_to_image(按是否有参考图决定)。 - 将结果写回
assets.roleCards,状态置为generated。 - 分镜流程内若发现缺失角色卡,仅对“持久化候选角色”自动补齐,不要求用户先手工生成。
-
场景/道具参考图(Phase 1B/1C)
- 从章节聚合
scenes/props,优先一次生成“单张 3x3 九宫格(9格)”参考图。 - 每格对应 1 个场景/道具元素,使用格位标签(1-9)与元素名建立映射。
- 结果写入
assets.visualRefs(category=scene_prop),供分镜与视频参考。 - 元数据必须包含:
layout=3x3、cellLabels(如#1:窗边木桌)。 - 分镜流程内若缺少 scene_prop,仅在命中“持久化候选场景/道具”时自动补齐。
- 从章节聚合
3.5 法术技能/特效参考图(Phase 1D)
- 从章节冲突/动作节点提取法术或特效线索,生成稳定特效参考图。
- 结果写入
assets.visualRefs(category=spell_fx)。
- 分镜图生成(Phase 2)
- 按组(4/9)处理镜头,首镜必须注入上一组
tailFrameUrl。 - 每镜头都需注入角色参考图 + 场景道具参考图;涉及特效时再注入特效参考图。
- 参考图必须标注(角色名/场景道具名/特效名),并把引用 ID 回写到
storyboardChunks。 - 任何镜头未返回图片即失败,不允许模板兜底。
- 在生成前,优先调用
tapcanvas_storyboard_continuity_get校验上一组tailFrameUrl、显式 chunk checkpoint、角色卡、视觉参考与 style bible 是否齐备。 recentShots / storyboard history仅用于诊断,不得替代 chunk checkpoint 或 tail frame 作为续写边界。
- 按组(4/9)处理镜头,首镜必须注入上一组
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 11d ago First seen · 93 lines · 88 tokens per session scan A 6c1a782ce9d4
generate-media is a skill published in the GitHub repository anymouschina/TapCanvas (602 stars, last pushed 2d ago), licensed MIT. It adds 88 tokens to every session and 1,474 once invoked, about $0.0004 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
dramake
A production workflow for turning an idea, story, script, storyboard, or existing footage into a short AI drama or film. It covers planning, generation, voice, editing, and quality checks for formats such as vertical and horizontal video.
slides
Build a Grida slides deck — a .canvas bundle in slides mode whose pages are SVG documents (16:9, one SVG per slide). Use when creating a presentation, pitch deck, slideshow, or talk.
short-drama-storyboard
A workflow for turning a Chinese short-drama script and its visual facts into a shot-by-shot storyboard with frozen starting-frame prompts.
short-drama-image-prompts
A guide for writing reusable image prompts for short dramas, covering characters, costumes, locations, props, and different states. It produces copy-ready Markdown prompts but does not create the images.
edit-video
Edit video with FableCut — assemble a cut, add titles and captions, grade, add transitions, keyframe animation, speed ramps, and export. Use whenever the user wants to cut, trim, caption, subtitle, grade, or otherwise edit a video, or asks to open/start the video editor.
remake-reel
Analyze a reference video (a reel, montage, or ad the user likes) into an edit blueprint — shot boundaries, music beats, BPM, energy curve, the drop — and rebuild the same structure with the user's own footage. Use when someone says "make it like this video", "remake this reel with my clips", or asks what makes an…