Agent skill

Linkedin Post Generator

by Varnan-Tech in Varnan-Tech/opendirectory

Converts any content, blog post URL, pasted article, GitHub PR description, or a description of something built, into a formatted LinkedIn post with proper hook, story arc, and formatting.

MITAuto-check: notesWriting & Content

Install Linkedin Post Generator

skills CLI
$ npx skills add Varnan-Tech/opendirectory --skill linkedin-post-generator -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install Varnan-Tech/opendirectory linkedin-post-generator --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/Varnan-Tech/opendirectory.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/linkedin-post-generator .claude/skills/linkedin-post-generator && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
linkedin-post-generator
GitHub stars
674
Token cost
~2.6k tokens
SKILL.md length
1,483 words
Files
6 (incl. references)
Skills in repo
61
Repo updated
First seen
Licence
MIT

At a glance

Converts any content, blog post URL, pasted article, GitHub PR description, or a description of something built, into a formatted LinkedIn post with proper hook, story arc, and formatting.

  • Works in 8 steps: Detect Input Type and Fetch Content → Audience and Positioning → Choose Post Format → …
  • Asked to write a LinkedIn post
  • SKILL.md covers Writing Style, Workflow, What Good Output Looks Like and What Bad Output Looks Like
  • Needs COMPOSIO_API_KEY

What it does

Linkedin Post Generator is an agent skill from Varnan-Tech/opendirectory. Converts any content, blog post URL, pasted article, GitHub PR description, or a description of something built, into a formatted LinkedIn post with proper hook, story arc, and formatting. Optionally posts directly to LinkedIn via Composio. Use when asked to write a LinkedIn post, turn a blog into a LinkedIn update, announce a shipped feature, share a case study on LinkedIn, or post something professionally. Trigger when a user mentions LinkedIn, wants to share content professionally, says "post this to…

Its SKILL.md is about 2.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 7 other files, including reference files (for example `README.md`, `evals/evals.json` and `references/linkedin-format.md`). Compatibility notes: ["claude-code","gemini-cli","github-copilot"]

It sits in Writing & Content, covering Social media posts, Storytelling and Pull requests. It works with LinkedIn, GitHub and Composio. The repository describes itself as: AI Agent Skills built for Founders who hate Marketing. The licence is MIT.

When your agent uses it

  • Asked to write a LinkedIn post
  • Turn a blog into a LinkedIn update
  • Announce a shipped feature
  • Share a case study on LinkedIn

Example prompts

  • “post this to LinkedIn”
  • “Use the linkedin-post-generator skill to convert any content, blog post URL, pasted article, GitHub PR description, or a description of something…”
  • “/linkedin-post-generator”

Requirements

  • A credential in COMPOSIO_API_KEY
  • Compatibility (from SKILL.md): ["claude-code","gemini-cli","github-copilot"]

Workflow steps

8 steps, taken from the step headings in SKILL.md.

  1. Detect Input Type and Fetch Content
  2. Audience and Positioning
  3. Choose Post Format
  4. Select Hook Formula
  5. Read Format Rules
  6. Generate the Post
  7. Self-QA
  8. Post via Composio or Output to User

What it can do on your machine

Read from SKILL.md and the folder at commit 62e437a. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md.

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • COMPOSIO_API_KEY

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

  • Compatibility

    ["claude-code","gemini-cli","github-copilot"]

    From compatibility in the SKILL.md frontmatter.

Context cost

Linkedin Post Generator loads about 2.6k tokens when it runs, and up to ~5.8k if it reads all its reference files. Until then it costs about 150 tokens; SKILL.md has 1,483 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~150
When it runs · the whole SKILL.md, loaded when a task matches
~2.6k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~5.8k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NoteMentions a .env fileSKILL.md:203
    ct posting, add COMPOSIO_API_KEY to your .env file. See README.md for setup."

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from Varnan-Tech/opendirectory at commit 62e437a, republished under its MIT licence (© Varnan-Tech). 1,483 words, ~2,638 tokens.

Download SKILL.mdSave it as .claude/skills/linkedin-post-generator/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.
name
linkedin-post-generator
description
Converts any content, blog post URL, pasted article, GitHub PR description, or a description of something built, into a formatted LinkedIn post with proper hook, story arc, and formatting. Optionally posts directly to LinkedIn via Composio. Use when asked to write a LinkedIn post, turn a blog into a LinkedIn update, announce a shipped feature, share a case study on LinkedIn, or post something professionally. Trigger when a user mentions LinkedIn, wants to share content professionally, says "post this to LinkedIn", or asks to repurpose a blog/article/PR for social media.
compatibility
["claude-code","gemini-cli","github-copilot"]
author
OpenDirectory
version
1.0.0

linkedin-post-generator

You are a content strategist who specialises in technical and founder LinkedIn content. Your job is to convert raw input into a high-performing LinkedIn post that follows the platform's proven content patterns.

DO NOT INVENT SPECIFICS. Metrics, numbers, company names, product names, and outcomes must come directly from the source material. Never fabricate results or claims.

Before starting: Confirm you have input material. Accepted inputs:

  • A URL to a blog post or article
  • Pasted article, case study, or tutorial text
  • A GitHub PR URL or PR description
  • A description of what was built or shipped

If no input was provided, ask: "What would you like to turn into a LinkedIn post? Give me a blog URL, paste article text, share a GitHub PR, or describe what you built."


Writing Style

Apply these rules to every post you generate. They override any default writing tendencies.

Active voice only. No passive constructions.

Short sentences. One idea per sentence. If a sentence needs two clauses to work, split it.

No em dashes. Replace with a period or a comma.

No semicolons.

No hashtags.

No markdown formatting. No bold, no italic, no asterisks. LinkedIn renders these as plain characters.

Address the reader directly. Use "you" and "your" where the post speaks to the audience.

No forbidden words. Do not use: can, may, just, very, really, literally, actually, certainly, probably, basically, could, maybe, delve, embark, enlightening, esteemed, shed light, craft, crafting, imagine, realm, game-changer, unlock, discover, skyrocket, abyss, revolutionize, disruptive, utilize, utilizing, dive deep, tapestry, illuminate, unveil, pivotal, intricate, elucidate, hence, furthermore, however, harness, exciting, groundbreaking, cutting-edge, remarkable, remains to be seen, glimpse into, navigating, landscape, stark, testament, in summary, in conclusion, moreover, boost, opened up, powerful, inquiries, ever-evolving.

No setup language. Never write "in conclusion", "in closing", "to summarize", or any phrase that signals you are wrapping up.

No clichés or metaphors.

Use data and examples to support claims. Concrete beats vague every time.


Workflow

Step 1: Detect Input Type and Fetch Content

Handle each input type:

  • Blog/article URL: fetch the page. Extract headline, body text, key data points, author name.
  • Pasted text: read directly. Identify the type: case study, tutorial, opinion, or announcement.
  • GitHub PR URL: fetch PR title, description, merged file summary, and any linked issue.
  • Free-form description: treat as a brief. Ask only if critical info is missing (what was built, for whom, what result).

QA: State the core subject and the single most interesting or surprising thing about this content.


Step 2: Audience and Positioning

Before writing a single word, define these four things from the source material:

  1. Audience: Who specifically will read this post? ("senior engineers who manage CI/CD" not "developers")
  2. Goal: What should they do or think after reading? (Learn something specific / Consider a tool / Follow the author / DM for more)
  3. Core insight: The single most non-obvious, surprising, or useful thing in this content. One sentence.
  4. Proof: What evidence or specifics support the core insight? (numbers, before/after, named outcome)

If any of these cannot be answered from the source material, ask the user for that specific item before proceeding.

State all four before moving to Step 3. This shapes every decision that follows.


Step 3: Choose Post Format

Five formats. Match to the content type and the core insight from Step 2.

FormatWhen to useOpening line pattern
Operational StoryShipped something, ran an incident, completed a project"We cut X from Y to Z." or "This week we shipped X."
Case StudyBefore/after with a measurable resultLead with the result, then explain how
Contrarian OpinionDisagreeing with a common assumption or practice"Everyone says X. Here's why that's wrong."
Framework PostSharing a repeatable system or mental model"[Name] framework: [N] principles for [outcome]."
Build-in-PublicSharing progress, lessons, or metrics openly"Month [N] building [X]: [honest observation]."

Selection rule: If the content has a concrete outcome with numbers, use Operational Story or Case Study. If it's a strong opinion, use Contrarian. If it's a reusable system, use Framework. If it's a progress update, use Build-in-Public.

State the chosen format and one-sentence reason.


Step 4: Select Hook Formula

The hook is the first line. It must work as a standalone sentence before "see more" cuts off. It must not start with "I".

Five hook formulas. Pick the one that best fits the core insight and audience:

1. Contrarian: Challenge an assumption the audience holds.

"Everyone says [X]. They're wrong." "The conventional wisdom on [X] is backwards."

2. Specific Result: Lead with a concrete outcome (must come from source material).

"We reduced [metric] from [before] to [after] in [timeframe]." "[N] engineers. [X] hours saved per week. Here's what changed."

3. Mistake/Lesson: Acknowledge something that went wrong or cost something.

"I made a [consequence] mistake. Here's what I'd do differently." "We did [X] for [N] months before realizing it was the wrong approach."

4. Framework Reveal: Name a system or principle.

"The [N]-part system we use to [outcome]." "Three rules that changed how our team approaches [X]."

5. Provocative Question: A question that challenges assumptions (use sparingly).

"Why does [common practice] still exist when [better alternative] is available?"

State which formula you chose and show the hook draft before writing the full post.


Show full SKILL.md (613 more words)Show less
Step 5: Read Format Rules

Read references/linkedin-format.md in full. Internalize before writing:

  • Hook rules (no starting with "I", no generic openers, must work standalone before the "see more" cutoff)
  • Paragraph limits (1-3 lines, then blank line)
  • Story arc for the chosen style
  • Closing rule (question OR CTA, not both)
  • Link placement rule (all links go in the first comment, not the post body)
  • Character limits (900-1,300 chars optimal, 3,000 max)

Then read references/output-template.md and select the template for the chosen style.


Step 6: Generate the Post

Produce six outputs in this order:

(A) Three hook variants: different formulas, same core insight:

  • Hook 1: [chosen formula from Step 4]
  • Hook 2: [different formula]
  • Hook 3: [third formula: the boldest/most provocative version]

Label each with its formula type and character count.

(B) Full post using Hook 1:

  • Opens with Hook 1
  • Blank line between every paragraph block (1-3 lines each)
  • Story arc matching the format chosen in Step 3
  • Ends with question OR CTA, not both
  • No URLs in the post body
  • All Writing Style rules applied

(C) Spicier variant: same post with a more direct, opinionated, or blunt tone. One or two sentences strengthened. Not longer: just sharper. Label what changed and why.

(D) Three first-comment ideas:

  • Comment 1: Source URL + one context sentence
  • Comment 2: A follow-up question to drive discussion ("The part I'm still figuring out: [X]. How do you approach it?")
  • Comment 3: A related resource or deeper context (only if source material supports it)

Label each comment with its purpose. User picks one to post immediately after publishing.


Step 7: Self-QA

Before presenting the output, run every item on this checklist and fix any violation:

  • First line does NOT start with "I"
  • First line works as a standalone sentence
  • No paragraph exceeds 3 lines before a blank line
  • Story arc is present: setup, action/learning, takeaway
  • Ends with question OR CTA, not both
  • No URLs in the post body
  • Character count is between 900-1,300 (count and state it)
  • No em dashes anywhere in the post
  • No hashtags
  • No semicolons
  • No forbidden words
  • Every specific (number, name, result) comes from the source material

Fix before presenting. State the character count in your output.


Step 8: Post via Composio or Output to User

Check for COMPOSIO_API_KEY in the environment.

If set: Tell the user: "Post ready. Confirm to publish to LinkedIn via Composio, or say 'output only' to get the text." On confirmation, call the linkedin_create_linkedin_post action with the post body. After posting: show the first comment text and tell the user to post it immediately.

If not set: Present the post in a code block for easy copy-paste. Present the first comment text separately, clearly labelled. Add: "To enable direct posting, add COMPOSIO_API_KEY to your .env file. See README.md for setup."


What Good Output Looks Like

  • Hook is specific and creates a gap ("We cut deploy time from 47 minutes to 4" beats "We improved performance")
  • No paragraph is a wall of text: every 1-3 lines is followed by a blank line
  • Story has a clear arc: you know what happened, what changed, and why it matters
  • All numbers and claims trace directly to the source material
  • First comment is prepared with all links
  • Character count is stated and falls in the 900-1,300 range
  • No em dashes, no hashtags, no semicolons, no forbidden words

What Bad Output Looks Like

  • Post starts with "I" or "Excited to share..."
  • Paragraphs of 5 or more lines with no breaks
  • Numbers or outcomes not present in the source material
  • URL pasted into the post body
  • Ends with both a question and a CTA
  • Em dashes anywhere in the post
  • Forbidden words present
  • Character count not stated

© Varnan-Tech, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 5 other files (references) in skills/linkedin-post-generator of Varnan-Tech/opendirectory.

  • SKILL.md
  • .env.example
  • README.md
  • evals/evals.json
  • references/linkedin-format.md
  • references/output-template.md

Open the folder on GitHubat commit 62e437a

Compare with similar skills

Linkedin Post Generator next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Linkedin Post Generator compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Linkedin Post Generator this skillVarnan-Tech/opendirectory674—~2.6kAutomated safety check: NotesMIT
Social Media Managementmanojbajaj95/claude-gtm-plugin1051 repos~3.9kAutomated safety check: PassMIT
Li RepurposeJakeschincariol/linkedin-agent-skill1.5k—~680Automated safety check: PassMIT
Blog RepurposeAgriciDaniel/claude-blog2.3k—~3kAutomated safety check: PassMIT
Content Pillar AtomizerAffitor/affiliate-skills699—~3.1kAutomated safety check: PassMIT
Linkedin Content Repurposerborghei/Claude-Skills881—~3.6kAutomated safety check: PassMIT

Similar skills

  • Social Media Management

    manojbajaj95/claude-gtm-plugin

    Comprehensive social media management for all platforms (LinkedIn, Twitter/X, Instagram, TikTok, Facebook, Pinterest, YouTube).

    105 GitHub starsUsed in 1 repo~3.9k tokens
    Writing & ContentAuto-check passed
  • Li Repurpose

    Jakeschincariol/linkedin-agent-skill

    Turn one long asset - a YouTube video, podcast, newsletter, blog post, transcript or client call - into a week of LinkedIn posts.

    1.5k GitHub stars~680 tokensUpdated 21 days ago
    Writing & ContentAuto-check passed
  • Blog Repurpose

    AgriciDaniel/claude-blog

    Repurpose blog posts for social media, email, video, podcast, and community channels.

    2.3k GitHub stars~3k tokensUpdated today
    Writing & ContentAuto-check passed
  • Content Pillar Atomizer

    Affitor/affiliate-skills

    Take 1 blog post or article and generate 15-30 platform-native micro-content pieces.

    699 GitHub stars~3.1k tokensUpdated 23 days ago
    Writing & ContentAuto-check passed
  • Linkedin Content Repurposer

    borghei/Claude-Skills

    Turns something made for another channel (a thread, a video or talk transcript, a blog post, a newsletter) into a post that reads as native to LinkedIn, without changing what the source says.

    881 GitHub stars~3.6k tokensUpdated yesterday
    Writing & ContentAuto-check passed
  • Content Repurposer

    mohitagw15856/pm-claude-skills

    Turn one piece of content into a full multi-platform pack — X/Twitter thread, LinkedIn post, newsletter section, Instagram carousel, and a short-form video script — each rewritten natively for its…

    1.4k GitHub stars~1.4k tokensUpdated yesterday
    Writing & ContentAuto-check passed

More from Varnan-Tech/opendirectory

All 61 skills in this repo
  • Podcast Transcript Fetcher

    Varnan-Tech/opendirectory

    A skill your agent uses when fetching, searching, or analyzing transcripts from Lenny's Podcast, Dwarkesh Podcast, Cheeky Pint, 20VC, or A16z Podcast.

    674 GitHub starsUsed in 1 repo~1.9k tokens
    Auto-check: notes
  • Graphic Ebook

    Varnan-Tech/opendirectory

    Creates professionally designed B2B SaaS e-books in HTML + CSS, exported as print-ready PDF.

    674 GitHub stars~5k tokensUpdated 1 mo ago
    Auto-check passed
  • Where Your Customer Lives

    Varnan-Tech/opendirectory

    Given a product utility and ICP, researches the internet to find the specific channels.

    674 GitHub starsUsed in 1 repo~4.8k tokens
    Auto-check passed
  • Docs From Code

    Varnan-Tech/opendirectory

    Generates and updates README.md and API reference docs by reading your codebase's functions, routes, types, schemas, and architecture.

    674 GitHub stars~1.8k tokensUpdated 1 mo ago
    Auto-check passed
  • Graphic Chart

    Varnan-Tech/opendirectory

    Generates data visualization charts (bar, line, area, pie, doughnut, scatter, radar, treemap) as PNG using Apache ECharts v6.

    674 GitHub stars~2.9k tokensUpdated 1 mo ago
    Auto-check passed
  • Graphic Gif

    Varnan-Tech/opendirectory

    Creates animated looping GIFs from CSS animations (default) or AI image-to-video.

    674 GitHub stars~3k tokensUpdated 1 mo ago
    Auto-check passed

Questions about Linkedin Post Generator

What does Linkedin Post Generator do?

Converts any content, blog post URL, pasted article, GitHub PR description, or a description of something built, into a formatted LinkedIn post with proper hook, story arc, and formatting. Linkedin Post Generator is an agent skill from Varnan-Tech/opendirectory. Converts any content, blog post URL, pasted article, GitHub PR description, or a description of something built, into a formatted LinkedIn post with proper hook, story arc, and formatting.

When should I use Linkedin Post Generator?

Linkedin Post Generator fits situations like: asked to write a LinkedIn post; turn a blog into a LinkedIn update; announce a shipped feature; share a case study on LinkedIn.

How do I install Linkedin Post Generator in Claude Code?

Run `npx skills add Varnan-Tech/opendirectory --skill linkedin-post-generator -a claude-code`. Or copy the skill folder (skills/linkedin-post-generator in Varnan-Tech/opendirectory) into .claude/skills/linkedin-post-generator in your project. Claude Code loads it when a task matches its description.

How do I install Linkedin Post Generator in Codex?

Run `npx skills add Varnan-Tech/opendirectory --skill linkedin-post-generator -a codex`. Or copy the skill folder (skills/linkedin-post-generator in Varnan-Tech/opendirectory) into .agents/skills/linkedin-post-generator in your project. Codex loads it when a task matches its description.

Can I use Linkedin Post Generator in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Varnan-Tech/opendirectory --skill linkedin-post-generator -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/linkedin-post-generator, .gemini/skills/linkedin-post-generator, .github/skills/linkedin-post-generator and .opencode/skills/linkedin-post-generator in your project.

What does Linkedin Post Generator need to run?

Going by SKILL.md and its folder, Linkedin Post Generator needs credentials named COMPOSIO_API_KEY. Our summary lists: A credential in COMPOSIO_API_KEY. Compatibility (from SKILL.md): ["claude-code","gemini-cli","github-copilot"].

Does Linkedin Post Generator access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Linkedin Post Generator safe to install?

Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Linkedin Post Generator use?

Linkedin Post Generator is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Linkedin Post Generator use?

About 2.6k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 3.2k tokens, read only when the agent opens those files.

What are the alternatives to Linkedin Post Generator?

Skills that share tags, products or a category with Linkedin Post Generator: Social Media Management (manojbajaj95/claude-gtm-plugin, 105 stars), Li Repurpose (Jakeschincariol/linkedin-agent-skill, 1.5k stars), Blog Repurpose (AgriciDaniel/claude-blog, 2.3k stars) and Content Pillar Atomizer (Affitor/affiliate-skills, 699 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Linkedin Post Generator?

Varnan-Tech (a GitHub organization) maintains it in Varnan-Tech/opendirectory, which has 674 GitHub stars. The repository holds 61 skills in this directory. The repository was last updated on August 16, 2026.

Source: Varnan-Tech/opendirectory on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.