Agent skill

Youtube Search

by Mathews-Tom in Mathews-Tom/armory

Search YouTube by keyword and return structured video metadata (title, URL, channel, views, duration, date) via yt-dlp.

MITAuto-check passed

Install Youtube Search

skills CLI
$ npx skills add Mathews-Tom/armory --skill youtube-search -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install Mathews-Tom/armory youtube-search --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/Mathews-Tom/armory.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/youtube-search .claude/skills/youtube-search && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
youtube-search
GitHub stars
329
Token cost
~2k tokens
SKILL.md length
462 words
Files
2
Skills in repo
80
Repo updated
First seen
Licence
MIT

At a glance

Search YouTube by keyword and return structured video metadata (title, URL, channel, views, duration, date) via yt-dlp.

  • Works in 3 steps: Execute Search → Parse and Format → Present Results
  • : search youtube
  • SKILL.md covers Prerequisites, Usage, Workflow and Advanced Patterns, plus 3 more sections
  • Calls yt-dlp, jq and uv; reaches youtube.com

What it does

Youtube Search is an agent skill from Mathews-Tom/armory. Search YouTube by keyword and return structured video metadata (title, URL, channel, views, duration, date) via yt-dlp. No API keys. Triggers on: "search youtube", "find youtube videos", "top youtube videos on", "trending videos on", "youtube results for", "yt search", "/yt-search".

Its SKILL.md is about 2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files (for example `evals/cases.yaml`).

It works with YouTube. The repository describes itself as: Curated, production-grade skills for AI coding agents. Battle-tested workflows for developers who use AI seriously. The licence is MIT.

When your agent uses it

  • : search youtube
  • Find youtube videos
  • Top youtube videos on
  • Trending videos on

Example prompts

  • “search youtube”
  • “find youtube videos”
  • “top youtube videos on”
  • “/youtube-search”

Workflow steps

3 steps, taken from the step headings in SKILL.md.

  1. Execute Search
  2. Parse and Format
  3. Present Results

What it can do on your machine

Read from SKILL.md and the folder at commit 4594fb7. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • yt-dlp
    • jq
    • uv

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • youtube.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Youtube Search loads about 2k tokens when it runs. Until then it costs about 75 tokens; SKILL.md has 462 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~75
When it runs · the whole SKILL.md, loaded when a task matches
~2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from Mathews-Tom/armory at commit 4594fb7, republished under its MIT licence (© Mathews-Tom). 462 words, ~1,978 tokens.

Download SKILL.mdSave it as .claude/skills/youtube-search/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
youtube-search
description
Search YouTube by keyword and return structured video metadata (title, URL, channel, views, duration, date) via yt-dlp. No API keys. Triggers on: "search youtube", "find youtube videos", "top youtube videos on", "trending videos on", "youtube results for", "yt search", "/yt-search".
metadata.version
1.1.1
metadata.category
research
metadata.tags
youtube, search, skill
metadata.difficulty
beginner

Search YouTube by keyword and return structured video metadata — title, URL, channel, views, duration, upload date. Uses yt-dlp for scraping with no API keys or OAuth required.

Prerequisites

bash
uv tool install yt-dlp

Verify:

bash
yt-dlp --version

Usage

bash
yt-dlp "ytsearch10:claude code skills" --dump-json --flat-playlist --no-warnings 2>/dev/null \
  | jq -r '[.title, .url, .channel, .view_count, .duration_string, .upload_date] | @tsv'
  • ytsearch10: — search YouTube, return 10 results (adjust number as needed)
  • --dump-json — output metadata as JSON
  • --flat-playlist — don't download, just list
  • --no-warnings — suppress non-error output
Structured JSON Output
bash
yt-dlp "ytsearch5:claude code mcp servers" \
  --dump-json --flat-playlist --no-warnings 2>/dev/null \
  | jq '{
    title: .title,
    url: .url,
    channel: .channel,
    views: .view_count,
    duration: .duration_string,
    upload_date: .upload_date,
    description: (.description // "" | .[0:200])
  }'
Search with Sorting

yt-dlp does not support server-side sort. To sort by views or date, capture all results and sort client-side:

bash
# Sort by view count (descending)
yt-dlp "ytsearch20:AI agents 2026" \
  --dump-json --flat-playlist --no-warnings 2>/dev/null \
  | jq -s 'sort_by(-.view_count) | .[:10][] | {title, url, channel, views: .view_count}'
bash
# Sort by upload date (newest first)
yt-dlp "ytsearch20:claude code tutorial" \
  --dump-json --flat-playlist --no-warnings 2>/dev/null \
  | jq -s 'sort_by(-.upload_date) | .[:10][] | {title, url, channel, upload_date}'
Search Result Count

The number after ytsearch controls how many results to fetch:

PatternResults
ytsearch5:query5 results
ytsearch10:query10 results (default recommendation)
ytsearch20:query20 results
ytsearch50:query50 results (slow, may hit rate limits)

Recommendation: Fetch 15-20 results, then filter/sort client-side to the top N the user wants. This provides enough data for meaningful sorting without being excessive.

Workflow

text
User provides search query
        |
        v
+---------------------+
|  Step 0: Deps check |
+----------+----------+
           v
+---------------------+
|  Step 1: Search     |
|  (yt-dlp ytsearch)  |
+----------+----------+
           v
+---------------------+
|  Step 2: Parse JSON |
|  (jq formatting)    |
+----------+----------+
           v
+---------------------+
|  Step 3: Present    |
|  results to user    |
+---------------------+
bash
yt-dlp "ytsearch${COUNT}:${QUERY}" \
  --dump-json --flat-playlist --no-warnings 2>/dev/null
Step 2: Parse and Format

Extract relevant fields with jq. The full metadata object from yt-dlp contains many fields; the useful subset for search results:

FieldDescription
.titleVideo title
.urlFull YouTube URL
.channelChannel name
.view_countTotal views (integer)
.duration_stringDuration as H:MM:SS or MM:SS
.upload_dateUpload date as YYYYMMDD
.descriptionVideo description (can be long — truncate)
.like_countLikes (may be null)
.comment_countComments (may be null)
Step 3: Present Results

Format as a markdown table for the user:

bash
yt-dlp "ytsearch10:${QUERY}" \
  --dump-json --flat-playlist --no-warnings 2>/dev/null \
  | jq -s 'sort_by(-.view_count) | .[] | "| \(.title[:60]) | \(.channel) | \(.view_count) | \(.duration_string) | \(.upload_date) |"' -r

Prefix with a header row:

text
| Title | Channel | Views | Duration | Date |
|-------|---------|-------|----------|------|

Advanced Patterns

Filter by Duration
bash
# Only videos longer than 10 minutes (600 seconds)
yt-dlp "ytsearch20:deep dive AI agents" \
  --dump-json --flat-playlist --no-warnings 2>/dev/null \
  | jq -s '[.[] | select(.duration >= 600)] | sort_by(-.view_count) | .[:10][]'
Filter by Recency
bash
# Only videos from the last 30 days
CUTOFF=$(date -v-30d +%Y%m%d 2>/dev/null || date -d "30 days ago" +%Y%m%d)
yt-dlp "ytsearch20:claude code" \
  --dump-json --flat-playlist --no-warnings 2>/dev/null \
  | jq -s --arg cutoff "$CUTOFF" '[.[] | select(.upload_date >= $cutoff)] | sort_by(-.view_count) | .[]'
bash
# Search within a specific channel
yt-dlp "ytsearch10:skills site:youtube.com/c/ChannelName" \
  --dump-json --flat-playlist --no-warnings 2>/dev/null

Or use the channel URL directly:

bash
yt-dlp "https://www.youtube.com/@ChannelName/search?query=skills" \
  --dump-json --flat-playlist --no-warnings 2>/dev/null
Extract URLs Only (for Piping)
bash
# Get just URLs for feeding into other tools (watch, notebooklm)
yt-dlp "ytsearch10:claude code MCP" \
  --dump-json --flat-playlist --no-warnings 2>/dev/null \
  | jq -r '.url'
Show full SKILL.md (210 more words)Show less

Composability

This skill produces URLs and metadata that feed into other skills:

  • watch: Pass URLs for transcript concepts, timestamped visual evidence, and question-driven video analysis
  • notebooklm: Pass URLs as sources via notebooklm source add "URL"

Example pipeline (manual steps, not automated):

  1. /yt-search — discover 10 relevant videos
  2. User reviews and selects videos
  3. Feed selected URLs into notebooklm source add or watch

Error Handling

ErrorCauseResolution
No resultsQuery too specific or misspelledBroaden the search terms
Empty JSONyt-dlp rate limited by YouTubeWait a few minutes, retry
yt-dlp: command not foundNot installeduv tool install yt-dlp
Partial resultsSome videos geo-blocked or privateNormal behavior; results are best-effort
TimeoutNetwork or YouTube slownessReduce result count or retry

Limitations

  • No server-side sorting: YouTube search results come in relevance order. Sorting by views or date requires fetching extra results and sorting client-side.
  • Rate limiting: Aggressive scraping (50+ results, rapid repeated searches) may trigger YouTube rate limits. Space requests apart.
  • Metadata completeness: Some fields (.like_count, .comment_count) may be null for certain videos. Always handle nulls in jq filters.
  • No authentication: Uses public YouTube data only. Age-restricted or private videos are excluded from results.
  • Search relevance: YouTube's search algorithm determines initial ordering. Results may not match exact expectations.

© Mathews-Tom, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file in skills/youtube-search of Mathews-Tom/armory.

  • SKILL.md
  • evals/cases.yaml

Open the folder on GitHubat commit 4594fb7

Compare with similar skills

Youtube Search next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Youtube Search compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Youtube Search this skillMathews-Tom/armory329—~2kAutomated safety check: PassMIT
MarkitdownImCa0/just-laws78114 repos~3.2kAutomated safety check: NotesMIT
Banner Design Systemnextlevelbuilder/ui-ux-pro-max-skill135k1 repos~1.8kAutomated safety check: PassMIT
Agent ReachPanniantong/Agent-Reach95k—~1.4kAutomated safety check: PassMIT
Last30daysmvanhorn/last30days-skill64k—~7.9kAutomated safety check: NotesMIT
Baoyu URL To Markdownsdyckjq-lab/llm-wiki-skill2.5k2 repos~3.2kAutomated safety check: PassNone

Similar skills

  • Markitdown

    ImCa0/just-laws

    Convert files and office documents to Markdown. An agent skill from ImCa0/just-laws.

    781 GitHub starsUsed in 14 repos~3.2k tokens
    Documents & OfficeAuto-check: notes
  • Banner Design System

    nextlevelbuilder/ui-ux-pro-max-skill

    Walks through designing a banner for social media, ads, a website hero or print, from gathering requirements to building 2 or 3 art-direction options in HTML and CSS.

    135k GitHub starsUsed in 1 repo~1.8k tokens
    Frontend & DesignAuto-check passed
  • Agent Reach

    Panniantong/Agent-Reach

    Routes web research and platform lookups across 16 sites, including Twitter, Reddit, YouTube, Bilibili, Xiaohongshu and GitHub, through one command-line tool.

    95k GitHub stars~1.4k tokensUpdated 3 days ago
    Productivity & AutomationAuto-check passed
  • Last30days

    mvanhorn/last30days-skill

    Research what people actually say about any topic in the last 30 days.

    64k GitHub stars~7.9k tokensUpdated yesterday
    Research & ScienceAuto-check: notes
  • Baoyu URL To Markdown

    sdyckjq-lab/llm-wiki-skill

    Fetch any URL and convert to markdown using Chrome CDP. An agent skill from sdyckjq-lab/llm-wiki-skill.

    2.5k GitHub starsUsed in 2 repos~3.2k tokens
    Knowledge ManagementAuto-check passed
  • Google SEO APIs

    AgriciDaniel/claude-seo

    Pulls real Google data for SEO work: Search Console, PageSpeed Insights, CrUX field data, the Indexing API and GA4 organic traffic, through /seo google commands.

    19k GitHub starsUsed in 1 repo~4.2k tokens
    Marketing & SEOAuto-check passed

More from Mathews-Tom/armory

All 80 skills in this repo
  • Architecture Reviewer

    Mathews-Tom/armory

    Architecture reviews across 7 dimensions (structural, scalability, enterprise readiness, performance, security, ops, data) with scored reports.

    329 GitHub stars~4.6k tokensUpdated 5 days ago
    Auto-check passed
  • Concept To Image

    Mathews-Tom/armory

    Turn concepts into static HTML visuals exported as PNG or SVG files via HTML/CSS/SVG.

    329 GitHub stars~2.6k tokensUpdated 5 days ago
    Auto-check passed
  • Watch

    Mathews-Tom/armory

    A skill your agent uses when analyzing an existing video URL or local recording: "watch this video", "analyze youtube video", "summarize this video", "youtube transcript", "find this moment", "what…

    329 GitHub stars~2.8k tokensUpdated 5 days ago
    Auto-check passed
  • Code Refiner

    Mathews-Tom/armory

    Deep code simplification and refactoring preserving behavior across Python, Go, TypeScript, Rust.

    329 GitHub stars~3.1k tokensUpdated 5 days ago
    Auto-check passed
  • Concept To Video

    Mathews-Tom/armory

    Turn concepts into animated explainer videos using Manim (Python) with MP4/GIF output, audio overlay, multi-scene composition.

    329 GitHub stars~4.9k tokensUpdated 5 days ago
    Auto-check passed
  • Decision Map

    Mathews-Tom/armory

    Maps the unresolved architecture, policy, and scope decisions that must be answered before planning can start: one durable decision ticket per question on the issue tracker, typed and blocker-linked…

    329 GitHub stars~2.7k tokensUpdated 5 days ago
    Auto-check passed

Works with

Questions about Youtube Search

What does Youtube Search do?

Search YouTube by keyword and return structured video metadata (title, URL, channel, views, duration, date) via yt-dlp. Youtube Search is an agent skill from Mathews-Tom/armory. Search YouTube by keyword and return structured video metadata (title, URL, channel, views, duration, date) via yt-dlp.

When should I use Youtube Search?

Youtube Search fits situations like: : search youtube; find youtube videos; top youtube videos on; trending videos on.

How do I install Youtube Search in Claude Code?

Run `npx skills add Mathews-Tom/armory --skill youtube-search -a claude-code`. Or copy the skill folder (skills/youtube-search in Mathews-Tom/armory) into .claude/skills/youtube-search in your project. Claude Code loads it when a task matches its description.

How do I install Youtube Search in Codex?

Run `npx skills add Mathews-Tom/armory --skill youtube-search -a codex`. Or copy the skill folder (skills/youtube-search in Mathews-Tom/armory) into .agents/skills/youtube-search in your project. Codex loads it when a task matches its description.

Can I use Youtube Search in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Mathews-Tom/armory --skill youtube-search -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/youtube-search, .gemini/skills/youtube-search, .github/skills/youtube-search and .opencode/skills/youtube-search in your project.

What does Youtube Search need to run?

Going by SKILL.md and its folder, Youtube Search needs the command-line tools its instructions call (yt-dlp, jq and uv).

Does Youtube Search access the network?

SKILL.md names 1 domain. In commands or code: youtube.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.

Is Youtube Search safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Youtube Search use?

Youtube Search is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Youtube Search use?

About 2k tokens (SKILL.md is roughly 7.9k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Youtube Search?

Skills that share tags, products or a category with Youtube Search: Markitdown (ImCa0/just-laws, 781 stars), Banner Design System (nextlevelbuilder/ui-ux-pro-max-skill, 135k stars), Agent Reach (Panniantong/Agent-Reach, 95k stars) and Last30days (mvanhorn/last30days-skill, 64k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Youtube Search?

Mathews-Tom (a GitHub user) maintains it in Mathews-Tom/armory, which has 329 GitHub stars. The repository holds 80 skills in this directory. The repository was last updated on October 6, 2026.

Source: Mathews-Tom/armory on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.