yt-publish
Skill5 starsChanged 53 days agoMITView on GitHub
Upload or schedule a finished video to YouTube through Blotato, after the user has approved the title, the description and the file. Use when the user says "publish this", "upload it", "schedule this video", "send it to YouTube", or answers "publish" after /yt-package or /yt-seo. Requires an approved title and description and two explicit yeses. Never runs on its own.
- Reads credentials
In this repository11 other files it gives its agents.
- yt-auditSkill
- yt-chaptersSkill
- yt-commentSkill
- yt-editSkill
- yt-packageSkill
- yt-planSkill
- yt-retentionSkill
- yt-scriptSkill
- yt-seoSkill
- yt-shortsSkill
- yt-viralSkill
The file
We split this skill into the rules it gives an agent
9 rules. About 0 are common, 6 are distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈6
Distinctive · estimate
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 13
Every other skill in this pack writes and hands you a block to copy.
- Distinctive: line 37
If they are missing, tell the user those two lines and stop.
- Distinctive: line 72
Wait for the word publish.
- Distinctive: line 78
Run the command exactly as it appeared in the check block.
- Very specific: line 90
If it says FAILED, quote the reason and stop.
- Distinctive: line 96
Never run the script without the word "publish" from the user in this conversation.
- Very specific: line 98
Never publish to any account other than the one pinned in BLOTATO_ACCOUNT_YOUTUBE, even though the workspace has others and even if the …
- Very specific: line 101
Never pass --privacy public unless the user said public in this conversation.
- Distinctive: line 102
Never change the title, the description or the file between the check block and the command.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
yt-publish
Every other skill in this pack writes and hands you a block to copy. This one touches the channel. It is the only one that does, and it does not move until you have said the word.
python3 publish.py --check # which channel is pinned, by name
python3 publish.py --title "..." --desc desc.txt --video short.mp4 --dry-run
python3 publish.py --title "..." --desc desc.txt --video short.mp4
python3 publish.py --title "..." --desc desc.txt --video short.mp4 --privacy public
python3 publish.py --title "..." --video-url https://... --schedule 2026-09-24T22:00:00ZBefore you run anything
- The title and the description must have been approved in this
conversation.
/yt-packagewrites and lints the title,/yt-seowrites the description. If neither has run, run them first. Do not invent a title here. The keys must already exist in
~/.claude/youtube/.env:BLOTATO_API_KEY=... BLOTATO_ACCOUNT_YOUTUBE=1234If they are missing, tell the user those two lines and stop. Never ask them to paste a key into the chat.
- Run
--checkfirst and read the channel name out loud. A Blotato workspace can hold a dozen YouTube channels and the ids are four digits that all look alike. The id is not the confirmation; the name is.
Private by default, and that is not a bug
--privacy is private unless the user asks otherwise. A video that lands on
the wrong channel as private is invisible and they delete it in Studio. The same
mistake as public is a notification to every subscriber and a video in the feed.
Going live takes an explicit --privacy public, and --notify is off unless
they ask for it. If they say "publish it" without saying public, that is a
private upload and you say so in the check block. Ask; do not assume.
The check block
Print this, exactly, and then stop:
PUBLISH CHECK
channel: Your Channel Name (account 1234, verified YouTube)
title: How I Fixed My Retention In 30 Days (34 / 100 characters)
privacy: PRIVATE (nothing goes live until you say public)
notify: subscribers will NOT be notified
video: short.mp4 (14.2 MB)
when: now | 2026-09-24 08:00 local (22:00 UTC)
description: 840 characters
<the first three lines of the description, exactly as they will go out>
Reply "publish" to send it, or tell me what to change.Wait for the word publish. "yes", "ok", "looks good" and "send it" are not enough for something that goes out under their name on their channel. Ask once more if it is at all ambiguous.
Running it
Run the command exactly as it appeared in the check block. Nothing changes between what they approved and what goes out.
The script uploads the file, submits, and then polls every 20 seconds until Blotato reaches a terminal state. YouTube transcodes, so this genuinely takes minutes rather than seconds. Do not end your turn while it is still polling. It prints exactly one of:
PUBLISHED <url>— with a reminder of the privacy setting if it is not publicSCHEDULED <time>FAILED <reason>
If it says FAILED, quote the reason and stop. Do not retry the same command;
work out what was wrong first. Every run is appended to
~/.claude/youtube/log.md.
Never
- Never run the script without the word "publish" from the user in this conversation.
- Never publish to any account other than the one pinned in
BLOTATO_ACCOUNT_YOUTUBE, even though the workspace has others and even if the user names a different channel. Change the env file instead, deliberately. - Never pass
--privacy publicunless the user said public in this conversation. - Never change the title, the description or the file between the check block and the command. What they approved is what goes out.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

