Linkedin skill

Publish and manage LinkedIn content via the Hyper MCP — text posts, article / link previews, document and PDF posts, organization (company page) posts, and AI-generated text-to-carousel posts.

by hyperfx-ai·MIT license·GitHub ↗

★ 90 Stars on the repo·Checked

npx degit hyperfx-ai/marketing-skills/skills/linkedin#main ~/.claude/skills/linkedin-2

SKILL.md · 6.7 KB · installs the whole folder to ~/.claude/skills/linkedin-2

Files of Linkedin

Files 1 file
Show the full text155 lines

LinkedIn

Skill for publishing to LinkedIn through the LinkedIn integration exposed by the Hyper MCP.

Out of scope — defer to other skills

Request Send them to
Instagram post / Reel / Story instagram
TikTok organic posting tiktok
TikTok ad campaign tiktok-ads
Meta (Facebook / Instagram) ads meta-ads
Google Ads campaign google-ads
Amazon Sponsored Products campaign amazon-ads

Requirements

If search("linkedin_text_posts_create") does not find linkedin_text_posts_create, stop and tell the user to enable Hyper MCP and connect LinkedIn.

How to run the tools in this skill

Every tool in this skill is named by its canonical tool name. Run it with the call your surface gives you:

Surface Find a tool Run it
MCP client (Claude, Cursor, Codex, ChatGPT) search("<what you want to do>"), then describe("<name>") call("<name>", {...})
Hyper CLI hyperai search "<what you want to do>", then hyperai describe <name> hyperai call <name> --json '{...}'

If a tool is not found, its integration is not connected or not enabled for the workspace: stop and tell the user which integration to connect.

Tool surface

Tool Purpose
linkedin_text_posts_create Standard member or organization text post; also article / link posts via the article fields.
linkedin_organization_posts_create Post explicitly as a company page (when you already know organization_id).
linkedin_document_posts_create PDF / document post — LinkedIn renders pages as a swipeable document.
linkedin_carousels_create_from_text AI text-to-carousel pipeline — generates slides + assembles a PDF + publishes as a document post.

Posting Rules

  1. Use linkedin_text_posts_create for standard member or organization posts.
  2. Use linkedin_organization_posts_create when the user explicitly wants to post as a company page and you already know the organization_id.
  3. Use linkedin_document_posts_create for PDF / document uploads. LinkedIn renders PDF pages as a swipeable document post.
  4. Use linkedin_carousels_create_from_text when the user wants a text-to-carousel workflow driven by AI-generated slides.

Article / Link Posts

Do not rely on LinkedIn to scrape Open Graph metadata for API-created posts.

For reliable article posts:

  • Provide article_url.
  • Prefer explicit article_title, article_description, and thumbnail_url.
  • If those fields are omitted, the backend may derive them from the shared page metadata, but explicit values are still more reliable.

Use this shape when editing or preparing a LinkedIn article post:

linkedin_text_posts_create(
    text="Caption text",
    article_url="https://example.com/article",
    article_title="Explicit preview title",
    article_description="Explicit preview description",
    thumbnail_url="https://example.com/thumbnail.jpg",
    organization_id="123456789",  # optional
)

LinkedIn carousels are implemented as document posts backed by a PDF.

Native PDF flow

Use linkedin_document_posts_create when you already have a PDF URL or stored file ID:

linkedin_document_posts_create(
    text="Caption text",
    title="Deck title",
    document_url="https://example.com/deck.pdf",
    organization_id="123456789",  # optional
)

Use linkedin_carousels_create_from_text when the user wants the system to build the carousel from a block of source text:

linkedin_carousels_create_from_text(
    text_content="Source content for the slides",
    title="Carousel title",
    caption="LinkedIn caption",
    num_slides=4,
    style="professional",
    color_scheme="blue",
    organization_id="123456789",  # optional
)

The current implementation:

  • Parses the source text into slide content.
  • Generates a single grid image with an image model.
  • Splits the grid into individual slide images.
  • Assembles a PDF.
  • Publishes the PDF as a LinkedIn document post.
  • Returns the live post URL — present this to the user to confirm the carousel is live.

Supported slide counts are 4, 6, and 9.

Manual Slide Editing

The current LinkedIn carousel pipeline is PDF-based. It does not provide a first-class live canvas editing loop before publish.

If a user wants manual refinement:

  1. Generate the carousel assets first.
  2. Review or edit the generated slide images / PDF externally.
  3. Post the final PDF with linkedin_document_posts_create.

Do not promise an in-product editable canvas workflow unless the tool is actually available in the current environment.

Organization Posting

When posting to a company page:

  • If you don't know the organization_id, call linkedin_managed_pages_list() first — it returns all company pages the connected account can post to, with their IDs.
  • Use linkedin_organizations_posts_list_detailed(organization_id=...) to preview recent posts before publishing — avoids accidental duplicates.
  • Pass organization_id to whichever posting tool you're using.
  • Expect LinkedIn org posting permissions to matter.
  • If a post fails with a permissions error, verify that the authenticated account can post to that organization.

Failure Modes & Recovery

  • Article preview is empty / wrong. LinkedIn ignored the scraped metadata. Re-call linkedin_text_posts_create with explicit article_title, article_description, and thumbnail_url.
  • Permission error on organization post. Confirm with the user that their LinkedIn account has page-posting permission for the target organization_id.
  • linkedin_carousels_create_from_text returned an unexpected slide count. Only num_slides of 4, 6, or 9 are supported.
  • Document post fails with an invalid URL. The document_url must be a directly-fetchable PDF (no auth, no HTML redirect page).
1---
2name: linkedin
3description: Publish and manage LinkedIn content via the Hyper MCP — text posts, article / link previews, document and PDF posts, organization (company page) posts, and AI-generated text-to-carousel posts. Use when the user wants to post on LinkedIn, share an article on LinkedIn, post to a LinkedIn company page, upload a PDF / document to LinkedIn, or build a LinkedIn carousel from text.
4requires_toolkits:
5 - linkedin_toolkit
6icon: linkedin
7short_description: Publish LinkedIn text, article, document, company page, and carousel posts.
8---
9 
10# LinkedIn
11 
12Skill for publishing to LinkedIn through the LinkedIn integration exposed by the Hyper MCP.
13 
14## Out of scope — defer to other skills
15 
16| Request | Send them to |
17| --- | --- |
18| Instagram post / Reel / Story | `instagram` |
19| TikTok organic posting | `tiktok` |
20| TikTok ad campaign | `tiktok-ads` |
21| Meta (Facebook / Instagram) ads | `meta-ads` |
22| Google Ads campaign | `google-ads` |
23| Amazon Sponsored Products campaign | `amazon-ads` |
24 
25## Requirements
26 
27- **Hyper MCP installed and connected.** [https://app.hyperfx.ai/mcp](https://app.hyperfx.ai/mcp)
28- **LinkedIn integration connected** at [https://app.hyperfx.ai/apps](https://app.hyperfx.ai/apps).
29- For company-page posts, the connected member account must have permission to post for that organization.
30 
31If `search("linkedin_text_posts_create")` does not find `linkedin_text_posts_create`, stop and tell the user to enable Hyper MCP and connect LinkedIn.
32 
33### How to run the tools in this skill
34 
35Every tool in this skill is named by its canonical tool name. Run it with the call your surface gives you:
36 
37| Surface | Find a tool | Run it |
38| --- | --- | --- |
39| MCP client (Claude, Cursor, Codex, ChatGPT) | `search("<what you want to do>")`, then `describe("<name>")` | `call("<name>", {...})` |
40| Hyper CLI | `hyperai search "<what you want to do>"`, then `hyperai describe <name>` | `hyperai call <name> --json '{...}'` |
41 
42If a tool is not found, its integration is not connected or not enabled for the workspace: stop and tell the user which integration to connect.
43 
44## Tool surface
45 
46| Tool | Purpose |
47| --- | --- |
48| `linkedin_text_posts_create` | Standard member or organization text post; also article / link posts via the article fields. |
49| `linkedin_organization_posts_create` | Post explicitly as a company page (when you already know `organization_id`). |
50| `linkedin_document_posts_create` | PDF / document post — LinkedIn renders pages as a swipeable document. |
51| `linkedin_carousels_create_from_text` | AI text-to-carousel pipeline — generates slides + assembles a PDF + publishes as a document post. |
52 
53## Posting Rules
54 
551. Use `linkedin_text_posts_create` for standard member or organization posts.
562. Use `linkedin_organization_posts_create` when the user explicitly wants to post as a company page **and** you already know the `organization_id`.
573. Use `linkedin_document_posts_create` for PDF / document uploads. LinkedIn renders PDF pages as a swipeable document post.
584. Use `linkedin_carousels_create_from_text` when the user wants a text-to-carousel workflow driven by AI-generated slides.
59 
60## Article / Link Posts
61 
62Do not rely on LinkedIn to scrape Open Graph metadata for API-created posts.
63 
64For reliable article posts:
65 
66- Provide `article_url`.
67- Prefer explicit `article_title`, `article_description`, and `thumbnail_url`.
68- If those fields are omitted, the backend may derive them from the shared page metadata, but explicit values are still more reliable.
69 
70Use this shape when editing or preparing a LinkedIn article post:
71 
72```python
73linkedin_text_posts_create(
74 text="Caption text",
75 article_url="https://example.com/article",
76 article_title="Explicit preview title",
77 article_description="Explicit preview description",
78 thumbnail_url="https://example.com/thumbnail.jpg",
79 organization_id="123456789", # optional
80)
81```
82 
83## Document and Carousel Posts
84 
85LinkedIn carousels are implemented as document posts backed by a PDF.
86 
87### Native PDF flow
88 
89Use `linkedin_document_posts_create` when you already have a PDF URL or stored file ID:
90 
91```python
92linkedin_document_posts_create(
93 text="Caption text",
94 title="Deck title",
95 document_url="https://example.com/deck.pdf",
96 organization_id="123456789", # optional
97)
98```
99 
100### Text-to-carousel flow
101 
102Use `linkedin_carousels_create_from_text` when the user wants the system to build the carousel from a block of source text:
103 
104```python
105linkedin_carousels_create_from_text(
106 text_content="Source content for the slides",
107 title="Carousel title",
108 caption="LinkedIn caption",
109 num_slides=4,
110 style="professional",
111 color_scheme="blue",
112 organization_id="123456789", # optional
113)
114```
115 
116The current implementation:
117 
118- Parses the source text into slide content.
119- Generates a single grid image with an image model.
120- Splits the grid into individual slide images.
121- Assembles a PDF.
122- Publishes the PDF as a LinkedIn document post.
123- Returns the live post URL — present this to the user to confirm the carousel is live.
124 
125Supported slide counts are `4`, `6`, and `9`.
126 
127## Manual Slide Editing
128 
129The current LinkedIn carousel pipeline is PDF-based. It does not provide a first-class live canvas editing loop before publish.
130 
131If a user wants manual refinement:
132 
1331. Generate the carousel assets first.
1342. Review or edit the generated slide images / PDF externally.
1353. Post the final PDF with `linkedin_document_posts_create`.
136 
137Do not promise an in-product editable canvas workflow unless the tool is actually available in the current environment.
138 
139## Organization Posting
140 
141When posting to a company page:
142 
143- If you don't know the `organization_id`, call `linkedin_managed_pages_list()` first — it returns all company pages the connected account can post to, with their IDs.
144- Use `linkedin_organizations_posts_list_detailed(organization_id=...)` to preview recent posts before publishing — avoids accidental duplicates.
145- Pass `organization_id` to whichever posting tool you're using.
146- Expect LinkedIn org posting permissions to matter.
147- If a post fails with a permissions error, verify that the authenticated account can post to that organization.
148 
149## Failure Modes & Recovery
150 
151- **Article preview is empty / wrong.** LinkedIn ignored the scraped metadata. Re-call `linkedin_text_posts_create` with explicit `article_title`, `article_description`, and `thumbnail_url`.
152- **Permission error on organization post.** Confirm with the user that their LinkedIn account has page-posting permission for the target `organization_id`.
153- **`linkedin_carousels_create_from_text` returned an unexpected slide count.** Only `num_slides` of `4`, `6`, or `9` are supported.
154- **Document post fails with an invalid URL.** The `document_url` must be a directly-fetchable PDF (no auth, no HTML redirect page).
155 

Discussion

Alternatives

Also in Platform postsSee all 316 in Content creator →
Gemini carouselGenerate a branded slide-by-slide LinkedIn carousel using Gemini. Takes source content, builds a design brief, waits for approval, then outputs per-slide image generation prompts. 1080x1350 vertical format. Use this skill whenever the user says "carousel", "build a carousel", "turn this into a carousel", "gemini carousel", or wants multi-slide LinkedIn content. Always includes an approval gate between brief and image generation.Creator · MITInstagram Caption WriterDraft an Instagram caption with the hook in the first 125 characters, a skimmable body, and one clear CTA, using a 2026 hook formula chosen by goal (saves, shares, comments, follows). Runs the humanizer pass and, on approval, publishes with the image or video you supply via the Publora media flow. Use to caption a single image or a Reel. Not for slide-by-slide carousels (use ig-carousel-planner) or auditing a draft (use ig-humanizer --mode audit).Creator · MITInstagram Carousel PlannerPlan an Instagram carousel slide by slide, up to 10 slides, with a hook slide that opens a loop, value slides that front-load the payoff, and a payoff slide that earns the save and follow. Picks a 2026 carousel formula (listicle, before/after, myth-buster, framework) by goal (saves, shares, follows), drafts each slide's text plus the caption, then publishes the images you supply via Publora. Use to structure a multi-slide carousel. Not for single-image captions (use ig-caption-writer).Creator · MITSocial media analyzerSocial media campaign analysis and performance tracking. Calculates engagement rates, ROI, and benchmarks across platforms. Use when analyzing social media performance, calculating engagement rate, measuring campaign ROI, comparing platform metrics, or benchmarking against industry standards. Also use when the user mentions "social media audit," "engagement rate," or "which platform performs best.Creator · MIT