Agent Skills for Social Media Research in Claude Code
Agent Skills for social media research: 11 free SKILL.md workflows for Claude Code, Cursor and Codex that vet creators and audit rivals for 2-60 credits.
By Scrape Everything team · · 13 min read
TL;DR: Agent Skills for social media research are SKILL.md folders that teach an AI agent a workflow, like vetting an influencer or auditing a competitor, using public data from the Scrape Everything API. Our free, MIT-licensed repo ships 11 for Claude Code, Cursor, Codex and Gemini CLI. They research, never post, and a typical run costs 2 to 60 credits.
What are Agent Skills, and how are they different from MCP tools?
An Agent Skill is a folder containing a SKILL.md file that tells an AI agent how to carry out one specific task, and the agent loads it only when your request matches its description.
The file itself is simple: YAML frontmatter with a name and a description, then a markdown body. Anthropic documents the format in its Agent Skills overview. Only the name and description sit in the agent's context until a request triggers the skill. Then the body loads. Cursor, Codex and Gemini CLI read the same folder layout, and our repo has setup notes for each.
MCP sits one layer down. The Model Context Protocol is an open standard for connecting AI applications to external tools and data. Our MCP server, @scrapeeverything/mcp, exposes one tool per API endpoint (instagram_profile, youtube_transcript and so on) plus the free get_account and list_scrapers. A tool tells the agent how to fetch a TikTok profile. It has nothing to say about what to do with 30 posts once they land, which endpoints to skip, or when to stop and ask before spending credits. That part is the skill.
| MCP server | Agent Skills | |
|---|---|---|
| What it is | One tool per endpoint (40 endpoints, 9 platforms) | Workflow instructions in SKILL.md |
| Package | npm @scrapeeverything/mcp | github.com/scrapeeverything/skills |
| Runs in | Claude, Cursor, VS Code, Windsurf and other MCP clients | Claude Code, Cursor, Codex, Gemini CLI, any agent that reads SKILL.md |
| Gives the agent | Data access | A call plan, metrics, a report template, guardrails |
| Needs the other? | No | No. Skills use MCP tools if connected, else the CLI, a bundled Node script, or curl |
Run both if you like. When the MCP server is connected, the skills prefer it. When it isn't, they fall back in this order: the CLI, then the scrapeeverything-api skill's scripts/se.mjs (Node 18+, nothing to install), then plain curl. Setup for the server is on the MCP server page.
Which Agent Skills for social media are in the repo?
Most social media skill collections are about writing and scheduling posts. Ours don't do that. They pull public data and turn it into a report, so if you want an agent that drafts captions in your voice, this is the wrong repo.
| Skill | Try saying | Credits per typical run |
|---|---|---|
influencer-vetting | "Vet @nasa for a sponsorship" | ~6 (one platform), ~17 (four) |
competitor-content-audit | "Audit the Instagram and TikTok content of @duolingo and @babbel" | 8 per brand, 12-14 with YouTube and X |
hashtag-trend-research | "Is #booktok still worth posting under? Compare it with 5 variants" | 12-18 |
youtube-video-research | "What do the top YouTube videos this year say about zone 2 training?" | 11 for 5 videos |
comment-sentiment-mining | "What are people saying in the comments of these 5 launch videos?" | 1 per post |
creator-shortlist-builder | "Find 15 micro YouTubers and TikTokers who review home espresso gear" | ~60 |
viral-post-breakdown | "Why did this TikTok blow up?" plus the link | 3-6 |
podcast-and-video-transcript-notes | "Make study notes from this podcast episode" plus the link | 2 |
spotify-artist-and-playlist-research | "Audit these 5 Spotify playlists and tell me which fit our artist" | ~18 (artist + 10 playlists) |
telegram-channel-monitoring | "Give me a daily digest of @durov and alert me on 'launch'" | 2 per channel per check |
scrapeeverything-api | "Get the TikTok profile of @khaby.lame" | 1 |
Every number comes from the credit table inside each skill file.
Platform coverage, since someone always asks: Instagram, TikTok, YouTube, X, Spotify and Telegram have dedicated workflows. creator-shortlist-builder also searches Pinterest and screens Twitch channels. Facebook has no workflow skill yet, so for Facebook profiles you go through scrapeeverything-api, which knows all 40 endpoints.
If one of those prompts already sounds like your week, get 100 free credits and try it before reading the rest.
How do I install the skills in Claude Code, Cursor, Codex or Gemini CLI?
- Get an API key. Signup gives you 100 free credits and doesn't ask for payment details.
- Install the skills with the
skillsCLI from Vercel Labs, which detects the agents you have installed. - Set
SCRAPEEVERYTHING_API_KEYonce, in the shell your agent launches from. - Ask in plain language. "Vet @nasa for a sponsorship" is enough to trigger
influencer-vetting.
npx skills add scrapeeverything/skills # this project
npx skills add scrapeeverything/skills -g # all projects
npx skills add scrapeeverything/skills -a cursor # one agent: cursor, codex, gemini-cli, claude-code
npx skills add scrapeeverything/skills --skill influencer-vetting # one skillexport SCRAPEEVERYTHING_API_KEY=ssk_live_... # macOS/Linux
setx SCRAPEEVERYTHING_API_KEY "ssk_live_..." # Windows, new terminalsIn Claude Code you can skip the CLI and use the plugin marketplace: /plugin marketplace add scrapeeverything/skills, then /plugin install scrapeeverything@scrapeeverything. Copying folders by hand also works: ~/.claude/skills/ (or .claude/skills/ in a project) for Claude Code, and .agents/skills/ in the project for Cursor, Codex and Gemini CLI.
Codex needs one extra step. It runs commands in a sandbox, so allow network access for the session or approve the curl and node calls. Skip that and nothing reaches api.scrapeeverything.com. If your Codex version doesn't load skills on its own, name the file: "Use the skill in .agents/skills/influencer-vetting/SKILL.md to vet @nasa." Older Gemini CLI builds without skill support get the same treatment through a line in GEMINI.md, which our setup notes spell out.
How does the influencer vetting skill work?
influencer-vetting produces a one-page go / no-go report on one creator. Half of what it knows is about not wasting calls. instagram.photos already includes the profile, for example, so calling instagram.profile as well burns a credit for nothing.
| Platform | Calls | Credits |
|---|---|---|
instagram.photos (limit 30) + instagram.reels (limit 12) + instagram.comments on 2 top posts | 6 | |
| TikTok | tiktok.profile + tiktok.posts + tiktok.video on 3 posts | 5 |
| YouTube | youtube.profile + youtube.videos (limit 15) + youtube.video on 2 | 4 |
| X | x.posts (limit 40) | 2 |
A quick Instagram-only vet is about 6 credits. All four platforms come to about 17.
We use the median engagement rate, not the mean, because a single viral post drags the mean somewhere useless. Consistency is the coefficient of variation of engagement (standard deviation over mean), and we label anything above 1.5 as hit-driven. Red flags include views-to-followers under 3% on reels or TikTok, a following count close to the follower count on a big account, and comment sections full of generic praise. The skill also scans captions for #ad, "paid partnership" and any competitor names from your brief.
Those thresholds are our own rules of thumb, written into the skill, not an industry standard. Same for the engagement norms (Instagram roughly 1-3%, TikTok likes/plays roughly 3-10%, YouTube likes/views roughly 2-5%). The report says so in its method line, and fake-follower signals are presented as indicators, never accusations.
Here's the top of the report template the skill fills in, trimmed:
# Influencer vetting: {name} ({primary handle})
_Date: {YYYY-MM-DD} · Platforms: {list} · Credits used: {n}_
## Verdict: {Go | Go with conditions | No-go}
- {reason 1}
- {reason 2}
- {reason 3}
## Snapshot
| Platform | Handle | Followers | Median ER | Median views | Views/followers | Posts/week | Verified |Below that come content performance, a red-flag table with evidence, an audience-fit checklist marked Pass / Watch / Fail, and a suggested deal shape. Vetting creators for several clients at once? The agencies use case covers that setup.
How do I run a competitor content audit across Instagram and TikTok?
competitor-content-audit benchmarks 1-5 brands and returns posting cadence, format mix, top posts, hooks and five post ideas modelled on what works for them (adapted, not copied).
Per brand, Instagram is instagram.photos (limit 60) plus instagram.reels (limit 30), 4 credits. TikTok is tiktok.posts plus tiktok.video on the top 3 by plays, another 4. That's 8 credits for Instagram and TikTok, or 12-14 once you add the optional YouTube pass (youtube.videos plus 3 youtube.video calls, 4 credits) and x.posts (2). Three competitors plus your own brand lands around 50 credits, so the skill shows you the estimate and waits for a yes.
The top-3 rule is deliberate. tiktok.posts returns the newest 12 videos with play counts only. Calling tiktok.video on all 12 would push the TikTok pass to 13 credits per brand, and the hooks worth studying are almost always in the top few anyway.
How do I research a TikTok hashtag trend with an AI agent?
hashtag-trend-research sizes a seed tag and its variants, then samples real posts riding the trend. The core call is tiktok.hashtag, 1 credit per tag:
curl -sS https://api.scrapeeverything.com/v1/tiktok/hashtag \
-H "Authorization: Bearer $SCRAPEEVERYTHING_API_KEY" \
-H "Content-Type: application/json" \
-d '{"hashtag":"booktok"}'Trimmed response shape (IDs and counts are placeholders):
{
"success": true,
"data": {
"id": "0000000000000000000",
"title": "booktok",
"description": "example description",
"link": "https://www.tiktok.com/tag/booktok",
"video_count": 1234567,
"view_count": 98765432100,
"is_commerce": false
}
}The endpoint gives you stats, not the tag's videos. So the skill divides view_count by video_count to get views per video. Treat that as a rough signal. A high number can mean there's room to get views, or it can mean three mega-hits are carrying everyone else, which is the same mean-versus-median problem from vetting.
Tags are then sorted into tiers we picked for the skill: mega above 10B views, large 1-10B, mid 100M-1B, niche under 100M. The recommended set mixes one large tag with a few mid and niche ones.
To see actual posts, the skill takes other routes: tiktok.video on links you give it, tiktok.music on a trend sound (2 credits), instagram.reels_search (3 credits) and youtube.search with type: shorts (1 credit). A typical run is 12-18 credits. It saves a snapshot JSON so next week's run can compute growth, and tracking growth alone costs 1 credit per tag. Trend data has to be fresh, so this skill skips cache_days.
How do I turn YouTube transcripts into a research brief?
youtube-video-research turns "what do the best videos say about X?" into a brief with consensus points, disagreements and timestamped quotes. It calls youtube.search (1 credit), then youtube.video and youtube.transcript on each pick (1 credit each). Five videos cost 1 + 5 + 5 = 11 credits, or 16 with youtube.comments for audience questions.
This is the core of that pipeline in Python, so you can see what the agent is actually doing:
import os
import requests
API = "https://api.scrapeeverything.com/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['SCRAPEEVERYTHING_API_KEY']}"}
def call(endpoint, **body):
r = requests.post(f"{API}/{endpoint}", json=body, headers=HEADERS, timeout=60)
payload = r.json()
if not payload.get("success"):
raise RuntimeError(f"{endpoint}: {payload.get('code')} {payload.get('message')}")
print(endpoint, "charged", r.headers.get("X-Credits-Charged"),
"remaining", r.headers.get("X-Credits-Remaining"))
return payload["data"]
search = call("youtube/search", query="zone 2 training", type="video",
upload_date="year", limit=20, cache_days=7)
videos = [v for v in search["results"]
if v["type"] == "video" and not v.get("is_short")][:3]
for v in videos:
try:
t = call("youtube/transcript", id=v["video_id"], cache_days=14)
except RuntimeError as err:
print("skipping", v["video_id"], err) # NO_TRANSCRIPT lists available languages
continue
if not t["segments"]:
continue
first = t["segments"][0]
link = f"https://www.youtube.com/watch?v={v['video_id']}&t={int(first['start'])}s"
print(v["title"], t["language"], "auto" if t["is_auto_generated"] else "manual",
t["segment_count"], "segments", link)That run costs 4 credits (1 search, 3 transcripts), and nothing if you repeat it inside the cache window. A trimmed transcript response:
{
"success": true,
"data": {
"video_id": "VIDEO_ID_01",
"language": "en",
"language_name": "English",
"is_auto_generated": false,
"available_languages": [{ "code": "en", "name": "English", "is_auto_generated": false }],
"segment_count": 2,
"text": "example line one example line two",
"segments": [
{ "start": 0.0, "duration": 2.5, "text": "example line one" },
{ "start": 2.5, "duration": 3.1, "text": "example line two" }
]
}
}Two things the skill handles that a bare script usually doesn't. It flags is_auto_generated, because auto captions mangle names and numbers. And when a video has no captions in the requested language, the API answers 404 with code NO_TRANSCRIPT, and the message lists the languages that do exist. The skill retries once with the closest one instead of giving up. More on the endpoint in our YouTube transcript API guide.
How does comment sentiment mining handle each platform?
comment-sentiment-mining turns the comment sections of 1-20 public posts into a voice-of-customer report: sentiment, 5-10 themes, top questions, objections and purchase-intent signals. It costs 1 credit per post, so 10 posts is 10 credits.
The platforms aren't equal, and every report says so. Limits below are as of October 2026:
| Platform | Endpoint | Max per call | Caveat |
|---|---|---|---|
instagram.comments | 15 | Only the 15 newest top-level comments are public logged-out | |
| TikTok | tiktok.comments | 100 | Top-level only |
| YouTube | youtube.comments | 100 (fetched in pages of ~20) | Top-level only; top sort favours early comments |
Themes are counted both raw and like-weighted, since one complaint with 2,000 likes says more than ten with none. Comment text is treated as untrusted input, so an "ignore previous instructions" buried in a reply stays a comment.
How many credits does a skill run cost?
Each call costs what the endpoint costs in our catalog. Most are 1 credit. instagram.photos, instagram.reels, x.posts, tiktok.music and a few other feed endpoints cost 2, and instagram.reels_search costs 3.
| Run | Credits | Cost on Builder ($1.56 per 1k) | Cost on Growth ($1.19 per 1k) |
|---|---|---|---|
| Notes for one video | 2 | $0.003 | $0.002 |
| Vet one creator on Instagram | ~6 | $0.009 | $0.007 |
| Research a YouTube topic (5 videos) | ~11 | $0.017 | $0.013 |
| Vet one creator on 4 platforms | ~17 | $0.027 | $0.020 |
| Competitor audit, 3 brands + yours | ~50 | $0.078 | $0.060 |
| Creator shortlist | ~60 | $0.094 | $0.071 |
Credit packs are one-time purchases and credits never expire: Builder $39 for 25,000, Growth $119 for 100,000, Scale $449 for 500,000.
A concrete month: an agency vetting 40 creators on four platforms uses 40 x 17 = 680 credits. That's about $1.06 at Builder rates, and one $39 Builder pack covers about three years of it.
What keeps runs cheap:
- Cache hits are free. Skills send
"cache_days": 7(14 for transcripts), so re-running a report inside the window costs nothing. The caching docs explain the 1 to 14 day window. - Failed calls on our side are refunded automatically. A definitive "not found" or "private" answer is charged, because that is an answer.
- Every skill asks before running a job over 25 credits and lists the credits it used at the end. That's skill behaviour, not an API limit.
The 100 signup credits cover about 15 single-platform vets or 50 video notes. For weekly runs, plug your volumes into the pricing calculator.
How do I write my own skill on top of the API?
If none of the 11 fit, write a twelfth. A skill is just a folder. The repo's CONTRIBUTING.md lists the section order (Inputs, Credit estimate, How to call the API, Method, Output template, Guardrails), and scripts/validate.mjs, the same lint CI runs, checks frontmatter, names and endpoint keys.
- Create
skills/youtube-channel-benchmark/SKILL.md. - Write a
descriptionthat names the trigger phrases. The agent matches on this text, so a vague description means the skill never fires. - Put a credit table near the top, priced from the catalog.
- Write the method as numbered steps, including the data quirks, then a report template and guardrails.
---
name: youtube-channel-benchmark
description: Benchmark 2-10 public YouTube channels on subscribers, upload cadence and median views with the Scrape Everything API. Use when the user asks to compare YouTube channels or benchmark a channel against competitors.
---
# YouTube channel benchmark
## Inputs
- 2-10 YouTube channel handles or URLs. Ask for any that are missing.
## Credit estimate
| Calls | Credits |
| --- | ---: |
| `youtube.profile` + `youtube.videos` per channel | 2 |
5 channels: 10 credits. Use `"cache_days": 7`. Confirm before spending over 25.
## Method
1. Call `youtube.profile` and `youtube.videos` for each channel. Save each response to a file.
2. `youtube.videos` view counts are rounded and publish times are relative ("2 days ago").
Convert each to an approximate date and mark it approximate in the report.
3. Compute uploads per week and median views per channel.
4. Output one markdown table, sorted by median views, with credits used.
## Guardrails
- Public channels only. Report private or missing channels instead of guessing.Step 2 is the whole argument for skills in two lines. The API returns "2 days ago". The skill knows that, and knows what to do with it.
The scrapeeverything-api skill takes care of auth, errors and retries (its se.mjs retries 429, 502, 503 and 504 twice), so yours can stick to the method. The machine-readable spec is the OpenAPI file. The same endpoints are in the Scrape Everything CLI (npx scrapeeverything) and the n8n node, and the AI agents use case covers other agent patterns.
What data can the skills access, and what do they refuse?
Public data only, meaning what a logged-out visitor can see. The skills never log in, never touch your social accounts and can't read private profiles or DMs. If an account is private or age-restricted, the report says so and skips that platform.
Each skill has a guardrails section. Comments are analysed in aggregate, author fields are dropped and quotes are anonymised, because the people commenting didn't sign up to be in your report. Hashtag research doesn't list who posts under a tag. Vetting stays on the creator's professional presence, not their family or home location. Scrape Everything isn't affiliated with any of the platforms. For the legal questions, read our post on scraping public social media data.
FAQ
Do Agent Skills work in Cursor and Codex, or only Claude Code?
They work in Claude Code, Cursor, Codex CLI and Gemini CLI, plus any agent that reads the SKILL.md format. npx skills add scrapeeverything/skills -a cursor (or codex, gemini-cli, claude-code) installs them for one agent.
What's the difference between Agent Skills and MCP?
MCP gives an agent tools: our MCP server exposes one tool per endpoint. A skill gives the agent a method: which tools to call, in what order, what to compute and what to put in the report. You don't need MCP to use the skills. They fall back to the CLI, a bundled Node script, or curl, and only need SCRAPEEVERYTHING_API_KEY.
How many credits does an influencer vetting run use?
About 6 credits for Instagram alone and about 17 for Instagram, TikTok, YouTube and X together. With cache_days set, a repeat run inside the cache window is free.
Can Agent Skills post to Instagram or TikTok for me?
Not these ones. The Scrape Everything API reads public data and has no posting endpoints, so every skill in the repo is read-only. For writing and scheduling you need a different tool.
Are Agent Skills safe to install from GitHub?
Read before you install, same as any npm package. A skill is instructions plus optional scripts, and the agent will follow both. Ours are plain markdown with two small helper scripts in scrapeeverything-api/scripts/, MIT-licensed, and linted in CI by scripts/validate.mjs. Open the SKILL.md and scripts/ folders and check what they call.
Are the skills free?
Yes. The repo is MIT-licensed. You pay only for the API credits each call uses, and new accounts start with 100 free credits.
Next step: get 100 free credits, run npx skills add scrapeeverything/skills, and ask your agent to vet a creator you're already considering. The full install guide lives on the Agent Skills integration page.