How to post to LinkedIn from OpenAI Codex

To post to LinkedIn from Codex, run codex mcp add postwire --url https://postwire.io/api/mcp and codex mcp login postwire, connect your LinkedIn profile once on LinkedIn's own page, and ask "write a LinkedIn post about this release from CHANGELOG.md and schedule it for Tuesday at 8:30". Codex writes the post with generate_posts (the hook in the first 210 characters, the link in the first comment), shows it to you, and publishes it with post_to_social or queues it with schedule_post, up to 365 days ahead. You create no LinkedIn developer app: PostWire posts to your personal profile through LinkedIn's official API. The free plan covers it: 1 business, 10 posts a month, 5 AI drafts a day, 2 networks per post, no card.

A scheduled post goes out from PostWire's servers with Codex closed, first comment included. Codex never sees your LinkedIn password: you sign in on LinkedIn's page and allow PostWire to post as you.

Updated . Written from PostWire's own code; vendor prices read on Nov 5, 2026. Live networks: TikTok, Instagram, YouTube, LinkedIn (personal profiles), Facebook Pages, Bluesky, Mastodon, Telegram, Discord, and X on paid plans.

Set it up and post, step by step

Prompt to copy once LinkedIn is connected: Read CHANGELOG.md and write a first-person LinkedIn post about what we shipped in v3.1 and why, with the release link in the first comment. Show it to me, then schedule it for Tuesday at 8:30 my time.

  1. Add PostWire to Codex

    In your terminal run codex mcp add postwire --url https://postwire.io/api/mcp, then codex mcp login postwire. The browser opens PostWire's sign-in, which asks for your email and a 6-digit code and creates a free PostWire account if you have none: no password and no card. codex mcp list, or /mcp inside Codex, shows postwire with its tools. The entry lands in ~/.codex/config.toml, which the Codex CLI, the IDE extension and the ChatGPT desktop app share, so one setup posts to LinkedIn from any of them.

  2. On a server or in CI, sign in another way

    codex mcp login postwire --no-browser gives you a sign-in link to open on any device. In CI, give Codex your key instead: copy it in the dashboard under API & MCP, set POSTWIRE_API_KEY, and put the variable's name in ~/.codex/config.toml, never the key itself:

    [mcp_servers.postwire]
    url = "https://postwire.io/api/mcp"
    bearer_token_env_var = "POSTWIRE_API_KEY"
  3. Connect your LinkedIn profile

    Ask "connect my LinkedIn". Codex calls create_connect_link and prints a one-hour link; open it, sign in on LinkedIn's own page and press Allow. PostWire asks LinkedIn only for permission to post as you (w_member_social), plus your name and photo to show which profile is connected.

  4. Ask for the post

    "Write the LinkedIn post for the release." generate_posts returns a draft and publishes nothing. It is written for LinkedIn: first person, 1,200 to 1,500 characters when the idea allows, the hook in the first 210 characters (about two lines, what the feed shows before "see more"), very short blocks, 3 hashtags at the end. A link goes in the first comment, not in the body, because a link in the body costs reach. Ask for changes in plain words until it reads right.

  5. Add images or a PDF from the repo, if you want them

    Up to 20 images in one post, or one PDF, PowerPoint or Word file on its own, which LinkedIn shows as a document readers swipe through. LinkedIn fetches files from a link, so a file on your disk goes through an upload page: Codex asks for one (create_upload_link, valid 24 hours, up to 100 MB on the free plan and 1 GB on paid plans), you pick the files there, and get_uploaded_file hands Codex their links. A file that is already online goes as its public https link.

  6. Publish now, or schedule it

    Say "post it" and Codex calls post_to_social; the result carries the link to the live post and the first comment's status. Say "schedule it for Tuesday at 8:30" and it calls schedule_post, or uses run_at: "next_slot" for your next free posting hour. This is the call:

    {
      "name": "schedule_post",
      "arguments": {
        "platforms": ["linkedin"],
        "per_platform": { "linkedin": {
          "text": "We shipped CSV export for invoices this week.\n\nIt took three tries. …\n\n#buildinpublic #saas #devtools",
          "first_comment": "The release notes: https://example.com/changelog/v3-1"
        } },
        "run_at": "2026-11-10T08:30:00-05:00"
      }
    }
  7. Check the queue

    "What's scheduled on LinkedIn?" calls list_scheduled_posts and "cancel Tuesday's post" calls cancel_scheduled_post; the same queue is on the dashboard's Queue page.

From a release script, codex exec "write the LinkedIn post for the latest tag from CHANGELOG.md and schedule it for 8:30 tomorrow" runs the same request without the interactive screen. Prefer to set it up by hand? Open the dashboard, connect LinkedIn under Accounts and copy your key under API & MCP.

Ways to post to LinkedIn from Codex, side by side

How each service plugs into Codex and what it costs to start, read on its own Codex, MCP and pricing pages on Nov 5, 2026.

ServiceHow it plugs into CodexSign-inFree to startCheapest paid planLinkedIn writing tool
PostWirecodex mcp add postwire --url https://postwire.io/api/mcpOAuth (email and a 6-digit code), or an API key in bearer_token_env_varFree plan: 1 business, 10 posts a month, 5 AI drafts a day, 2 networks per post, no card$19/mo — 3 businesses, every network in each postYes — generate_posts applies LinkedIn's hook, hashtag and first-comment rules
Postizcodex mcp add postiz --url mcp.postiz.com/mcp-oauth-dynamic, or the Postiz skillOAuth, or POSTIZ_API_KEY for the skill7-day free trial$29/mo — 5 channelsNot listed
Blotatocodex mcp add Blotato --url https://mcp.blotato.com/mcpOAuthNo — "API and MCP access require a paid Blotato plan"$29/moNot listed
Upload-PostIts MCP server mcp.upload-post.com/mcp; no Codex setup listedAn API key in an Authorization headerFree plan of 10 uploads a month, no card$24/mo — 5 profilesNot listed

Checked on Nov 5, 2026 (2026-11-05) on each vendor's own pricing or docs page, linked in the first column and below. Monthly billing in USD unless noted. "Not listed" means we could not find it on their page, not that it is missing.

Where PostWire is ahead

  • The post is written for LinkedIn: generate_posts puts the hook in the first 210 characters, keeps the link out of the body and in the first comment, and writes every other network's version from the same idea in the same request.
  • A free plan with no time limit: 10 posts a month, no card, MCP included. Postiz starts with a 7-day trial, and Blotato's MCP access needs a paid plan.
  • The cheapest paid plan here: $19 a month for 3 businesses, $15.20 billed yearly. Upload-Post $24 ($16 yearly), Postiz and Blotato $29.
  • No key to copy to start: codex mcp login postwire signs you in with your email and a 6-digit code, and creates the free account too. A key is there for CI.
  • A week of posts in one call: plan_week drafts up to 7 days of LinkedIn posts, each from a different angle, for you to review before anything is queued.
  • A person approves what Codex queued: on paid plans, approval rules hold the post until you approve it from an emailed link.
Sources, all read on Nov 5, 2026:
  • Postiz — Post to LinkedIn from Codex (codex mcp add postiz --url https://mcp.postiz.com/mcp-oauth-dynamic and codex mcp login postiz, OAuth with no key; or npx skills add gitroomhq/postiz-agent with POSTIZ_API_KEY): postiz.com/codex/linkedin
  • Postiz pricing ("Start with a 7-day free trial"; Standard $29 a month, 5 channels): postiz.com/pricing
  • Blotato + OpenAI Codex (codex mcp add Blotato --url https://mcp.blotato.com/mcp, codex mcp login Blotato --scopes email,offline_access; "API and MCP access require a paid Blotato plan"): www.blotato.com/codex
  • Blotato pricing (Starter $29 a month; the free trial covers all features "except the API and MCP server"): www.blotato.com/pricing
  • Upload-Post — LinkedIn MCP server (https://mcp.upload-post.com/mcp with an "Authorization: ApiKey" header; "Start free, no card"): www.upload-post.com/mcp/linkedin/
  • Upload-Post llms-full.txt (Free 10 uploads a month, "no credit card required"; Basic $24 a month, $16 billed yearly, 5 profiles): www.upload-post.com/llms-full.txt
  • OpenAI — Codex MCP docs (~/.codex/config.toml shared by the ChatGPT desktop app, the Codex CLI and the IDE extension; codex mcp login <server-name>, with --no-browser for a terminal without a local browser; bearer_token_env_var; /mcp in the TUI): developers.openai.com/codex/mcp

What to say in Codex, and what LinkedIn receives

You sayCodex callsLinkedIn receives
"Post the release notes on my LinkedIn"generate_posts, then post_to_socialA text post, with the link in the first comment
"Post ./docs/launch-deck.pdf with it"create_upload_link, then post_to_socialA document post readers swipe through
"Add the three screenshots in ./assets"create_upload_link, then post_to_social with the imagesOne post with the 3 images
"Schedule it for Tuesday at 8:30"schedule_post with run_atThe same post, at that time
"Plan next week of LinkedIn posts about the launch"plan_weekUp to 7 days of posts, a different angle each day
"Post a tip every Monday at 9"create_recurring_post (paid plans)The post, every Monday at 9

Source: PostWire's MCP server and LinkedIn publisher, and OpenAI's Codex MCP docs, read Nov 5, 2026. Every LinkedIn tool and limit: LinkedIn MCP server.

Why post to LinkedIn from Codex

  • The post comes from what you actually shipped: Codex reads the changelog, the merged pull requests or the release notes and writes the post with the version, the numbers and the date right.
  • One release, every network: "announce it on LinkedIn and Bluesky" sends one request with a version written for each. On the free plan one post reaches 2 networks; paid plans (from $19 a month) add X, Instagram, Facebook Pages and the rest in the same request.
  • The same post from a script: once the wording is right, Codex can put it in your release job as one REST call, POST /api/post with {"platforms": ["linkedin"], "text": "…"} and your key.
  • A person can have the last word: on paid plans, a brand's approval rules hold what Codex queues until you approve it from an emailed link.

What Starter adds to posting on LinkedIn from Codex

Three LinkedIn posts a week is about 13 a month, past the free plan's 10 and its 3 waiting posts. Starter is $19 a month, or $15.20 a month billed yearly:

  • An unlimited queue and 1,000 posts a month, so a whole month of LinkedIn posts can wait in line.
  • 25 recurring posts (create_recurring_post, or Automate → Recurring), for the weekly slot you never want to miss.
  • 3 businesses, each with its own connections, plus every network in each post.
  • Approvals: what Codex queues waits until you approve it from an emailed link.

LinkedIn's rules Codex works within

  • Up to 3,000 characters in the post and 1,250 in the first comment. If the first comment fails, the post stays published and the comment is retried.
  • Images or a document, not both: 1 to 20 images, or one PDF, PowerPoint or Word file on its own.
  • Your personal profile, through LinkedIn's official API and the permission you grant on LinkedIn's own page. No browser automation and no password.

What it does not do

PostWire posts to personal LinkedIn profiles. It does not post to company pages, it does not upload video to LinkedIn, and it does not read or answer comments or messages. To post a video, send it to YouTube, TikTok or Instagram in the same request.

Questions people ask

Can Codex post to LinkedIn?

Yes, with an MCP server. Codex has no LinkedIn access of its own; with PostWire added (codex mcp add postwire --url https://postwire.io/api/mcp, then codex mcp login postwire) and your LinkedIn profile connected once, it writes the post and publishes or schedules it on your personal profile when you ask.

Can Codex schedule LinkedIn posts?

Yes. It calls schedule_post with a time up to 365 days ahead, or "next_slot" for your next free posting hour, and PostWire publishes the post at that time with Codex closed, first comment included. The free plan keeps 3 posts waiting at once; paid plans have no such limit.

Do I need a LinkedIn developer app or API key?

No. PostWire's own LinkedIn app does the posting: you sign in on LinkedIn's page and press Allow. Codex holds only a PostWire sign-in, made with your email and a 6-digit code, or your PostWire key in CI.

Where does Codex keep the PostWire config?

In ~/.codex/config.toml, as a [mcp_servers.postwire] table with url = "https://postwire.io/api/mcp". The Codex CLI, the IDE extension and the ChatGPT desktop app read the same file. A trusted project can have its own .codex/config.toml instead.

Can Codex post a PDF carousel to LinkedIn?

Yes. One PDF, PowerPoint or Word file is posted as a LinkedIn document readers swipe through, or up to 20 images in one post. A file on your disk goes through an upload page that Codex asks for. Video is not posted to LinkedIn.

Can it post to a LinkedIn company page?

Not through PostWire: it posts to personal LinkedIn profiles. The same idea can go to Bluesky, a Facebook Page, X (on paid plans) and the other networks in the same request.

How much does it cost?

The free plan includes LinkedIn and the MCP server: 1 business, 10 posts a month, 5 AI drafts a day, 2 networks per post, no card. Starter is $19 a month for 3 businesses and Pro $29 for 10, with every network in each post; nothing is charged from Codex.