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 agentmods add commands/digitalsamba/claude-code-video-toolkit/publishgit clone --depth 1 https://github.com/digitalsamba/claude-code-video-toolkitWrote 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/commands/digitalsamba/claude-code-video-toolkit/publish)<a href="https://agentmods.dev/commands/digitalsamba/claude-code-video-toolkit/publish"><img src="https://agentmods.dev/badge/commands/digitalsamba/claude-code-video-toolkit/publish.svg" alt="Measured on agentmods" height="20"></a>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 | $0.00007 | $0.01916 |
| Opus 5 | $0.00003 | $0.00958 |
| Sonnet 5 | $0.00001 | $0.00383 |
| Haiku 4.5 | $0.00001 | $0.00192 |
Grade A, and why
publish 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 3d 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 — 168 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Publish to YouTube
Upload a rendered project to YouTube, auto-filling the metadata from project.json.
Wraps tools/youtube_upload.py (OAuth 2.0 + Data API v3, resumable upload).
project.json + rendered MP4 → metadata draft → dry-run → upload → write back videoId/URL
One-time setup required. YouTube uploads need OAuth (not an API key). If the user hasn't set this up, point them at
docs/youtube-upload.mdand stop untilYOUTUBE_CLIENT_SECRETS_FILEis in.envanduv run tools/youtube_upload.py --authhas been run once. Don't attempt an upload without a cached token.
Entry Point
Step 1: Locate the project and its rendered video
If the user named a project, use it. Otherwise scan for candidates:
cd /path/to/claude-code-video-toolkit && ls projects/*/project.json
Read the chosen project.json defensively — real files carry render, format,
and publish blocks beyond the lib/project/types.ts schema. Resolve the video file:
render.fileif present (e.g.out/ai-agent-short.mp4), relative to the project dir.- Else scan the project's
out/*.mp4and pick the most recent. - Confirm the resolved path exists and is non-empty before continuing.
If the project's phase isn't complete, warn the user and confirm they still want to publish.
Step 2: Assemble metadata (into a publish block)
Build a publish object and write it back into project.json so it's reviewable,
editable, and re-runnable. If a publish block already exists, use it as defaults.
| Field | How to derive |
|---|---|
title |
Existing publish.title, else the hook/title scene's title, else the project name (humanized). Keep ≤100 chars. |
description |
Existing publish.description, else auto-draft: a 1–2 line summary from the scene narration/titles + a channel footer (links, hashtags). Keep ≤5000 chars. |
tags |
Existing publish.tags, else derive 5–12 topical tags from scene titles + the brand. Comma-joined when passed to the tool. |
category |
Default "22" (People & Blogs). Override per channel/topic — e.g. "28" (Science & Tech), "27" (Education), "24" (Entertainment). |
thumbnail |
Look for out/thumbnail.* or public/thumbnail.*. If none and the user wants one, offer to generate via tools/ideogram4.py (see the ideogram4 skill). |
privacy |
Default private (safe — the video uploads but stays hidden until you flip it). Offer unlisted, public, or a scheduled go-live (--publish-at, e.g. next morning ~09:00 local in UTC) if the user asks. |
playlist |
Optional; only if the user has one. |
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.
- 3d ago First seen · 168 lines · 7 tokens per session scan A 645d2801b8b1
publish is a command published in the GitHub repository digitalsamba/claude-code-video-toolkit (2,035 stars, last pushed 2d ago), licensed MIT. It adds 7 tokens to every session and 1,916 once invoked, about $0.0000 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 commands, from other repositories
cli-anything-web:validate
Validate a cli-anything-web CLI against the tiered quality checklist (Tier 1 critical / Tier 2 comprehensive). Reports per-category and per-tier results.
cli-anything-web:list
List all available CLI-Anything-Web CLIs (installed and generated).
cli-anything-web:refine
Refine an existing cli-anything-web CLI by recording additional traffic and expanding command coverage. Invokes the gap-analyzer skill as its first step, then implements missing endpoints.
cli-anything-web:record
Record network traffic from a web app without generating a CLI. Useful for initial exploration or adding more coverage data.
new-poster
Generate a marketing poster.
setup
Set up Poster Maker for first use.