Skip to content
← All articles
Cursor: Create and Publish Social Media Posts

Cursor: Create and Publish Social Media Posts

The best moment to write a launch post is right after the feature works, and in Cursor that moment happens inside the editor. The agent has the diff, the changelog and the context. What it is missing is a way to make a visual and a way to publish. fal.ai or Higgsfield covers the first, PostSider the second.

I already wrote about turning Cursor release notes into scheduled posts. This guide adds the media side: a generated launch image or short clip, stored and attached properly, so the posts are not text-only.

Three MCP servers, one mcp.json

Cursor reads MCP servers from mcp.json. All three services here are hosted remote servers, so each entry is just a URL.

Put this in ~/.cursor/mcp.json for global use, or .cursor/mcp.json inside a project:

{
  "mcpServers": {
    "postsider": {
      "url": "https://mcp.postsider.com/mcp"
    },
    "fal": {
      "url": "https://mcp.fal.ai/mcp-relay"
    },
    "higgsfield": {
      "url": "https://mcp.higgsfield.ai/mcp"
    }
  }
}

Save the file and open Cursor’s MCP settings. Each server shows up with a sign-in prompt the first time. Approve PostSider, fal and Higgsfield in the browser windows that open, and the tools appear in the agent’s list. You can drop either generator if you only use one. Higgsfield is also available as a one-click install from the Cursor Marketplace, according to Higgsfield’s help center.

If you prefer API keys (for example on a shared machine where browser sign-in is awkward), both PostSider and fal have key-based endpoints. Keep the keys in environment variables, since Cursor expands ${env:NAME} in url and headers:

{
  "mcpServers": {
    "postsider": {
      "url": "https://api.postsider.com/mcp",
      "headers": { "Authorization": "Bearer ${env:POSTSIDER_API_KEY}" }
    },
    "fal": {
      "url": "https://mcp.fal.ai/mcp",
      "headers": { "Authorization": "Bearer ${env:FAL_KEY}" }
    }
  }
}

Never commit a literal key into a project .cursor/mcp.json. The PostSider key lives under Settings, then Developers, then Public API and can publish to every connected account.

Before generating anything, ask the agent: “List my PostSider channels.” Real account names back means the publishing side works.

From merged feature to drafted posts

The agent reads what changed, writes the posts, asks the generator for a visual, stores the file in PostSider and creates drafts. You approve twice: the visual, and the drafts.

From git diff to drafted launch postsEach MCP call stops at Cursor’s approval prompt unless you allowlist itRead the changediff, PR title,CHANGELOG entryWrite captionsone per network,plus an image promptGenerate + reviewfal or Higgsfield,you pick a variantStoreupload_media_from_urlCheck rulesget_channel_rules forX and LinkedInCreate draftscreate_post type: draft,you approve the callRead backget_post: report whatwas saved, with IDsFilled boxes are the two places a person decides. Everything else is plumbing.

Step by step, in plain words:

  1. Read the change. The agent already has the repository. Point it at the PR, the diff or the new changelog entry.
  2. Write captions. One per network, plus an image prompt that describes the feature visually (not a screenshot of code).
  3. Generate and review. fal.ai or Higgsfield returns a file URL. Look at the result and pick or redo.
  4. Store. postsider_upload_media_from_url copies the file into your PostSider media library and returns an id and path.
  5. Check rules. postsider_get_channel_rules returns length limits and required settings, for example who_can_reply_post on X.
  6. Create drafts. postsider_create_post with type: draft and the stored media in images.
  7. Read back. postsider_get_post confirms what was actually saved.

Step 4 is not optional. Generator links are temporary delivery URLs, and fal’s own results carry a note that source URLs may expire. A post that waits in the queue must point at PostSider’s copy.

What a Cursor agent turn looks like

This is an illustrative agent turn after merging a “dark mode” feature. The tool names are the real ones.

Inside the Cursor agent panelIllustrative. Grey rows are tool calls; the outlined row is Cursor’s approval prompt.AgentYou:Draft launch posts for the dark mode PR we just merged.X and LinkedIn, with a 16:9 image from fal. Drafts only.Read CHANGELOG.md, src/theme/ (12 files)MCP fal: run_model fal-ai/flux/dev 1600x896Agent: Image ready (link). Captions below. Store and create drafts?Run MCP tool postsider_create_post?Run | Skip | (not allowlisted)MCP postsider: upload_media_from_url, get_channel_rules x2MCP postsider: create_post (draft), get_postAgent: 2 drafts saved with the same image. X: 248 chars, replies: everyone.LinkedIn: 702 chars. Open the PostSider calendar to approve and schedule.

That approval prompt is Cursor’s default for MCP tools. The existing Cursor guide goes deeper on why posting tools should stay out of auto-run modes; the short version is that a typo in code gets fixed in the next commit, a typo in a public post gets screenshotted.

Ask for visuals, not screenshots of code

Developers default to screenshots, and screenshots of code rarely work on social media. A generated image that shows the outcome usually performs better and is faster to make.

A few rules I give the agent:

  • Describe the benefit, not the implementation. “A calm dark interface at night, a laptop on a desk” beats “React context provider for theme tokens”.
  • Ask for the right shape. 16:9 (for example 1600x900) for X and LinkedIn link-style posts, 4:5 (1080x1350) for Instagram. Note that some models round to multiples of 16, so 1080x1350 can come back as 1072x1344. Still 4:5, still fine.
  • No text in the image. Models still misspell. Put the words in the caption.
  • Real UI when it matters. If the post must show the actual product, export a real screenshot, put it somewhere with a public link, and import that instead. For a file that only exists on your machine, PostSider’s postsider_prepare_upload gives the agent an upload command to run, then postsider_finalize_upload registers it.

The image sizes cheat sheet has every network, and the Claude guide has the file limits and a cost chart for fal.ai models (one image costs cents).

Prompts for the Cursor agent

Paste these into the agent panel and edit the parts in capitals.

Read the last merged PR and CHANGELOG.md. Write an X post (under 260 chars)
and a LinkedIn post (under 900 chars) announcing FEATURE for users.
Generate 2 options of a 16:9 image with fal.ai that shows the benefit,
minimal black and white, no text. Wait for me to pick one.
Then store it in PostSider, check the rules for both channels and
create both posts as DRAFTS. Read them back and give me the post IDs.
Make a 5 second 9:16 MP4 with Higgsfield showing FEATURE in use.
After I approve it, create PostSider drafts for TikTok and LinkedIn.
TikTok privacy: public. Do not schedule anything.

Start with one draft

Add the three URLs to mcp.json, sign in once, and get one draft with a generated image into your calendar. After that, launch posts become part of shipping.

You can start with PostSider for free and connect your social media accounts in a few minutes. The full tool reference is in the PostSider MCP docs.

Frequently asked questions

How do I add PostSider, fal.ai and Higgsfield to Cursor?

Add three remote servers under mcpServers in ~/.cursor/mcp.json (or .cursor/mcp.json in a project), each with only a url. On first use Cursor opens each service's sign-in page in your browser. Higgsfield can also be installed from the Cursor Marketplace.

Should the MCP config go in the project or in my home folder?

Put PostSider and the generator in the global ~/.cursor/mcp.json if you use them across projects. Use the project .cursor/mcp.json when a repository should always come with its own publishing setup. If both define the same server name, the project file wins.

Will Cursor publish a post without asking?

By default Cursor asks for approval before it runs an MCP tool. Keep PostSider's write tools out of any auto-run allowlist, and ask the agent to create drafts, so a second review happens in the PostSider calendar.

Can Cursor use a screenshot from my app instead of a generated image?

Yes, if the file is reachable. PostSider can import from a public HTTPS link, and for local files the PostSider MCP server offers a prepare-upload flow that gives the agent an upload command to run. Generated images from fal.ai or Higgsfield already come with a public link.

Run your social media
on autopilot.

7 days free, no credit card. Publish it yourself, or let your AI agent take the wheel.

30+ networks · MCP, REST and SDK · No credit card