New: Earn 20% as an AgentAlley affiliate. Share your link and earn on every sale you refer. Join now New: Earn 20% as an affiliate. Join now

Find YouTube content on any topic: searching for videos

Youtube search

by ZeroPointRepo · MIT license · ★ 945 on GitHub · v1.6.0 · updated Sep 22

Youtube search cover

Use when the user wants to find YouTube content on any topic: searching for videos or channels, finding creators who cover a subject, discovering tutorials, talks, or expert discussions, or looking up a channel by name or handle. Also…

---
name: youtube-search
description: "Use when the user wants to find YouTube content on any topic: searching for videos or channels, finding creators who cover a subject, discovering tutorials, talks, or expert discussions, or looking up a channel by name or handle. Also use proactively when the user wants to research a topic and YouTube is a good source. Not for account management or written-source-only research."
version: "1.6.0"
user-invocable: true
compatibility: Requires internet access to reach transcriptapi.com. No additional runtimes or dependencies needed.
required_environment_variables:
  - name: TRANSCRIPT_API_KEY
    prompt: Your TranscriptAPI key (starts with sk_)
    help: Free account at https://transcriptapi.com — 100 credits, no card required. Or let the agent create one for you.
    required_for: all API requests
metadata: {"openclaw":{"emoji":"▶️","requires":{"env":["TRANSCRIPT_API_KEY"]},"primaryEnv":"TRANSCRIPT_API_KEY","homepage":"https://transcriptapi.com"},"hermes":{"tags":["youtube","search","video","channels","discovery","research"],"category":"media"}}
---

# YouTube Search

Search YouTube and fetch transcripts via [TranscriptAPI.com](https://transcriptapi.com).

Overview

If $TRANSCRIPT_API_KEY is not set, read references/auth-setup.md and follow the instructions there to get and store the key.

Manual install (npx, ZIP)
Claude Codenpx skills add ZeroPointRepo/youtube-skills --skill youtube-search -g -a claude-code
Claude Code (manual)mkdir -p ~/.claude/skills && curl -sL https://codeload.github.com/ZeroPointRepo/youtube-skills/tar.gz/4f7994b94e7d \ | tar -xz -C ~/.claude/skills --strip-components=2 youtube-skills-4f7994b94e7d/skills/youtube-search
Windows (PowerShell)New-Item -ItemType Directory -Force "$HOME\.claude\skills" | Out-Null; Invoke-WebRequest "https://m.agentalley.io/zip/29646b457c02794b5823/youtube-search.zip" -OutFile "$env:TEMP\youtube-search.zip"; Expand-Archive "$env:TEMP\youtube-search.zip" -DestinationPath "$HOME\.claude\skills" -Force
Claude.ai / desktopDownload the ZIP and upload it under Settings → Capabilities → Skills.
Codex, Cursor, other agentsPoint them at SKILL.md. The other files are plain text.

Connects with Agent Alley MCP · agentalley.io/mcp

Files included

  • SKILL.md7.2 KB
  • references/2 files · 8.5 KB
Read the files here
ZeroPointRepo/4f7994b3 files
SKILL.md
Show the full text175 lines

Search YouTube and fetch transcripts via TranscriptAPI.com.

Setup

If $TRANSCRIPT_API_KEY is not set, read references/auth-setup.md and follow the instructions there to get and store the key.

Required Headers

Every request needs two headers:

  • Authorization: Bearer $TRANSCRIPT_API_KEY
  • User-Agent: your agent's name and version if known (e.g. HermesAgent/0.11.0, ClaudeCode/1.0). Version is optional — agent name alone is fine. Do not omit this header or send a bare default — Cloudflare will return a 403 (error code 1010) and block the request.

API Reference

Full OpenAPI spec: transcriptapi.com/openapi.json — consult this for the latest parameters and schemas.

GET /api/v2/youtube/search — 1 credit/page

Search YouTube globally for videos, channels, playlists, or movies.

GET https://transcriptapi.com/api/v2/youtube/search?q=QUERY&type=video&limit=20
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
Param Required Default Validation
q conditional — 1-200 chars (trimmed), first page
type no video video, channel, playlist, movie (first page)
sort no relevance relevance or views (first page)
upload_date no — hour, today, week, month, year — videos, first page
duration no — short (<4m), medium (4-20m), long (>20m) — videos, first page
features no — comma-separated: hd, subtitles, cc, live, 4k, hdr, etc.
limit no 20 1-50
continuation conditional — token from a previous response (subsequent pages)

Provide exactly one of q (first page) or continuation (next pages) — the token already encodes the filters. sort/upload_date/duration/features apply to the first page only.

Find recent, most-viewed videos:

GET https://transcriptapi.com/api/v2/youtube/search?q=innovation&sort=views&duration=long&upload_date=month
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0

Search for playlists on a topic:

GET https://transcriptapi.com/api/v2/youtube/search?q=react+tutorial&type=playlist
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0

Video search response:

{
  "results": [
    {
      "type": "video",
      "videoId": "dQw4w9WgXcQ",
      "title": "Rick Astley - Never Gonna Give You Up",
      "channelId": "UCuAXFkgsw1L7xaCfnd5JJOw",
      "channelTitle": "Rick Astley",
      "channelHandle": "@RickAstley",
      "channelVerified": true,
      "lengthText": "3:33",
      "viewCountText": "1.5B views",
      "publishedTimeText": "14 years ago",
      "hasCaptions": true,
      "thumbnails": [{ "url": "...", "width": 120, "height": 90 }]
    }
  ],
  "result_count": 20
}

Channel search response (type=channel):

{
  "results": [{
    "type": "channel",
    "channelId": "UCuAXFkgsw1L7xaCfnd5JJOw",
    "title": "Rick Astley",
    "handle": "@RickAstley",
    "url": "https://www.youtube.com/@RickAstley",
    "description": "Official channel...",
    "subscriberCount": "4.2M subscribers",
    "verified": true,
    "rssUrl": "https://www.youtube.com/feeds/videos.xml?channel_id=UC...",
    "thumbnails": [...]
  }],
  "result_count": 5
}

GET /api/v2/youtube/channel/search — 1 credit

Search videos within a specific channel. Accepts channel — an @handle, channel URL, or UC... ID.

GET https://transcriptapi.com/api/v2/youtube/channel/search?channel=@TED&q=climate+change&limit=30
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
Param Required Validation
channel yes @handle, channel URL, or UC... ID
q yes 1-200 chars
limit no 1-50 (default 30)

Returns up to ~30 results (YouTube limit). Same video response shape as global search.

GET /api/v2/youtube/channel/resolve — FREE

Convert @handle to channel ID:

GET https://transcriptapi.com/api/v2/youtube/channel/resolve?input=@TED
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0

Workflow: Search → Transcript

# 1. Search for videos
GET https://transcriptapi.com/api/v2/youtube/search?q=python+web+scraping&type=video&limit=5
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0

# 2. Get transcript from result
GET https://transcriptapi.com/api/v2/youtube/transcript?video_url=VIDEO_ID&format=text&include_timestamp=true&send_metadata=true
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0

Errors

Code Meaning Action
401 Bad API key Check key
402 No credits transcriptapi.com/billing
403/1010 Cloudflare block Add or fix User-Agent header
404 Not found Resource doesn't exist
408 Timeout Retry once
422 Invalid param Check param format

Free tier: 100 credits, 300 req/min.

Copy-paste examples

Every request in this file as a ready-to-run one-liner: references/curl-examples.md

1---
2name: youtube-search
3description: "Use when the user wants to find YouTube content on any topic: searching for videos or channels, finding creators who cover a subject, discovering tutorials, talks, or expert discussions, or looking up a channel by name or handle. Also use proactively when the user wants to research a topic and YouTube is a good source. Not for account management or written-source-only research."
4version: "1.6.0"
5user-invocable: true
6compatibility: Requires internet access to reach transcriptapi.com. No additional runtimes or dependencies needed.
7required_environment_variables:
8 - name: TRANSCRIPT_API_KEY
9 prompt: Your TranscriptAPI key (starts with sk_)
10 help: Free account at https://transcriptapi.com — 100 credits, no card required. Or let the agent create one for you.
11 required_for: all API requests
12metadata: {"openclaw":{"emoji":"▶️","requires":{"env":["TRANSCRIPT_API_KEY"]},"primaryEnv":"TRANSCRIPT_API_KEY","homepage":"https://transcriptapi.com"},"hermes":{"tags":["youtube","search","video","channels","discovery","research"],"category":"media"}}
13---
14 
15# YouTube Search
16 
17Search YouTube and fetch transcripts via [TranscriptAPI.com](https://transcriptapi.com).
18 
19## Setup
20 
21If `$TRANSCRIPT_API_KEY` is not set, read [references/auth-setup.md](references/auth-setup.md) and follow the instructions there to get and store the key.
22 
23## Required Headers
24 
25Every request needs two headers:
26 
27- **Authorization:** `Bearer $TRANSCRIPT_API_KEY`
28- **User-Agent:** your agent's name and version if known (e.g. `HermesAgent/0.11.0`, `ClaudeCode/1.0`). Version is optional — agent name alone is fine. Do not omit this header or send a bare default — Cloudflare will return a 403 (error code 1010) and block the request.
29 
30## API Reference
31 
32Full OpenAPI spec: [transcriptapi.com/openapi.json](https://transcriptapi.com/openapi.json) — consult this for the latest parameters and schemas.
33 
34## GET /api/v2/youtube/search — 1 credit/page
35 
36Search YouTube globally for videos, channels, playlists, or movies.
37 
38```http
39GET https://transcriptapi.com/api/v2/youtube/search?q=QUERY&type=video&limit=20
40Authorization: Bearer $TRANSCRIPT_API_KEY
41User-Agent: YourAgent/1.0
42```
43 
44| Param | Required | Default | Validation |
45| -------------- | ----------- | ----------- | ------------------------------------------------------------------ |
46| `q` | conditional | — | 1-200 chars (trimmed), first page |
47| `type` | no | `video` | `video`, `channel`, `playlist`, `movie` (first page) |
48| `sort` | no | `relevance` | `relevance` or `views` (first page) |
49| `upload_date` | no | — | `hour`, `today`, `week`, `month`, `year` — videos, first page |
50| `duration` | no | — | `short` (<4m), `medium` (4-20m), `long` (>20m) — videos, first page |
51| `features` | no | — | comma-separated: `hd`, `subtitles`, `cc`, `live`, `4k`, `hdr`, etc. |
52| `limit` | no | `20` | 1-50 |
53| `continuation` | conditional | — | token from a previous response (subsequent pages) |
54 
55Provide exactly one of `q` (first page) or `continuation` (next pages) — the token already encodes the filters. `sort`/`upload_date`/`duration`/`features` apply to the first page only.
56 
57**Find recent, most-viewed videos:**
58 
59```http
60GET https://transcriptapi.com/api/v2/youtube/search?q=innovation&sort=views&duration=long&upload_date=month
61Authorization: Bearer $TRANSCRIPT_API_KEY
62User-Agent: YourAgent/1.0
63```
64 
65**Search for playlists on a topic:**
66 
67```http
68GET https://transcriptapi.com/api/v2/youtube/search?q=react+tutorial&type=playlist
69Authorization: Bearer $TRANSCRIPT_API_KEY
70User-Agent: YourAgent/1.0
71```
72 
73**Video search response:**
74 
75```json
76{
77 "results": [
78 {
79 "type": "video",
80 "videoId": "dQw4w9WgXcQ",
81 "title": "Rick Astley - Never Gonna Give You Up",
82 "channelId": "UCuAXFkgsw1L7xaCfnd5JJOw",
83 "channelTitle": "Rick Astley",
84 "channelHandle": "@RickAstley",
85 "channelVerified": true,
86 "lengthText": "3:33",
87 "viewCountText": "1.5B views",
88 "publishedTimeText": "14 years ago",
89 "hasCaptions": true,
90 "thumbnails": [{ "url": "...", "width": 120, "height": 90 }]
91 }
92 ],
93 "result_count": 20
94}
95```
96 
97**Channel search response** (`type=channel`):
98 
99```json
100{
101 "results": [{
102 "type": "channel",
103 "channelId": "UCuAXFkgsw1L7xaCfnd5JJOw",
104 "title": "Rick Astley",
105 "handle": "@RickAstley",
106 "url": "https://www.youtube.com/@RickAstley",
107 "description": "Official channel...",
108 "subscriberCount": "4.2M subscribers",
109 "verified": true,
110 "rssUrl": "https://www.youtube.com/feeds/videos.xml?channel_id=UC...",
111 "thumbnails": [...]
112 }],
113 "result_count": 5
114}
115```
116 
117## GET /api/v2/youtube/channel/search — 1 credit
118 
119Search videos within a specific channel. Accepts `channel` — an `@handle`, channel URL, or `UC...` ID.
120 
121```http
122GET https://transcriptapi.com/api/v2/youtube/channel/search?channel=@TED&q=climate+change&limit=30
123Authorization: Bearer $TRANSCRIPT_API_KEY
124User-Agent: YourAgent/1.0
125```
126 
127| Param | Required | Validation |
128| --------- | -------- | ----------------------------------------- |
129| `channel` | yes | `@handle`, channel URL, or `UC...` ID |
130| `q` | yes | 1-200 chars |
131| `limit` | no | 1-50 (default 30) |
132 
133Returns up to ~30 results (YouTube limit). Same video response shape as global search.
134 
135## GET /api/v2/youtube/channel/resolve — FREE
136 
137Convert @handle to channel ID:
138 
139```http
140GET https://transcriptapi.com/api/v2/youtube/channel/resolve?input=@TED
141Authorization: Bearer $TRANSCRIPT_API_KEY
142User-Agent: YourAgent/1.0
143```
144 
145## Workflow: Search → Transcript
146 
147```http
148# 1. Search for videos
149GET https://transcriptapi.com/api/v2/youtube/search?q=python+web+scraping&type=video&limit=5
150Authorization: Bearer $TRANSCRIPT_API_KEY
151User-Agent: YourAgent/1.0
152 
153# 2. Get transcript from result
154GET https://transcriptapi.com/api/v2/youtube/transcript?video_url=VIDEO_ID&format=text&include_timestamp=true&send_metadata=true
155Authorization: Bearer $TRANSCRIPT_API_KEY
156User-Agent: YourAgent/1.0
157```
158 
159## Errors
160 
161| Code | Meaning | Action |
162| -------- | ---------------- | ---------------------------------------------- |
163| 401 | Bad API key | Check key |
164| 402 | No credits | transcriptapi.com/billing |
165| 403/1010 | Cloudflare block | Add or fix User-Agent header |
166| 404 | Not found | Resource doesn't exist |
167| 408 | Timeout | Retry once |
168| 422 | Invalid param | Check param format |
169 
170Free tier: 100 credits, 300 req/min.
171 
172## Copy-paste examples
173 
174Every request in this file as a ready-to-run one-liner: [references/curl-examples.md](references/curl-examples.md)
175 
View all files on GitHub →

Details

Version
1.6.0
Updated
Sep 22, 2026
License
MIT
Stars on the repo
★ 945
Checked
Source
ZeroPointRepo/youtube-skills ↗
Creator
ZeroPointRepo · 12 listings
View creator

Similar skills

See all →
SkillReverse engineer native, managed, Electron/JavaScriptREAmorluto/rea · by morlutoReverse engineer native, managed, Electron/JavaScript, packaged, firmware, and browser targets with REA. Use shipped-artifact or requested runtime evidence to explain features, compare versions, decompile code, or guide a reconstruction. Skip REA for ordinary source-repository architecture analysis.★ 316k GitHub starsSkillBrainstorms ideas into designs before any creative workBrainstorming Ideas Into Designsobra/superpowers · by obraYou MUST use this before any creative work - creating features, building components, adding functionality, or modifying behavior. Explores user intent, requirements and design before implementation.★ 290k GitHub starsSkillRequires technical rigor and verificationCode Review Receptionobra/superpowers · by obraUse when receiving code review feedback, before implementing suggestions, especially if feedback seems unclear or technically questionable - requires technical rigor and verification, not performative agreement or blind implementation★ 290k GitHub starsSkillDiagnosis loop for hard bugs and performance regressionsDiagnosing bugsmattpocock/skills · by mattpocockDiagnosis loop for hard bugs and performance regressions. Use when the user says "diagnose"/"debug this", or reports something broken/throwing/failing/slow.★ 267k GitHub starsSkillImplement the result of /to-spec and /to-tickets in codeImplement specmattpocock/skills · by mattpocockImplement the result of /to-spec and /to-tickets in code.★ 267k GitHub starsSkillWriting a PR bodymattpocock/skills · by mattpocockUse when writing a PR body.★ 267k GitHub stars

More from ZeroPointRepo

SkillCaptions, subtitles, or the spoken text of a YouTube videoZeroPointRepo/youtube-skills · by ZeroPointRepoUse when captions, subtitles, or the spoken text of a YouTube video is needed — even if not explicitly requested: pasted video links or IDs, requests to read, quote, or translate a video, accessibility needs, deaf/HoH use cases, content review, or language learning. Fetches timestamped caption data from any YouTube video. Not for uploading subtitles or account management.★ 945 GitHub starsSkillSubtitles or the spoken text of a YouTube video is neededZeroPointRepo/youtube-skills · by ZeroPointRepoUse when subtitles or the spoken text of a YouTube video is needed: pasted video links or IDs, requests to translate a video, read along, follow foreign-language content, or extract what was said. Also use for language learning or accessibility. Fetches timestamped subtitles from any YouTube video. Not for uploading subtitles or account management.★ 945 GitHub starsSkillThe spoken content of a YouTube video is neededTranscriptZeroPointRepo/youtube-skills · by ZeroPointRepoUse when the spoken content of a YouTube video is needed — even if not explicitly requested: pasted video links or IDs, requests to summarize, quote, transcribe, translate, fact-check, or extract anything from a video. Also use for research or learning when a video is the source. Not for uploads or account management.★ 945 GitHub starsSkillYouTube is or could be relevantTranscriptapiZeroPointRepo/youtube-skills · by ZeroPointRepoUse when YouTube is or could be relevant — even if not mentioned: pasted video/channel/playlist links, video IDs, @handles, creator lookups, video summaries, quotes, translations, topic research, tutorials, talks, lectures, expert discussions, product reviews, how-to guides, new product announcements, or anything where video content is fresher or richer than text search. Covers transcripts, video/channel search, channel browsing, playlists, and within-channel search. Not for uploads, account management, or written-source-only research.★ 945 GitHub starsSkillVideo content needs to be extracted as text: pasted YouTubeVideo transcriptZeroPointRepo/youtube-skills · by ZeroPointRepoUse when video content needs to be extracted as text: pasted YouTube links or IDs, requests to transcribe, summarize, quote, translate, convert video to text, or extract information from video content. Also use when a user shares a video URL without explanation and wants to know what it says. Not for uploads or account management.★ 945 GitHub starsSkillYouTube data is needed without Google API quotas or OAuthYoutube APIZeroPointRepo/youtube-skills · by ZeroPointRepoUse when YouTube data is needed without Google API quotas or OAuth setup: transcripts, video metadata, channel info, search results, playlists. Triggers on pasted YouTube links, creator names, @handles, topic research, video summaries, channel browsing, or any request where YouTube content would help — even if not mentioned explicitly. Not for uploads, account management, or written-source-only research.★ 945 GitHub stars