Install
openclaw skills install linkedin-reply-handlerDrafts precise LinkedIn comment replies from a given comment URL, handling thread structure to post under the correct top-level comment URN.
openclaw skills install linkedin-reply-handlerDrafts a reply to a specific LinkedIn comment. Correctly handles LinkedIn's 2-level thread flattening: if you're replying to a reply, the Publora API needs the TOP-level comment URN as parentComment, not the reply's URN.
?commentUrn=...) and says "reply to this"A LinkedIn URL containing commentUrn=urn:li:comment:(activity:POST,COMMENT_ID) — either the direct comment permalink or a feed URL with the query fragment.
lib.url_parser.parse_linkedin_url returns post_urn, comment_id, comment_urn.references/reply-templates.md. If the counterpart asked a question, answer it directly. If they pushed back, concede then sharpen.lib.active_backend():
publora (PUBLORA_API_KEY set) → react on the specific comment being replied to, pause 8-15s, then post reply with the correct top-level parentComment URN.manual (no backend configured — the default) → output the approved reply via lib.manual_mode_message(draft_text, target_url, kind="reply"). Include the parent comment URL so the user knows exactly where to paste. Do NOT attempt to post.diy (LINKEDIN_SKILLS_CUSTOM_POSTER set) → invoke the custom poster with draft, target URL, and parent-comment URN.LinkedIn only nests replies two levels deep. Visually the thread looks like:
Top comment by Alice (id: 111)
└─ Reply by Bob (id: 222) ← parentComment: urn:li:comment:(activity:POST, 111)
└─ Reply by Carol (id: 333) ← parentComment: STILL urn:li:comment:(activity:POST, 111)
Carol's reply doesn't nest under Bob's — it's pinned at level 2 to the same top comment. If you pass urn:li:comment:(activity:POST, 222) as parentComment, the API returns 400 on some paths or silently misplaces the reply.
Rule in this skill: always use the TOP-level comment's URN as parentComment. If you're replying to a 2nd-level reply, we walk up the tree to find the top comment.
references/reply-templates.md)linkedin-thread-engagement).User: "Reply to this: https://www.linkedin.com/feed/update/urn:li:activity:7449018753880834048?commentUrn=urn%3Ali%3Acomment%3A%28activity%3A7449018753880834048%2C7449758545140453376%29"
Skill: parses → post 7449018753880834048, comment 7449758545140453376. Fetches thread. Sees: Kevin Payne's post → Serge's comment ("moat moved to taste") → Kevin's reply ("How are you building that conviction muscle with your team?"). Drafts R1 Answer-Their-Question variant. Shows approval card.
User: "post"
Skill: react APPRECIATION on Kevin's reply → pause 12s → post reply with parentComment set to Serge's original comment URN (the TOP level, not Kevin's reply).
SKILL.md — this filereferences/reply-templates.md — 5 reply templates with examplesreferences/threading-rules.md — LinkedIn's 2-level flattening explained with edge cases