Gemini CLI schedules where you work
Gemini CLI writes the post in the terminal, and we schedule it. You do not have to switch tools.
Install the Postemi CLI: npm install -g posty-cli, then log in: posty auth:login. The package SKILL.md file describes every command, details: https://postemi.com/ai/gemini
The CLI in four commands
You install the CLI, sign in, fetch your integrations, then create a post. After that, your release script can take over.
# Install the Postemi CLI package$ npm install -g posty-cli# Sign in to your Postemi account$ posty auth:login# Fetch your integrations$ posty integrations:list[{ "id": "cmf3k7…", "name": "Cafe · Instagram" }]# Create and schedule the post$ posty posts:create \$ -c "New brunch menu this Saturday." \$ -i "cmf3k7…" \$ -s "2026-08-16 09:00" --timezone Europe/Budapest✅ Post created successfully!{ "id": "cmf7p2…", "state": "QUEUE" }
The CLI writes JSON to stdout, and status and errors to stderr. On error it exits with a non-zero code.
One thread, one command
$ posty posts:create \$ -c "We shipped 2.0. Three things changed. 1/3" \$ -c "The calendar is faster. 2/3" \$ -c "And there is a dark theme at last. 3/3" \$ -d 5 \$ -i "cmf3k7…" \$ -s "2026-08-16T09:00:00+02:00"
From code to a scheduled post
The announcement and the release happen in the same place. You reach Postemi over MCP, the CLI or the REST API.
Post from the session
Gemini CLI writes the post in the session you are already working in, then schedules it through Postemi.
Uploading media
You upload the media file first with the posty upload command. Pass the URL you get as the -m value, after the post -c flag.
A calendar you can read and rearrange
Gemini CLI reads the posts on the calendar, finds the free slots, and rearranges the plan. That way it does not schedule the release post blindly.
CLI as another way
If you need a command instead of MCP, the published posty-cli reaches the same account. posty posts:create also runs from a release script and from CI.
Public REST API
The third way is the public REST API at api.posty.hu. You can reach the same Postemi account from your own integration or automation too.
Approval in the calendar
Gemini CLI creates and schedules the post, and you review it in the Postemi calendar. You can approve the text and the time before it goes out.
Four steps to Gemini
You set up the accounts and the key. After that, Gemini hands the scheduling to Postemi from the same session.
Connect your accounts
On the Postemi web app, you connect the social accounts you want to use through OAuth. You only have to do this once. After that, Gemini can reach the Postemi integrations that belong to them.
$ posty integrations:list[{ "id": "cmf3k7…", "name": "Cafe · Instagram" },{ "id": "cmf3k9…", "name": "Cafe · Facebook" }]
Create a key
Open Automations → Developers and create a key that starts with psty_mcp_…. You also get the complete setup block prepared for Gemini on the same page.
# Automations → Developers → New key# We show the key once, when you create it. # For the command line and the REST API:POSTY_API_KEY=YOUR_API_KEY # MCP clients get a separate key:# psty_mcp_…Give it to Gemini
Paste the Postemi block under the mcpServers key in ~/.gemini/settings.json, and put the address in the httpUrl field. The file is in your home directory, not in the project.
{ "mcpServers": { "posty": { "httpUrl": "https://api.posty.hu/mcp/YOUR_API_KEY" } }}Review the schedule
Gemini CLI writes the announcement, and Postemi schedules it. Before it goes out, you review and approve the text, the platforms and the time in the Postemi calendar.
$ posty posts:list[{ "id": "cmf7p2…", "state": "QUEUE","publishDate": "2026-08-16T07:00:00Z" },{ "id": "cmf7q8…", "state": "DRAFT","publishDate": "2026-08-18T06:30:00Z" }]
What is Gemini?
Gemini is Google's language model. Its command-line version, Gemini CLI, runs in your terminal and can use external tools as an MCP client. As an MCP client it connects to Postemi, so you can write and schedule the release announcement in the same place.
You finish the work, then you ask for the post in the same Gemini session. Gemini CLI writes it, and Postemi schedules it. You do not have to switch tools, or start over in a separate interface.
Gemini CLI connects through its settings file: the Postemi MCP block goes under mcpServers, and the address goes in the httpUrl field. You get the ready-made block on the Automations → Developers page.
Writes next to the code
Gemini CLI drafts the post in your terminal, in the session you are already working in.
Connects over MCP
The Postemi MCP server receives Gemini's request, then schedules the post to the given social account. The service address is https://api.posty.hu/mcp.
Your model writes
Gemini writes the text, not Postemi. Postemi has no built-in AI copywriter, on purpose, so you use your own model.
A predictable interface for Gemini
Postemi's responses and errors are easy to parse. You reach the same account three ways.
- Machine-readable JSONCommand JSON output is easy to parse, so Gemini does not have to pull the data out of human prose.
- Clear error signalsThe CLI writes status and errors to stderr, and on error it exits with a non-zero code.
- Built-in skill fileThe SKILL.md in the npm package teaches the agent how to use the CLI, with no extra training.
- Flat command setA single flat command set handles posts, integrations, analytics, uploads, settings and login, with no hidden state.
- Three ways inYou can reach the same Postemi account over MCP, the published CLI and the public REST API.
---name: postydescription: Posty schedules and publishes social posts from the command line.homepage: https://posty.hu--- # Output contract Every command prints its JSON result, and nothingelse, to stdout; status lines, warnings and errorsgo to stderr, and every failure exits 1. # Two Hard Rules (Read First) Rule 1: Authenticate before anything.Rule 2: Every file passed to `-m` MUST first gothrough `posty upload`.SKILL.md is part of the npm package. The agent can read it directly and learn the Postemi CLI from it.
The full Postemi CLI
The posty commands cover posts, integrations, analytics, uploads, settings and authentication. posty posts:create also runs from a release script or from CI, if POSTY_API_KEY is in the environment.
posty posts:createNew post: scheduled, as a draft, or published right away.posty posts:listPosts in the given period. You can filter by client group too.posty posts:delete <id>Delete a post by id.posty posts:find-slot <id>The next free publishing time for a social account.posty posts:status <id>Switch a post between draft and scheduled.posty posts:missing <id>Content already on the platform for a post with a missing id.posty posts:connect <id>Connect a post to content that is already published.posty integrations:listConnected social accounts and their ids. This is what the -i flag needs.posty integrations:groupsThe list of client groups, if you work with more than one brand.posty integrations:settings <id>An account's settings schema, rules, length limit, and tools.posty integrations:trigger <id> <method>Call a platform tool for extra data, for example to search for music.posty upload <file>Upload a media file. The URL you get back goes into the posts:create -m flag.posty analytics:platform <id>A social account's stats going back the given number of days.posty analytics:post <id>Performance of a single post.posty auth:loginLog in with OAuth2 device authorization: the browser opens, you approve.posty auth:logoutClear stored login data.posty auth:statusShows whether you're logged in, and checks access too.posty config:set <key> <value>Save a CLI setting, for example the default timezone.posty config:get [key]Print the saved settings.-c, --contentThe post text. Repeat it to make a thread: the first is the post, the rest are comments.-m, --mediaMedia for the -c that comes before it. The URL has to come from posty upload.-i, --integrationsIds of the target social accounts, comma-separated.--date, -sWhen to publish. Either with an explicit offset, or together with the --timezone flag.--timezoneIANA timezone name, for example Europe/Budapest. Only pass a date with no offset together with this.-t, --typeschedule (default), draft, or now.-d, --delayDelay in MINUTES between items in the thread.--jsonThe full post description from a JSON file, when the flags are not enough.--settingsPlatform-specific settings as JSON. The schema comes from integrations:settings.The CLI writes JSON to stdout, and status and errors to stderr. On error it exits with a non-zero code.
Fair pricing, no hidden costs
Every plan starts with a 7-day free trial. We bill in US dollars and issue a VAT invoice.
Prices in US dollars. In Europe you pay the same amount in euros, in Switzerland in Swiss francs.
Basic
- 5 social accounts
- 100 X posts a month
- 1 workspace
- One user
- Not included: Advanced image editor
- Not included: Viral video + UGC templates
- Not included: Automations
- Not included: API access
- Not included: Posting with an AI agent
- Unlimited posts
- Multiple accounts per platform
- Scheduling
- Calendar view
- Repeated posts
- Post delays
- Studio access
- Analytics (beta)
- Post comments
- Dark & light mode
Pro
Most popular- 10 social accounts
- 250 X posts a month
- 1 workspace
- One user
- Not included: Advanced image editor
- Not included: Viral video + UGC templates
- Automations
- API access
- Posting with an AI agent
- Unlimited posts
- Multiple accounts per platform
- Scheduling
- Calendar view
- Repeated posts
- Post delays
- Studio access
- Analytics (beta)
- Post comments
- Dark & light mode
Creator
- 30 social accounts
- 400 X posts a month
- 5 workspaces
- 15 users
- Advanced image editor
- Viral video + UGC templates
- Automations
- API access
- Posting with an AI agent
- Unlimited posts
- Multiple accounts per platform
- Scheduling
- Calendar view
- Repeated posts
- Post delays
- Studio access
- Analytics (beta)
- Post comments
- Dark & light mode
Team
Highest limits- 100 social accounts
- 800 X posts a month
- Unlimited workspaces
- Unlimited users
- Advanced image editor
- Viral video + UGC templates
- Automations
- API access
- Posting with an AI agent
- Unlimited posts
- Multiple accounts per platform
- Scheduling
- Calendar view
- Repeated posts
- Post delays
- Studio access
- Analytics (beta)
- Post comments
- Dark & light mode
TikTok
Instagram
Facebook
Threads
LinkedIn
YouTube
X
Pinterest · beta
Bluesky
Google Business · coming soon
Discord
Telegram
Slack
Common questions
Write it whereyou ship it.
Connect Gemini to Postemi, and schedule the release post in the same session. Final review stays in the Postemi calendar.