SuperAPI AI Directory

08-engage

General & other

View repository

Updated 10-16 04: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 profile list once + weekly refresh
--mode=radar (default) fresh target posts → selection → comment drafts → digest 1–2×/day
--mode=log what was actually posted + replies → dedupe, 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 missing — create it.


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

This is what was missing: the list isn't pulled out of thin air and doesn't 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 block: build a draft of buckets from what exists (author profile, website, ICP doc, GTM strategy), mark each line [ASSUMPTION] and put at the end a "Confirm or correct" block — 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 requests to the user BEFORE searching — editing a line 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" — people already selected 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 posts of seed profiles.
  6. Apify (no-cookie) — when a batch/cron is needed: apimaestro/linkedin-posts-search-scraper-no-cookies or harvestapi/linkedin-post-search.

Engine: --engine=chrome (default) — the user's live session via browser tools; we scrape nothing bypassing the login, li_at is not needed. --engine=apify — headless batch for cron/n8n. In chrome mode: read and navigation 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 the list — there is nothing to comment on under it, no matter how ideal the ICP. Record cadence (how much they post per week) — then it 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 · Post cadence · Source · Last comment. Summary: how many in each bucket, where there is a shortfall, which requests produced junk.


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

B1 · Collect fresh posts

Sources by priority: Sales Nav notifications for the slot → posts of targets (chrome: feed/profiles; apify: apimaestro/linkedin-profile-posts as a batch) → search by keywords Latest for selection. 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. 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 · clarification-probe · translation to another audience · number from the field · outright disagreement). Write in the voice of Section 6 of the strategy; comment language = post language. 25–60 words, one block, specifics (number / case without a name / tool / 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 · pitch/link/service name · a compliment longer than half a sentence · a generality without a number · >1 emoji · client names. Final check: would the author reply 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 → into mined and further into 03-research as Source = comment-mining.
  4. Weekly summary: actual mix vs 20/50/15/15 · which types of comments gave answers · which of the targets have been silent for 3+ weeks (candidate for removal) · where to add more 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 buckets is named out loud.
  • radar: the drafts passed the selection gates AND the quality gate; the mix of the week is accounted for; each draft — with a link, a reason and ready text for copy-paste.
  • log: what was posted is recorded, dedupe works, signals are handed over to 03-research.
  • No action in the LinkedIn account without permission — only reading and drafts.