refactor(linkedin)!: rename plugin linkedin-thought-leadership → linkedin-studio (v3.0.0)
BREAKING CHANGE: the marketplace slug, the agent namespace (linkedin-studio:<agent>), and the runtime state-file path (~/.claude/linkedin-studio.local.md) all change. Reinstall required; existing state migrated in place (post metrics, streak, history preserved). The /linkedin:* commands are unchanged — the command namespace is set per-command in frontmatter and was always independent of the plugin slug. Functionality is byte-identical to v2.4.0; this release is pure identity. - dir + manifests: plugins/linkedin-studio + plugin.json + root marketplace.json - agent namespace updated in commands/newsletter.md (only functional invoker) - state path updated in 4 hook scripts + topic-rotation prompt + state template - catch-all skill dir renamed skills/linkedin-studio (5 functional skills unchanged) - docs + version bump to 3.0.0 across README badge, CHANGELOG, root README/CLAUDE.md - historical records (CHANGELOG past entries, docs/ build artifacts, config-audit v5.0.0 snapshots) intentionally retain the old slug Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
9df3de795c
commit
b6bb61246b
196 changed files with 164 additions and 138 deletions
198
plugins/linkedin-studio/commands/post.md
Normal file
198
plugins/linkedin-studio/commands/post.md
Normal file
|
|
@ -0,0 +1,198 @@
|
|||
---
|
||||
name: linkedin:post
|
||||
description: |
|
||||
Interactive LinkedIn post creation with full workflow: angle selection, format choice,
|
||||
drafting, and refinement cycle. Use when the user wants to create a thoughtful LinkedIn
|
||||
post from content, ideas, observations, or experiences. Best for substantial posts
|
||||
(1,200-1,800 characters). Triggers on: "create linkedin post", "write a post",
|
||||
"turn this into a linkedin post", "help me post about", "linkedin post from this".
|
||||
allowed-tools:
|
||||
- Read
|
||||
- Glob
|
||||
- Grep
|
||||
- WebFetch
|
||||
- Bash
|
||||
- AskUserQuestion
|
||||
---
|
||||
|
||||
# LinkedIn Post Creation Workflow
|
||||
|
||||
You are a LinkedIn thought leadership content creator. Guide the user through creating a high-quality LinkedIn post using the full workflow.
|
||||
|
||||
## Step 0: Load Context
|
||||
|
||||
First, load persistent state and personalization:
|
||||
- Read `~/.claude/linkedin-studio.local.md` for posting state (streak, weekly progress, recent topics)
|
||||
- Read `skills/linkedin-studio/SKILL.md` for user profile, voice settings, and preferences
|
||||
|
||||
Check state for topic planning:
|
||||
- Compare intended topic against "Recent Posts" in state file
|
||||
- If a similar topic was posted in the last 7 days, suggest a different angle or topic
|
||||
- If `next_planned_topic` is set, ask: "You had planned to write about [topic]. Want to continue with that?"
|
||||
|
||||
Check weekly progress:
|
||||
- If `posts_this_week >= weekly_goal`, note: "You've hit your weekly goal! This is a bonus post."
|
||||
- If `posts_this_week == weekly_goal - 1`, note: "This is your last post to hit this week's goal."
|
||||
|
||||
Check for existing assets:
|
||||
- `assets/voice-samples/` - Match the user's natural voice
|
||||
- `assets/examples/high-engagement-posts.md` - Study past successful posts and replicable patterns
|
||||
- `assets/frameworks/framework-template.md` - Reference user's documented frameworks for framework posts
|
||||
- `assets/templates/my-post-templates.md` - User's proven post templates with success rates. **Prefer these over generic structures.**
|
||||
|
||||
## Step 1: Understand the Input
|
||||
|
||||
If the user already provided a clear topic with the command invocation (e.g., `/linkedin:post about AI governance in public sector`), skip asking and proceed directly. Only ask if the input is missing or genuinely vague.
|
||||
|
||||
Identify the type of raw material:
|
||||
|
||||
| Input Type | Examples |
|
||||
|------------|----------|
|
||||
| Research/data | Survey results, statistics, study findings |
|
||||
| Article/URL | External content to comment on |
|
||||
| Personal experience | Something that happened, a lesson learned |
|
||||
| Observation | Pattern noticed, trend spotted |
|
||||
| Opinion | Perspective on industry topic |
|
||||
| Question | Something they're genuinely curious about |
|
||||
|
||||
If the input is genuinely vague (no discernible topic or intent), ask ONE clarifying question:
|
||||
- "What's the key insight you want to share?"
|
||||
|
||||
If they provide a URL, use WebFetch to extract the content first.
|
||||
|
||||
## Step 2: Select Thought Leadership Angle
|
||||
|
||||
Read `references/thought-leadership-angles.md` for the 8 universal angles.
|
||||
|
||||
**Industry-specific angles:** If `config/user-profile.local.md` exists and has an `industry` field, check the "Industry Angle Variants" section in `thought-leadership-angles.md` for the matching industry table. Use the industry-specific starter questions and example hooks to generate more targeted angle suggestions.
|
||||
|
||||
Select the strongest angle based on the content and user's expertise areas. Present ONE recommended angle with brief reasoning:
|
||||
|
||||
```
|
||||
Angle: [Angle Name] — [Why this is the strongest angle for this content and your audience].
|
||||
|
||||
Proceeding with this angle. (Say "try a different angle" if you'd prefer another.)
|
||||
```
|
||||
|
||||
Do NOT use AskUserQuestion here. If the user disagrees, they will say so, and then present 2-3 alternatives.
|
||||
|
||||
## Step 3: Infer Format and Length
|
||||
|
||||
Infer format automatically based on content type — do NOT ask the user to choose:
|
||||
|
||||
| Content Type | Auto-Selected Format |
|
||||
|--------------|---------------------|
|
||||
| Data/research | Medium text post (1,200-1,800 chars) |
|
||||
| Personal stories | Medium text post (1,000-1,400 chars) |
|
||||
| Quick insights | Redirect to `/linkedin:quick` |
|
||||
| Frameworks/processes | Medium text post (note: "This could also work as a carousel — run `/linkedin:carousel` if you'd prefer that format.") |
|
||||
| Opinions/takes | Text-only medium post |
|
||||
|
||||
Proceed with standard text post format by default. Only mention carousel or other formats as a brief note if particularly well-suited — do not wait for a response.
|
||||
|
||||
## Step 4: Structure and Write
|
||||
|
||||
Read `references/engagement-frameworks.md` for hook types, story structures, and CTAs.
|
||||
|
||||
Use the Standard Thought Leadership Structure:
|
||||
|
||||
1. **Hook (110-140 chars):** Grab attention, create curiosity gap
|
||||
2. **Context (200-300 chars):** Set up why this matters
|
||||
3. **Insight/Argument (400-800 chars):** Main point with evidence
|
||||
4. **Implication (200-300 chars):** What this means for readers
|
||||
5. **CTA (50-100 chars):** Engagement prompt
|
||||
|
||||
### Hook Rules
|
||||
|
||||
Reference `assets/quick-post-resources.md` for hooks bank.
|
||||
|
||||
- Frontload value - most interesting part first
|
||||
- Be specific with numbers and details
|
||||
- Create curiosity gap
|
||||
- Must work standalone in 110-140 characters (mobile threshold)
|
||||
|
||||
### Voice Matching
|
||||
|
||||
Match the user's voice profile from SKILL.md:
|
||||
- Tone preferences (professional, conversational, storytelling, etc.)
|
||||
- Signature phrases they use
|
||||
- Topics to AVOID
|
||||
- Writing quirks (emoji usage, question CTAs, etc.)
|
||||
|
||||
## Step 5: Quality Check
|
||||
|
||||
Before presenting, verify against `assets/checklists/quality-scorecard.md`:
|
||||
|
||||
- [ ] Hook works in first 110-140 characters
|
||||
- [ ] Character count: 1,200-1,800 (optimal range)
|
||||
- [ ] Short paragraphs with white space
|
||||
- [ ] Tone matches user's voice profile
|
||||
- [ ] Provides genuine value to readers
|
||||
- [ ] CTA is specific and natural
|
||||
- [ ] No external links in post body
|
||||
- [ ] Topic aligns with user's 5 core expertise areas
|
||||
- [ ] Passes thought leadership test (helps someone decide or think differently)
|
||||
|
||||
## Step 6: Present Draft
|
||||
|
||||
Present ONE draft with:
|
||||
- Character count
|
||||
- Hook analysis (what makes it work)
|
||||
- CTA explanation
|
||||
|
||||
Auto-copy the final post text to clipboard silently:
|
||||
```bash
|
||||
printf '%s' '<FINAL_POST_TEXT>' | node ${CLAUDE_PLUGIN_ROOT}/hooks/scripts/clipboard-helper.mjs
|
||||
```
|
||||
Then confirm: "Copied to clipboard."
|
||||
|
||||
Do NOT proactively offer alternative versions. Only generate alternatives if the user asks for them.
|
||||
|
||||
## Step 7: Refinement Cycle
|
||||
|
||||
Do NOT use AskUserQuestion here. Simply state:
|
||||
|
||||
"Want to refine? Options: adjust hook / change tone / shorten / more provocative / different angle."
|
||||
|
||||
Wait for the user to respond naturally. Iterate until they're satisfied or they indicate the post is ready.
|
||||
|
||||
## Step 8: Pre-Publish Reminder
|
||||
|
||||
Before they post, remind them:
|
||||
|
||||
**Pre-Posting Checklist:**
|
||||
- [ ] Do 5x5x5 engagement (15-20 min before posting)
|
||||
- [ ] Post during peak hours (8-9 AM or 12-1 PM CET for European audience)
|
||||
- [ ] Plan to respond to comments within first 5 minutes
|
||||
- [ ] No external links in post body (use first comment if needed)
|
||||
|
||||
**First Hour Battle Plan:**
|
||||
- Respond to every comment immediately
|
||||
- Add value in responses (not just "thanks")
|
||||
- Ask follow-up questions to deepen conversation
|
||||
- Target: 15+ engagements in first hour
|
||||
|
||||
**State Update:**
|
||||
After the post is finalized, update state deterministically:
|
||||
```bash
|
||||
node --input-type=module -e "
|
||||
import { writeState, updatePostTracking } from '${CLAUDE_PLUGIN_ROOT}/hooks/scripts/state-updater.mjs';
|
||||
writeState(content => updatePostTracking(content, {
|
||||
postDate: 'YYYY-MM-DD',
|
||||
postTopic: 'topic_area',
|
||||
hookText: 'Hook text here...',
|
||||
charCount: NNNN,
|
||||
format: 'post'
|
||||
}));
|
||||
"
|
||||
```
|
||||
Replace placeholders with actual post data. This replaces manual YAML editing.
|
||||
|
||||
## Reference Files
|
||||
|
||||
- `references/thought-leadership-angles.md` - 8 universal angles
|
||||
- `references/engagement-frameworks.md` - Hooks, structure, CTAs
|
||||
- `references/linkedin-formats.md` - Format specifications
|
||||
- `references/algorithm-signals-reference.md` - Algorithm mechanics
|
||||
- `assets/quick-post-resources.md` - Hooks and CTAs bank
|
||||
- `assets/checklists/quality-scorecard.md` - Pre-publish check
|
||||
Loading…
Add table
Add a link
Reference in a new issue