SuperAPI AI Directory

content-engage

General & other

View repository

Updated 10-16 09:56

About this skill

08 · Engage — comment radar

Step eight. Money is in dialogues, not in likes (Module 5). Three modes that work independently:

Mode What it does Cadence
--mode=targets strategy → 4 audiences → boolean queries → live list of profiles once + weekly refresh
--mode=radar (default) fresh posts of targets → selection → comment drafts → digest 1–2×/day
--mode=log what was actually posted + replies → dedup, mix, signals into research in the evening / on Friday

Drafts only — you post MANUALLY. Auto-comments = ban risk + LinkedIn's AI classifier cuts the account's distribution.

Normative doc: ${CLAUDE_PLUGIN_ROOT}/reference/engage-playbook.md — audiences, boolean, selection gates, comment types, quality gate, state schema. Read BEFORE any mode. Additionally: methodology.md §4 (distribution), Section 2 of the strategy (audiences), Section 6 (voice).

Input: $ARGUMENTS — client (default — the only active one) + optional flags. State: engage-state.json in the client's working folder (not in the plugin repo). If none — create it.


Mode A · --mode=targets — build a list of whom to comment on

This is what was missing: the list is not pulled out of thin air and does not wait for a manual CSV.

A1 · Retrieve the four audiences

Read Section 2 of the strategy (Notion 🧭 {Client} · Strategy) — the block “four audiences: ICP / peers / co-pilots / thought leaders”. Extract for each: who they are, examples, geo, size.

  • Section 2 is incomplete or there is no strategy → don't get blocked: build a draft of the buckets from what there is (author profile, website, ICP doc, GTM strategy), mark each line [ASSUMPTION] and put at the end a block “Confirm or correct” — 4 short questions, not a questionnaire.

A2 · Audience → targeting card

For each bucket, build a card per §2 of the playbook: titles · keywords · exclude · geo · company_size · language · seed_profiles (3–5 live profiles) · target_count. From this — two boolean strings per bucket: one for title, one for keywords. Show the queries to the user BEFORE searching — editing a string is cheaper than re-sifting the results.

A3 · Find profiles (channel ladder, §3 of the playbook)

The order is strict, top to bottom, up to the set target_count:

  1. Sales Nav → notifications "Suggested lead … shared a post" — already shortlisted people with a fresh post.
  2. Sales Nav → Lead search: boolean у Title/Keywords + Spotlights → Posted on LinkedIn (past 30 days) + geo/size. Save as Saved Search + Lead List per bucket (ENG · ICP, ENG · Peers, ENG · Co-pilots, ENG · TL).
  3. LinkedIn → Posts → keywords → Latest — search by content, not by people; catches authors outside the lists.
  4. Own network: who liked/commented on the author's posts over the month.
  5. Second circle: who constantly comments under the seed profiles' posts.
  6. Apify (no-cookie) — when you need batch/cron: apimaestro/linkedin-posts-search-scraper-no-cookies or harvestapi/linkedin-post-search.

Engine: --engine=chrome (default) — a live user session via browser tools; we don't scrape anything bypassing the login, li_at is not needed. --engine=apify — headless batch for cron/n8n. In chrome mode: read and navigate only. No connects, likes, messages, saves without direct permission in the chat.

A4 · Hard filter

A profile with no posts in 30 days does not make it onto the list — there's nothing to comment on under it, however ideal the ICP. Record cadence (how much they post per week) — it then drives the frequency.

A5 · Output

Write to engage-state.json → targets + (if Notion is connected) a sub-page "🎯 {Client} · Engage Targets" with a table: Name · Bucket · Profile · Why them · Posting cadence · Source · Latest comment. Summary: how many in each bucket, where the shortfall is, which queries produced junk.


Mode B · --mode=radar — comment drafts (default)

B1 · Collect fresh posts

Sources by priority: Sales Nav notifications per slot → posts by targets (chrome: feed/profiles; apify: apimaestro/linkedin-profile-posts in batch) → keyword search Latest for top-up. Slot window: morning ~9:00, midday ~15:00 in the target audience's timezone; without --slot — both.

B2 · Selection gates (§4 of the playbook)

Freshness ≤ 3 h (TL — ≤ 60 min) · in the topic cluster · not an ad/vacancy/repost-without-a-thought · there is a thesis or a number to latch onto · this author has not been commented on for 7 days · the opinion has not yet been said in the top comments (check BEFORE drafting) · this same opinion has not been left under another post this week.

B3 · Queue and mix

Rank = свіжість × вага бакета × сила зачіпки. Volume 5–15 drafts/day. The mix 20% ICP / 50% peers / 15% co-pilots / 15% TL is measured by week, not by day: first fill in the bucket that is underfilled for the week (count by log).

B4 · Write a comment

Read the entire post (not the headline) + top comments. Choose a type from §5 of the playbook (experience-addendum · counter-example · mechanics · clarifying-probe · translation to another audience · a number from the field · outright disagreement). Write in the voice of Section 6 of the strategy; the language of the comment = the language of the post. 25–60 words, one block, specifics (a number / a case without a name / a tool / a threshold).

B5 · Quality gate (§6 of the playbook) — strict

Run every draft through anticopywriting-ai. Discard and rewrite if there is: “great post” in any form · retelling of the post · “not X, but Y” · triads · dash constructions · a pitch/link/name of a service · a compliment longer than half a sentence · a generality without a number · >1 emoji · client names. Final check: would the author have replied to this. No — rewrite, do not soften.

B6 · Output — digest

For each draft: author + bucket + link to the post + age of the post + why this post + comment type + ready text in one block for copying. Order = priority; on top is what expires first. Channel: chat (default) → Notion page of the slot → Telegram, if the channel is configured in the client's config. At the end: the current mix of the week and what is missing.


Mode C · --mode=log — close the loop

  1. Ask/accept what of the drafts was actually posted and what was replied.
  2. Add to engage-state.json → log: date · slot · author · bucket · comment type · posted · reply.
  3. Comment-mining: recurring questions, objections, and pains from posts and threads → in mined and further in content-research as Source = comment-mining.
  4. Weekly summary: actual mix vs 20/50/15/15 · which types of comments produced replies · which targets have been silent for 3+ weeks (candidate for removal) · where to add profiles.

Definition of Done

  • targets: 4 buckets have boolean queries and a live list of profiles (each with posts for 30 days), recorded in the state; the shortfall per bucket is stated out loud.
  • radar: drafts passed the selection gates AND the quality gate; the week's mix is taken into account; each draft — with a link, reason, and ready-to-copy text.
  • log: what was posted is recorded, dedup works, signals are handed off to content-research.
  • No action in the LinkedIn account without permission — only reading and drafts.