playbook-social-posts

Fetches the most recent usable LinkedIn post from company pages or personal profiles for cold email personalization.

678|243|Updated Mar 10, 2026
One-click install
npx skills add https://github.com/growthenginenowoslawski/coldoutboundskills --skill playbook-social-posts
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: playbook-social-posts
Source: https://github.com/growthenginenowoslawski/coldoutboundskills/tree/main/skills/playbooks/playbook-social-posts
Command: npx skills add https://github.com/growthenginenowoslawski/coldoutboundskills --skill playbook-social-posts

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Cold email campaigns need proof that the sender actually read a prospect's content, but manually checking LinkedIn posts for every contact does not scale, and naive automation risks referencing inappropriate posts or rendering empty personalization tokens.

Core Features & Use Cases

  • Recent Post Extraction: Scrapes the most recent usable LinkedIn post from a company page or personal profile via an async batched 3-call pattern, outputting social_post_text, social_post_url, social_post_days_ago, and social_post_author_type.
  • Mandatory Content Filter: A fail-closed skip filter rejects personal, political, bereavement, and charged posts, advancing to the next post rather than abstaining.
  • Optional Personalization Line: Generates a one-line AI personalization snippet only when the operator requests it, with list-split guidance instead of spintax gating.
  • Use Case: A cold email operator dedupes a 1,000-contact list to 620 unique profiles, scrapes recent posts in batches, and uploads a segment split on non-empty social_post_line for an honest A/B test.

Quick Start

Ask the assistant to fetch the most recent usable LinkedIn post for each profile URL in your lead list and output the post text, URL, and days ago.

Frequently Asked Questions about playbook-social-posts

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I reference a prospect's recent LinkedIn post in a cold email?

Scrape the profile's recent posts with a batched async run, filter out personal or charged content newest-first, and store the raw post text as a variable. Optionally generate a one-line personalization snippet, then split your list on non-empty values before upload.

What LinkedIn posts should be skipped for cold outreach personalization?

Skip personal, political, bereavement, and charged religious or geopolitical posts. Ordinary business content passes the filter, including memes, polls, job ads, volunteering, work anniversaries, and regulation commentary.

Why do person profile rows vanish when joining LinkedIn scrape results?

On person items the company-style identifier is null and the slug lives in a different field. Group on universalName or publicIdentifier and normalize URLs to lowercase stripped slugs before joining, or every person row silently disappears.

Can I use spintax to hide empty personalization variables in cold emails?

No. Spintax picks at random and cannot see an empty variable, so it renders broken phrases like 'Noticed .' into inboxes. Split the list on a non-empty line and rewrite the clause for the empty segment instead.

What fill rate should I expect when scraping LinkedIn posts for SMB lists?

Expect 20 to 40 percent for SMB, trades, and long-tail companies, since small company pages are usually inactive. The 71 percent benchmark came from high-frequency B2B SaaS posters; use founder personal profiles for small companies.

How much does LinkedIn post scraping cost per contact?

About $2.95 per 1,000 unique profiles in content-only mode, rising to $3.66 with the optional line. Dedupe contacts to profiles first: a 1,000-contact list covering 620 accounts costs about $1.83 because batching shares run-start fees.