youtube-serp ยท v1.0.1 ยท 2026-10-19 ยท sha256 c188dad33fd41117
youtube-serp v1.0.1A
Immutable. This exact content never changes and is served at /api/v1/blob/c188dad33fd41117.
---
name: youtube-serp
description: YouTube SERP for agents. Search top-ranking videos, channels, and trends for content research and competitor tracking.
license: MIT
compatibility: Works with any agentskills.io-compatible harness โ Claude Code, Claude, OpenCode, Cursor, Codex, Gemini CLI, OpenClaw, Hermes, Goose, and others. Requires Python 3, a POSIX shell, and AISA_API_KEY.
metadata:
version: "1.0.1"
aisa:
emoji: ๐บ
homepage: https://aisa.one
requires:
bins:
- curl
- python3
env:
- AISA_API_KEY
primaryEnv: AISA_API_KEY
harnesses:
- claude-code
- claude
- opencode
- cursor
- codex
- gemini-cli
- openclaw
- hermes
- goose
---
# YouTube SERP ๐บ
<!-- aisa-rules:start -->
## AIsa agent rules (shared)
<!-- Generated from _shared/aisa-rules.md by scripts/sync_shared_rules.py. Do not edit this block in place. -->
These rules apply to every AIsa-backed skill and are copied from https://aisa.one/llms.txt, the single authoritative agent rule source. When this block and the rest of this skill disagree, follow this block.
### Connect (MCP first)
Pick the first option that applies. Run the command yourself; the user only approves the browser sign-in.
- **A. Your client supports remote MCP and can open a browser (default).** Add a remote MCP server named `AIsa` with URL `https://mcp.aisa.one/mcp` (Streamable HTTP), using your client's own command or config file. Auth: browser OAuth, no key needed. In a chat app (Claude, ChatGPT), the user adds it as a custom connector in settings. If you cannot add the connector yourself (sandbox, permission denied), give the user the server name and URL above and wait. Do not fall back to another method.
- **B. Your client supports remote MCP but has no browser (CI, SSH, container).** Same endpoint, with the header `Authorization: Bearer $AISA_API_KEY` set in your client's MCP config instead of browser sign-in. If `AISA_API_KEY` is not set, ask the user to create a key at https://console.aisa.one/api-keys and set it in the environment; never ask them to paste it into chat. Never print, log, or commit the key.
- **C. The client has no MCP support.** Use the CLI: `npm install -g @aisa-one/cli && aisa login` (Node.js 18+). Guide: https://aisa.one/docs/get-started/cli.md
- **D. Calling AIsa over HTTP from your own code.** LLMs, OpenAI-compatible: `https://api.aisa.one/v1` (Gemini GenerateContent: `https://api.aisa.one/v1beta`). Data APIs: `https://api.aisa.one/apis/v1`. Auth: `Authorization: Bearer $AISA_API_KEY`. Exact paths and schemas: https://aisa.one/docs/api-reference
Direct HTTP (D) is a gated fallback, not the default. Gate (https://aisa.one/docs/get-started/cli.md#direct-http-fallback): "CLI and MCP are both unavailable, HTTP requests are supported, and a valid existing AIsa API key is already available." The curl and script examples in this skill exist for that fallback; when a connection exists, run the same operation through MCP (`search` โ `batch_get_schema` โ `batch_quote` โ `batch_use`) or the CLI (`aisa search` โ `aisa schema` โ `aisa quote` โ `aisa call`). Take tool names and arguments from `search` or `batch_get_schema`. Never invent them.
### Verify
Make one free authenticated call on the interface you connected:
- MCP (A, B): call `account` (no arguments). If it is not in the tool list, call `use` with `{"operation_id": "account"}` instead. Returns the key, balance, and usage.
- CLI (C): `aisa balance`. (`aisa whoami` is local only and does not count.)
- HTTP (D): `GET https://api.aisa.one/v1/models` with the Bearer header returns 200.
AIsa is connected only when this call succeeds. A tool list or a 401 response does not count.
### Spending (approval before paid calls)
- Free: docs, `GET /v1/models`, MCP `search`, `list_categories`, `batch_get_schema`, `batch_quote`, `account`, and CLI `aisa search`, `aisa schema`, `aisa quote`, `aisa balance`.
- Quote the exact calls before running them: MCP `batch_quote`, CLI `aisa quote --json`. Run only what you quoted; re-quote if the tools or arguments change. Neither `batch_use` nor `aisa call` takes a price cap.
- If the quote reports `auto_execute_eligible: true` (a small total), run it without asking, unless the user set a tighter limit or asked only for a quote.
- Otherwise, before the first such call, tell the user in one message what you plan to call, the quoted price, and a total budget for the task in USD. Wait for approval, then run calls within that budget without asking again. Ask again only if the task changes or the next call would exceed the remaining budget.
- For operations billed by rows or credits, also set the operation's own limit (for example `limit`) so the cost stays bounded.
- Do not retry a failed paid call without telling the user.
- Direct HTTP (D) follows the stricter rule at https://aisa.one/docs/get-started/cli.md#direct-http-fallback: read the endpoint's reference and published pricing first; state the exact endpoint and scope, formula or rate, and documented maximum USD exposure; then wait for a separate user message explicitly approving that scope and cap. Do not make paid calls to test availability. Docs, `/v1/models`, and capability or MCP discovery are allowed before approval.
### Cost accounting
The settled cost of a direct HTTP call is reported by the response header `X-AISA-Customer-Cost-Micros-USD` (integer micro-USD; 1 USD = 1,000,000 micro-USD), or by a successful native Tool result's `customer_cost_micros_usd`. Missing cost metadata means unknown, not free. Response bodies do not carry `usage.cost` or `usage.credits_remaining`; do not report those fields as the charge. Reference: https://aisa.one/docs/guides/pricing
### Errors
- `401`: not signed in or invalid key. Redo Connect option A (step 1A in llms.txt) or check the key.
- `402`: low balance, or the operation requires the Go-to-Market plan. The response says which and where to resolve it. Tell the user which one it is (top up the balance, or subscribe to the plan) with the link from the response; do not retry.
- `429`: rate limited. Wait and retry with backoff. Details: https://aisa.one/docs/api-reference/rate-limits
<!-- aisa-rules:end -->
**YouTube SERP for autonomous agents. Powered by AIsa.**
One API key. Rank discovery. Content research. Competitor tracking.
## Compatibility
Works with any [agentskills.io](https://agentskills.io)-compatible
harness, including:
- **Claude Code** and **Claude** (Anthropic)
- **OpenAI Codex**
- **Cursor**
- **Gemini CLI** (Google)
- **OpenCode**, **Goose**, **OpenClaw**, **Hermes**
- and any other harness that implements the [Agent Skills
specification](https://agentskills.io/specification)
Requires Python 3, a POSIX shell, and `AISA_API_KEY` (get one at
[aisa.one](https://aisa.one)).
## ๐ฅ What Can You Do?
### Content Research
```
"Find top-ranking videos about 'AI agents tutorial' to see what's working"
```
### Competitor Tracking
```
"Search for videos from competitor channels about 'machine learning'"
```
### Trend Discovery
```
"What are the top YouTube videos about 'GPT-5' right now?"
```
### Topic Analysis
```
"Find popular videos on 'autonomous driving' to understand audience interest"
```
### Channel Discovery
```
"Search for channels creating content about 'crypto trading'"
```
## Quick Start
```bash
export AISA_API_KEY="your-key"
```
---
## Core Capabilities
### Basic YouTube Search
```bash
# Search for videos
curl "https://api.aisa.one/apis/v1/youtube/search?engine=youtube&q=AI+agents+tutorial" \
-H "Authorization: Bearer $AISA_API_KEY"
```
### Search with Country Filter
```bash
# Search in specific country (US)
curl "https://api.aisa.one/apis/v1/youtube/search?engine=youtube&q=machine+learning&gl=us" \
-H "Authorization: Bearer $AISA_API_KEY"
# Search in Japan
curl "https://api.aisa.one/apis/v1/youtube/search?engine=youtube&q=AI&gl=jp&hl=ja" \
-H "Authorization: Bearer $AISA_API_KEY"
```
### Search with Language Filter
```bash
# Search with interface language
curl "https://api.aisa.one/apis/v1/youtube/search?engine=youtube&q=python+tutorial&hl=en" \
-H "Authorization: Bearer $AISA_API_KEY"
# Chinese interface
curl "https://api.aisa.one/apis/v1/youtube/search?engine=youtube&q=็ผ็จๆ็จ&hl=zh-CN&gl=cn" \
-H "Authorization: Bearer $AISA_API_KEY"
```
### Pagination with Filter Token
```bash
# Use sp parameter for pagination or advanced filters
curl "https://api.aisa.one/apis/v1/youtube/search?engine=youtube&q=AI&sp=<filter_token>" \
-H "Authorization: Bearer $AISA_API_KEY"
```
---
## Python Client
```bash
# Basic search
python3 {baseDir}/scripts/youtube_client.py search --query "AI agents tutorial"
# Search with country
python3 {baseDir}/scripts/youtube_client.py search --query "machine learning" --country us
# Search with language
python3 {baseDir}/scripts/youtube_client.py search --query "python tutorial" --lang en
# Full options
python3 {baseDir}/scripts/youtube_client.py search --query "GPT-5 news" --country us --lang en
# Competitor research
python3 {baseDir}/scripts/youtube_client.py search --query "OpenAI tutorial"
# Trend discovery
python3 {baseDir}/scripts/youtube_client.py search --query "AI trends 2025"
```
---
## Use Cases
### 1. Content Gap Analysis
Find what content is ranking well to identify gaps in your strategy:
```python
# Search for top videos in your niche
results = client.search("AI automation tutorial")
# Analyze titles, views, and channels to find opportunities
```
### 2. Competitor Monitoring
Track what competitors are publishing:
```python
# Search for competitor brand + topic
results = client.search("OpenAI GPT tutorial")
# Monitor ranking changes over time
```
### 3. Keyword Research
Discover what topics are trending:
```python
# Search broad topics to see what's popular
results = client.search("artificial intelligence 2025")
# Extract common keywords from top-ranking titles
```
### 4. Audience Research
Understand what your target audience watches:
```python
# Search in specific regions
results = client.search("coding tutorial", country="jp", lang="ja")
# Analyze regional content preferences
```
### 5. SEO Analysis
Analyze how videos rank for specific keywords:
```python
# Track ranking positions for target keywords
keywords = ["AI tutorial", "machine learning basics", "Python AI"]
for kw in keywords:
results = client.search(kw)
# Record top 10 videos and their channels
```
---
## API Endpoint Reference
| Endpoint | Method | Description |
|----------|--------|-------------|
| `/youtube/search` | GET | Search YouTube SERP |
## Request Parameters
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| engine | string | Yes | Must be `youtube` |
| q | string | Yes | Search query |
| gl | string | No | Country code (e.g., `us`, `jp`, `uk`, `cn`) |
| hl | string | No | Interface language (e.g., `en`, `ja`, `zh-CN`) |
| sp | string | No | YouTube filter token for pagination/filters |
## Response Format
```json
{
"search_metadata": {
"id": "search_id",
"status": "Success",
"created_at": "2025-01-15T12:00:00Z",
"request_time_taken": 1.23,
"total_time_taken": 1.45
},
"search_results": [
{
"video_id": "abc123xyz",
"title": "Complete AI Agents Tutorial 2025",
"link": "https://www.youtube.com/watch?v=abc123xyz",
"channel_name": "AI Academy",
"channel_link": "https://www.youtube.com/@aiacademy",
"description": "Learn how to build AI agents from scratch...",
"views": "125K views",
"published_date": "2 weeks ago",
"duration": "45:30",
"thumbnail": "https://i.ytimg.com/vi/abc123xyz/hqdefault.jpg"
}
]
}
```
---
## Country Codes (gl)
| Code | Country |
|------|---------|
| us | United States |
| uk | United Kingdom |
| jp | Japan |
| cn | China |
| de | Germany |
| fr | France |
| kr | South Korea |
| in | India |
| br | Brazil |
| au | Australia |
## Language Codes (hl)
| Code | Language |
|------|----------|
| en | English |
| ja | Japanese |
| zh-CN | Chinese (Simplified) |
| zh-TW | Chinese (Traditional) |
| ko | Korean |
| de | German |
| fr | French |
| es | Spanish |
| pt | Portuguese |
| ru | Russian |
---
## Pricing
| API | Cost |
|-----|------|
| YouTube search | ~$0.002 |
---
## Get Started
1. Sign up at [aisa.one](https://aisa.one)
2. Get your API key
3. Add credits (pay-as-you-go)
4. Set environment variable: `export AISA_API_KEY="your-key"`
## Full API Reference
See [API Reference](https://aisa.one/docs/api-reference/) for complete endpoint documentation.