| name | draft-linkedin-post |
| description | Draft a LinkedIn post for business/sales generation with human approval |
| allowed-tools | Read, Write, Bash, Glob, WebSearch |
Draft LinkedIn Post Skill (v2)
You are drafting a LinkedIn post that requires human approval before publishing.
Input
You will receive post parameters in this format:
$ARGUMENTS
Format: TOPIC|BUSINESS_CONTEXT_JSON|FORMAT_TYPE|IMAGE_PATH
Backward compatibility: If only 2 pipe-delimited fields are provided (v1 format), assume FORMAT_TYPE=story and IMAGE_PATH="".
| Field | Description |
|---|
| TOPIC | The post topic |
| BUSINESS_CONTEXT_JSON | JSON string with company_name, industry, target_audience, tone |
| FORMAT_TYPE | One of: story, listicle, question, hot_take |
| IMAGE_PATH | Absolute path to an image file, or empty string |
Execution Steps
- Parse input — split by
| to extract all fields. If fewer than 4 fields, use defaults.
- Read Company_Handbook.md if available for tone/style guidelines.
- Web search — use WebSearch to find 1-2 current trends or recent news related to the TOPIC. Incorporate a timely angle into the post. If web search fails, proceed with your own knowledge.
- Generate the post following the format-specific instructions below.
- Validate the post: must be <=1300 characters, have 3-5 hashtags, start with a hook, end with a CTA.
- Compute metadata: character count, word count, estimated read time (~250 words/min), hashtag count.
- Create the Plan file using the template below.
- Output the confirmation line.
Format-Specific Instructions
Generate the post content based on FORMAT_TYPE:
story
Write a short personal narrative arc. Structure: situation/challenge → what you did → insight/lesson. Use "I" voice. Make it relatable and end with a takeaway the reader can apply.
listicle
Write 3-5 numbered tips, insights, or lessons. Each item should be 1-2 sentences. Open with a bold setup line that frames why these matter. Keep each point punchy.
question
Open with a thought-provoking or slightly controversial question about the topic. Follow with 2-3 sentences of your perspective. End by explicitly inviting discussion ("What's your take?" or similar).
hot_take
Lead with a bold, contrarian opinion related to the topic. Back it up with 2-3 sentences of reasoning. Be confident but not dismissive. Challenge conventional wisdom.
If FORMAT_TYPE is unrecognized, default to story.
Post Guidelines (all formats)
- Hook: The FIRST sentence must be attention-grabbing — a question, bold statement, or surprising fact. Never start with "I'm excited to share" or similar bland openers.
- Write in first person, professional but authentic voice
- Use short paragraphs (1-2 sentences each) for mobile readability
- Include a clear call-to-action at the end (comment, share, connect)
- Add 3-5 relevant hashtags on the last line
- Keep the post body under 1300 characters
- Focus on providing VALUE, not self-promotion
- Relate to the business context and target audience
- If web search found a timely angle, weave it in naturally
Plan File Template
Create the file at: Plans/LinkedInPost_[YYYYMMDD_HHMMSS].md
Use this exact structure:
---
created: [YYYY-MM-DD HH:MM]
type: linkedin-post
status: pending_approval
topic: [TOPIC]
format_type: [FORMAT_TYPE]
visibility: PUBLIC
image: [IMAGE_PATH or null]
tags: [linkedin, post, hitl]
---
# LinkedIn Post Draft
## Topic
[THE TOPIC]
## Post Metadata
- **Format**: [FORMAT_TYPE]
- **Characters**: [count] / 1300
- **Read time**: ~[N] sec
- **Hashtags**: [count]
- **Image**: [filename from IMAGE_PATH, or "None"]
## Image Preview
[If IMAGE_PATH is non-empty: ![[filename]] — otherwise: "No image attached"]
## Proposed Post
[YOUR DRAFTED POST HERE - including hashtags]
## Approval
- [ ] **APPROVE** - Publish this post to LinkedIn
- [ ] **EDIT** - I'll modify the post below
- [ ] **REJECT** - Don't publish
### Modified Post
[Leave empty - user fills this if they choose EDIT]
### Modified Image
[Leave empty - user can paste a different image path here]
---
*Generated by Claude - Awaiting human approval*
Output
After creating the plan, output:
POST DRAFTED: Plans/[filename]
TOPIC: [topic]
FORMAT: [format_type]
STATUS: Awaiting approval in Obsidian