How to post to LinkedIn from OpenAI Codex
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.
- Add PostWire to Codex
In your terminal run
codex mcp add postwire --url https://postwire.io/api/mcp, thencodex 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/mcpinside 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. - On a server or in CI, sign in another way
codex mcp login postwire --no-browsergives 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, setPOSTWIRE_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" - Connect your LinkedIn profile
Ask "connect my LinkedIn". Codex calls
create_connect_linkand 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. - Ask for the post
"Write the LinkedIn post for the release."
generate_postsreturns 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. - 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, andget_uploaded_filehands Codex their links. A file that is already online goes as its public https link. - 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 callsschedule_post, or usesrun_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" } } - Check the queue
"What's scheduled on LinkedIn?" calls
list_scheduled_postsand "cancel Tuesday's post" callscancel_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.
| Service | How it plugs into Codex | Sign-in | Free to start | Cheapest paid plan | LinkedIn writing tool |
|---|---|---|---|---|---|
| PostWire | codex mcp add postwire --url https://postwire.io/api/mcp | OAuth (email and a 6-digit code), or an API key in bearer_token_env_var | Free 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 post | Yes — generate_posts applies LinkedIn's hook, hashtag and first-comment rules |
| Postiz | codex mcp add postiz --url mcp.postiz.com/mcp-oauth-dynamic, or the Postiz skill | OAuth, or POSTIZ_API_KEY for the skill | 7-day free trial | $29/mo — 5 channels | Not listed |
| Blotato | codex mcp add Blotato --url https://mcp.blotato.com/mcp | OAuth | No — "API and MCP access require a paid Blotato plan" | $29/mo | Not listed |
| Upload-Post | Its MCP server mcp.upload-post.com/mcp; no Codex setup listed | An API key in an Authorization header | Free plan of 10 uploads a month, no card | $24/mo — 5 profiles | Not 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_postsputs 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 postwiresigns 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_weekdrafts 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.
- 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 say | Codex calls | LinkedIn receives |
|---|---|---|
| "Post the release notes on my LinkedIn" | generate_posts, then post_to_social | A text post, with the link in the first comment |
| "Post ./docs/launch-deck.pdf with it" | create_upload_link, then post_to_social | A document post readers swipe through |
| "Add the three screenshots in ./assets" | create_upload_link, then post_to_social with the images | One post with the 3 images |
| "Schedule it for Tuesday at 8:30" | schedule_post with run_at | The same post, at that time |
| "Plan next week of LinkedIn posts about the launch" | plan_week | Up 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/postwith{"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.
Try it on one business, free.
The free plan is 1 business, 10 posts a month, 5 AI drafts a day (about 20 a month) and 2 networks per post — every network connects free, no card, no time limit. Paid plans start at $19 a month and have a 14-day refund; Pro can be tried free for 7 days and Agency for 14, with a card at checkout and nothing charged that day.