mcpField
F
finding-youtube-sponsorship-candidates

finding-youtube-sponsorship-candidates

github.com/apidojo-ioMarketing & growth1775 installsUpdated 24w ago
Repository

About finding-youtube-sponsorship-candidates

A research skill for finding YouTube channels suited to brand sponsorships, evaluating channel data, audience engagement and sponsor history to rank outreach candidates.

Key features

  1. 01Search videos by niche keywords
  2. 02Collect channel data
  3. 03Assess sponsorship history
  4. 04Score reach and engagement
  5. 05Rank candidates by fit

Use cases

  1. 01Find channels for a niche sponsorship campaign
  2. 02Prioritize creators with prior sponsor mentions
  3. 03Prepare a ranked channel outreach list

MCP support

Can use the Apify MCP server to run the YouTube scraper actor for searching videos and enriching channel data; a REST API fallback is provided.

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/apidojo-io/apidojo-skills --skill finding-youtube-sponsorship-candidates

After installing, type/finding-youtube-sponsorship-candidatesin Claude Code to confirm it loaded.

Details

From the project README

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

ParameterTypeRequiredDefaultNotes
startUrlsarrayOptional[]YouTube URLs — channels, playlists, Shorts, search results
youtubeHandlesarrayOptional[]YouTube channel handles (e.g. @kurzgesagt)
getTrendingbooleanOptionalfalseRetrieve trending videos
keywordsarrayOptional[]Search keywords
glstringOptionalusCountry code for results (e.g. US, GB)
hlstringOptionalenLanguage code (e.g. en, de)
uploadDatestringOptionalallUpload date filter: any, hour, today, week, month, year
durationstringOptionalallDuration filter: any, short, long
featuresstringOptionalallFeature filter: 4k, hd, live, cc, 3d, hdr, etc.
sortstringOptionalrSort order for search results
maxItemsnumberOptionalUnlimitedMaximum videos to return
customMapFunctionstringOptional—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):

# 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:

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.

Comments

Markdown supported