LinkedIn post generation from meeting transcripts, Slack dumps, and other source material, written in the user's personal writing style. Use this skill when: generating LinkedIn posts, creating social content from internal material, ghostwriting LinkedIn content, or when the user mentions LinkedIn, social posts, or content generation from transcripts/notes. Supports personal style profiles stored locally per user. Can auto-pull source material from Fireflies.ai, Slack channels, and Google Drive.
From caspernpx claudepluginhub casper-studios/casper-marketplace --plugin casperThis skill uses the workspace's default tool permissions.
references/prompt-template.mdreferences/source-integrations.mdreferences/style-setup.mdsource-material/README.mdSearches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Searches prompts.chat for AI prompt templates by keyword or category, retrieves by ID with variable handling, and improves prompts via AI. Use for discovering or enhancing prompts.
Compares coding agents like Claude Code and Aider on custom YAML-defined codebase tasks using git worktrees, measuring pass rate, cost, time, and consistency.
Generate LinkedIn posts from shared source material, written in each user's personal style.
~/.config/casper/linkedin-style.md (never committed)~/.config/casper/linkedin-sources.md (never committed)source-material/references/prompt-template.mdCheck if ~/.config/casper/linkedin-style.md exists.
If it does NOT exist, run the style setup flow:
https://linkedin.com/posts/...) or paste the text directly."python ${CLAUDE_PLUGIN_ROOT}/skills/apify-scrapers/scripts/scrape_linkedin_posts.py search "{url}" --max-posts 1
Extract the post text from the JSON output. If a URL fails to fetch, ask the user to paste that post's text instead.~/.config/casper/ directory if it doesn't exist~/.config/casper/linkedin-style.md using this format:# LinkedIn Style Profile
Generated: [date]
## Tone
[analysis]
## Structure Patterns
[paragraph length, line breaks, formatting habits]
## Hook Style
[how they open posts]
## CTA / Closing Style
[how they end posts — questions, challenges, etc.]
## Vocabulary & Phrases
[distinctive phrases, word choices, energy level]
## Sample Posts
[the 3 original posts, for reference]
/casper:generate-linkedin-post --setup"After style setup completes (or if style exists but source-material/ is empty), check for source material:
source-material/ contains any .md files besides README.md--setup-sources flow to configure Fireflies, Slack, or Google Drive auto-pulling--add-source flow to let the user paste a transcript, notes, or other contentIf style config exists and source material is available, proceed with generation:
~/.config/casper/linkedin-style.md${CLAUDE_PLUGIN_ROOT}/skills/linkedin-post-generator/source-material/ (excluding README.md)${CLAUDE_PLUGIN_ROOT}/skills/linkedin-post-generator/references/prompt-template.md| Flag | Behavior |
|---|---|
| (none) | Normal generation flow |
--setup | Re-run style setup, overwrite existing config |
--setup-sources | Configure which Fireflies, Slack, and Drive sources to pull from |
--refresh | Pull fresh source material from configured integrations, then generate |
--view-style | Read and display ~/.config/casper/linkedin-style.md |
--view-sources | List and summarize all files in source-material/ |
--add-source | Prompt user to paste new content, save as new .md file in source-material/ |
--setup-sourcesInteractive setup for automatic source pulling. Read references/source-integrations.md for full details.
user_email in the configFIREFLIES_API_KEY env var)SLACK_BOT_TOKEN env var)FIREFLIES_API_KEY in your environment. Get your API key from https://app.fireflies.ai/api"SLACK_BOT_TOKEN in your environment. Create a Slack app at https://api.slack.com/apps"~/.config/casper/linkedin-sources.md/casper:generate-linkedin-post --refresh to pull fresh content."--refreshPull fresh source material from all configured integrations before generating posts. Read references/source-integrations.md for the full integration workflow.
Summary of the flow:
~/.config/casper/linkedin-sources.md — if missing, run --setup-sources firstpython ${CLAUDE_PLUGIN_ROOT}/skills/transcript-search/scripts/fireflies_transcript_search.py "{term}" --days-back {N} --content --json
user_email (from source config) appears in the transcript's participants arraypython ${CLAUDE_PLUGIN_ROOT}/skills/slack-automation/scripts/slack_search.py read "{channel}" --days {N}python ${CLAUDE_PLUGIN_ROOT}/skills/google-workspace/scripts/gdrive_search.py files "{term}" --modified-days {N} --jsonsource-material/:
fireflies-{YYYY-MM-DD}-{title-slug}.mdslack-{channel}-{YYYY-MM-DD}.mdgdrive-{title-slug}-{YYYY-MM-DD}.md--view-styleRead ~/.config/casper/linkedin-style.md and display it. If it doesn't exist, say "No style profile found. Run /casper:generate-linkedin-post --setup to create one."
--view-sourcesList all .md files in ${CLAUDE_PLUGIN_ROOT}/skills/linkedin-post-generator/source-material/ (excluding README.md). For each file, show the filename and a 1-line summary of its contents.
--add-sourceteam-standup-jan-2025)"${CLAUDE_PLUGIN_ROOT}/skills/linkedin-post-generator/source-material/[name].md| File | When to Read |
|---|---|
references/prompt-template.md | Every generation run — contains voice rules, few-shot examples, confidentiality rules |
references/source-integrations.md | When running --refresh or --setup-sources — contains script paths, arguments, output conversion |
references/style-setup.md | When running --setup — contains analysis framework for style profiling |
source-material/*.md | Every generation run — raw content to extract post ideas from |