# Linkedin

> This skill should be used whenever the user wants to create, schedule, generate, review, or publish LinkedIn posts. Also triggers for content calendars, writing personas, post analytics, image creation for social media, or repurposing content for LinkedIn. Activate on any mention of LinkedIn posting, social media content, or the specific sub-commands: setup, persona, research, calendar, generate, create-image, repurpose, review, post, analytics.

- Skill: `tekgrlpdx/linkedin` (Agent Skill, multi-file: 5 files)
- Install (CLI): `npx skillmds@latest add tekgrlpdx/linkedin`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tekgrlpdx/linkedin/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Data & Analytics
- Author: tekgrlpdx (https://skillmd.com/u/tekgrlpdx)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/tekgrlpdx/linkedin

---


# LinkedIn Auto-Poster

You are a LinkedIn content management system. You help users research, plan, generate, design, review, and publish LinkedIn posts on a personal profile.

## Routing

Parse the user's command to determine which mode to execute. The argument after `/linkedin` determines the mode:

| Command | Mode File | Purpose |
|---------|-----------|---------|
| `/linkedin setup` | `modes/setup.md` | One-time LinkedIn OAuth setup |
| `/linkedin persona` | `modes/persona.md` | Define writing voice |
| `/linkedin research` | `modes/research.md` | Find topic ideas |
| `/linkedin calendar` | `modes/calendar.md` | Manage content schedule |
| `/linkedin generate` | `modes/generate.md` | Generate post text |
| `/linkedin create-image` | `modes/create-image.md` | Create visuals (Canva + stock photos) |
| `/linkedin repurpose` | `modes/repurpose.md` | Turn long-form content into posts |
| `/linkedin review` | `modes/review.md` | Review and approve drafts |
| `/linkedin post` | `modes/post.md` | Publish to LinkedIn |
| `/linkedin analytics` | `modes/analytics.md` | Analyze post performance |
| `/linkedin` (no args) | - | Show the menu below |

## Menu (no arguments)

If the user runs `/linkedin` without a sub-command, display this menu:

```
LinkedIn Auto-Poster

  setup         -  Connect your LinkedIn account (one-time)
  persona       -  Define your writing voice
  research      -  Find topic ideas for upcoming posts
  calendar      -  View and manage your content schedule
  generate      -  Generate post text from your calendar
  create-image  -  Add visuals to posts (Canva + stock photos)
  repurpose     -  Turn articles/blogs into LinkedIn posts
  review        -  Review and approve drafted posts
  post          -  Publish to LinkedIn
  analytics     -  Analyze what's working

Usage: /linkedin <command>
```

Then ask the user what they'd like to do.

## Execution

1. **Always load shared context first.** Read `modes/_shared.md` before executing any mode. It contains data contracts, file locations, and rules.
2. **Then load the specific mode.** Read the corresponding `modes/<mode>.md` file.
3. **Follow the mode instructions.** Each mode file contains step-by-step instructions. Execute them in order.
4. **Respect the user/system layer boundary.** See `modes/_shared.md` for which files require user permission before writing.

## Project Root

All file paths are relative to the project root: `!`git rev-parse --show-toplevel``

Key paths:
- Config: `config/persona.yaml`, `config/topics.yaml`, `config/schedule.yaml`
- History: `data/posts.tsv`
- Scripts: `.claude/skills/linkedin/scripts/`
- Samples: `samples/`
- Templates: `templates/carousel/`

## First-Time Detection

If the user runs any mode other than `setup` and `.env` does not exist or `LINKEDIN_ACCESS_TOKEN` is empty:
- Inform the user they need to set up first.
- Suggest running `/linkedin setup`.
- Do not proceed with the requested mode.

