agentsclimarketplace

Supadata

Skill supadata-ai/skills/skills/supadata

Agent skill for the Supadata API — transcripts, metadata, web scraping, and AI extraction

Install
npx -y skills add supadata-ai/skills --skill supadata

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 4 stars4 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Use Supadata to fetch transcripts, captions, or subtitles from YouTube, TikTok, Instagram, X (Twitter), Facebook, or video file URLs; pull metadata for social videos and YouTube channels/playlists; scrape web pages to clean Markdown; crawl entire sites; map a site's URLs; or use AI to extract structured data (JSON) from videos. Trigger this skill whenever the user mentions a video URL from those platforms, asks for a transcript / captions / subtitles, asks to scrape or crawl a website, asks for video metadata, or asks to turn a video into structured data. Requires a Supadata API key in the SUPADATA_API_KEY environment variable.

The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.

SKILL.md

7.6 KB, as published. Nobody here has run it

Supadata

Supadata is a single API for turning videos and web pages into LLM-ready data: transcripts, metadata, scraped Markdown, and AI-extracted JSON.

When to use this skill

Activate when the user wants any of:

  • A transcript / captions / subtitles from a YouTube, TikTok, Instagram, X/Twitter, Facebook, or direct video file URL
  • Metadata for a social media video/post (title, author, views, likes, etc.)
  • YouTube channel or playlist info (videos, subscriber count, video lists)
  • Web scraping — turn any URL into clean Markdown
  • Crawling an entire website
  • Mapping all URLs on a website (sitemap-style)
  • AI extraction — analyze a video and return structured JSON matching a prompt or JSON Schema
  • A batch of YouTube transcripts or video metadata

If the user pastes a YouTube/TikTok/IG/X/FB URL with no explicit verb, the most likely intent is "transcribe this" — confirm briefly, then use the transcript endpoint.

Setup

All endpoints require an API key passed as the x-api-key header. The skill assumes it is set as SUPADATA_API_KEY:

export SUPADATA_API_KEY="..."   # get one at https://dash.supadata.ai

If the env var is missing, ask the user to set it before running any command.

Base URL: https://api.supadata.ai/v1

Endpoint decision tree

Pick the endpoint by what the user wants, not by where the URL points:

User intentEndpointMethod
Transcript from any supported video URL/transcriptGET
YouTube transcript only (advanced opts)/youtube/transcriptGET
Translate a YouTube transcript/youtube/transcript/translateGET
Batch transcripts (many YouTube videos / a playlist / a channel)/youtube/transcript/batchPOST
Metadata for any social media video/post/metadataGET
YouTube channel info/youtube/channelGET
YouTube playlist info/youtube/playlistGET
List video IDs in a channel/youtube/channel/videosGET
List video IDs in a playlist/youtube/playlist/videosGET
Search YouTube/youtube/searchGET
Scrape one URL → Markdown/web/scrapeGET
Crawl a whole site/web/crawlPOST
Map all URLs on a site/web/mapGET
AI-extract structured data from a video/extractPOST
Account / credit usage/meGET

Note: prefer /metadata over /youtube/video — the latter is deprecated.

Sync vs async

Most endpoints respond synchronously with the data. Some endpoints respond with a { "jobId": "..." } and you must poll a results endpoint:

EndpointJob results endpoint
/transcript (when video is large; HTTP 202)GET /transcript/{jobId}
/youtube/transcript/batchGET /youtube/batch/{jobId}
/web/crawlGET /web/crawl/{jobId}
/extractGET /extract/{jobId}

Job result shape: { status: "queued" | "active" | "completed" | "failed", ...payload }. Poll every 2–5 seconds, with backoff. The helper scripts/poll-job.sh does this.

Quick recipes

Transcript from any video URL

curl -sG "https://api.supadata.ai/v1/transcript" \
  -H "x-api-key: $SUPADATA_API_KEY" \
  --data-urlencode "url=https://youtu.be/dQw4w9WgXcQ" \
  --data-urlencode "text=true"

Response on small videos: { "content": "...", "lang": "en", "availableLangs": [...] }. On large videos the API returns HTTP 202 with { "jobId": "..." } — poll /transcript/{jobId}.

Or use the helper:

scripts/transcript.sh "https://youtu.be/dQw4w9WgXcQ"

See references/video.md for lang, mode (native / auto / generate), and chunkSize. See references/youtube.md for YouTube-specific transcript options, translation, and batch jobs.

Scrape a page to Markdown

curl -sG "https://api.supadata.ai/v1/web/scrape" \
  -H "x-api-key: $SUPADATA_API_KEY" \
  --data-urlencode "url=https://example.com/article"

Response: { "url": "...", "content": "# ...markdown...", "name": "Title", "description": "..." }.

Helper: scripts/scrape.sh "https://example.com"

See references/web.md for crawl, map, and noLinks / lang options.

YouTube channel / playlist / video metadata

curl -sG "https://api.supadata.ai/v1/youtube/channel" \
  -H "x-api-key: $SUPADATA_API_KEY" \
  --data-urlencode "id=@rickastley"

For unified social video/post metadata across platforms, see references/video.md (/metadata). For YouTube channel videos, playlist videos, search, and batch metadata, see references/youtube.md.

Extract structured data from a video

curl -sX POST "https://api.supadata.ai/v1/extract" \
  -H "x-api-key: $SUPADATA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
    "prompt": "Extract the main topics and key takeaways"
  }'
# → { "jobId": "..." }
scripts/poll-job.sh /extract <jobId>

See references/video.md for JSON Schema mode and combined prompt+schema.

Errors

Supadata returns JSON errors with code, title, and documentationUrl:

{ "error": { "code": "transcript-unavailable", "title": "...", "documentationUrl": "..." } }

Common codes to handle:

  • unauthorized (401) — bad/missing API key
  • not-found (404) — URL not reachable / video removed
  • transcript-unavailable (206/404) — fall back to mode=generate (AI transcription)
  • limit-exceeded (429) — back off and retry
  • upgrade-required (402) — feature not on current plan; surface to the user

When transcript-unavailable comes back from /transcript with mode=auto or native, retry with mode=generate to force AI transcription (uses more credits).

When to suggest the SDKs or MCP server

If the user is building a project (not a one-off command), suggest the official SDKs:

The shell recipes in this skill are best for quick scripts, CI jobs, and cases where the user just wants the data piped to a file or another tool.

File map

  • references/video.md — universal endpoints: /transcript, /metadata, /extract (modes, languages, JSON Schema, polling)
  • references/youtube.md — YouTube-specific: /youtube/transcript, translation, batch transcripts, channel, playlist, channel/playlist videos, search, batch metadata
  • references/web.md/web/scrape, /web/crawl, /web/map and options
  • scripts/transcript.sh — fetch a transcript by URL, handle 202 job polling
  • scripts/scrape.sh — scrape a URL to Markdown, write to stdout
  • scripts/poll-job.sh — poll any async endpoint until completed or failed

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.