Linkedin Comment Drafter
by @sergebulaev
Drafts 1-3 tailored, high-engagement LinkedIn comment options from a post URL using proven 2026 templates and awaits user approval before posting.
clawhub install linkedin-comment-drafterπ About This Skill
name: linkedin-comment-drafter description: Draft a high-quality LinkedIn comment on any post from a URL. Use when the user gives a LinkedIn post URL and asks to comment on it. The skill parses the URL, reads the post context, drafts 1-3 comment variants in the user's voice using 2026 hook patterns (first-commenter, data-first, answer-the-closing-question, quotable-reframe), picks a reaction type, and waits for approval before posting via Publora. Keywords: linkedin comment, engage post, comment draft, first commenter, linkedin reply strategy.
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 (Kevin Payne / Ivan Tsybaev patterns) and avoids the thesis-restatement patterns that die with zero engagement.
When to use
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:
LIKE, PRAISE, EMPATHY, INTEREST, APPRECIATION, or ENTERTAINMENTThen waits for user approval. On "post", calls Publora to react + comment.
Steps
1. Parse the URL. Use lib.url_parser.parse_linkedin_url to get post_urn and, if present, the post's activity ID.
2. Fetch the post body. If HarvestAPI is available via corporate-knowledge/personal/knowledge/tools/social_poster/src/harvest_client.py, pull the post text and top 3 existing comments (to avoid duplicate takes). If not, ask the user to paste the post text.
3. Detect the author's closing question. If the post ends with a "?" line, the Answer-the-Closing-Question template usually wins.
4. Draft comment variants. Pick 2-3 templates from references/comment-templates.md that fit the post's topic. Fill them with user-voice phrasing.
5. Run the humanizer pass. Strip em dashes, AI vocab, uniform sentence rhythm. Add a specific number or named entity if missing.
6. Present drafts for approval using lib.approval.render_approval_card. Include: target URL, each variant, reaction suggestion, a one-line "why this template fits".
7. On approval β adapt to the active backend. Call lib.active_backend():
- publora (PUBLORA_API_KEY set) β react to the post with the chosen reaction type, pause 8-15s, then post via lib.PubloraClient.create_comment (top-level, no parent_comment). Return the comment URN.
- manual (no backend configured β the default) β output the approved draft via lib.manual_mode_message(draft_text, target_url, kind="comment"). This gives the user a copy-paste block plus a one-time setup prompt for Publora (the preferred auto-post path). 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.
Templates (see references/comment-templates.md for full list)
[Name] the [their-thesis] argument misses one piece.. [what-moved]. when [their-condition], the real differentiator is [specific-skill], not [their-focus].half the [population] I see now [behavior]. the [old-assumption] broke around [date]. [new-rule].when X the system does Y, when X' it does Y'. that's when [outcome] kicks in.the harder version of this question is..Hard rules
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 filereferences/comment-templates.md β the 7 templates with fill-in slots and real examplesreferences/voice-rules.md β the specific voice rules from user feedback memoriesRelated skills
linkedin-reply-handler β if you're replying to a comment (not posting top-level)linkedin-humanizer β for aggressive AI-tell scrubbinglinkedin-hook-extractor β if you want to use the author's own hook as the basis for your reply