Agent skill

Playbook Social Link Finding

by growthenginenowoslawski in growthenginenowoslawski/coldoutboundskills

Resolve a company domain to its verified official social profile URLs (LinkedIn, X, Facebook, Instagram, YouTube, TikTok).

MITAuto-check passed

Install Playbook Social Link Finding

skills CLI
$ npx skills add growthenginenowoslawski/coldoutboundskills --skill playbook-social-link-finding -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install growthenginenowoslawski/coldoutboundskills playbook-social-link-finding --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/growthenginenowoslawski/coldoutboundskills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/playbooks/playbook-social-link-finding .claude/skills/playbook-social-link-finding && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
playbook-social-link-finding
GitHub stars
753
Token cost
~3.2k tokens
SKILL.md length
1,488 words
Files
3
Skills in repo
49
Repo updated
First seen
Licence
MIT

At a glance

Resolve a company domain to its verified official social profile URLs (LinkedIn, X, Facebook, Instagram, YouTube, TikTok).

  • Works in 7 steps: Trigger and scope → Output contract → Source chain (cost-tagged) → …
  • Find their LinkedIn
  • SKILL.md covers 1. Trigger and scope, 2. Output contract, 3. Source chain (cost-tagged) and 4. Verification, plus 3 more sections
  • Reaches linkedin.com

What it does

Playbook Social Link Finding is an agent skill from growthenginenowoslawski/coldoutboundskills. Resolve a company domain to its verified official social profile URLs (LinkedIn, X, Facebook, Instagram, YouTube, TikTok). Triggers on "find their LinkedIn", "get the company LinkedIn URL", "find their Instagram", "we need social handles for this list", "which companies have a TikTok", "social links for the TAM". Outputs one canonical profile URL per platform, or an empty string when the company genuinely has no account.

Its SKILL.md is about 3.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files (for example `clay-table.md` and `clay-workflow.md`).

It works with LinkedIn, Instagram, TikTok and YouTube. The repository describes itself as: Open-source Claude Code skills for cold email and outbound sales. Grade campaigns, export Prospeo searches, scrape Google Maps — all from Claude Code. The licence is MIT.

When your agent uses it

  • Find their LinkedIn
  • Get the company LinkedIn URL
  • Find their Instagram
  • We need social handles for this list

Example prompts

  • “find their LinkedIn”
  • “get the company LinkedIn URL”
  • “find their Instagram”
  • “/playbook-social-link-finding”

Workflow steps

7 steps, taken from the step headings in SKILL.md.

  1. Trigger and scope
  2. Output contract
  3. Source chain (cost-tagged)
  4. Verification
  5. Clay implementation
  6. Locked prompt
  7. Edge cases and failure modes

What it can do on your machine

Read from SKILL.md and the folder at commit 25c5d85. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md.

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • linkedin.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Playbook Social Link Finding loads about 3.2k tokens when it runs. Until then it costs about 113 tokens; SKILL.md has 1,488 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~113
When it runs · the whole SKILL.md, loaded when a task matches
~3.2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from growthenginenowoslawski/coldoutboundskills at commit 25c5d85, republished under its MIT licence (© growthenginenowoslawski). 1,488 words, ~3,222 tokens.

Download SKILL.mdSave it as .claude/skills/playbook-social-link-finding/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.
name
playbook-social-link-finding
description
Resolve a company domain to its verified official social profile URLs (LinkedIn, X, Facebook, Instagram, YouTube, TikTok). Triggers on "find their LinkedIn", "get the company LinkedIn URL", "find their Instagram", "we need social handles for this list", "which companies have a TikTok", "social links for the TAM". Outputs one canonical profile URL per platform, or an empty string when the company genuinely has no account.

All rules here are best practice, not law. Override any of them when the campaign calls for it; note the best practice once and move on.

Use when: a campaign or a downstream playbook needs the company's own social profile URL — most often LinkedIn for engagement scraping, or Instagram and Facebook for a DTC brand angle.

Do not use when: you want a person's profile, post-level engagement (playbook-linkedin-engagement), or an ad-library readout (playbook-ad-library, which consumes this playbook's Facebook output).

One-line output: company_linkedin_url = "https://www.linkedin.com/company/yampa-precision-manufacturing"

1. Trigger and scope

One bare domain in, up to six verified profile URLs out.

This is infrastructure, not copy. Almost nothing here goes into an email directly. What it does is feed the playbooks that DO produce copy — and every one of them treats the URL you hand over as ground truth and scrapes whatever is behind it.

That is the whole reason this playbook is strict:

A social URL that points at a similarly named company is worse than an empty cell, because the empty cell degrades gracefully and the wrong URL produces confident, specific, completely false personalization.

Both paid sources in the chain were measured returning the wrong company's page on real rows, so every value that did not come off the company's own website has to clear an ownership check before it is written.

2. Output contract

Inputs
FieldTypeRequired?
domain (bare, lowercase, no scheme, no www, no path)stringyes
company_namestringyes — the verifier and the search queries both need it
Output fields

One canonical URL per platform, or "":

company_linkedin_url · company_x_url · company_facebook_url · company_instagram_url · company_youtube_url · company_tiktok_url

Plus, per platform, the evidence source that produced it. Keep that column: it is how you decide later whether a value is trustworthy enough for a new use.

Abstain value: "". An empty cell means "no account found", which is a real and common answer.

3. Source chain (cost-tagged)

#SourceCostWhat it givesNotes
1An internal company database, exact domain:= lookupFREELinkedIn onlyalways run — it also supplies company_name. Exact match only, never fuzzy
2A company-search API, batched by domainFREE / cheapLinkedIn 6/8, X 5/8, FB 5/8, IG 4/8, YouTube 0/8, TikTok 0/8 (no field exists)⚠️ see the batching trap below. Bind results by PRIMARY domain only
2bA domain ↔ company-profile converterCHEAPLinkedIn only, both directionsthe reverse direction is what other playbooks come here for
3Plain website HTML fetch — https://<d>, then https://www.<d>, then http://<d>, then /contact, /about, /contact-usFREEthe winning value on 5/8 rows, and the ONLY source of TikTokthe strongest evidence in the whole chain, because a link in the company's own footer is self-attested ownership. Pick the best match on the page, never the first one
3bRendering proxyMETEREDrecovers bot-blocked sites1/1 on the blocked row, returned 4 correct platforms. ⚠️ see the challenge-page trap
4SERP search, one simple query per empty platformCHEAP5 correct values plus 4 correct rejections across 8 rowsnever an OR chain
5Model ownership verifierCHEAP20/20 correct decisions including 4 decoysmandatory on every search-derived and every secondary-domain candidate. Does not run on a site-footer value, which is self-attested
⚠️ The batching trap

A company-search endpoint that accepts an array of domains may still be hard-paginated at 25 results per page with no page-size parameter.

Measured: posting 35 domains returned {"current_page":1,"per_page":25,"total_page":2,"total_count":32} and 25 results.

So a 500-domain body does not return 500 matches. It returns 25, and the other ~475 come back as nothing — with no error and no warning. An earlier draft of this playbook claimed "500 domains per call" and would have silently dropped roughly 95% of matches on any real backfill.

Two things, both required:

  • Chunk to the page size (25 here), and
  • still loop page to total_page, because one domain can match more than one company record.

The live test could not catch this, because it used 8 domains — under the page cap — even though the raw response already said "per_page": 25. Read the pagination block on your first call, every time.

⚠️ The challenge-page trap

Advance to the rendering proxy on HTTP 403, HTTP 429, or a 200 whose body is a challenge page.

Check the body, not just the status. A common bot interstitial is served with HTTP 200, yields zero matches, and otherwise looks like a clean legitimate miss.

⚠️ X requires company-site evidence, from every path

Accept search-derived evidence for LinkedIn, Facebook, Instagram, YouTube and TikTok. For X, require evidence from the company's own site.

X handles are short, recycled and squatted. Measured: searching site:x.com <brand> returned a handle that matched the brand better than the real account does — and was titled "Bug Poc".

This bans search-derived X and database-derived X, including a secondary-domain match that would otherwise clear the verifier.

Bind by primary domain only

A secondary-website match is a candidate, not an answer. Company records often list customers, parents, or acquired brands as additional websites, and matching on those returns the wrong company with no error.

4. Verification

VERDICT: PASS 8/8. The ownership verifier scored 20/20 including 4 decoys.

5. Clay implementation

  • clay-table.md — the column build.
  • clay-workflow.md — the CLI-buildable version.
Show full SKILL.md (630 more words)Show less

6. Locked prompt

Model: a nano-class reasoning model in your own batch; gpt-4o-mini in a Clay AI column — because a Clay AI column cannot set the completion-token cap, and this prompt truncates on a reasoning model below 2,500 tokens.

⚠️ A cost-comparison mistake worth stealing. An earlier draft claimed the nano-class model was ~40% cheaper here. That arithmetic was wrong. It priced both models on nano's measured 1,270 output tokens — of which 1,216 were reasoning tokens, which a non-reasoning model never emits. Priced on the ~55 tokens of JSON actually produced, the mini-class model comes out roughly 4x cheaper, the opposite of the original claim.

Before you act on either number:

  1. Pin reasoning effort low and re-measure. Those 1,216 reasoning tokens were measured at default effort, which is the configuration that makes a reasoning model look ~18x worse than it is. The comparison is only meaningful once effort is pinned.
  2. Then run a 20-call head-to-head on the same rows and take the cheaper winner. Do not switch on a back-of-envelope estimate.

Params: max_completion_tokens=2500 (a measured floor), no temperature, JSON response format.

text
You verify whether a candidate social media URL belongs to a specific company.

You are given the company name, the company website domain, the social platform, the candidate profile URL, and the evidence that produced it.

Return JSON only, exactly these keys:
{"owned":true|false,"canonical_url":"...","confidence":"high|low","reason":"..."}

Rules:
- "owned" is true only when the profile is the official account of THAT company. An account belonging to a different company with a similar name is false. An unrelated account that merely mentions the company is false. A fan page, a reseller, a news account, a hashtag or discovery page, or an individual employee's personal profile is false.
- Evidence sourced from the company's own website HTML is strong. Treat it as owned unless the handle clearly belongs to a different brand.
- Evidence sourced from a search engine is weak. Require the profile title, the handle, or the URL slug to match the company name or its domain root before returning true.
- A profile title naming a different entity than the company is false, even when the handle looks right.
- A URL that is a post, a photo page, a jobs page, a discovery page, an aggregator page, or a search page is not a profile. Return false. This includes tiktok.com/discover/..., instagram.com/p/..., instagram.com/popular/..., and youtube.com/playlist?...
- A YouTube URL of the form youtube.com/channel/UC... carries an opaque channel id that can never contain the company name. Judge it on the result title alone: when the title is the company name, owned is true and confidence is high.
- canonical_url: strip country subdomains to www, strip query strings, strip trailing path segments after the profile handle, strip the trailing slash. If owned is false, return "".
- confidence is "high" when the handle or slug contains the company name or the domain root, or the evidence came from the company website, or the profile title is exactly the company name.
- Never invent a URL that was not in the input.

PER-ROW DATA (appended last)
Company: <company name>
Domain: <domain>
Platform: <platform>
Candidate URL: <candidate>
Evidence: <evidence source and snippet>

Two rules in there are doing unusual work:

  • The evidence-strength distinction. The same URL is treated differently depending on where it came from. Self-attested footer links are strong; search results are weak. That is the whole design of this playbook expressed in two sentences.
  • The opaque-channel-id rule. A URL that structurally cannot contain the company name would fail a naive slug check on every real channel. Judging it on the title instead is the difference between 0% and useful YouTube coverage.

Truncation guard: finish_reason=length means retry, never abstain.

7. Edge cases and failure modes

SymptomCauseFix
A backfill silently returns ~5% of expected matchesThe batch endpoint is hard-paginated at 25 and a large body returns one page with no errorChunk to the page size and loop pages. Read the pagination block on your first call
A clean-looking miss on a site that obviously has social linksA bot challenge page served with HTTP 200Check the body, not the status. Escalate to the rendering proxy
An X handle matches the brand better than the real accountX handles are short, recycled and squattedRequire company-site evidence for X, from every path
The wrong company's profile is writtenA match on a secondary website fieldBind by primary domain only. Secondary matches are candidates, not answers
A post or discovery URL is stored as a profileinstagram.com/p/..., tiktok.com/discover/... are not profilesThe verifier rejects them. Keep those rules verbatim
An employee's personal profile is stored as the company pageSearch results mix them freelyThe verifier rejects them
A YouTube channel never verifiesThe channel id is opaque and cannot contain the company nameJudge those on the result title
A footer link points at the parent brandSome sites link the group, not the subsidiaryPick the best match on the page, never the first one — prefer the handle closest to the domain root
The verifier truncatesA reasoning model below a 2,500-token capRaise the cap, or use a non-reasoning model where the cap cannot be set
Nothing found for TikTok or YouTubeMost company databases have no field for eitherOnly the site fetch finds TikTok. Expect low coverage and treat empty as real
Hard rules
  • A wrong URL is worse than an empty cell. Everything downstream scrapes whatever you hand over.
  • Site-footer evidence is self-attested and needs no model check. Everything else does.
  • Exact domain matching only. Fuzzy matching returns a different company.
  • Send a browser User-Agent on every fetch; several of these sources sit behind a CDN that 403s default runtime agents.
  • Keep the evidence-source column. Without it you cannot tell a strong value from a weak one six months later.

© growthenginenowoslawski, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 2 other files in skills/playbooks/playbook-social-link-finding of growthenginenowoslawski/coldoutboundskills.

  • SKILL.md
  • clay-table.md
  • clay-workflow.md

Open the folder on GitHubat commit 25c5d85

Compare with similar skills

Playbook Social Link Finding next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Playbook Social Link Finding compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Playbook Social Link Finding this skillgrowthenginenowoslawski/coldoutboundskills753—~3.2kAutomated safety check: PassMIT
Postizgitroomhq/postiz-agent5082 repos~7.9kAutomated safety check: PassAGPL-3.0
Competitor Social ResearchScrapeCreators/social-media-research-skills3.4k—~1.1kAutomated safety check: NotesMIT
Threads Carouselitchernetski/threads-carousel-claude-skill110—~3.5kAutomated safety check: PassMIT
Business Contact and Social Links Finderbrowser-act/skills6.1k1 repos~1.6kAutomated safety check: PassMIT
Outlier Post FinderScrapeCreators/social-media-research-skills3.4k—~1.5kAutomated safety check: NotesMIT

Similar skills

  • Postiz

    gitroomhq/postiz-agent

    Postiz is a tool to schedule social media and chat posts to 28+ channels X, LinkedIn, LinkedIn Page, Reddit, Instagram, Facebook Page, Threads, YouTube, Google My Business, TikTok, Pinterest…

    508 GitHub starsUsed in 2 repos~7.9k tokens
    Writing & ContentAuto-check passed
  • Competitor Social Research

    ScrapeCreators/social-media-research-skills

    A skill your agent uses when the user wants to research competitors' social media strategy, compare brands or creators, find what content is working in a niche, identify content gaps, or produce a…

    3.4k GitHub stars~1.1k tokensUpdated 1 mo ago
    Marketing & SEOAuto-check: notes
  • Threads Carousel

    itchernetski/threads-carousel-claude-skill

    Convert text posts into visual carousel images or presentations for Threads, Instagram, LinkedIn, TikTok, YouTube.

    110 GitHub stars~3.5k tokensUpdated 5 mo ago
    Documents & OfficeAuto-check passed
  • Finds a company's official website and social profiles from its name, or collects social links from a website URL, using BrowserAct templates run by a Python script.

    6.1k GitHub starsUsed in 1 repo~1.6k tokens
    Marketing & SEOAuto-check passed
  • Outlier Post Finder

    ScrapeCreators/social-media-research-skills

    A skill your agent uses when the user wants to find posts, videos, reels, shorts, tweets, or social content that overperformed versus a creator, brand, or competitor baseline.

    3.4k GitHub stars~1.5k tokensUpdated 1 mo ago
    Writing & ContentAuto-check: notes
  • Transcript Intelligence

    ScrapeCreators/social-media-research-skills

    A skill your agent uses when the user wants to summarize, analyze, or repurpose transcripts from TikTok, Instagram, YouTube, Facebook, X/Twitter, LinkedIn, Rumble, or Reddit video posts.

    3.4k GitHub stars~943 tokensUpdated 1 mo ago
    Marketing & SEOAuto-check: notes

More from growthenginenowoslawski/coldoutboundskills

All 49 skills in this repo
  • Email Deliverability Audit

    growthenginenowoslawski/coldoutboundskills

    Diagnostic audit for a running cold email program. An agent skill from growthenginenowoslawski/coldoutboundskills.

    753 GitHub stars~3.4k tokensUpdated 5 days ago
    Auto-check passed
  • Icp Onboarding

    growthenginenowoslawski/coldoutboundskills

    Conversational intake for cold email campaigns. An agent skill from growthenginenowoslawski/coldoutboundskills.

    753 GitHub stars~1.9k tokensUpdated 5 days ago
    Auto-check passed
  • List Builder

    growthenginenowoslawski/coldoutboundskills

    META skill — build the largest possible qualified lead list for any request, end to end.

    753 GitHub stars~4.7k tokensUpdated 5 days ago
    Auto-check: notes
  • Auto Research Public

    growthenginenowoslawski/coldoutboundskills

    Autonomous cold email campaign launcher. An agent skill from growthenginenowoslawski/coldoutboundskills.

    753 GitHub stars~2.9k tokensUpdated 5 days ago
    Auto-check passed
  • Blitz List Builder

    growthenginenowoslawski/coldoutboundskills

    Use the Blitz API to find decision-makers at specific companies when you already have a list of company domains.

    753 GitHub stars~2k tokensUpdated 5 days ago
    Auto-check passed
  • Deliverability Test Public

    growthenginenowoslawski/coldoutboundskills

    Compare reply rates, bounce rates, and positive reply rates broken down by inbox type (SMTP / Gmail / Outlook) for a Smartlead account.

    753 GitHub stars~1k tokensUpdated 5 days ago
    Auto-check passed

Questions about Playbook Social Link Finding

What does Playbook Social Link Finding do?

Resolve a company domain to its verified official social profile URLs (LinkedIn, X, Facebook, Instagram, YouTube, TikTok). Playbook Social Link Finding is an agent skill from growthenginenowoslawski/coldoutboundskills. Resolve a company domain to its verified official social profile URLs (LinkedIn, X, Facebook, Instagram, YouTube, TikTok).

When should I use Playbook Social Link Finding?

Playbook Social Link Finding fits situations like: find their LinkedIn; get the company LinkedIn URL; find their Instagram; we need social handles for this list.

How do I install Playbook Social Link Finding in Claude Code?

Run `npx skills add growthenginenowoslawski/coldoutboundskills --skill playbook-social-link-finding -a claude-code`. Or copy the skill folder (skills/playbooks/playbook-social-link-finding in growthenginenowoslawski/coldoutboundskills) into .claude/skills/playbook-social-link-finding in your project. Claude Code loads it when a task matches its description.

How do I install Playbook Social Link Finding in Codex?

Run `npx skills add growthenginenowoslawski/coldoutboundskills --skill playbook-social-link-finding -a codex`. Or copy the skill folder (skills/playbooks/playbook-social-link-finding in growthenginenowoslawski/coldoutboundskills) into .agents/skills/playbook-social-link-finding in your project. Codex loads it when a task matches its description.

Can I use Playbook Social Link Finding in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add growthenginenowoslawski/coldoutboundskills --skill playbook-social-link-finding -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/playbook-social-link-finding, .gemini/skills/playbook-social-link-finding, .github/skills/playbook-social-link-finding and .opencode/skills/playbook-social-link-finding in your project.

What does Playbook Social Link Finding need to run?

SKILL.md names no scripts, command-line tools or credentials: Playbook Social Link Finding is instructions for the agent only.

Does Playbook Social Link Finding access the network?

SKILL.md names 1 domain. In commands or code: linkedin.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.

Is Playbook Social Link Finding safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Playbook Social Link Finding use?

Playbook Social Link Finding is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Playbook Social Link Finding use?

About 3.2k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Playbook Social Link Finding?

Skills that share tags, products or a category with Playbook Social Link Finding: Postiz (gitroomhq/postiz-agent, 508 stars), Competitor Social Research (ScrapeCreators/social-media-research-skills, 3.4k stars), Threads Carousel (itchernetski/threads-carousel-claude-skill, 110 stars) and Business Contact and Social Links Finder (browser-act/skills, 6.1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Playbook Social Link Finding?

growthenginenowoslawski (a GitHub user) maintains it in growthenginenowoslawski/coldoutboundskills, which has 753 GitHub stars. The repository holds 49 skills in this directory. The repository was last updated on October 5, 2026.

Source: growthenginenowoslawski/coldoutboundskills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.