- 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
1. **Parse input** — split by `|` to extract all fields. If fewer than 4 fields, use defaults.
2. **Read Company_Handbook.md** if available for tone/style guidelines.
3. **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.
4. **Generate the post** following the format-specific instructions below.
5. **Validate** the post: must be <=1300 characters, have 3-5 hashtags, start with a hook, end with a CTA.
6. **Compute metadata**: character count, word count, estimated read time (~250 words/min), hashtag count.
7. **Create the Plan file** using the template below.
8. **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
```
View on GitHub