{"slug":"linkedin","title":"linkedin","summary":"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 Li","platform":"Claude","tags":[],"authorName":"LLM Mart","authorSlug":"llm-mart","score":0,"source":"github","price":null,"verified":false,"createdAt":"2026-09-14T20:43:59.228135Z","repo":{"url":"https://github.com/hyperfx-ai/marketing-skills","stars":88,"forks":16,"license":"MIT","updatedAt":"2026-09-14T01:35:16Z"},"bodyHtml":"<hr>\n<p>name: linkedin\ndescription: 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.\nrequires_toolkits:</p>\n<ul>\n<li>linkedin_toolkit\nicon: linkedin\nshort_description: Publish LinkedIn text, article, document, company page, and carousel posts.</li>\n</ul>\n<hr>\n<h1>LinkedIn</h1>\n<p>Skill for publishing to LinkedIn through the LinkedIn integration exposed by the Hyper MCP.</p>\n<h2>Out of scope — defer to other skills</h2>\n<table>\n<thead>\n<tr>\n<th>Request</th>\n<th>Send them to</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Instagram post / Reel / Story</td>\n<td><code>instagram</code></td>\n</tr>\n<tr>\n<td>TikTok organic posting</td>\n<td><code>tiktok</code></td>\n</tr>\n<tr>\n<td>TikTok ad campaign</td>\n<td><code>tiktok-ads</code></td>\n</tr>\n<tr>\n<td>Meta (Facebook / Instagram) ads</td>\n<td><code>meta-ads</code></td>\n</tr>\n<tr>\n<td>Google Ads campaign</td>\n<td><code>google-ads</code></td>\n</tr>\n<tr>\n<td>Amazon Sponsored Products campaign</td>\n<td><code>amazon-ads</code></td>\n</tr>\n</tbody>\n</table>\n<h2>Requirements</h2>\n<ul>\n<li><strong>Hyper MCP installed and connected.</strong> <a href=\"https://app.hyperfx.ai/mcp\">https://app.hyperfx.ai/mcp</a></li>\n<li><strong>LinkedIn integration connected</strong> at <a href=\"https://app.hyperfx.ai/apps\">https://app.hyperfx.ai/apps</a>.</li>\n<li>For company-page posts, the connected member account must have permission to post for that organization.</li>\n</ul>\n<p>If <code>search(\"linkedin_text_posts_create\")</code> does not find <code>linkedin_text_posts_create</code>, stop and tell the user to enable Hyper MCP and connect LinkedIn.</p>\n<h3>How to run the tools in this skill</h3>\n<p>Every tool in this skill is named by its canonical tool name. Run it with the call your surface gives you:</p>\n<table>\n<thead>\n<tr>\n<th>Surface</th>\n<th>Find a tool</th>\n<th>Run it</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>MCP client (Claude, Cursor, Codex, ChatGPT)</td>\n<td><code>search(\"&lt;what you want to do&gt;\")</code>, then <code>describe(\"&lt;name&gt;\")</code></td>\n<td><code>call(\"&lt;name&gt;\", {...})</code></td>\n</tr>\n<tr>\n<td>Hyper CLI</td>\n<td><code>hyperai search \"&lt;what you want to do&gt;\"</code>, then <code>hyperai describe &lt;name&gt;</code></td>\n<td><code>hyperai call &lt;name&gt; --json '{...}'</code></td>\n</tr>\n</tbody>\n</table>\n<p>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.</p>\n<h2>Tool surface</h2>\n<table>\n<thead>\n<tr>\n<th>Tool</th>\n<th>Purpose</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>linkedin_text_posts_create</code></td>\n<td>Standard member or organization text post; also article / link posts via the article fields.</td>\n</tr>\n<tr>\n<td><code>linkedin_organization_posts_create</code></td>\n<td>Post explicitly as a company page (when you already know <code>organization_id</code>).</td>\n</tr>\n<tr>\n<td><code>linkedin_document_posts_create</code></td>\n<td>PDF / document post — LinkedIn renders pages as a swipeable document.</td>\n</tr>\n<tr>\n<td><code>linkedin_carousels_create_from_text</code></td>\n<td>AI text-to-carousel pipeline — generates slides + assembles a PDF + publishes as a document post.</td>\n</tr>\n</tbody>\n</table>\n<h2>Posting Rules</h2>\n<ol>\n<li>Use <code>linkedin_text_posts_create</code> for standard member or organization posts.</li>\n<li>Use <code>linkedin_organization_posts_create</code> when the user explicitly wants to post as a company page <strong>and</strong> you already know the <code>organization_id</code>.</li>\n<li>Use <code>linkedin_document_posts_create</code> for PDF / document uploads. LinkedIn renders PDF pages as a swipeable document post.</li>\n<li>Use <code>linkedin_carousels_create_from_text</code> when the user wants a text-to-carousel workflow driven by AI-generated slides.</li>\n</ol>\n<h2>Article / Link Posts</h2>\n<p>Do not rely on LinkedIn to scrape Open Graph metadata for API-created posts.</p>\n<p>For reliable article posts:</p>\n<ul>\n<li>Provide <code>article_url</code>.</li>\n<li>Prefer explicit <code>article_title</code>, <code>article_description</code>, and <code>thumbnail_url</code>.</li>\n<li>If those fields are omitted, the backend may derive them from the shared page metadata, but explicit values are still more reliable.</li>\n</ul>\n<p>Use this shape when editing or preparing a LinkedIn article post:</p>\n<pre><code>linkedin_text_posts_create(\n    text=\"Caption text\",\n    article_url=\"https://example.com/article\",\n    article_title=\"Explicit preview title\",\n    article_description=\"Explicit preview description\",\n    thumbnail_url=\"https://example.com/thumbnail.jpg\",\n    organization_id=\"123456789\",  # optional\n)\n</code></pre>\n<h2>Document and Carousel Posts</h2>\n<p>LinkedIn carousels are implemented as document posts backed by a PDF.</p>\n<h3>Native PDF flow</h3>\n<p>Use <code>linkedin_document_posts_create</code> when you already have a PDF URL or stored file ID:</p>\n<pre><code>linkedin_document_posts_create(\n    text=\"Caption text\",\n    title=\"Deck title\",\n    document_url=\"https://example.com/deck.pdf\",\n    organization_id=\"123456789\",  # optional\n)\n</code></pre>\n<h3>Text-to-carousel flow</h3>\n<p>Use <code>linkedin_carousels_create_from_text</code> when the user wants the system to build the carousel from a block of source text:</p>\n<pre><code>linkedin_carousels_create_from_text(\n    text_content=\"Source content for the slides\",\n    title=\"Carousel title\",\n    caption=\"LinkedIn caption\",\n    num_slides=4,\n    style=\"professional\",\n    color_scheme=\"blue\",\n    organization_id=\"123456789\",  # optional\n)\n</code></pre>\n<p>The current implementation:</p>\n<ul>\n<li>Parses the source text into slide content.</li>\n<li>Generates a single grid image with an image model.</li>\n<li>Splits the grid into individual slide images.</li>\n<li>Assembles a PDF.</li>\n<li>Publishes the PDF as a LinkedIn document post.</li>\n<li>Returns the live post URL — present this to the user to confirm the carousel is live.</li>\n</ul>\n<p>Supported slide counts are <code>4</code>, <code>6</code>, and <code>9</code>.</p>\n<h2>Manual Slide Editing</h2>\n<p>The current LinkedIn carousel pipeline is PDF-based. It does not provide a first-class live canvas editing loop before publish.</p>\n<p>If a user wants manual refinement:</p>\n<ol>\n<li>Generate the carousel assets first.</li>\n<li>Review or edit the generated slide images / PDF externally.</li>\n<li>Post the final PDF with <code>linkedin_document_posts_create</code>.</li>\n</ol>\n<p>Do not promise an in-product editable canvas workflow unless the tool is actually available in the current environment.</p>\n<h2>Organization Posting</h2>\n<p>When posting to a company page:</p>\n<ul>\n<li>If you don't know the <code>organization_id</code>, call <code>linkedin_managed_pages_list()</code> first — it returns all company pages the connected account can post to, with their IDs.</li>\n<li>Use <code>linkedin_organizations_posts_list_detailed(organization_id=...)</code> to preview recent posts before publishing — avoids accidental duplicates.</li>\n<li>Pass <code>organization_id</code> to whichever posting tool you're using.</li>\n<li>Expect LinkedIn org posting permissions to matter.</li>\n<li>If a post fails with a permissions error, verify that the authenticated account can post to that organization.</li>\n</ul>\n<h2>Failure Modes &amp; Recovery</h2>\n<ul>\n<li><strong>Article preview is empty / wrong.</strong> LinkedIn ignored the scraped metadata. Re-call <code>linkedin_text_posts_create</code> with explicit <code>article_title</code>, <code>article_description</code>, and <code>thumbnail_url</code>.</li>\n<li><strong>Permission error on organization post.</strong> Confirm with the user that their LinkedIn account has page-posting permission for the target <code>organization_id</code>.</li>\n<li><strong><code>linkedin_carousels_create_from_text</code> returned an unexpected slide count.</strong> Only <code>num_slides</code> of <code>4</code>, <code>6</code>, or <code>9</code> are supported.</li>\n<li><strong>Document post fails with an invalid URL.</strong> The <code>document_url</code> must be a directly-fetchable PDF (no auth, no HTML redirect page).</li>\n</ul>\n","files":[{"path":"SKILL.md","sizeBytes":6860,"isText":true}],"reviewScore":null,"reviewSummary":null,"trust":{"provenance":"trusted-source-unreviewed","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow.","bodySource":null},"bodyLocked":false,"purchaseUrl":null,"sourceUrl":null,"report":{"provenance":"trusted-source-unreviewed","screen":{"ran":true,"outcome":"clean","suspicious":0,"notes":0,"hiddenCharacters":false},"virusScan":{"engine":"clamav","status":"clean","scannedAt":"2026-09-14T20:46:12.424577Z","sha256":"137D09FE7E213E0528C81CA53A52D6D8F576BD82B867C14B8220EAC7101C3250","sizeBytes":2669},"review":null,"source":{"repositoryUrl":"https://github.com/hyperfx-ai/marketing-skills","path":"skills/linkedin","license":"MIT","commit":"abd711a4d12d3192337c893983b669e41addb057","subtreeSha":"C3C8B912483BA5411CF02C5C20A63A70FCB10068FA9CD0E156A1610583CB2921","lastSyncedAt":"2026-09-18T13:50:51.896152Z"},"reviewedAt":"2026-09-14T20:51:14.644287Z","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow."},"install":[{"target":"skills-cli","command":"npx skills add https://github.com/hyperfx-ai/marketing-skills/tree/main/skills/linkedin"},{"target":"claude-code","command":"claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install hyperfx-ai-marketing-skills@llmmart"},{"target":"git","command":"git clone https://github.com/hyperfx-ai/marketing-skills.git"}]}