yt-package
Skill3 starsChanged 34 days agoMITView on GitHub
Write and lint a YouTube title and thumbnail as one pairing (truncation, repeats, vagueness), then apply it. For titles, thumbnail text, low CTR.
7 other projects use a version of this, 4 of them edited.
Adopted by
Most recently taken up by
- utillayer/youtube-agent-skilltheir own version, first seen Nov 8, 2026
- Rohit-Kumar-AI/youtube-creator-agenttheir own version, first seen Oct 20, 2026
- swayamdhawan/youtube-agentedited, first seen Oct 15, 2026
- ahmedsakri/youtube-agent-proedited, first seen Oct 15, 2026
- nessalazne/youtube-agent-skilledited, first seen Sep 23, 2026
- Jakeschincariol/youtube-agent-skilledited, first seen Sep 16, 2026
Other versions7 projects use a version of this.
Word for word · 0
None found.
Edited · 4
- Jakeschincariol/youtube-agent-skill★ 4760% same
- nessalazne/youtube-agent-skill★ 553% same
- ahmedsakri/youtube-agent-pro★ 146% same
- swayamdhawan/youtube-agent★ 060% same
Wrote their own version · 3
- utillayer/youtube-agent-skill★ 10same name
- Rohit-Kumar-AI/youtube-creator-agent★ 0same name
- tylerprogramming/claude-skills★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository50 other files it gives its agents.
- automationsSkill
- commentsSkill
- hooksSkill
- ig-auditSkill
- ig-captionSkill
- ig-carouselSkill
- ig-dmSkill
- ig-humanSkill
- ig-profileSkill
- ig-reelSkill
- ig-storySkill
- ig-viralSkill
- inboxSkill
- linkedin-comment-drafterSkill
- linkedin-content-plannerSkill
- linkedin-employee-advocacySkill
- linkedin-engager-analyticsSkill
- linkedin-hook-extractorSkill
- linkedin-humanizerSkill
- linkedin-interviewerSkill
- linkedin-post-writerSkill
- linkedin-profile-optimizerSkill
- linkedin-reply-handlerSkill
- linkedin-repurposerSkill
- linkedin-thread-monitorSkill
- naver-ai-citeSkill
- naver-draftsSkill
- naver-engageSkill
- naver-keywordsSkill
- naver-postSkill
- performance-reviewSkill
- publishSkill
- repurposeSkill
- schedule-weekSkill
- setupSkill
- threadsSkill
- troubleshootSkill
- voice-profileSkill
- yt-auditSkill
- yt-benchmarkSkill
- yt-chaptersSkill
- yt-commentSkill
- yt-editSkill
- yt-planSkill
- yt-retentionSkill
- yt-scriptSkill
- yt-seoSkill
- yt-shortsSkill
- yt-uploadSkill
- yt-viralSkill
The file
We split this skill into the rules it gives an agent
3 rules. 0 are common, 3 are distinctive, and 0 are very specific to this project.
0
Common
Most of the 7 edited versions we read keep these.
3
Distinctive
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 24
Never invent a number, a result or a source.
- Distinctive: line 32
Two all-caps words is the ceiling: before a title reads as spam.
- Distinctive: line 48
Read the result and any warning out to the person.
“Common” is measured: kept by at least 6 in 10 of the 7 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Adapted from Jakeschincariol/youtube-agent-skill (MIT). Not affiliated with the original author.
yt-package
The title and the thumbnail are ONE unit. Writing them separately is why most packaging fails: the thumbnail repeats the title, and half the click surface says the same thing twice. Use it for "title ideas", "what should I call this", "thumbnail text", "my CTR is bad", packaging, or any request to rename or repackage a video.
From this skill's folder:
python3 scripts/title.py --title "..." --thumb "AI RAN IT"
python3 scripts/title.py titles.txt # one per line, rankedWithout a shell (claude.ai, ChatGPT) the script cannot run: apply the rules below by hand and say the titles were not linted.
Before you write
- Read
~/.uplika/<workspace-slug>/voice.mdif it exists. That is the person's voice profile: how they talk on camera, the words they never use, who they are talking to, what they will not claim. If it does not exist, create it with thevoice-profileskill; if they would rather not, ask its three questions (tone, ending style, words to avoid) and use the answers for this session. - Never invent a number, a result or a source. If a figure would strengthen it and you do not have one, ask for it or write the line without it.
Rules the tool enforces, and why
- Two cut points. The tool reports where desktop search cuts a title (around 60 characters of Latin text) and where a mobile home feed cuts it (around 40), because they fail differently: a desktop cut loses the tail, a mobile cut can lose the subject. YouTube's own title limit is a different thing; read it from
list_platforms. - The thumbnail must not repeat the title. Different words, same promise.
- Three words maximum on the thumbnail. At feed size a fourth word is a grey smear.
- A number, a name or a date beats every adjective available to you.
- Two all-caps words is the ceiling before a title reads as spam.
Korean titles: title.py reads Korean words with their particles attached (so 자동화 on the thumbnail and 자동화하는 in the title count as a repeat), never counts a Hangul word as all-caps, and flags hype words such as 진짜, 대박, 미쳤다, 레전드. It marks the result Korean: heuristic, not calibrated: the cut points were measured on Latin text and Hangul is wider, so a Korean title is cut earlier than its character count suggests. Check it on a phone before trusting the length line.
Write ten, keep two
Generate ten titles, run them all through scripts/title.py, show the person the top three with their scores and the specific issue on each. For the winner, write the thumbnail brief: the expression, the framing, the three words, and what the background has to do to hold contrast at feed size.
With Uplika connected
- What worked before. Find the YouTube account in
list_accounts, then calllist_channel_postswith itsaccountId. Each item'stextis the title, a blank line, then the description;permalinkis the video link. Callget_insightson the last ten to put views and likes next to each title (null means YouTube did not report it, not zero). Uplika has no impressions or click-through rate: those are in YouTube Studio, so ask the person for CTR if they want it in the comparison. - Write and lint as above.
- Apply the winner, only after the person approves the exact title:
- Call
update_postwith the video link asid,wait: true, the newoptions.youtube.title, and the current description ascontent(from thelist_channel_poststext, or pasted by the person for an older video). Send the description even though it is not changing: for a video uploaded through Uplika, Uplika otherwise re-sends its own copy and undoes edits made in YouTube Studio. - Send only the
options.youtubefields you are changing; the rest stay as they are on YouTube. - To change the thumbnail image too, get a media id for the image the way the
yt-uploadskill does and pass it asoptions.youtube.thumbnailMediaIdin the same call. It works on long-form videos on verified channels only (list_platformshas the Shorts rule). - Read the result and any warning out to the person.
- Call
- If a call answers
workspace_required, show the workspaces it lists, ask which one, and passworkspaceId. A channel that is not connected cannot be changed from here: send the person to https://uplika.com/dashboard/connections. Other errors:get_helpwith the code;account_disconnectedgoes to thetroubleshootskill. youtube_quota_exhaustedfromupdate_postorlist_channel_posts,noteCodeyoutube_quota_exhaustedfromget_insights(no numbers that day), or anupdate_postresult withyoutube_daily_cap: Uplika's daily YouTube limit, which everyone on Uplika shares, ran out: stop and do not repeat the call, tell the person when it refills (resetsAt, or the time in the message), and do not ask them to reconnect, because it is not their account (faq:youtube-daily-limit).
Without Uplika
The person pastes the titles they are weighing (and their past titles with view counts, if they want the comparison) and pastes the winner into YouTube Studio themselves.
The gate
Nothing goes out until the person says yes. Every output ends in a block they can copy, and the last line of every run is the question: ship it, or change it? With Uplika connected, "ship it" means you apply it with update_post.
Tools
list_accounts: the YouTube account idlist_channel_posts: the channel's recent videos with their current title and descriptionget_insights: views and likes per video, next to its titleupdate_post: apply the approved title (and thumbnail) to the live videolist_platforms: YouTube's own title limit and thumbnail ruleget_help: the answer for an error code
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.

