10 DAYS ONLY · $500 VALUE Top 100 Viral Hooks + Repurpose Engine (Claude Skills) Start free → Start free →
Developer Guide

How to Make Hermes Agent Post to Social Media (All Platforms)

July 21, 2026 · By Sabrina Ramonov

Hermes Agent posts to X out of the box and nothing else. Here is how to connect LinkedIn, Instagram, TikTok, and six more platforms to your agent.

Hermes Agent connected through MCP to nine social platforms via Blotato

Hermes Agent social media support is real, shipping, and narrower than almost everyone realizes. Your agent can post to X right now using a skill that comes with the install. It cannot post to LinkedIn, Instagram, TikTok, YouTube, Facebook, Threads, Bluesky, or Pinterest. Not with a setting, not with a flag.

That is not a criticism of Hermes. It is just where the edge sits, and once you can see it the rest of the setup gets easy.

The confusion is understandable, because Hermes talks to almost everything else. It reaches you on Telegram, Discord, Slack, WhatsApp, Signal, SMS, and about a dozen other channels. Messaging is a solved problem here. Publishing is a separate system that people reasonably assume is the same one.

Hermes Agent Social Media Support at a Glance (2026)

Here is every path from a Hermes agent to a social platform, and what each one actually costs you.

PathPlatformsSetupWhere it breaks
Native xurl skillX onlyInstall the xurl binary, register your own X app, authenticate outside the agentOne platform. You own the X app, the credentials, and the API bill
Write your own skillWhatever you buildA skill file plus an OAuth app per platformEight platforms means eight OAuth apps, eight token refreshes, eight sets of posting rules
Point Hermes at an MCP serverWhatever the server coversAdd a block to one config file, approve onceYou inherit the provider’s uptime and pricing

Hermes solved X and left the other eight to you. If you want the same agent posting to LinkedIn and Instagram too, you are choosing between writing and maintaining eight integrations or pointing at one server that already did.

A r/hermesagent thread asking how to automate posting by agent, with 20+ replies, mentions being quoted $100 a month for it. You do not need to pay that. Hosted multi-platform posting starts at $29 a month on Blotato and $29 on Postiz, and both Postiz and Mixpost can be self-hosted for free. What matters more than the entry price is whether the bill moves when volume does. An always-on agent posts more than a human, and Blotato’s price is flat regardless.

I build one of those servers, so treat my framing accordingly. If you already know you want that path, connect your accounts and point Hermes at them and the config below takes about two minutes.

What the Native X Skill Actually Does

The xurl skill wraps X’s official developer CLI, and it is more capable than most people expect. It posts, replies, quotes, and deletes. It searches posts, reads timelines and mentions, likes, reposts, bookmarks, follows, sends direct messages, uploads images and video, and passes raw calls to any X API v2 endpoint.

That is a genuinely complete X integration. The catch is not capability. It is setup, and specifically who is allowed to do it.

The skill’s own documentation is strict about this. You register the X developer app yourself. You run xurl auth oauth2 yourself, outside the agent session. The skill explicitly forbids the agent from touching seven credential flags, bans --verbose in agent sessions because it can leak auth headers, and instructs the agent never to read or summarize the ~/.xurl credential file.

So even on the one platform Hermes supports natively, the agent cannot set itself up. You do the X developer app dance first, and then the agent can post.

The skill’s metadata explains why the ceiling sits where it does. Its upstream_skill field points at OpenClaw’s repository, and authorship is credited to the X developer platform, OpenClaw, and Hermes Agent together. Hermes inherited its only social skill rather than writing one. Nobody at Nous Research set out to build a publishing layer, so the surface stops exactly where the borrowed skill stopped.

You can check this yourself. The entire social surface of the repository is four paths:

skills/social-media/
├── DESCRIPTION.md
└── xurl/
    └── SKILL.md

No LinkedIn directory, no Instagram directory, nothing staged for the platforms people assume are coming.

It is worth searching wider than that folder, because Hermes also ships an optional-skills tree with nineteen categories covering everything from blockchain to devops to email. None of them post to a social platform either. The closest is skills/media/youtube-content, and that one only pulls transcripts and reformats them. It reads YouTube. It cannot publish to it.

Paying Nous does not close the gap

The obvious next thought is that this is a free-tier limitation and money solves it. It does not. The Nous Tool Gateway that comes with a paid Nous Portal subscription bundles web search, nine image models, text to speech, and cloud browser automation into a single endpoint. It is a genuinely good deal for the things it covers.

Social publishing is not one of them. You can pay Nous every month and your agent still cannot post to LinkedIn.

The Nous Tool Gateway documentation, listing web search, image generation, text to speech, and browser automation as the included tools.
The Nous Tool Gateway documentation, listing web search, image generation, text to speech, and browser automation as the included tools.

This can change. Hermes ships fast, and a LinkedIn skill could land next month. Check the directory yourself before you assume either way, because a post written in July is a poor substitute for a one-line look at the repository.

Why the Other Eight Platforms Are Harder Than X

X is the easiest social API to automate against, which is precisely why it is the one that got built.

Every other platform adds something X does not. Facebook needs a page ID, and a media type on top of that for video. Pinterest needs a board to post to. YouTube wants a title, a privacy status, and an explicit decision about whether to notify subscribers. TikTok is the heaviest, with seven required fields including a privacy level and a declaration of whether the content is AI generated.

PlatformBeyond the text, you must supply
XNothing
ThreadsNothing
BlueskyNothing
InstagramNothing required, though reels and stories take extra fields
LinkedInNothing for a personal profile, a page ID for company pages
FacebookPage ID, plus a media type for video
PinterestBoard ID
YouTubeTitle, privacy status, subscriber notification
TikTokSeven fields including privacy level and AI-generated flag

A Hermes skill can shell out to real commands, so this is not a toy, but the contract between the model and the platform is still described in prose rather than enforced by a schema. When TikTok rejects a post because isAiGenerated was missing, your agent gets a raw error string back and decides for itself what to do next. That is the failure mode you least want from something holding publishing rights.

The bigger cost is not the writing. It is that each platform you add is an OAuth app you own, a token refresh you monitor, and a set of required fields that changes without telling you. That work does not finish.

The Hermes Agent skills documentation, showing that skills live in the local skills directory and follow the open agentskills.io standard.
The Hermes Agent skills documentation, showing that skills live in the local skills directory and follow the open agentskills.io standard.

If you do want to go that route, skills live in ~/.hermes/skills/ and follow the open agentskills.io standard, so anything you write is portable to other agents that support it. That portability is real and worth weighing. It just does not reduce the number of OAuth apps you end up maintaining.

Connecting Hermes to an MCP Server

MCP is the alternative, and Hermes supports it natively. The agent connects to external tool servers and gets typed tools with defined parameters instead of prompt text describing an API.

Hermes ships a catalog of one-click installs for MCP servers Nous has approved, with a trust model and manifest versioning behind it. Third-party servers like mine are not in that catalog, so you add them by hand. That is one block of YAML.

What you need first

Three things, and the third is the one people skip.

Install Hermes and complete onboarding. Have a paid plan with whichever provider you use, because API access is generally not part of a trial. On Blotato specifically, generating an API key from Settings and then API immediately ends a free trial and starts the paid Starter subscription, so plan on subscribing rather than trialing if the API is what you came for.

The Blotato MCP setup guide, listing a paid subscription and at least one connected social account as prerequisites.
The Blotato MCP setup guide, listing a paid subscription and at least one connected social account as prerequisites.

Then connect your social accounts in the provider’s dashboard before you touch the Hermes config. This is the step that wastes people’s afternoons. The connection itself succeeds and the tools show up, but there are no account IDs for the agent to target, so posting has nowhere to go. If your agent reports that it cannot find an account, check the dashboard before you start rewriting config.

Adding the server

Hermes reads its configuration from ~/.hermes/config.yaml. MCP servers go under mcp_servers:

mcp_servers:
  blotato:
    url: "https://mcp.blotato.com/mcp"
    auth: oauth
    tools:
      exclude: [blotato_create_post]

The auth: oauth line triggers a browser flow. Hermes prints an authorization URL, opens your browser, and waits on a loopback port. Tokens cache at ~/.hermes/mcp-tokens/<server>.json with 0600 permissions, so they are readable only by you.

The tools key nests. include and exclude both sit underneath it. There is no flat tools.exclude key, and if you write one it will not do what you expect.

Precedence matters here and it runs the opposite way from most people’s intuition. If a tool appears in both lists, include wins. So an exclude entry does not protect you when a matching include list is also present. If you are excluding a tool for safety, make sure it is not silently re-enabled by an include list sitting above it.

I have excluded the immediate-publish tool in that example on purpose. That is the draft-first pattern, and the next section covers why it is worth keeping for a week.

If you need static headers instead of OAuth, Hermes supports those too, along with ${VAR} substitution that resolves from ~/.hermes/.env or your shell environment at connection time. Never paste a raw key into the config file.

The Hermes Agent MCP documentation showing configuration structure and the approved-server catalog.
The Hermes Agent MCP documentation showing configuration structure and the approved-server catalog.

Confirming it worked

Restart Hermes and ask it to list its available tools. You should see the server’s tools namespaced, and the one you excluded should be absent. If the tools appear but posting fails, the problem is almost always the connected-accounts step above rather than the config.

Start in Draft Mode

Do not give an agent publishing rights on day one. Give it drafting rights and watch what it produces for a week.

The exclusion in the config above does exactly that. The agent can compose, schedule, and stage. It cannot push something live without you. You will learn more from reading seven days of drafts than from any amount of prompt tuning, because you will find out fast whether your agent understands the difference between your LinkedIn voice and your X voice.

Once you trust it, remove the exclusion. The cost of running this way for a week is a week. The cost of skipping it is whatever your agent posts before you notice.

There is a second reason this matters on Hermes specifically. Hermes runs persistently and reaches you through messaging platforms, which means it can act while you are asleep. A coding assistant only does something when you invoke it. An always-on agent with publishing rights can post at 3am because a scheduled task fired, and you find out in the morning.

Connecting Hermes Alongside Everything Else

One connection covers more than Hermes. The same MCP server works with any MCP-compatible client, so the agent you use in the terminal and the assistant you use in a browser can share a publishing layer.

For Claude Code, one command:

claude mcp add --transport http blotato https://mcp.blotato.com/mcp

For Claude Desktop, Cowork, or the web app, the path is Customize, then Connectors, then the plus button, then Add custom connector. Name it, paste the same server URL, press Connect, and approve access. You need to be logged into your account for the approval step to resolve.

If you are automating with n8n or Make, those ship their own integrations and skip the MCP path entirely.

I wrote a companion piece on connecting OpenClaw agents to social accounts that covers the same decision from the other side. The two frameworks are close cousins, which the shared xurl skill makes literal, and people comparing them tend to land on the same question.

The Honest Pitch: One Connection, Every Platform

I am the founder of Blotato, so here is the bias stated plainly before the pitch.

The argument is not that Blotato is the only way to do this. Ayrshare, Postiz, and Mixpost all solve versions of the same problem, and any of them beats hand-rolling eight integrations. The argument is that a hosted, typed tool layer is the right shape for this job, and that the one I built covers nine platforms behind a flat price that does not move when your agent gets busy.

One API. Every social platform.

Some people would rather not add an MCP server at all, and a Hermes skill can call an HTTP endpoint directly. If that is you, the whole integration is one request:

curl -X POST https://backend.blotato.com/v2/posts \
  -H "blotato-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "post": {
      "accountId": "YOUR_LINKEDIN_ACCOUNT_ID",
      "target": { "targetType": "linkedin" },
      "content": { "text": "Posted from a Hermes agent." }
    }
  }'

Two things trip people up here. The header is blotato-api-key, not an Authorization: Bearer token. And that accountId is not something you invent: fetch it from GET /users/me/accounts, which lists every social account you have connected and its ID. If you are posting to a Facebook or LinkedIn company page you need a pageId as well, from GET /users/me/accounts/:accountId/subaccounts, and Pinterest boards come from GET /social/pinterest/boards.

Through MCP you never touch any of this. The agent calls a tool that lists your accounts and passes the right ID itself, which is the practical difference between typed tools and a skill file full of instructions. The API documentation and the MCP setup guide cover the rest.

The MCP server lives at https://mcp.blotato.com/mcp. Point Hermes at it, or Claude Code, or Claude Desktop, or any MCP-compatible agent, and the publishing layer stays the same across all of them. Each client still needs its own connection step, but you configure accounts, platforms, and posting rules once instead of re-solving them inside every tool you adopt.

Connect your accounts and start posting

Sabrina’s Take

I am biased, obviously. But the thing I would tell you even if you never touch Blotato is that the maintenance cost of hand-written skills is invisible when you start and unavoidable six months later.

Use the native xurl skill if X is your whole publishing surface. It is well built and it is free. The moment you need a second platform, stop writing skills and point at a typed tool layer instead, whoever provides it.

Hermes Agent Social Media FAQs

Can Hermes Agent post to social media?

Yes, but only to X out of the box. The xurl skill ships with Hermes and covers posting, replying, searching, direct messages, and media uploads on X. LinkedIn, Instagram, TikTok, YouTube, Facebook, Threads, Bluesky, and Pinterest have no native skill, so each one needs either a skill you write yourself or an MCP server that provides those tools.

How do I automate social media posting with Hermes Agent without paying per platform?

Connect one MCP server that covers multiple platforms rather than building per-platform integrations. Add a mcp_servers block to ~/.hermes/config.yaml pointing at the server URL, authenticate once through the OAuth flow, and the agent gains typed posting tools for every platform that server supports.

Is Hermes Agent free to use?

Hermes Agent itself is open source under the MIT license and free to run. Costs come from the model provider you point it at and any paid services you connect, including social publishing APIs. The native X skill is free but requires your own X developer app, which has its own pricing.

Do I need the xurl binary if I use an MCP server?

No. The xurl skill and an MCP server are independent paths. If you post to X through an MCP server, you do not need the xurl binary or an X developer app at all. You would only install xurl if you specifically want the native skill’s deeper X features, such as raw v2 endpoint access.

What messaging platforms does Hermes Agent work with?

Hermes connects to Telegram, Discord, Slack, WhatsApp, Signal, SMS, email, Microsoft Teams, Matrix, and a number of others, plus a browser interface. WhatsApp works through a bridge that emulates WhatsApp Web rather than the official Business API, so it does not require a Meta developer account. Messaging and social publishing are separate systems in Hermes.

How do I stop my Hermes agent from posting without my approval?

Exclude the immediate-publish tool in your MCP configuration using the nested tools and exclude keys. The agent keeps its drafting and scheduling tools and loses the ability to push content live. Run that way for a week before granting full publishing rights.