finding-youtube-sponsorship-candidates — Claude Code skill for channel research
Finds YouTube channels for brand sponsorships and scores them using audience activity, niche fit, and sponsor history. Use it to build a ranked outreach list.
npx skills add apidojo-io/apidojo-skills --skill finding-youtube-sponsorship-candidates -a claude-codeWhat finding-youtube-sponsorship-candidates does
The skill searches YouTube with Apify’s apidojo~youtube-scraper, gathers channel handles from video results, then collects channel data and scores sponsorship fit. Its ranking considers view-to-subscriber ratio, comments, niche alignment, and sponsor mentions. The output is a ranked list grouped into candidate tiers.
Set APIFY_TOKEN in the environment or in a .env file before running the scraper. You can launch it with scripts/run_actor.js, Apify MCP, or the REST API, and save results as CSV or JSON. Sponsor detection checks recent video titles and descriptions, so ads mentioned only in captions can be missed; the skill recommends manually checking leading candidates.
What it helps with
- find YouTube channels in a brand’s niche
- identify channels with a record of sponsor deals
- rank channels by sponsorship fit
- prepare a channel list for campaign outreach
Example prompts for the agent
- Find YouTube channels about personal finance for a sponsorship campaign and rank the candidates.
- Build a list of developer-tool channels that have already run sponsor placements.
- Research SaaS-related channels and save the results as CSV.
How to install finding-youtube-sponsorship-candidates
1Skills CLI (Vercel)
npx skills add apidojo-io/apidojo-skills --skill finding-youtube-sponsorship-candidates -a claude-code2Manually: put the files in place
~/.claude/skills/finding-youtube-sponsorship-candidates/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/finding-youtube-sponsorship-candidates/
1Skills CLI (Vercel)
npx skills add apidojo-io/apidojo-skills --skill finding-youtube-sponsorship-candidates -a codex2Manually: put the files in place
.agents/skills/finding-youtube-sponsorship-candidates/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add apidojo-io/apidojo-skills --skill finding-youtube-sponsorship-candidates -a cursor2Manually: put the files in place
.cursor/skills/finding-youtube-sponsorship-candidates/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install apidojo-io/apidojo-skills finding-youtube-sponsorship-candidates2Manually: put the files in place
.github/skills/finding-youtube-sponsorship-candidates/SKILL.md1Skills CLI (Vercel)
npx skills add apidojo-io/apidojo-skills --skill finding-youtube-sponsorship-candidates -a gemini-cli2Platform CLI
gemini skills install https://github.com/apidojo-io/apidojo-skills --path skills/intent/finding-youtube-sponsorship-candidatesManually: put the files in place
.devin/skills/finding-youtube-sponsorship-candidates/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add apidojo-io/apidojo-skills --skill finding-youtube-sponsorship-candidates -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about finding-youtube-sponsorship-candidates
How do I install finding-youtube-sponsorship-candidates in Claude Code?
Run npx skills add apidojo-io/apidojo-skills --skill finding-youtube-sponsorship-candidates -a claude-code. The skill file is installed at ~/.claude/skills/finding-youtube-sponsorship-candidates/SKILL.md.
What does finding-youtube-sponsorship-candidates do?
It searches YouTube for channels in a chosen niche, gathers channel metrics, and ranks sponsorship prospects. The results include channel details and sponsor-history signals.
What does the skill need to run?
Set APIFY_TOKEN in your environment or .env file. The scraper can run through scripts/run_actor.js, Apify MCP, or the REST API.
Source text
SKILL.md · Apache-2.0
---
name: finding-youtube-sponsorship-candidates
description: >
Finds YouTube channels suitable for brand sponsorships using apidojo's YouTube scraper on Apify.
Triggers when the user asks to: find YouTube channels to sponsor, discover YouTubers who accept
brand deals in a niche, identify YouTube influencers for mid-roll or integration sponsorships,
find channels that already run sponsors in a product category, research YouTube sponsorship
opportunities for a brand, identify high-CPM YouTube audiences for B2B or SaaS sponsorships,
or build a YouTube outreach list for a sponsorship campaign.
Returns channel name, subscriber count, avg views, engagement rate, niche, and sponsorship history.
Ideal for brand partnerships managers, SaaS marketing teams, and sponsorship agencies.
license: Apache-2.0
metadata:
author: apidojo
version: "1.0"
apify-actor: apidojo/youtube-scraper
---
# Finding YouTube Sponsorship Candidates
Discovers YouTube channels that are good fits for brand integrations. Channels with existing sponsor history are the most efficient outreach targets — they've already proven willingness to accept sponsorships.
## Prerequisites
- `APIFY_TOKEN` environment variable set
- Optional: Apify MCP server installed
## Inputs
| Parameter | Type | Required | Default | Notes |
|-----------|------|----------|---------|-------|
| `startUrls` | array | Optional | `[]` | YouTube URLs — channels, playlists, Shorts, search results |
| `youtubeHandles` | array | Optional | `[]` | YouTube channel handles (e.g. `@kurzgesagt`) |
| `getTrending` | boolean | Optional | `false` | Retrieve trending videos |
| `keywords` | array | Optional | `[]` | Search keywords |
| `gl` | string | Optional | `us` | Country code for results (e.g. `US`, `GB`) |
| `hl` | string | Optional | `en` | Language code (e.g. `en`, `de`) |
| `uploadDate` | string | Optional | `all` | Upload date filter: `any`, `hour`, `today`, `week`, `month`, `year` |
| `duration` | string | Optional | `all` | Duration filter: `any`, `short`, `long` |
| `features` | string | Optional | `all` | Feature filter: `4k`, `hd`, `live`, `cc`, `3d`, `hdr`, etc. |
| `sort` | string | Optional | `r` | Sort order for search results |
| `maxItems` | number | Optional | Unlimited | Maximum videos to return |
| `customMapFunction` | string | Optional | — | JavaScript function to transform each output object |
## Workflow
```
Progress:
- [ ] Step 1: Search YouTube for niche channel content
- [ ] Step 2: Collect channel handles from results
- [ ] Step 3: Enrich channel data
- [ ] Step 4: Score sponsorship fit
- [ ] Step 5: Deliver ranked outreach list
```
### Step 1: Search for Niche Content
**Recommended — run_actor.js (handles waiting, output, and file saving automatically):**
```bash
# Quick answer (prints table to chat)
node scripts/run_actor.js \
--actor "apidojo~youtube-scraper" \
--input '{"param": "value"}'
# Save as CSV
node scripts/run_actor.js \
--actor "apidojo~youtube-scraper" \
--input '{"param": "value"}' \
--output YYYY-MM-DD_results.csv --format csv
# Save as JSON
node scripts/run_actor.js \
--actor "apidojo~youtube-scraper" \
--input '{"param": "value"}' \
--output YYYY-MM-DD_results.json --format json
```
> `APIFY_TOKEN` must be set in environment or `.env` file.
**If Apify MCP is available:**
```
Tool: apify:run-actor
Actor: "apidojo~youtube-scraper"
Input:
{
"searchKeywords": ["best [NICHE] tools", "[NICHE] review", "[NICHE] for beginners", "top [NICHE]"],
"maxResults": 50,
"type": "video"
}
```
**REST API fallback:**
```bash
curl -X POST "https://api.apify.com/v2/acts/apidojo~youtube-scraper/runs?token=$APIFY_TOKEN" -H "Content-Type: application/json" -d '{
"searchKeywords": ["best personal finance tools", "personal finance review"],
"maxResults": 50,
"type": "video"
}'
```
Collect unique `channelId` and `channelName` values.
### Step 2: Enrich Channel Data
**If Apify MCP is available:**
```
Tool: apify:run-actor
Actor: "apidojo~youtube-scraper"
Input:
{
"startUrls": [{"url": "https://www.youtube.com/channel/[CHANNEL_ID]"}],
"maxResults": 10,
"type": "video"
}
```
### Step 3: Score Sponsorship Fit
```
view_ratio = avg_views / subscriber_count
sponsorship_score = (view_ratio > 0.1 ? 1 : view_ratio / 0.1) * 0.30
+ (subscriber_count in 10000..200000 ? 1 : 0.6) * 0.20
+ (avg_comments / avg_views > 0.005 ? 1 : (avg_comments/avg_views)/0.005) * 0.20
+ (has_sponsor_history ? 1 : 0) * 0.30
```
**Sponsorship signal detection (in last 10 video titles/descriptions):**
```
sponsor_count = count(videos where description contains ["sponsored by", "use code", "thanks to", "partner"])
has_sponsor_history = sponsor_count >= 1
repeat_sponsor = sponsor_count >= 3
```
**Tier:** TIER A ≥ 0.70 | TIER B 0.45–0.69 | TIER C < 0.45
### Step 4: Edge Cases
- **View count spike from one viral video**: Use median views from last 10 videos, not mean; flag channels where `max_views > 10× median`
- **Channel in adjacent but not target niche**: Score niche alignment — percentage of last 20 videos in target niche
- **Subscriber count stale**: YouTube counts lag; use `avg_views` as the true reach proxy
- **No description available**: Skip sponsorship history check; score at 0.5 for that component
## Output Format
```
# YouTube Sponsorship Candidates: [NICHE]
Channels evaluated: [N] | TIER A: [N] | TIER B: [N] | Date: [DATE]
## TIER A — Strong Sponsorship Candidates
| Channel | Subscribers | Avg Views | View Ratio | Sponsor History | Niche Fit | Score |
|---------|------------|-----------|------------|-----------------|-----------|-------|
| [name] | [N] | [N] | [X.XX] | [Yes/No/Repeat] | [%] | [0.XX] |
## TIER B — Secondary Candidates
| Channel | Subscribers | Avg Views | View Ratio | Last Sponsor |
|---------|------------|-----------|------------|-------------|
## Sponsorship Landscape in [NICHE]
- Channels already running sponsors: [N]/[N] evaluated ([X%])
- Most common sponsor in category: [brand name] (seen on [N] channels)
- Typical viewer demographic signal (from video titles): [description]
```
## Troubleshooting
**Results are all mega-channels (> 1M subs)**: Narrow the search query with "beginner" or "indie" qualifiers; or filter post-scrape by subscriber count.
**Niche too broad**: Narrow to a sub-niche (e.g. "personal finance" → "fire movement", "crypto" → "Bitcoin long-term investing").
**Can't detect sponsor history from descriptions**: Sponsor language is sometimes hidden in video captions (not descriptions). This is a known limitation — supplement with manual check of top 5 candidates.
© apidojo · Apache-2.0 · apidojo-io/apidojo-skills