$npx -y skills add LaGrowthMachine/gtm-system --skill post-to-campaignTurn a specific LinkedIn post (its URL) into a ready-to-launch outreach campaign. Use this whenever a request references a LinkedIn post or pastes a post URL: only this skill scrapes the post's likers and commenters into an audience before writing the sequence, so prefer it over
| 1 | # Post to Campaign |
| 2 | |
| 3 | Turns a single LinkedIn post into a ready-to-launch La Growth Machine campaign: it reads the post, scrapes the people who liked and commented into one audience, and fills a draft campaign whose copy is calibrated to the post and your objective. You attach the audience and launch. |
| 4 | |
| 5 | ## Authority — read this first |
| 6 | |
| 7 | Everything to run the common path is inlined below. The three reference files hold the detail for one step each; open a file only when you reach that step. |
| 8 | |
| 9 | - **Scraping the engagers into an audience** (identities, async import, polling, the audience naming rule) → `references/audience-from-post.md`. Read it at Step 3. |
| 10 | - **Creating the draft campaign in LGM** (`newHtml` format, find-or-duplicate a structure, reconcile steps, fill each message) → `references/lgm-campaign-create.md`. Read it at Step 5. |
| 11 | - **Copywriting rules** for the sequence (structure, banned phrases, anti-AI tells, per-channel length) → `references/copywriting-rules.md`. Read it at Step 4. This is the base rule set. If the `multichannel-campaign-builder` skill is installed, defer copy generation to it for a deeper result (see Step 4). |
| 12 | |
| 13 | Do not re-derive these from scratch when the file already covers them. Ask the user's input questions in **English**, and **never use an em-dash** in anything you write to the user. The campaign copy itself is written in the **language of the post** (confirmed with the user). |
| 14 | |
| 15 | ## What it does |
| 16 | |
| 17 | Two layers, so it is useful with or without La Growth Machine: |
| 18 | |
| 19 | - **Standalone (no LGM needed):** from the post's content and your objective, it writes the full outreach sequence copy, ready to paste into any tool. |
| 20 | - **With the LGM MCP connected:** it also scrapes the post's likers and commenters into a single audience and fills a draft campaign with that copy, so the only thing left to do is attach the audience and hit launch. |
| 21 | |
| 22 | ## Workflow |
| 23 | |
| 24 | ### Step 1 — Gather the brief (ask in English, no em-dash) |
| 25 | |
| 26 | Ask only for what is missing, in one message, then proceed: |
| 27 | |
| 28 | 1. **The LinkedIn post** — its URL (preferred, so the engagers can be scraped) or, if the user cannot share the URL, the pasted post text (copy-only, standalone path). |
| 29 | 2. **The campaign objective** — what a reply should lead to (book a demo, drive a free trial, adopt a resource, join a webinar, soft nurture). This drives the CTA. |
| 30 | 3. **The channel mix** — LinkedIn only, or multichannel (LinkedIn + email). Recommend multichannel: it lifts reply rates, and post engagers are a warm signal worth more than one channel. |
| 31 | 4. **The copy language** — default to the language of the post. Confirm it, and let the user override. |
| 32 | 5. **Which LinkedIn identity** to scrape and send from, only if Step 3 later finds more than one connected identity. |
| 33 | |
| 34 | If the user already gave everything up front, skip to Step 2. |
| 35 | |
| 36 | ### Step 2 — Read the post |
| 37 | |
| 38 | - **LGM MCP available:** call `get_linkedin_post` with the URL. Keep the post text (the angle source), the author name (the audience name), and the post date. |
| 39 | - **No MCP:** use the pasted post text. Ask for the author's name if you will name an audience later; otherwise proceed on the text alone. |
| 40 | |
| 41 | Summarize the post's core idea in one line to yourself. That idea is the campaign's angle: engagers reacted to *this* point, so the opener speaks to it. |
| 42 | |
| 43 | ### Step 3 — Build the audience from the engagers (LGM MCP path) |
| 44 | |
| 45 | Only when the LGM MCP is connected and the user gave a post URL. Follow `references/audience-from-post.md`. In short: |
| 46 | |
| 47 | 1. `list_identities` → pick the identity (ask the user if there is more than one). |
| 48 | 2. **Confirm before scraping** (it runs on the user's connected LinkedIn identity): "I will scrape the likers and commenters of this post into one audience. Go?" |
| 49 | 3. `create_audience_from_linkedin_url` twice on the **same audience name** — once `linkedinPostCategory: "like"`, once `"comment"` — so both land in one merged audi |