The social-profile skill fetches structured data about a social media profile through the SocialRouter CLI, which routes the request to the best provider for that platform and normalizes the response. It triggers automatically when you ask for details about a social media account or profile — name, bio, follower count, company, location, etc. — on LinkedIn, Instagram, X (Twitter), TikTok, Reddit, YouTube, Facebook, Pinterest, Bluesky, or Snapchat.

Prerequisites

The socialrouter CLI must be installed and on PATH:
npm install -g @socialrouter/cli
SOCIALROUTER_API_KEY must be set in the environment. Get a key at socialrouter.io.
export SOCIALROUTER_API_KEY=sr_live_...
If you don’t want a global install, the skill can fall back to npx @socialrouter/cli@latest in place of socialrouter for every command.

How the agent runs it

1. Identify the platform

From the URL or your wording, the agent picks one of: linkedin, instagram, x, tiktok, reddit, youtube, facebook, pinterest, bluesky, snapchat. If only a username is given (no URL), it asks which platform — it never guesses.

2. Find a compatible provider slug from the live catalogue

The catalogue is dynamic, so the skill always fetches it before extracting:
socialrouter providers --json
It looks for a provider whose supported_platforms contains the target platform AND whose pricing has an entry with type: "profile.info" for that platform, then picks the cheapest active one. Slugs follow the form <provider_id>/<platform>/profile.info (e.g. apify/linkedin/profile.info).

3. Run the extraction

socialrouter extract \
  --url "<full profile URL>" \
  --provider "<slug from step 2>" \
  --json
The CLI waits for the terminal status before returning, so the agent gets the final result (completed or failed) in a single call — no manual polling. To look up a previous result by ID, the agent uses socialrouter get <id> --json. Optional flags the skill can append when your request calls for them:
FlagWhen the agent uses it
--limit <n>Caps the number of records. Mostly irrelevant for profile.info (usually one record) — the agent only adds it for multi-URL batches or when you ask to limit volume.
--no-fallbackDisables the router’s automatic fallback. The agent adds it when you explicitly pin a provider and want the call to fail rather than silently land on another one.
--options '<json>'Per-actor input overrides as a JSON object, e.g. '{"proxyCountry":"US"}'. Each actor decides which keys it honors; the catalogue doesn’t advertise the schema, so the agent only passes keys you named or that are documented for that actor.

4. Present the result

The agent shows the normalized data[0] fields you asked for — name, headline/bio, location, follower/connection count, company (if applicable), profile URL — without dumping the whole JSON unless you ask.

Error handling

The CLI prints errors to stderr and exits non-zero. Common cases:
SymptomMeaningWhat the agent does
SOCIALROUTER_API_KEY environment variable is requiredKey not setAsks you to export it
401 in the error messageBad API keyAsks you to check SOCIALROUTER_API_KEY
402 / “insufficient credits”Out of creditsPoints to socialrouter.io/dashboard to top up
429 / “rate limit”Rate limitedWaits the delay reported in the message and retries
Other 4xx / 5xxOtherSurfaces the error verbatim

Examples

You: “Get the LinkedIn profile for https://linkedin.com/in/satyanadella → Platform: linkedin. Picks apify/linkedin/profile.info, runs socialrouter extract, returns name + title + company + location. You: “Look up @nasa on Instagram” → Platform: instagram. URL = https://instagram.com/nasa. Picks a provider supporting instagram/profile.info, returns follower count + bio. You: “Who is johndoe on TikTok and X?” → Two socialrouter extract calls, one per platform, run in parallel when possible.

Skills overview

Install the bundle in any host (Claude Code, Cursor, Windsurf, …).

Providers

How provider slugs and the live catalogue work.