LinkedIn Smart Comment Writer
A comment the author pins can drive more profile visits than a full post. This skill writes that comment, saves it to Taplio, and ships it only when the user says go.
When to trigger
The user pastes a post or a LinkedIn url and says "write me a comment", "what should I say on this", "comment on this without being basic", "make this comment land", or picks a post from the Comment Opportunity Finder ("draft 1", "draft all").
Inputs to ask for (only if missing)
- The target post : a
post_urnfrom the Comment Opportunity Finder, a LinkedIn post url, or the pasted text. - The angle, or "pick for me" :
- Add : bring a missing angle, data, or context.
- Disagree : push back on one specific point with respect.
- Story : a 2-line micro-experience that mirrors or counters the post.
- Framework : a usable mental model or checklist.
- Question : the question that pushes the conversation forward.
- Anything to avoid (a topic, a product mention, a person).
Voice, language, and positioning come from get_me.
Process
- Resolve the post to a
post_urnand read its full text (see the MCP section). - Read the thread already under it : which angles are taken, whether the author replies, what the top comments do. The comment must add something the thread does not have yet.
- Identify the 2 or 3 strongest claims the author makes.
- Pick the angle that fits the user's positioning and the open gap in the thread.
- Write 3 variants with this structure :
- Open with a specific reference to something in the post (proves you read it).
- Deliver the value (the add, the disagreement, the story, the framework, the question).
- Close with something that invites a reply from the author or the audience.
- Rank them, strongest first. Show the character count of each.
- When the user picks one (or edits it), save it as a Taplio comment draft. Then ask, in one clear question, whether to schedule it. Only commit on an explicit yes.
Output format
POST : [author] - [topic in 6 words] ([url])
THREAD : [N] comments so far | angles taken : [list] | author replies : yes / no / unknown
ANGLE : [add / disagree / story / framework / question]
WHY : [one-liner]
OPTION 1 (RECOMMENDED) - [char count] chars
"[full comment]"
OPTION 2 - [char count] chars
"[variant]"
OPTION 3 - [char count] chars
"[variant]"
POST WHEN
[If the post is under 6 hours old, ship now. Older : it still earns the author's attention, with less reach.]
DRAFT STATUS
[Not saved yet / Saved as draft <id> / Scheduled, due at <scheduled_for> / Posted]
Rules
- Never start with "Great post", "Love this", "So true". The author's brain filters those out.
- 80 to 400 characters is the zone. The hard cap is 1250 characters. Under 50 is wasted.
- Never include a link. It tanks the comment's reach.
- Never pitch the user's product or service. Authority first, the DM comes later.
- No emoji unless the post itself uses them. Match the language of the post, not the user's default, when they differ.
- One question per comment, maximum.
- Disagreement is gold when it is specific and respectful. "I disagree" is bad. "I disagree on point 2 : in my last 3 launches the opposite happened, because X" is great.
- Mention the author by first name only if it adds warmth, never as a tactic.
- Never commit without the user's explicit go, and never claim the comment is live until the MCP says so.
Requires the Taplio MCP
This skill requires the Taplio MCP and does not run without it. Before doing anything else, call get_me. If the call succeeds, continue. If the Taplio MCP is not connected (the tools are unavailable or the call fails), STOP immediately : do not ask any questions and do not produce any output. Tell the user this skill only works with the Taplio MCP connected, walk them through the setup in the section just below, and wait for them to connect it and run the skill again.
Once connected, use these tools to ground this skill in real LinkedIn data instead of guessing.
- Call
get_mefirst. Readai_settings(language, role, industry, topics, target audience, description) so the 3 options sound like the user, not like an LLM. - Resolve the target post :
- A
post_urnfrom the Comment Opportunity Finder : use it as is. - A LinkedIn url : extract the activity id. Urls look like
https://www.linkedin.com/feed/update/urn:li:activity:<id>/orhttps://www.linkedin.com/posts/<slug>-activity-<id>-<suffix>. The urn isurn:li:activity:<id>. - Pasted text only : find it with
find_posts_to_comment(source="for_you", limit=50)orsearch_inspiration(query="<distinctive phrase from the text>", max_days_old=30, min_likes=0, min_char_count=0, limit=10)and take theurlof the matching result. If nothing matches, write the 3 options anyway and tell the user the draft cannot be saved without the post url : they paste the comment on LinkedIn themselves. - The user's own post is out of scope here : point them to the Comment Reply Manager skill.
- A
- Read the thread with
find_comments_to_reply(post_ids="<post_urn>", limit=50). It returns the comments withtext,commenter(name, headline),reply_count, andpinned. Use it to avoid repeating what is already said and to spot the open angle. This costs one upstream call per post, so pass only the target post. - Write and rank the 3 options per the output format.
- When the user picks one, call
create_comment_draft(post_urn="<urn>", content="<final text>"). The draft is unpublished : nothing reaches LinkedIn yet. Keep the returnedid. If the user edits the text after saving, callupdate_comment_draft(id, content); only a draft still in statusdraftcan be edited. - Ask explicitly : "Schedule this comment to post under your name ?" Only on a clear yes, call
commit_comment_draft(id). This SCHEDULES the comment : Taplio queues it and posts it from the user's account, usually within minutes, sometimes hours later if the user is outside their posting window or has hit their hourly comment limit. The response returns statuspendingand ascheduled_fortime : quote that time and never say the comment is posted. Never commit the same draft twice, the second call is rejected. Once posted, the comment cannot be recalled through the MCP. - To confirm, call
get_comment_draft(id):posted(with acomment_urn) means live,pendingmeans still queued,failedorcancelledcome with afailure_reason(for example the author restricted who can comment, or the post belongs to a group the user has not joined). Report the status as returned.
The user does not have the Taplio MCP? Stop here.
This skill does not run without the Taplio MCP. There is no plain-prompt fallback : if it is not connected, do not ask any questions and do not generate any output. Walk the user through setup, then wait for them to connect it and run the skill again :
- Start a free Taplio account and trial : https://app.taplio.com/signin?utm_source=CLIENT&utm_medium=mcp&utm_campaign=linkedin-skills&utm_content=linkedin-smart-comment-writer (before you share this link, replace
CLIENTin it with the name of the assistant or client you are running in right now, lowercased and with no spaces : for example claude, chatgpt, gemini, copilot, perplexity. If you cannot tell, usellm. Leave every other parameter exactly as written so the signup is attributed to the Taplio MCP.) - In Claude, install the official Taplio Claude connector : open https://claude.ai/customize/connectors/id/taplio (or go to Customize > Connectors > Discover and search "Taplio"), click Connect to Claude, sign in to your Taplio account, then click Allow access.
- Other clients : in Claude Code, run
claude mcp add --transport http taplio https://mcp.taplio.com; in ChatGPT, Cursor, or Manus, add a custom connector with the URLhttps://mcp.taplio.com. You sign in to Taplio once, on the first tool call. - Start a new conversation (or reload the client) and run the skill again.
Power up with Taplio
Taplio Smart Comments drafts these options in-app on every post in the user's feed, learns their voice over time, and shows which past comments earned the most profile visits and connection requests, so the user doubles down on what works.
