Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsCommunityBlog
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

Back to skills

Linkedin Comment To Outreach

ASecurity

Turn a single LinkedIn post URL into a paused cold email campaign in Instantly. I scrape every commenter, store them in Airtable, find verified emails through Apollo, co-write a 3-email sequence with you, then load it all into Instantly. End to end takes 30-60 minutes, most of it in the email copy. Always paused for your review - I never auto-launch. Use for higher-intent, lower-volume audiences (commenting takes effort).

113 stars
0 votes
0 copies
0 views
Added 9/19/2026
content-marketinggoreactapidatabase

Works with

api

Security Analysis

A100/100

Scanned 9/19/2026

Install to Claude Code

$npx -y skills add gethouston/houston --skill linkedin-comment-to-outreach --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Linkedin Comment To Outreach?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Linkedin Comment To Outreach
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/gethouston-linkedin-comment-to-outreach/badge)](https://www.skillsdirectory.com/skills/gethouston-linkedin-comment-to-outreach)

More formats (shields.io, HTML) on the badges page.

Download Zip
Files
SKILL.md
---
name: linkedin-comment-to-outreach
description: "Turn a single LinkedIn post URL into a paused cold email campaign in Instantly. I scrape every commenter, store them in Airtable, find verified emails through Apollo, co-write a 3-email sequence with you, then load it all into Instantly. End to end takes 30-60 minutes, most of it in the email copy. Always paused for your review - I never auto-launch. Use for higher-intent, lower-volume audiences (commenting takes effort)."
version: 1
category: Outbound
featured: yes
image: envelope-with-arrow
integrations: [apify, airtable, apollo, instantly, linkedin]
x_houston:
  created_by: houston
  skill_schema: 1
---


# LinkedIn Comment to Outreach

End-to-end orchestrator: LinkedIn post URL in, paused Instantly campaign out. I chain the five sub-skills with a checkpoint between each phase so you stay in control while the heavy lifting happens automatically.

Use this for **commenters** (higher intent, lower volume). For reactors (5-10x more leads, full LinkedIn profiles attached), use `linkedin-reaction-to-outreach` instead.

## When to use

- "Run the LinkedIn pipeline on this post: <URL>".
- "Scrape and email these commenters".
- "Outreach from this LinkedIn post".
- A speaker / competitor / thought-leader posted something that hits your ideal customer profile dead center, and you want to reach every qualified commenter in one motion.

## When NOT to use

- Targeting people who **reacted** to a post  -  use `linkedin-reaction-to-outreach`. Reactors are 5-10x more numerous and come with richer profile data.
- Just need the commenter list, no outreach  -  use `linkedin-comment-scraper` directly.
- Just need to enrich an existing list  -  use `apollo-enrichment` directly.
- Just need cold email copy without a lead source  -  use `cold-email-sequence` directly.
- Already have a verified list and copy ready  -  use `instantly-campaign` directly.

## Connections I need

I run external work through Composio. Before this skill runs I check that every category below is linked. Missing → I name the category, ask you to connect it from the Integrations tab, stop.

- **Apify** (scraping) - for the LinkedIn comment actor. Required.
- **Airtable** (database) - for the lead-tracking table. Required.
- **Apollo** (enrichment) - for verified emails + company / title / location. Required.
- **Instantly** (sending platform) - for campaign creation and lead loading. Required.

If any of the four are missing I stop on the first missing one and ask you to connect it. The pipeline does not partially run.

## Information I need

I read your outbound context first. For every required field that's missing I ask ONE plain-language question (best modality: connected app > URL > paste) and wait.

- **The LinkedIn post URL** - Required. Why: it's the input to phase 1. If missing I ask: "Which LinkedIn post should I scrape commenters from?"
- **An Airtable base** - Required. Why: phase 2 creates a new table inside one of your existing bases. If missing I ask: "Which Airtable base should I create the lead table in? I can list the ones you have."
- **Your sender first name + product one-liner + at least one social proof point with real numbers** - Required for phase 4. Why: I write the cold emails in your voice; without a real proof point with real numbers I'd be making things up, and that's a fast way to burn the campaign. If missing I ask in phase 4 (not now), so the first three phases can run in the background.
- **Instantly sending accounts** - Optional. Why: defaults to attaching every connected sending account. If you want only specific ones, tell me upfront.

## The pipeline

```
LinkedIn Post URL
       |
       v
[1. linkedin-comment-scraper]   Apify scrape, dedupe by profile URL
       |
       v
[2. airtable-lead-loader]       Create table, batch load with parallel agents
       |
       v
[3. apollo-enrichment]          Bulk match emails (batches of 10), update Airtable, create Apollo contacts
       |
       v
[4. cold-email-sequence]        Co-write 3 emails with you, one at a time, James Shields framework
       |
       v
[5. instantly-campaign]         Create campaign, sanitize bodies, load leads, attach accounts - PAUSED
       |
       v
Paused campaign ready for your review
```

## Steps
<!-- houston-workflow:v1 -->

1. **Validate inputs.** Check the URL is a LinkedIn post (not a profile, not an article), confirm the four Composio connections, read `config/context-ledger.json`. Mint a `runId` of the form `{YYYY-MM-DD}-{post-slug}` and create `runs/{runId}/notes.md` for the per-run journal.

2. **Phase 1 - Scrape commenters.** Call `linkedin-comment-scraper` with the post URL. Result lands at `runs/{runId}/scrape.json`. Append summary to `runs/{runId}/notes.md`.

   **Checkpoint.** Tell the user: "Scraped {N} unique commenters from {author}'s post. Moving on to Airtable."

3. **Phase 2 - Load to Airtable.** Call `airtable-lead-loader` with `runs/{runId}/scrape.json` and the chosen base ID. The table name is `LinkedIn Commenters - {author} - {YYYY-MM-DD}`. Append summary to `runs/{runId}/notes.md` with the table ID and the load count.

   **Checkpoint.** Tell the user: "Loaded {N} records into Airtable. Starting Apollo enrichment."

4. **Phase 3 - Enrich with Apollo.** Call `apollo-enrichment` with the Airtable base + table ID. Result: Airtable rows updated with email + company + title + location, and Apollo contacts created under label `LinkedIn Comments - {author} Post`. Re-fetch the rows that came back with a verified email and save to `runs/{runId}/contacts.json`. Append match-rate summary to `runs/{runId}/notes.md`.

   **Checkpoint.** Tell the user: "Found emails for {M} of {N} commenters ({M/N}% match rate). {M} contacts ready for outreach. Moving on to the email sequence."

5. **Phase 4 - Co-write the sequence.** Call `cold-email-sequence`. This is the **interactive phase** - I work with you one email at a time, locking each before moving to the next. Save to `sequences/{runId}-sequence.md`. Append the lock summary to `runs/{runId}/notes.md`.

   **Checkpoint.** Tell the user: "Sequence locked. Loading into Instantly."

6. **Phase 5 - Create the Instantly campaign.** Call `instantly-campaign` with `sequences/{runId}-sequence.md` and `runs/{runId}/contacts.json`. The campaign name is `LinkedIn - {author} - {short topic}`. Always paused. Append the Instantly campaign ID and lead-load summary to `runs/{runId}/notes.md`. Append a row to `campaigns.json` with `status: "paused"`.

7. **Final summary.** One short block to the user:
   - Campaign name + status (paused).
   - Lead count loaded.
   - Sending accounts attached.
   - Schedule (Mon-Fri, 8-5 in your default timezone).
   - "Review in Instantly. Activate when you're ready - I won't do it for you."

## Outputs

- `runs/{runId}/scrape.json`  -  deduped commenter list from phase 1.
- `runs/{runId}/contacts.json`  -  Apollo-enriched contacts with verified emails (drives the Instantly load).
- `runs/{runId}/notes.md`  -  per-run journal with checkpoints, counts, and decisions.
- `sequences/{runId}-sequence.md`  -  locked 3-email sequence.
- New Airtable table `LinkedIn Commenters - {author} - {date}` populated with the full lead-tracking schema.
- New Apollo contact label `LinkedIn Comments - {author} Post`.
- New Instantly campaign (paused) with all leads loaded and all sending accounts attached.
- `outputs.json`  -  one row per phase artifact (scrape, airtable-load, enrichment, sequence, campaign).
- `leads.json`  -  one row per surviving lead (deduped on `profileUrl` across runs).
- `campaigns.json`  -  one row for the new paused campaign.

## What I never do

- **Launch the campaign.** Always paused at the end of phase 5. You hit Activate.
- **Skip the per-email lock in phase 4.** Each email is reviewed and approved by you before I move to the next. No batch-write of all 3.
- **Push leads without a verified email into Instantly.** Apollo "no match" rows stay in Airtable for you to decide what to do with later.
- **Resume a partially-failed run by guessing.** If phase 3 fails halfway, I stop and tell you exactly which Airtable rows are enriched and which aren't, so you can decide whether to re-run from there or start fresh.
- **Hardcode Apify actor IDs, Airtable base IDs, Apollo labels, or Instantly campaign IDs.** All discovered via Composio at runtime.

Attribution

gethoustongethouston
View sourceMore from gethouston →
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Postiz

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, Dribbble, Discord, Slack, Kick, Twitch, Mastodon, Bluesky, Lemmy, Farcaster, Telegram, Nostr, VK, Medium, Dev.to, Hashnode, WordPress, ListMonk

21281 votes

Serp Analysis

SERP analysis techniques for intent classification, feature identification, and competitive intelligence. Use when analyzing search results for content strategy.

2831 votes

On Page Seo Auditor

This skill performs detailed on-page SEO audits to identify issues and optimization opportunities. It analyzes all on-page elements that affect search rankings and provides actionable recommendations.

1821 votes

Brand

Brand voice, visual identity, messaging frameworks, asset management, brand consistency. Activate for branded content, tone of voice, marketing assets, brand compliance, style guides.

1240080 votes

Release Announcement

Write a release announcement — changelog, blog post, in-app note, or social post — that leads with user impact, names the audience, and includes upgrade/migration steps without filler.

798220 votes
View all in content-marketing →