yt-seo
Skill3 starsChanged 35 days agoMITView on GitHub
Write a YouTube description, tags and search text aimed at what people type, and apply them to the video. For descriptions, tags, SEO, getting found.
6 other projects use a version of this, 4 of them edited.
Adopted by
Most recently taken up by
- utillayer/youtube-agent-skilledited, first seen Nov 8, 2026
- swayamdhawan/youtube-agentedited, first seen Oct 15, 2026
- ahmedsakri/youtube-agent-protheir own version, first seen Oct 15, 2026
- nessalazne/youtube-agent-skilledited, first seen Sep 23, 2026
- Jakeschincariol/youtube-agent-skilledited, first seen Sep 16, 2026
- tylerprogramming/claude-skillstheir own version, first seen Aug 9, 2026
Other versions6 projects use a version of this.
Word for word · 0
None found.
Edited · 4
- Jakeschincariol/youtube-agent-skill★ 4770% same
- utillayer/youtube-agent-skill★ 1011% same
- nessalazne/youtube-agent-skill★ 562% same
- swayamdhawan/youtube-agent★ 070% same
Wrote their own version · 2
- ahmedsakri/youtube-agent-pro★ 1same 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-packageSkill
- yt-planSkill
- yt-retentionSkill
- yt-scriptSkill
- yt-shortsSkill
- yt-uploadSkill
- yt-viralSkill
The file
We split this skill into the rules it gives an agent
4 rules. 0 are common, 3 are distinctive, and 1 is very specific to this project.
0
Common
Most of the 6 edited versions we read keep these.
3
Distinctive
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 15
Never invent a number, a result or a source.
- Distinctive: line 32
Before handing anything over, write the three search queries this video should win, and check the title and first two description lines …
- Distinctive: line 43
Read the result and any warning out to the person.
- Very specific: line 44
If a call answers workspace_required, show the workspaces it lists, ask which one, and pass workspaceId.
“Common” is measured: kept by at least 6 in 10 of the 6 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-seo
Search is a smaller lever than packaging and a bigger one than people think for evergreen videos. For a video aimed at the subscriber feed, say so and spend the effort on yt-package instead. Use it for "write my description", "tags", "SEO", "help this video get found", "nobody is finding this".
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.
The description
- The first two lines are the only ones anyone reads. They show above "...more" and they are the search snippet. Say what the video gives them, in the words they would have typed.
- Then the link or the resource, if there is one, so it is above the fold.
- Then chapters (
yt-chapterswrites them). - Then the long version: what is covered, who it is for, what it assumes.
YouTube measures the description with its own rule, in bytes rather than characters, so Korean text reaches the limit sooner: read the rule from list_platforms before writing a long one.
Tags, honestly
Tags are a weak signal and YouTube has said so. Use them for disambiguation (spellings, the tool names, the abbreviations people actually type) and stop. Fifteen is plenty. A wall of tags is not a strategy and stuffing unrelated ones is against the terms. The tag list also has a total length limit, given in the options.youtube.tags schema in list_platforms.
The query test
Before handing anything over, write the three search queries this video should win, and check the title and first two description lines contain the words in those queries. If they do not, the problem is the title, not the description.
With Uplika connected
- Check each query. Call
search_youtube_videoswith each of the three queries asq:orderrelevance shows what YouTube ranks for it, viewCount what got watched. Read the titles andviewSubRatio; a query where the top results are all large channels with low ratios is hard to win. Uplika's search has no search volume: say so, and do not invent one. The same search again is cached and free; each new one spends one of the person's daily searches (quota).research_tool_disabled: only a research tool still in beta answers this. Ask the person once to turn it on at theenableUrlin the error, and do not retry until they say it is on. Write without it meanwhile.research_quota_exceededoryoutube_quota_exhausted: skip the check and say so.
- Apply, only after the person approves the description and tags:
- Find the YouTube account in
list_accountsand read the video's current title fromlist_channel_posts(each item'stextis the title, a blank line, then the description). - Call
update_postwith the video link asid,wait: true, the new description ascontent,options.youtube.title(the current one if it is not changing: for a video uploaded through Uplika,optionsreplaces what Uplika has on record and YouTube needs a title),options.youtube.tags, andoptions.youtube.defaultLanguage, the language the title and description are written in as one BCP-47 code such as en-US or ko. - Send only the
options.youtubefields you are changing; the rest stay as they are on YouTube. - Read the result and any warning out to the person.
- Find the YouTube account in
- If a call answers
workspace_required, show the workspaces it lists, ask which one, and passworkspaceId. A channel that is not connected: https://uplika.com/dashboard/connections. Other errors:get_helpwith the code;account_disconnectedgoes to thetroubleshootskill. youtube_quota_exhaustedfromupdate_postorlist_channel_posts(or anupdate_postresult whose warning or target code isyoutube_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). The search in step 1 runs on a separate allowance, so it can still answer on such a day.
Without Uplika
The person gives the topic and the queries they care about, and pastes the description and tags 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
search_youtube_videos: what already ranks and gets watched for each target querylist_accounts: the YouTube account idlist_channel_posts: the video's current titleupdate_post: apply the approved description, tags and language to the videolist_platforms: YouTube's description and tag rulesget_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.

