All plugins

postkitty

One post in, every platform out. Fixes and rewrites your draft for each platform and counts the copy with each platform's own rule, splitting long posts into threads. Crops photos and reframes landscape video so every face stays in frame; when two people talk, the choice is a split screen, a cut to whoever is talking or the whole wide shot. Checks every file against the platform's published limits and repairs failures before a file is marked ready. Covers Instagram, TikTok, YouTube Shorts, X, LinkedIn, Threads, Bluesky and Facebook. Runs locally with ffmpeg and OpenCV; no API keys.

mertkayacsToolsv0.1.0Updated 3 hours ago

About

One post in, every platform out. Fixes and rewrites your draft for each platform and counts the copy with each platform's own rule, splitting long posts into threads. Crops photos and reframes landscape video so every face stays in frame; when two people talk, the choice is a split screen, a cut to whoever is talking or the whole wide shot. Checks every file against the platform's published limits and repairs failures before a file is marked ready. Covers Instagram, TikTok, YouTube Shorts, X, LinkedIn, Threads, Bluesky and Facebook. Runs locally with ffmpeg and OpenCV; no API keys.

postkitty by Mert Kaya is a plugin for Hermes Agent. It is for anyone who posts the same thing to several platforms and does not want to rewrite, resize, trim and recount it by hand. You give Hermes a draft, some photos and a landscape video, or only the draft. You get back your text fixed and rewritten for each platform, upload-ready files, advice on where to post, and a review board that shows every file before you upload it.

postkitty is free and open source under the MIT license.

One of the best free and open source plugins for Hermes Agent on automatic multi social media content editing.


Say this to your Hermes

Two messages. The first installs the plugin. The second goes in a new chat, because Hermes loads a plugin's tools when the next chat starts.

Install the postkitty plugin for me: run `hermes plugins install mertkayacs/postkitty --yes-deps --enable` in the terminal. When it finishes, tell me to open a new chat so its tools load.
Use postkitty to turn this into posts for X, LinkedIn and Instagram and fix my wording: [your draft, or the path to a photo or video]

What you can ask Hermes

Say what you have and what you want, in plain words. Each of these is a message you can paste.

  • A draft for several platforms. "Fix my wording and write this for X, LinkedIn and Threads: [your draft]"
  • A thread from a long post. "This is too long for one X post. Turn it into a thread."
  • A group photo. "Make team.jpg ready for Instagram and Bluesky, and keep everyone in the picture."
  • A landscape video. "Turn talk.mp4 into vertical clips for TikTok, Reels and Shorts."
  • Two people on camera. "Put both hosts in a split screen", "Cut to whoever is talking" or "Keep the whole wide shot."
  • A trim or a cover frame. "Use only 0:12 to 0:48 of the clip, and take the cover frame at 0:20."
  • A file from somewhere else. "Will this file upload to TikTok? [path to the file]"
  • A change after the first result. "Shorter for X", "More formal on LinkedIn", "Other hashtags for Instagram" or "Focus on the person on the left in the TikTok clip."

postkitty never posts, uploads or schedules anything. You upload the files in ready/ yourself.

Your draft, fixed for every platform

Paste a rough draft. postkitty fixes the spelling, grammar and punctuation, smooths out clumsy sentences and keeps your voice. Then it writes a version for each platform and counts it the way that platform does, so nothing gets cut off. This is one real run.

Your draft

new episode of two builders is out!! maya and sam talks about how we shiped our app in one weekend, what we cut what broke at 2am and why the launch posts took longer then the code lol. its honestly the most usefull episode we did so far for anyone building on there own

X · 245 of 280 weighted characters

New episode of Two Builders is out. Maya and Sam talk about how we shipped our app in one weekend: what we cut, what broke at 2am, and why the launch posts took longer than the code. Our most useful episode so far if you're building on your own.

Bluesky · 221 of 300 graphemes

New Two Builders episode is out. Maya and Sam on shipping our app in one weekend: what we cut, what broke at 2am, and why the launch posts took longer than the code. Our most useful one yet if you're building on your own.

LinkedIn · 319 of 3,000 characters

New episode of Two Builders is out.

Maya and Sam talk about how we shipped our app in one weekend: what we cut, what broke at 2am, and why the launch posts took longer than the code.

It's honestly the most useful episode we've done so far, especially if you're building on your own.

#BuildInPublic #Startups #Podcast

Threads and Instagram got their own versions in the same run.

Ask for a change

Ask in plain words. This was the next message in the same session:

Make the LinkedIn post more formal, and turn the X post into a thread of two posts.

X thread, post 1 · 98 of 280 weighted characters

New episode of Two Builders is out. Maya and Sam talk about how we shipped our app in one weekend.

X thread, post 2 · 146 of 280 weighted characters

What we cut, what broke at 2am, and why the launch posts took longer than the code. Our most useful episode so far if you're building on your own.

LinkedIn, more formal · 337 of 3,000 characters

We have released a new episode of Two Builders.

Maya and Sam discuss how we shipped our app in one weekend: what we cut, what broke at 2am, and why the launch posts took longer to produce than the code.

It is the most useful episode we have made so far, particularly for anyone building on their own.

#BuildInPublic #Startups #Podcast

You can also ask for a shorter or longer version, another hook or tone, or other hashtags. Every new version is counted again before it goes into ready/.

Turkish draft

two builders'ın yeni bölümü çıktı!! maya ve sam uygulamamızı bir hafta sonunda nasıl yayınladığımızı anlatıyo, neleri kestik gece 2de ne bozuldu ve lansman paylaşımları neden koddan uzun sürdü. kendi başına bir şey geliştiren herkez için şimdiye kadarki en faydalı bölüm bence

X · 270 of 280 weighted characters

Two Builders'ın yeni bölümü çıktı! Maya ve Sam, uygulamamızı bir hafta sonunda nasıl yayınladığımızı anlatıyor: neleri kestik, gece 2'de ne bozuldu, lansman paylaşımları neden koddan uzun sürdü. Kendi başına geliştiren herkes için şimdiye kadarki en faydalı bölüm bence.

German draft

neue folge von two builders ist drausen!! maya und sam erzählen wie wir unsere app an einem wochenende gelauncht haben, was wir gestrichen haben was um 2 uhr nachts kaputt ging und warum die launch posts länger gedauert haben als der code. ehrlich die nützlichste folge bis jetzt für alle die alleine was bauen

X · 235 of 280 weighted characters

Neue Folge von Two Builders ist da. Maya und Sam erzählen, wie wir unsere App an einem Wochenende gelauncht haben: was wir gestrichen haben, was um 2 Uhr nachts kaputt ging und warum die Launch-Posts länger gedauert haben als der Code.

The copy comes from the model your Hermes uses. These runs used Claude Sonnet 5.5, and postkitty counted and checked every version.

What it does

Each platform has its own sizes, length limits and way of counting characters. postkitty handles all of that on your machine, with no API keys, and nothing is uploaded.

  • Text. Fixes spelling, grammar and clumsy sentences, then writes a version for each platform. Each one is counted with that platform's own rule, such as weighted characters on X, graphemes on Bluesky and UTF-16 units on TikTok. Long posts can become threads.
  • Photos. Every crop is planned around the faces the YuNet detector finds. A wide group photo gets a blurred band so nobody is cut off. Location and camera metadata are removed.
  • Video. A landscape clip becomes a vertical video that follows the person talking. When two people talk, you choose: a split screen (the default), a cut to whoever is speaking, or the whole wide shot. Each clip is trimmed to the platform's length and gets a cover frame.
  • Checks. Every file is checked against the platform's published limits. Failures are repaired, and only passing files go into ready/.
  • Advice. Hermes ranks the platforms for your post and saves the topic, audience and tips in advice.md.
  • One board to review. board.html shows every file in a frame of its real shape, with its copy, alt text and checks. Ask for a change and Hermes makes only that file again.
  • Private by default. postkitty reads only the files you name and writes only inside its job folder and its own data folder. It sends no telemetry.

A quick tour

Ask in plain words

Name the platforms and your files and paste the draft. Hermes calls the postkitty tools and replies with the platforms ranked for your post.

Every face stays in frame

A center crop of this team photo cuts off the two people at the edges. The postkitty feed image keeps all five.

See where it fits

The board opens with the audience and tone of your post, the platforms ranked for it, and tips.

Platforms

| Platform | Files | Copy limit |
|---|---|---|
| Instagram | Reel and Story 1080×1920, feed photo 1080×1350 | 2,200 characters, 5 hashtags |
| TikTok | Video 1080×1920 | 2,200 UTF-16 units |
| YouTube Shorts | Short 1080×1920 | Title up to 100 characters |
| X | Video 1920×1080, image 1600×900 | 280 weighted characters |
| LinkedIn | Video 1080×1350, image 1080×1080 | 3,000 characters |
| Threads | Video 1080×1920, image 1080×1350 | 500 characters |
| Bluesky | Video 1080×1920, image 1080×1350 | 300 graphemes |
| Facebook | Reel 1080×1920, feed photo 1080×1350 | 63,206 characters |

Every limit in data/platforms.yaml links to the page it came from and the date it was checked, last in November 2026.

Quick start

Install the plugin and turn it on:

hermes plugins install mertkayacs/postkitty --yes-deps --enable

Or let Hermes install it with the two messages in Say this to your Hermes.

Then open a new chat (the plugin's tools load when the next chat starts) and talk to Hermes:

Make this post ready for Instagram, TikTok, YouTube Shorts and LinkedIn.
clip.mp4 is the video, team.jpg is our team.
My draft: New episode is out...

Text alone works too: paste a draft and name the platforms.

postkitty needs Hermes Agent 0.22.7 or newer and ffmpeg with ffprobe on your PATH. Type /postkitty in a Hermes chat for a short description, example requests and every target with its size and main limits, or /postkitty tiktok for one platform.

Launch video

FAQ

postkitty reads only the files you name and writes only inside its job folder and its own data folder. It sends no telemetry. The one download is the YuNet face detector, fetched once from the OpenCV Zoo and verified before use. The copy and advice come from the model your Hermes is set up with.

Hermes calls five tools, in this order.

| Tool | What it does |
| --- | --- |
| postkitty_scan | Reads your photos, videos and draft, and plans a framing for each platform. |
| postkitty_copy | Stores the advice and the drafts, and checks each draft with its platform's counting rule. |
| postkitty_make | Renders every file, checks it, repairs failures and writes the review board. |
| postkitty_redo | Re-renders one platform with a different focus, layout, trim or cover frame. |
| postkitty_check | Checks any file against one platform, including files postkitty did not make. |

Set these on the plugin's settings page in Hermes, or under plugins.entries.postkitty.settings in config.yaml.

| Key | Default | Meaning |
| --- | --- | --- |
| output_dir | empty | Where job folders go. Empty means ./postkitty in the session's working folder. |
| default_platforms | empty | Platforms to make when you name none. Empty means every platform that fits the input. |
| loudness_lufs | -14 | Loudness target for video audio. |

Yes. postkitty_check checks any photo or video against one platform's limits, wherever the file came from.

OpenCV and the YuNet face detector, FFmpeg, Pillow and NumPy, with the counting rules of twitter-text and the AT Protocol lexicons. Seam carving can use caire by Endre Simo. The people in the demo photos are AI-generated.

Development

python -m pytest -q
ruff check .

The tests use synthetic clips and a stand-in face detector. GitHub Actions runs them on Python 3.11 and 3.12.

If postkitty is useful to you, a ⭐ helps other people find it.

License

MIT. postkitty is built by Mert Kaya (@mertkayaai on X, @mertkayacs on GitHub) at Eschatia Labs, an independent, non-profit open-source AI research lab. Photos behind the screenshots are credited in docs/assets/readme/CREDITS.md.

views

README from the reviewed commit 490d8f9; it updates when the author re-pins.