LinkedIn Comment Drafter
Produce conversation-provoking comments on any LinkedIn post from a URL. The skill targets the patterns that actually got author replies in 2026 testing (the missing-piece and specific-objection patterns) and avoids the thesis-restatement patterns that die with zero engagement.
When to use
- User pastes a LinkedIn post URL and says "comment on this", "draft me a comment", "engage with this post"
- User wants to be among the first 3 commenters on a viral post
- User wants to reply to a closing question the author asked
Input
A LinkedIn post URL in any of the standard shapes (see the top-level SKILL.md URL table).
Output
1-3 draft comment variants, each with:
- 200-350 char body, 1-2 short paragraphs, no em dashes, no hashtags
- Assigned reaction type:
LIKE, PRAISE, EMPATHY, INTEREST, APPRECIATION, or ENTERTAINMENT
- Pattern label (which of the 7 templates was used)
- Estimated engagement fit based on what the author typically responds to
Then waits for user approval. On "post", posts the reaction + comment through whatever publishing backend the user has configured — or returns a copy-paste block when none is (the default).
Steps
- Parse the URL. Use
lib.url_parser.parse_linkedin_url to get post_urn and, if present, the post's activity ID.
- Fetch the post body. HarvestAPI-клиент (corporate-knowledge repo) в этом окружении ОТСУТСТВУЕТ — fallback по умолчанию: попроси пользователя вставить текст поста + топ-3 существующих комментария (чтобы не дублировать takes), либо вытяни пост через ScraperVendor/browser (skill
dev-browser).
- Detect the author's closing question. If the post ends with a "?" line, the Answer-the-Closing-Question template usually wins.
- Draft comment variants. Pick 2-3 templates from
references/comment-templates.md that fit the post's topic. Fill them with user-voice phrasing.
- Run the humanizer pass. Strip em dashes, AI vocab, uniform sentence rhythm. Add a specific number or named entity if missing.
- Present drafts for approval using
lib.approval.render_approval_card. Include: target URL, each variant, reaction suggestion, a one-line "why this template fits".
- On approval — adapt to the posting setup. Автопостер LinkedIn в пак не входит — подключай свой; без него skill работает в ручном режиме:
manual (ничего не настроено — дефолт) → output the approved draft as a copy-paste block: текст варианта, целевой URL, рекомендованная реакция. Do NOT attempt to post programmatically.
diy (LINKEDIN_SKILLS_CUSTOM_POSTER set) → invoke the user's configured custom poster command with the draft text + target URL as arguments.
- свой API-публикатор (например, Postiz self-hosted или собственный клиент LinkedIn API) → react to the post with the chosen reaction type, pause 8-15s, then post a top-level comment (no parent). Return the comment URN.
Templates (see references/comment-templates.md for full list)
- T1 Missing-Piece (highest hit rate):
[Name] the [their-thesis] argument misses one piece.. [what-moved]. when [their-condition], the real differentiator is [specific-skill], not [their-focus].
- T2 Answer-the-Closing-Question: direct answer + one concrete example + why it matters
- T3 Data-First:
half the [population] I see now [behavior]. the [old-assumption] broke around [date]. [new-rule].
- T4 Practitioner Observation:
when X the system does Y, when X' it does Y'. that's when [outcome] kicks in.
- T5 Counter-with-Concession: agree on point 1, push back on point 2 with one rooted reason
- T6 Quotable-Reframe: one line under 12 words + expansion
- T7 Ask-a-Sharper-Question:
the harder version of this question is..
Hard rules
- 200-350 chars. Don't exceed.
- Always capitalize the author's name (e.g., "Dharmesh", not "dharmesh").
- No em dashes, no hashtags, no emoji unless the post itself uses them.
- No mention of the user's own product by name. Describe what they do instead.
- Never paste generic praise ("Great post!", "This.", "100%"). The skill refuses.
- Skip the comment if the post is sponsored, a generic listicle, or the author has already deleted it.
Example invocation
User: "Comment on this: https://www.linkedin.com/posts/dharmesh_activity-7448808898326654978-iW20"
Skill: [parses URL, fetches post, detects closing question "Seen this in your market?", drafts 3 variants]
Skill returns: T2 Answer-the-Closing-Question variant as primary pick, with T1 Missing-Piece as backup, reaction INTEREST, one-line rationale, and approval prompt.
Files in this skill
SKILL.md — this file
references/comment-templates.md — the 7 templates with fill-in slots and real examples
references/voice-rules.md — the specific voice rules from user feedback memories
Related skills
references/linkedin-reply-handler/ — if you're replying to a comment (not posting top-level)
linkedin-humanizer — for aggressive AI-tell scrubbing
../linkedin-post-writer/references/linkedin-hook-extractor/ — if you want to use the author's own hook as the basis for your reply
1---2name: linkedin-comment-drafter3description: Комменты и ответы в тредах LinkedIn: черновики + постинг через Publora, follow-up. Триггеры: «коммент на linkedin», «автор ответил».4---56# LinkedIn Comment Drafter78Produce conversation-provoking comments on any LinkedIn post from a URL. The skill targets the patterns that actually got author replies in 2026 testing (the missing-piece and specific-objection patterns) and avoids the thesis-restatement patterns that die with zero engagement.910## When to use1112- User pastes a LinkedIn post URL and says "comment on this", "draft me a comment", "engage with this post"13- User wants to be among the first 3 commenters on a viral post14- User wants to reply to a closing question the author asked1516## Input1718A LinkedIn post URL in any of the standard shapes (see the top-level `SKILL.md` URL table).1920## Output21221-3 draft comment variants, each with:23- 200-350 char body, 1-2 short paragraphs, no em dashes, no hashtags24- Assigned reaction type: `LIKE`, `PRAISE`, `EMPATHY`, `INTEREST`, `APPRECIATION`, or `ENTERTAINMENT`25- Pattern label (which of the 7 templates was used)26- Estimated engagement fit based on what the author typically responds to2728Then waits for user approval. On "post", posts the reaction + comment through whatever publishing backend the user has configured — or returns a copy-paste block when none is (the default).2930## Steps31321. **Parse the URL.** Use `lib.url_parser.parse_linkedin_url` to get `post_urn` and, if present, the post's activity ID.332. **Fetch the post body.** HarvestAPI-клиент (corporate-knowledge repo) в этом окружении ОТСУТСТВУЕТ — fallback по умолчанию: попроси пользователя вставить текст поста + топ-3 существующих комментария (чтобы не дублировать takes), либо вытяни пост через ScraperVendor/browser (skill `dev-browser`).343. **Detect the author's closing question.** If the post ends with a "?" line, the Answer-the-Closing-Question template usually wins.354. **Draft comment variants.** Pick 2-3 templates from `references/comment-templates.md` that fit the post's topic. Fill them with user-voice phrasing.365. **Run the humanizer pass.** Strip em dashes, AI vocab, uniform sentence rhythm. Add a specific number or named entity if missing.376. **Present drafts for approval** using `lib.approval.render_approval_card`. Include: target URL, each variant, reaction suggestion, a one-line "why this template fits".387. **On approval — adapt to the posting setup.** Автопостер LinkedIn в пак не входит — подключай свой; без него skill работает в ручном режиме:39 - **`manual`** (ничего не настроено — дефолт) → output the approved draft as a copy-paste block: текст варианта, целевой URL, рекомендованная реакция. Do NOT attempt to post programmatically.40 - **`diy`** (`LINKEDIN_SKILLS_CUSTOM_POSTER` set) → invoke the user's configured custom poster command with the draft text + target URL as arguments.41 - **свой API-публикатор** (например, Postiz self-hosted или собственный клиент LinkedIn API) → react to the post with the chosen reaction type, pause 8-15s, then post a top-level comment (no parent). Return the comment URN.4243## Templates (see `references/comment-templates.md` for full list)4445- **T1 Missing-Piece** (highest hit rate): `[Name] the [their-thesis] argument misses one piece.. [what-moved]. when [their-condition], the real differentiator is [specific-skill], not [their-focus].`46- **T2 Answer-the-Closing-Question**: direct answer + one concrete example + why it matters47- **T3 Data-First**: `half the [population] I see now [behavior]. the [old-assumption] broke around [date]. [new-rule].`48- **T4 Practitioner Observation**: `when X the system does Y, when X' it does Y'. that's when [outcome] kicks in.`49- **T5 Counter-with-Concession**: agree on point 1, push back on point 2 with one rooted reason50- **T6 Quotable-Reframe**: one line under 12 words + expansion51- **T7 Ask-a-Sharper-Question**: `the harder version of this question is..`5253## Hard rules5455- 200-350 chars. Don't exceed.56- Always capitalize the author's name (e.g., "Dharmesh", not "dharmesh").57- No em dashes, no hashtags, no emoji unless the post itself uses them.58- No mention of the user's own product by name. Describe what they do instead.59- Never paste generic praise ("Great post!", "This.", "100%"). The skill refuses.60- Skip the comment if the post is sponsored, a generic listicle, or the author has already deleted it.6162## Example invocation6364> User: "Comment on this: https://www.linkedin.com/posts/dharmesh_activity-7448808898326654978-iW20"65>66> Skill: [parses URL, fetches post, detects closing question "Seen this in your market?", drafts 3 variants]67>68> Skill returns: T2 Answer-the-Closing-Question variant as primary pick, with T1 Missing-Piece as backup, reaction `INTEREST`, one-line rationale, and approval prompt.6970## Files in this skill7172- `SKILL.md` — this file73- `references/comment-templates.md` — the 7 templates with fill-in slots and real examples74- `references/voice-rules.md` — the specific voice rules from user feedback memories7576## Related skills7778- `references/linkedin-reply-handler/` — if you're replying to a comment (not posting top-level)79- `linkedin-humanizer` — for aggressive AI-tell scrubbing80- `../linkedin-post-writer/references/linkedin-hook-extractor/` — if you want to use the author's own hook as the basis for your reply