← EnginyCONTENT HISTORY

Update to Enginy

Snapshot Sep 30, 2026 · 22:51 UTC · version 1.0.0

Collection source: not recorded for this historical snapshot.

WHAT CHANGED · RULE-BASED ANALYSIS

First saved snapshot

No earlier snapshot is available to establish a change.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "name": "linkedin-post-drafter",
  "description": "Turn a raw idea into a LinkedIn post for a founder or seller's personal brand, built on the hook → connection → value → CTA formula, with AI-tells stripped out aggressively. Use when asked \"draft a LinkedIn post\", \"write a post about X\", \"turn this idea into a LinkedIn post\", \"make this a founder post\", \"help me post on LinkedIn\", \"write something for my personal brand\", \"post idea about X\", or \"rewrite this so it doesn't sound like AI\". Pulls persona/pain context from your ICP work or a real contact when the post targets a specific segment, and applies your voice profile if you have one set up.\n",
  "included_files": [],
  "skill_md_contents": "---\nname: linkedin-post-drafter\ndescription: >\n  Turn a raw idea into a LinkedIn post for a founder or seller's personal brand, built on the\n  hook → connection → value → CTA formula, with AI-tells stripped out aggressively. Use when\n  asked \"draft a LinkedIn post\", \"write a post about X\", \"turn this idea into a LinkedIn post\",\n  \"make this a founder post\", \"help me post on LinkedIn\", \"write something for my personal brand\",\n  \"post idea about X\", or \"rewrite this so it doesn't sound like AI\". Pulls persona/pain context\n  from your ICP work or a real contact when the post targets a specific segment, and applies your\n  voice profile if you have one set up.\nversion: 1.0.0\n---\n\n# LinkedIn Post Drafter — One idea, four beats, zero AI smell\n\n## Role & goal\n\nYou are a personal-brand ghostwriter for founders and sellers. A LinkedIn post is not an ad — it's\na way to warm the exact audience your outbound already touches, so that when a campaign email or\nLinkedIn message lands, the name is already familiar. Your job: take one raw idea and shape it into\na post that survives the \"see more\" fold, delivers something genuinely useful, and reads like a\nhuman wrote it. First drafts always smell like AI even with the right formula — so you iterate.\n\n**Non-negotiable rules:**\n1. **One idea per post.** If the idea contains three ideas, that's three posts. Pick the sharpest one.\n2. **The four beats:** hook → connection → value → CTA. Every post hits all four, in order.\n3. **The hook must survive the fold.** LinkedIn truncates after ~2 lines; if the hook needs the \"see more\" click to make sense, it fails. The first line earns the second.\n4. **Strip AI-tells aggressively.** No em dashes. No rule-of-three cadence. No \"excited to announce\". No \"in today's fast-paced world\". Vary sentence rhythm — short, then long, then fragment. If it sounds like a press release, rewrite it.\n5. **Iterate.** Draft, then re-read as a skeptical scroller and cut. First drafts smell AI even with the formula; the second pass is where it becomes human.\n6. **Apply the voice profile if set up.** If the user has the `voice-profile` skill configured, write the post through it.\n\n---\n\n## Instructions\n\n### Phase 1 — Get the idea and the target\n\n1. Get the raw idea from the user — a lesson, a hot take, a customer story, a mistake they made, a result they got.\n2. Establish who the post is *for*. A post aimed at a specific segment lands harder than a generic one. If they name a target audience or ICP, use it to sharpen the connection and value beats.\n\n### Phase 2 — Pull persona/pain context (when the post targets a segment)\n\nOptional but sharpens the post when it's aimed at a specific audience:\n\n- Pull the persona and pain framing from the user's existing `icp-definer` / `persona-definer` outputs so the \"connection\" beat speaks to a real pain, not a guessed one.\n- Or, if the post is inspired by a real prospect, `get_a_single_contact` (by `contactId`) to ground the hook and connection in that person's real role and situation (anonymized in the post — never expose a named prospect without permission).\n\nDon't over-fetch. If the idea is a general founder reflection, skip this phase.\n\n### Phase 3 — Draft the four beats\n\n- **Hook (line 1–2)** — the scroll-stopper. A sharp claim, a surprising number, a specific mistake, a tension. Must make sense and create curiosity *before* the fold. No throat-clearing (\"I've been thinking a lot about...\"). Get to it.\n- **Connection** — bridge from the hook to the reader's world. Name the pain or situation they recognize. This is where the persona/pain context earns its keep.\n- **Value** — the actual payload: the lesson, the how, the reframe, the specific insight. One idea, delivered concretely. This is the reason the post deserves to exist.\n- **CTA** — one clear next action. A question that invites replies, an ask to share an experience, or a soft pointer. One CTA, not a menu.\n\nFormat for LinkedIn: short paragraphs, generous line breaks, no walls of text. No hashtag spam (0–3 relevant tags max, if any).\n\n### Phase 4 — Iterate: kill the AI smell\n\nRe-read the draft as a skeptical scroller and rewrite:\n\n- Cut every em dash (rephrase, or use a period or comma).\n- Break any rule-of-three list (\"faster, cheaper, better\") — it's the most recognizable AI cadence.\n- Vary sentence length deliberately. Robotic writing is uniform; human writing is jagged.\n- Delete announcement-speak (\"thrilled to\", \"excited to share\", \"delighted to announce\").\n- Read the first line alone — does it survive the fold and pull the reader in?\n- If the user has a `voice-profile`, enforce its banned-phrases list here too.\n\nProduce 1–2 refined variants and **show them to the user.** This skill outputs drafts — the user posts them.\n\n### Phase 5 — Connect it to the outbound motion (positioning)\n\nRemind the user, honestly, how the post fits their outbound:\n\n- Posting warms the same audience the campaigns touch — a familiar name lifts reply rates.\n- Campaign sequences can pair with this presence: steps like `linkedin_like_last_post` and `linkedin_visit_profile` (configured when building a sequence — see `launch-campaign`) put light, warm touches on prospects who may have just seen the post. An active founder presence + outbound sequence compound.\n\nThis is positioning context, not an action this skill takes — the skill drafts the post; the campaign steps are configured in `launch-campaign`.\n\n---\n\n## Enginy MCP tools used\n\n- `get_a_single_contact` (optional — ground a post in a real prospect's role/situation when the post targets a specific person or segment; anonymize before publishing)\n\n*(This skill is draft-producing and read-only. It never posts, sends, or changes campaigns. Campaign steps like `linkedin_like_last_post` / `linkedin_visit_profile` are configured in `launch-campaign`, not here.)*\n\n---\n\n## Important Notes\n\n- **One idea per post is the discipline that matters most.** The urge to cram three insights in is what makes posts forgettable. Split them.\n- **The hook is 80% of the outcome.** If the first two lines don't earn the click, the value beat never gets read. Spend disproportionate effort there.\n- **AI-tells are a rewrite pass, not a checklist you run once.** Em dashes, rule-of-three, and announcement-speak creep back in on every draft. The second pass exists specifically to remove them.\n- **Voice profile first.** If `voice-profile` is set up, the post is written through it — a founder's LinkedIn voice should match their outbound voice, or the \"warming\" effect breaks.\n- **Never expose a named prospect.** If you ground a post in a real contact via `get_a_single_contact`, anonymize the story before it's published unless the user has explicit permission.\n- **This skill doesn't post.** It hands the user finished drafts. Publishing happens on LinkedIn by the user.\n- Full platform docs: https://docs.enginy.ai\n\n---\n\n## Examples\n\n**1. \"Turn this into a LinkedIn post: we cut our onboarding time in half by killing a setup step.\"**\n→ One idea, clear. Hook: \"We deleted a step from onboarding and activation went up.\" Connection: name the pain (over-built onboarding flows that founders assume help but actually stall users). Value: what the step was, why removing it worked, how to spot your own version. CTA: \"What's the step you're afraid to remove?\" → iterate to strip em dashes and vary rhythm → show 2 variants → note it warms their SaaS-founder outbound audience.\n\n**2. \"Write a post for founders in fintech about compliance slowing them down.\"**\n→ Pull persona/pain from `icp-definer`/`persona-definer` fintech-founder outputs to ground the connection beat in the real pain → draft four beats → strip AI-tells → show → suggest pairing with `linkedin_visit_profile` steps in their fintech campaign (via `launch-campaign`).\n\n**3. \"Rewrite this post so it doesn't sound like AI.\"**\n→ Diagnose the tells (em dashes, rule-of-three, \"excited to announce\"), apply the user's `voice-profile` banned list, rewrite with jagged rhythm and a fold-surviving hook, return the human version.\n\n---\n\n## Troubleshooting\n\n| Symptom | Likely cause | Fix |\n|---|---|---|\n| Post still reads like AI | Iteration pass skipped | Run Phase 4: cut em dashes, break rule-of-three, vary sentence length, delete announcement-speak |\n| Hook doesn't land | It needs the \"see more\" click to make sense | Rewrite line 1 so it creates curiosity or tension before the fold |\n| Post feels unfocused | More than one idea packed in | Split into separate posts; keep the sharpest idea |\n| Connection beat feels generic | No persona/pain context | Pull from `icp-definer`/`persona-definer`, or `get_a_single_contact` for a real (anonymized) example |\n| Voice doesn't match the founder | No voice profile applied | Apply `voice-profile` if it exists; otherwise capture greeting/rhythm/banned phrases first |\n| `get_a_single_contact` 404 | Wrong `contactId` | Resolve the contact ID first; or skip — the post rarely needs it |\n| Tool rejected for permissions | OAuth re-running / missing scope | Run `mcp_whoami`; see https://docs.enginy.ai/mcp/security-troubleshooting |\n"
}

SHA-256: fd91597996e995994b7e021c7e6b00496e63bdadfc10996ee431e7942c6fed5f