Skip to content
,

YouTube SEO With a Claude Skill: Titles, Descriptions, Chapters and Tags (Free SKILL.md + Limit Checker)

10โ€“16 minutes
YouTube SEO with a Claude Skill: titles, descriptions, chapters and tags

Every upload needs the same paperwork: a title people click, a description that explains the video in the first two lines, chapters, a few tags and hashtags, and a pinned comment. It is boring, it is easy to rush, and small mistakes (a chapter list that does not start at 00:00, a title cut off in search) quietly cost you views. This guide gives you a free Claude Skill, youtube-seo-pack, that writes the whole upload package from your transcript, plus a small Python script that checks it against YouTube’s published limits before you paste it into Studio. I also explain what actually matters for YouTube search in 2026, according to YouTube’s own help pages.

TLDR

  • What matters most: title, thumbnail and description. YouTube says tags “play a minimal role” in discovery, so keep them short.
  • Hard limits: title 100 characters (about 70 show in search), description 5,000, tags around 500 characters, chapters start at 00:00 with at least 3 of 10+ seconds, over 60 hashtags means all are ignored.
  • The skill: 5 title options, description with chapters, tags, hashtags and a pinned comment, then it runs check_metadata.py and fixes anything flagged.
  • The script: standard-library Python, tested, works in claude.ai’s code sandbox and in Claude Code.

What actually drives YouTube search

YouTube describes search ranking in terms of relevance (how well the title, description and video content match the query), engagement (whether people watch and interact once they click) and quality (signals of expertise and trust on the topic). Recommendations on the home page and in suggested videos lean even more on how viewers respond.

So “YouTube SEO” is really two jobs:

  1. Be clearly about one search phrase. Use the words viewers type in the title, the first sentence of the description and the spoken content (YouTube creates captions, and chapters help it understand sections).
  2. Earn the click and the watch. A specific title and a strong thumbnail get the click; a script that delivers keeps the watch. No metadata can rescue a video people leave after ten seconds.

That is why the skill spends more effort on titles and the first 150 characters of the description than on tags.

YouTube metadata limits (official)

Field Limit Practical target Source
Title 100 characters Under 70 so it is not cut off in search; key phrase in the first half YouTube Studio limit
Description 5,000 characters First ~150 characters carry the summary that shows before “more” YouTube Studio limit
Tags About 500 characters in total 5-12 short, specific tags YouTube Studio limit; YouTube Help says tags play a minimal role
Hashtags Over 60 on a video = all ignored 3-5 relevant ones; up to 3 show above the title YouTube Help: hashtags
Chapters First at 00:00, at least 3, ascending, each 10+ seconds One chapter per real section YouTube Help: video chapters
Characters Angle brackets < > not accepted Avoid them in titles and descriptions YouTube Studio validation

The youtube-seo-pack skill

Save this as youtube-seo-pack/SKILL.md. It asks for the transcript (or script), picks one main phrase, and builds the package in a fixed order so nothing is forgotten.

---
name: youtube-seo-pack
description: Writes a full YouTube upload package (5 title options, description with chapters, tags, hashtags, pinned comment) for a video and checks it against YouTube limits with a script. Use when the user asks for YouTube titles, a description, tags, hashtags, chapters, video SEO or metadata for an upload.
---

# YouTube SEO pack

## Inputs
Ask for (only if missing): the transcript or script (best) or a summary, the main search phrase, and links to include (products, socials, related videos).

## Steps
1. Main phrase: choose one search phrase the video fully answers. Put it, or a close variant, in the first half of the title and the first sentence of the description.
2. Titles: write 5 options, each under 70 characters so it is not cut off, max 100. Mix styles: plain how-to, result, mistake, comparison, question.
3. Description:
   - First 150 characters: what the viewer gets, with the main phrase. This is what shows before "more".
   - 2-3 short paragraphs on what the video covers, written for people, not keyword lists.
   - Chapters from the transcript: the first must be 00:00, at least 3 chapters, ascending, each at least 10 seconds long.
   - Links block, then 3-5 hashtags on the last line.
4. Tags: 5-12 tags, most specific first, including common misspellings only if real. Tags matter little for ranking; keep them short.
5. Pinned comment: one question that invites real replies, plus the key link.
6. Save everything as `metadata.json` in this shape and, if a code tool is available, run `python scripts/check_metadata.py metadata.json`:
   `{"title": "...", "description": "...", "tags": ["..."], "hashtags": ["#..."]}`
   Fix anything the checker flags before showing the final pack.

## Rules
- Never put misleading text in the title or description; it must match the video.
- Do not stuff keywords or repeat the same phrase many times; YouTube treats that as spam.
- Do not use more than 15 hashtags (YouTube ignores all hashtags on a video that has more than 60).
- Do not invent search volumes. If the user wants volume data, they need a keyword tool.

Save it inside a folder named youtube-seo-pack

The metadata checker script

Save this as youtube-seo-pack/scripts/check_metadata.py. It reads a small JSON file and checks the title, description, tag length (tags with spaces are counted with quotes, like Studio does), hashtags in the list and in the description, and the chapter rules. It exits with code 1 when something must be fixed, so Claude knows to revise.

"""Check a YouTube metadata.json against YouTube's published limits. Standard library only."""
import json
import re
import sys

TS = re.compile(r"^\s*(\d{1,2}:)?\d{1,2}:\d{2}\b")


def seconds(stamp):
    total = 0
    for part in stamp.strip().split(":"):
        total = total * 60 + int(part)
    return total


def main(path):
    with open(path, encoding="utf-8") as handle:
        meta = json.load(handle)
    problems, notes = [], []
    title = meta.get("title", "")
    desc = meta.get("description", "")
    tags = meta.get("tags", [])
    hashtags = meta.get("hashtags", []) + re.findall(r"#\w+", desc)

    if not title:
        problems.append("Title is empty.")
    if len(title) > 100:
        problems.append(f"Title is {len(title)} characters; YouTube allows 100.")
    elif len(title) > 70:
        notes.append(f"Title is {len(title)} characters; it may be cut off in search (about 70 show).")
    if "<" in title or ">" in title or "<" in desc or ">" in desc:
        problems.append("Angle brackets < > are not allowed in titles or descriptions.")
    if len(desc) > 5000:
        problems.append(f"Description is {len(desc)} characters; YouTube allows 5,000.")
    tag_chars = sum(len(t) + (2 if " " in t else 0) for t in tags) + max(len(tags) - 1, 0)
    if tag_chars > 500:
        problems.append(f"Tags use about {tag_chars} characters; YouTube allows 500.")
    unique_hashtags = {h.lower() for h in hashtags}
    if len(unique_hashtags) > 60:
        problems.append("More than 60 hashtags: YouTube will ignore all of them.")
    elif len(unique_hashtags) > 15:
        notes.append(f"{len(unique_hashtags)} hashtags; 3-5 relevant ones work better.")

    stamps = [line.split()[0] for line in desc.splitlines() if TS.match(line)]
    if stamps:
        times = [seconds(s) for s in stamps]
        if times[0] != 0:
            problems.append("First chapter must start at 00:00.")
        if len(times) < 3:
            problems.append("Chapters need at least 3 timestamps.")
        if any(b <= a for a, b in zip(times, times[1:])):
            problems.append("Chapter timestamps must be in ascending order.")
        if any(b - a < 10 for a, b in zip(times, times[1:])):
            problems.append("Each chapter must be at least 10 seconds long.")
    else:
        notes.append("No chapters found in the description.")

    print(f"Title: {len(title)} chars | Description: {len(desc)} chars | Tags: ~{tag_chars} chars | Hashtags: {len(unique_hashtags)} | Chapters: {len(stamps)}")
    for line in problems:
        print("FIX:  " + line)
    for line in notes:
        print("NOTE: " + line)
    if not problems:
        print("OK: no hard limit problems found.")
    return 1 if problems else 0


if __name__ == "__main__":
    if len(sys.argv) != 2:
        sys.exit("Usage: python check_metadata.py metadata.json")
    sys.exit(main(sys.argv[1]))

Save it inside a folder named youtube-seo-pack/scripts

I tested it on a good package and on a broken one. The broken description had chapters starting at 00:05, only two timestamps, and a 5-second gap; the script flagged all three:

Title: 1 chars | Description: 15 chars | Tags: ~0 chars | Hashtags: 0 | Chapters: 2
FIX:  First chapter must start at 00:00.
FIX:  Chapters need at least 3 timestamps.
FIX:  Each chapter must be at least 10 seconds long.

Install the skill

  • claude.ai: put SKILL.md and the scripts folder inside a folder called youtube-seo-pack, zip that folder, then Customize > Skills > + > Create skill > Upload a skill. Code execution must be on (Settings > Capabilities) for the checker to run.
  • Claude Code: copy the folder to ~/.claude/skills/youtube-seo-pack/. Then type /youtube-seo-pack and paste or point to your transcript file.
  • Anywhere else: run python check_metadata.py metadata.json yourself with Python 3.8 or newer. It needs no extra packages.

New to skills? The Claude Skills guide explains the format, and the YouTube skills pillar has nine more skills for creators.

Example: a full upload package

Here is a package in the format the skill produces, for a tutorial based on our Ollama install guide. Five title options first:

  1. Run Ollama on Windows: Local AI Setup in 10 Minutes (2026)
  2. Install Ollama on Windows (Beginner Guide + 2 Common Fixes)
  3. Your Own Offline ChatGPT on Windows, Free
  4. Ollama Windows Setup: Which Model Fits Your GPU?
  5. I Replaced ChatGPT With a Free Local AI (Windows Setup)

The chosen title and the rest of the package, as the metadata.json the checker reads:

{"title": "Run Ollama on Windows: Local AI Setup in 10 Minutes (2026)",
 "description": "Install Ollama on Windows and chat with a local AI model in about 10 minutes, no cloud account needed.

In this video I install Ollama, pick a model that fits an 8 GB or 16 GB GPU, fix the two errors beginners hit most, and connect a nicer chat app.

00:00 The result: offline AI chat
00:15 What you need
00:45 Install Ollama
02:30 Pick the right model size
04:30 Fix common errors
06:00 Use a better chat app
07:20 Local vs ChatGPT

Written guide: https://freakyjolly.com/install-ollama-windows-mac-linux/

#ollama #localai #windows11",
 "tags": ["ollama windows", "install ollama", "local llm", "run ai locally", "ollama tutorial", "ollama gpu"],
 "hashtags": []}

(Line breaks are shown for reading; in the real file they are written as \n.) The checker’s verdict:

Title: 58 chars | Description: 535 chars | Tags: ~93 chars | Hashtags: 3 | Chapters: 7
OK: no hard limit problems found.

Pinned comment suggestion: “Which GPU are you running local AI on? Drop it below and I’ll suggest a model that fits. Written guide with all commands: [link]”.

Checking YouTube search performance after optimising metadata

Title formulas that work

Formula Example When to use
Task + result + time Install ComfyUI on Windows in 15 Minutes Tutorials with a clear end state
Problem fix Fix “CUDA Out of Memory” in ComfyUI (5 Ways) Error searches; use the exact error text
Comparison Ollama vs LM Studio: Which Is Faster? “X vs Y” searches
Mistake Stop Downloading the Wrong Model Size Browse and suggested traffic
Personal result I Ran a 70B Model on a Gaming PC Story-led videos; must be true
Question How Much VRAM Do You Need for AI? Questions people type word for word

Two rules beat every formula: the title must be true to the video, and it should not repeat the thumbnail text. Let them work as a pair. For thumbnail ideas, see the thumbnail skill guide.

Writing the description and chapters

  • First two lines: say what the viewer gets, using the main phrase naturally. This text appears in search snippets and above the fold.
  • Body: 2-3 short paragraphs a person would actually read. Mention the specific tools, versions or models covered, since people search for those names.
  • Chapters: build them from the transcript timestamps. Name chapters like mini-titles (“Fix common errors”, not “Part 3”). YouTube can show chapters in search results, which gives you extra entry points.
  • Links: written guide, tools, related videos. Label affiliate links clearly.
  • Hashtags last: 3-5 relevant hashtags on the final line.

Tags and hashtags without spam

YouTube’s Help Center is direct about tags: they are mostly useful when your topic is commonly misspelled, and otherwise “play a minimal role in your video’s discovery”. It also warns that adding excessive tags to a description breaks its spam policies. So:

  • Use 5-12 tags: the main phrase, 2-3 close variants, the product or model names, and a real common misspelling if there is one.
  • Do not paste competitors’ channel names or unrelated trending terms. That is misleading metadata.
  • Hashtags should describe the video. Three to five is plenty; above 60 YouTube ignores every hashtag on the video.

Troubleshooting

Problem Cause Fix
Chapters do not appear on the video First timestamp not 00:00, fewer than 3, or one shorter than 10 s; or chapters turned off in Studio Run the checker; in Studio check “Allow automatic chapters” and the description format
Checker says “Need at least a title” JSON keys misspelled Use exactly title, description, tags, hashtags
json.decoder.JSONDecodeError Raw line breaks inside the description string Write line breaks as \n, or let Claude write the file
Script does not run on claude.ai Code execution off or scripts/ missing from the ZIP Turn it on and re-zip the whole folder
Titles feel clickbaity Brief allows hype Add “no hype words” and examples of your best titles to your channel brief
Skill does not trigger Request too vague Say “make the YouTube upload package” or “use youtube-seo-pack”

FAQ

Do YouTube tags still matter in 2026?

Very little. YouTube says tags play a minimal role in discovery and mainly help with commonly misspelled topics. Spend your time on the title, thumbnail and the first lines of the description.

How long should a YouTube title be?

The limit is 100 characters, but around 70 show in most search layouts, and fewer on mobile and in Shorts. Put the important words first and aim for under 60-70 characters.

Can Claude find real search volume for YouTube keywords?

Not on its own. Claude does not have YouTube’s search data. With web search enabled it can look at autocomplete-style suggestions and what ranks, but for volumes you need a keyword tool. The skill is told never to invent volumes.

Should I put keywords in my channel description too?

Yes, a clear channel description (up to 1,000 characters) helps people and YouTube understand the channel. Write it for humans: who it is for, what they will learn, how often you upload.

Do chapters help SEO?

They help viewers jump to what they need and help YouTube understand sections of the video, which can surface specific moments in search. They need correct formatting to appear, which the checker verifies.

Can I change the title after publishing?

Yes, and it is a common way to rescue a video with a low click-through rate. Better still, use YouTube Studio’s A/B test on desktop: it tests up to 3 titles and/or thumbnails and keeps the one with the most watch time, usually within two weeks (not available for Shorts, kids or private videos). Changing the title by hand during a test stops it. The analytics skill in the YouTube skills pillar helps spot candidates.

Is it safe to let AI write my descriptions?

Yes, if you check them. The skill only uses what is in your transcript and links, and the checker catches format errors. Always read the final text for accuracy before publishing.

Final Thoughts

Metadata will not make a weak video rank, but sloppy metadata can hold a good video back. With the skill and the checker, every upload gets five considered titles, a readable description, working chapters and sensible tags in a couple of minutes, and you get an automatic warning before a formatting mistake goes live. Pair it with the script writer skill upstream and the Shorts repurposer downstream for a complete pipeline.

Sources