LinkedIn Content Editor

LinkedIn Content — format, draft, lint

by alirezarezvani · MIT license · ★ 26,349 on GitHub · updated Aug 30

LinkedIn Content — format, draft, lint cover

Use when someone wants to write, edit, or lint a LinkedIn post — a story, how-to, opinion piece, carousel script, video script, or poll — or wants an article, talk, or transcript repurposed into posts. Triggers on "write a LinkedIn…

---
name: linkedin-content
description: Use when someone wants to write, edit, or lint a LinkedIn post — a story, how-to, opinion piece, carousel script, video script, or poll — or wants an article, talk, or transcript repurposed into posts. Triggers on "write a LinkedIn post", "is this hook any good", "review my post", "turn this into LinkedIn posts", "carousel", "what format should this be". Lints posts 0-100 on mechanics, hook, integrity, and accessibility; picks the format the material actually supports; and splits long sources into standalone units with a reuse ledger.
license: MIT
metadata:
  version: 1.0.0
  author: Alireza Rezvani
  category: marketing
  updated: 2026-08-25
---

# LinkedIn Content — format, draft, lint

The post is not the deliverable; the specific thing only this person can say is. The scripts
handle format choice, mechanical faults, and de-duplication. The interesting part — what
actually happened and what it cost — comes from the user, and cannot be generated.

## Workflow

Overview

The post is not the deliverable; the specific thing only this person can say is. The scripts handle format choice, mechanical faults, and de-duplication. The interesting part — what actually happened and what it cost — comes from the user, and cannot be generated.

Manual install (npx, ZIP)
Claude Codenpx skills add alirezarezvani/claude-skills --skill linkedin-content -g -a claude-code
Claude Code (degit)npx degit alirezarezvani/claude-skills/marketing/linkedin/skills/linkedin-content#main ~/.claude/skills/linkedin-content
Claude.ai / desktopZip the folder and upload it under Settings → Capabilities → Skills.
Codex, Cursor, other agentsPoint them at SKILL.md. The other files are plain text.

Connects with Agent Alley MCP · agentalley.io/mcp

Files included

  • SKILL.md5.4 KB
Read SKILL.md here
alirezarezvani/main1 file shown
SKILL.md
Show the full text100 lines

LinkedIn Content — format, draft, lint

The post is not the deliverable; the specific thing only this person can say is. The scripts handle format choice, mechanical faults, and de-duplication. The interesting part — what actually happened and what it cost — comes from the user, and cannot be generated.

Workflow

1. Check the brief exists. If there is no positioning brief, offer linkedin-strategy first as a question. Posts without pillars are noise. Never chain silently.

2. Pick the format from the material, not from fashion.

python3 scripts/format_picker.py --goal authority --material data --material tutorial \
  --minutes 120 --output human

Exit 0 recommends / 2 asks when the top two are within a point (tie-break on which one they would enjoy making — the one they repeat beats the one that scores higher once) / 3 no fit, go get material. It refuses video with no camera and no footage, and a poll with no real decision behind it.

3. Draft. Interview for specifics before writing a line: the number, the mistake, the sentence someone said. Then write to the fold — the first ~140 characters are the whole post for most readers, and a sentence must complete inside them.

4. Lint before it ships.

python3 scripts/post_linter.py --input draft.md --has-image --output human

Exit 0 SHIP / 2 REVISE (or any blocking finding) / 3 REWRITE. Blocking findings have named consequences: over the 3,000-character cap; engagement bait, named as demoted content in the Professional Community Policies; Unicode pseudo-bold, which screen readers announce as mathematical symbols and search does not index as words. Two passes is normal; the stop condition is exit 0 or a stated decision to accept a warning.

5. Repurposing. Split a source and keep the ledger — it prevents the specific recurring failure of the same idea going out three times over eight months. Commit it alongside the source; it is project state, not a cache. Every unit is source material, not a post: add the sentence only the author can write — what it cost, or what they would do differently.

python3 scripts/repurpose_splitter.py --input talk.md --ledger .linkedin-ledger.json --output human
python3 scripts/repurpose_splitter.py --input talk.md --ledger .linkedin-ledger.json --record 2 --posted-on 2026-08-25

Rules

  • Never fabricate a number, a client, a result, or a quote. Not one, not as a placeholder.
  • Write to the mobile fold. A sentence completes before character 140.
  • Links in the first comment, and say so in the post.
  • No Unicode pseudo-bold, ever. It is an accessibility failure, not a style choice.
  • Alt text on every image; captions on every video. LinkedIn does not add them for you.
  • No engagement bait. Ask the question the post actually earned.
  • The author reads every line before it ships. They are the author of record.

Scripts

Script Role
scripts/post_linter.py 0-100 across mechanics / hook / integrity / accessibility; blocking findings for the cap, bait, and pseudo-bold.
scripts/format_picker.py Ranks nine native formats against goal, material, and minutes; refuses camera-less video and decision-less polls.
scripts/repurpose_splitter.py Splits a source into standalone units, scores them, and skips anything already in the reuse ledger.

References and assets

Distinct from

  • linkedin-strategy — decides what the posts are about. This writes them.
  • linkedin-engagement — comments and DMs. A comment is a different craft with a different budget; it lives there.
  • marketing-skill/copywriting / content-humanizer — general copy and de-AI passes. Reach for those for tone; this one owns LinkedIn's mechanics and its accessibility floor.

Version: 1.0.0

1---
2name: linkedin-content
3description: Use when someone wants to write, edit, or lint a LinkedIn post — a story, how-to, opinion piece, carousel script, video script, or poll — or wants an article, talk, or transcript repurposed into posts. Triggers on "write a LinkedIn post", "is this hook any good", "review my post", "turn this into LinkedIn posts", "carousel", "what format should this be". Lints posts 0-100 on mechanics, hook, integrity, and accessibility; picks the format the material actually supports; and splits long sources into standalone units with a reuse ledger.
4license: MIT
5metadata:
6 version: 1.0.0
7 author: Alireza Rezvani
8 category: marketing
9 updated: 2026-08-25
10---
11 
12# LinkedIn Content — format, draft, lint
13 
14The post is not the deliverable; the specific thing only this person can say is. The scripts
15handle format choice, mechanical faults, and de-duplication. The interesting part — what
16actually happened and what it cost — comes from the user, and cannot be generated.
17 
18## Workflow
19 
20**1. Check the brief exists.** If there is no positioning brief, offer `linkedin-strategy`
21first as a question. Posts without pillars are noise. Never chain silently.
22 
23**2. Pick the format from the material, not from fashion.**
24 
25```bash
26python3 scripts/format_picker.py --goal authority --material data --material tutorial \
27 --minutes 120 --output human
28```
29 
30Exit 0 recommends / 2 asks when the top two are within a point (tie-break on which one they
31would enjoy making — the one they repeat beats the one that scores higher once) / 3 no fit,
32go get material. It refuses video with no camera and no footage, and a poll with no real
33decision behind it.
34 
35**3. Draft.** Interview for specifics before writing a line: the number, the mistake, the
36sentence someone said. Then write to the fold — **the first ~140 characters are the whole
37post for most readers**, and a sentence must complete inside them.
38 
39**4. Lint before it ships.**
40 
41```bash
42python3 scripts/post_linter.py --input draft.md --has-image --output human
43```
44 
45Exit 0 SHIP / 2 REVISE (or any blocking finding) / 3 REWRITE. Blocking findings have named
46consequences: over the 3,000-character cap; engagement bait, named as demoted content in the
47Professional Community Policies; Unicode pseudo-bold, which screen readers announce as
48mathematical symbols and search does not index as words. Two passes is normal; the stop
49condition is exit 0 or a stated decision to accept a warning.
50 
51**5. Repurposing.** Split a source and keep the ledger — it prevents the specific recurring
52failure of the same idea going out three times over eight months. Commit it alongside the
53source; it is project state, not a cache. Every unit is source material, not a post: add the
54sentence only the author can write — what it cost, or what they would do differently.
55 
56```bash
57python3 scripts/repurpose_splitter.py --input talk.md --ledger .linkedin-ledger.json --output human
58python3 scripts/repurpose_splitter.py --input talk.md --ledger .linkedin-ledger.json --record 2 --posted-on 2026-08-25
59```
60 
61## Rules
62 
63- **Never fabricate a number, a client, a result, or a quote.** Not one, not as a placeholder.
64- **Write to the mobile fold.** A sentence completes before character 140.
65- **Links in the first comment**, and say so in the post.
66- **No Unicode pseudo-bold, ever.** It is an accessibility failure, not a style choice.
67- **Alt text on every image; captions on every video.** LinkedIn does not add them for you.
68- **No engagement bait.** Ask the question the post actually earned.
69- **The author reads every line before it ships.** They are the author of record.
70 
71## Scripts
72 
73| Script | Role |
74|---|---|
75| [`scripts/post_linter.py`](scripts/post_linter.py) | 0-100 across mechanics / hook / integrity / accessibility; blocking findings for the cap, bait, and pseudo-bold. |
76| [`scripts/format_picker.py`](scripts/format_picker.py) | Ranks nine native formats against goal, material, and minutes; refuses camera-less video and decision-less polls. |
77| [`scripts/repurpose_splitter.py`](scripts/repurpose_splitter.py) | Splits a source into standalone units, scores them, and skips anything already in the reuse ledger. |
78 
79## References and assets
80 
81- [`references/hook_and_fold_mechanics.md`](references/hook_and_fold_mechanics.md) — the first 140 characters, and the openers to delete on sight (7 sources)
82- [`references/post_formats_canon.md`](references/post_formats_canon.md) — what each native format is good at, and the carousel trap (7 sources)
83- [`references/repurposing_discipline.md`](references/repurposing_discipline.md) — standalone units, the reuse ledger, source types and their risks (7 sources)
84- [`references/accessibility_and_inclusion.md`](references/accessibility_and_inclusion.md) — pseudo-bold, alt text, captions, and why they are blocking (7 sources)
85 
86- [`assets/post_templates.md`](assets/post_templates.md) — five worked post shapes with the hook already doing its job
87- [`assets/example_post.md`](assets/example_post.md) — a post that passes the linter, annotated
88 
89## Distinct from
90 
91- **`linkedin-strategy`** — decides what the posts are about. This writes them.
92- **`linkedin-engagement`** — comments and DMs. A comment is a different craft with a
93 different budget; it lives there.
94- **`marketing-skill/copywriting` / `content-humanizer`** — general copy and de-AI passes.
95 Reach for those for tone; this one owns LinkedIn's mechanics and its accessibility floor.
96 
97---
98 
99**Version:** 1.0.0
100 
View all files on GitHub →

Details

Updated
Aug 30, 2026
License
MIT
Stars on the repo
★ 26,349
Checked
Source
alirezarezvani/claude-skills ↗
Creator
alirezarezvani · 363 listings
View creator

Similar skills

See all →
SkillLast 30 Days Researchmvanhorn/last30days-skill · by mvanhornResearch what people actually say about any topic in the last 30 days. Pulls posts and engagement from Reddit, X, YouTube, TikTok, Hacker News, Polymarket, GitHub, and the web. Includes a doctor health check to diagnose broken or missing sources.★ 63.5k GitHub starsSkillSocial Platform Scraperdanielmiessler/LifeOS · by danielmiesslerScrapes social platforms, business data, and e-commerce via Apify actors — Instagram, LinkedIn, TikTok, YouTube, Facebook, Google Maps, Amazon, and web crawls — filtering in code. USE WHEN scrape Instagram, scrape LinkedIn, scrape TikTok, scrape YouTube, scrape Facebook, Google Maps leads, Amazon reviews, business intelligence, multi-platform social listening, competitive analysis, lead generation, social monitoring, Apify actors, web crawl, extract contacts. NOT FOR X/Twitter account operations like posting, threads, or bookmarks (those need a dedicated X API client), 4-tier progressive scraping with proxy escalation (use BrightData), or real-Chrome bot bypass and computer use (use Interceptor).★ 19.3k GitHub starsSkillWeChat Article Publishertsingyuai/growth-lab · by tsingyuai微信公众号长文增长闭环 —— 从读者问题与复刻锚选题、写出可验证的公众号长文、预览与合规检查、同步微信草稿、三重确认下受控发布,到回收阅读与转化数据并复盘。用户要求写公众号、把内容改成公众号、同步或发布微信草稿、查看公众号数据或复盘时使用。★ 2k GitHub starsSkillTwitter Content SearchReScienceLab/opc-skills · by ReScienceLabSearch and retrieve content from Twitter/X. Get user info, tweets, replies, followers, communities, spaces, and trends via twitterapi.io. Use when user mentions Twitter, X, or tweets.★ 1.8k GitHub starsSkillYouTube Script Writercwinvestments/memstack · by cwinvestmentsUse this skill when the user says 'YouTube script', 'video script', 'write script for YouTube', 'YouTube video outline', or is creating scripted content for a YouTube video with hooks, chapters, and CTAs. Do NOT use for TikTok/Reels short-form scripts or webinar presentations.★ 423 GitHub starsSkillInternet Research RouterOotto-AI/claude-content-skills · by Ootto-AIMUST USE when user wants to 调研/research/搜索/search/查/找/look up anything on the internet — e.g. 全网调研 X / 帮我调研一下 X / 查一下 X / 搜搜 X / 看看大家怎么评价 X / X 上有什么讨论 / research this topic。 Also MUST USE when user mentions any platform or shares any URL/链接: 小红书/xiaohongshu/xhs, Twitter/推特/X, B站/bilibili, Reddit, V2EX, LinkedIn/领英/招聘/求职/jobs, YouTube, GitHub code search, 小宇宙播客, 雪球/股票行情, RSS feeds, or any web URL. 13 platforms, multi-backend routing (OpenCLI / per-platform CLIs / APIs). Zero config for 6 channels. Run `agent-reach doctor --json` to see which backend serves each platform right now. NOT for: 写报告/数据分析/翻译等内容加工(本 skill 只负责从互联网获取内容); 发帖/评论/点赞等写操作;已有专门 skill 的平台(先用专门 skill)。 【路由方式】SKILL.md 包含路由表和常用命令,复杂场景需按需阅读对应分类的 references/*.md。 分类:search / social (小红书/推特/B站/V2EX/Reddit) / career(LinkedIn) / dev(github) / web(网页/文章/RSS) / video(YouTube/B站/播客)。★ 139 GitHub stars

More from alirezarezvani

SkillExperiment Resume Toolalirezarezvani/claude-skills · by alirezarezvaniResume a paused experiment. Checkout the experiment branch, read results history, continue iterating. Use when the user runs /ar:ar-resume or asks to pick up a previously started autoresearch experiment.★ 26.3k GitHub starsSkillExperiment Dashboard Vieweralirezarezvani/claude-skills · by alirezarezvaniShow experiment dashboard with results, active loops, and progress. Use when the user runs /ar:ar-status or asks how an autoresearch experiment is going.★ 26.3k GitHub starsSkillAutonomous Experiment Runneralirezarezvani/claude-skills · by alirezarezvaniStart an autonomous experiment loop with user-selected interval (10min, 1h, daily, weekly, monthly). Uses CronCreate for scheduling. Use when the user runs /ar:loop or asks to run an autoresearch experiment continuously on a schedule.★ 26.3k GitHub starsSkillSingle Experiment Iteratoralirezarezvani/claude-skills · by alirezarezvaniRun a single experiment iteration. Edit the target file, evaluate, keep or discard. Use when the user runs /ar:run or asks for one manual autoresearch iteration.★ 26.3k GitHub starsSkillAutoresearch Experiment Setupalirezarezvani/claude-skills · by alirezarezvaniSet up a new autoresearch experiment interactively. Collects domain, target file, eval command, metric, direction, and evaluator. Use when the user runs /ar:setup or asks to start optimizing a file with the autoresearch loop.★ 26.3k GitHub starsSkillExecutive Boardroom Deliberatoralirezarezvani/claude-skills · by alirezarezvani/cs:boardroom <brief> — 6-phase multi-role deliberation across the C-suite with Phase 2 isolation, critic pre-screen, and synthesis. Outputs a board memo. Use when a decision spans multiple executive domains — e.g. a pricing change touching finance, positioning, and product, or a raise-vs-cut runway call.★ 26.3k GitHub stars