@shane.bsky.shas.am/emdash-to-buffer-plus
EmDash to Buffer Plus
Unofficial, not affiliated with Buffer: share new entries to Buffer, fitted to each network, with delivery tracking and reports.
About EmDash to Buffer Plus
An unofficial plugin. It is not affiliated with, endorsed by or supported by Buffer.
Shares new entries to your Buffer channels, fitted to each network, with delivery tracking, an engagement dashboard, an editor panel and MCP tools.
- Every network Buffer's API can post to. Text is fitted to each network's limit, only the description is shortened, and each post carries the entry's image or a link card where Buffer supports one.
- Tracked delivery. Each post is followed from your site to the live post. A failed post shows Buffer's reason and can be retried, and an uncertain answer is checked in Buffer before anything is sent again, so nothing posts twice.
- Reports. Posts sent, queued and failed, impressions and engagement over 7, 30 or 90 days, top entries and a table per channel, by day in your time zone. A missing figure is shown as missing, never as zero.
- Editor panel. Before an entry is first sent, leave out a channel or write custom text for it. Afterwards, see each channel's state and a link to the live post.
- MCP tools. Four read-only tools that answer from stored data.
Only entries first published after you install the plugin are shared, and republishing never sends again.
The plugin uses the Buffer API with your personal API key.
Screenshots
Faq
Will it share my existing posts? No. An administrator can share an older entry by hand with Share now in its editor panel. Republishing never sends an entry again.
Why was a channel skipped? The editor panel and the Buffer Plus page say why: the network needs an image the entry lacks, Instagram cannot take the image's shape, the channel is disconnected or locked, no Pinterest board is chosen, the text is too long even without the description, or Buffer's API cannot post there (YouTube, WhatsApp, Start Page).
Which tags work in post text? {title}, {description} (the entry's Description or SEO description, also written {excerpt}) and {url}.
Why does a figure say "None yet"? Buffer reports figures about once a day, and only those a network gives. Missing is not zero.
Do impressions include posts made elsewhere? Yes. They cover every post on the shared channels, split into posts made directly on the network and through Buffer, this plugin included. Sent, queued and failed count this plugin's posts only.
Why only 31 days of figures? Buffer limits how far back figures go by plan: the Free plan gives 31 days (Buffer's own answer, not in its docs). The plugin learns the limit from Buffer and shows what the plan allows.
Can a post go out twice? No: after an uncertain answer it looks for the post in Buffer before sending again.
How many Buffer requests does it make? About 40 to 50 a day for 10 channels, from Buffer's per-account limit shared with your other keys and assistants (Free plan: 250 a day, 3,000 in 30 days). Reports pause while less than "Leave for other tools" is left.
What if Buffer's limit is reached? Posts are not lost. They wait and go out by themselves when the limit refills. Buffer's separate per-channel posting limit can refuse a post: select Retry the next day.
Does it work on every network? It follows Buffer's documented rules but is not yet tried live on every network. Please report what you find.
Security
Report a security problem privately through the repository's advisory form: https://github.com/shanelord01/emdash-to-buffer-plus/security/advisories/new
What the plugin can do
- Read content, the schema and media, to find a published entry's link and image. It never changes your content.
- Make requests to
api.buffer.comonly. It sends Buffer each post's text, link, image address and alt text.
How it handles your Buffer key
- The key is saved as an encrypted setting (AES-GCM with
EMDASH_ENCRYPTION_KEY). Without that key EmDash refuses to save it rather than store it in plain text. - The key is never shown in the admin after saving and never logged.
- A Buffer key acts for your whole Buffer account. If you think it has leaked, create a new one in Buffer under Settings > API and paste it into the plugin's settings.
Images
Buffer fetches images itself. The plugin passes an image address only when it is https and on your site's own host, or an absolute https address from an external media provider. IP addresses, localhost and private names are refused.
Who can do what
Viewing the Buffer Plus page, the dashboard card, the editor panel and the MCP tools needs the editor role. Discovering channels, saving setup, Retry and Send again need the administrator role.
Changelog
0.1.6, 9 October 2026
- Instagram takes 4:5 (tall) to 1.91:1 (wide) only, and Buffer cannot crop. An image known to be outside that range now skips Instagram up front with the reason, instead of failing at Buffer. Other networks are not affected, and an image of unknown size is sent as before.
- The editor panel warns before the first share. After a differently shaped image is published, Send again checks it again and sends.
- Send again is offered only once Buffer is done with a post, never while it is queued.
- The charts name each line and its colour, and every line looks different: a colour per channel, with Direct solid, Buffer dashed and Not split dotted. Before, four unsplit channels drew pink and orange twice.
- Engagement rates show one decimal place, and the Setup view's dates match the rest of the admin.
- No new permissions, settings or MCP tool changes.
0.1.5, 9 October 2026
- Days are now your local days. 0.1.4 counted each post on its UTC day, so in Sydney a post before about 10 or 11 am showed a day early, and ranges turned over at UTC midnight. A new setting, Time zone (default Australia/Sydney), sets the zone for charts, ranges and times.
- After the update the first sync drops the daily figures stored by UTC day and reads them again from Buffer, as far back as your plan allows (31 days on the Free plan). Until then the figure charts are empty.
- A banner on the registry listing.
- No new permissions. The MCP tools now describe their days in your time zone, so EmDash turns Agent access off after the update. Turn it on again under Plugins.
Full history: CHANGELOG.md.
Installation
You need EmDash 1.1.0 or later with a sandbox runner, a Buffer account with your channels connected, room in your Buffer account's API limit (shared by every key and connected assistant: 250 requests a day and 3,000 in 30 days on the Free plan, the plugin uses about 40 to 50 a day for 10 channels), and EMDASH_ENCRYPTION_KEY set on the site so the API key can be saved encrypted (npx emdash secrets generate makes one).
- Install the plugin from the Registry and review its permissions: read content, read the schema, read media, and network requests to
api.buffer.comonly. - In Buffer, open Settings > API (
https://publish.buffer.com/settings/api) and create a personal API key. - In EmDash, open Plugins, then this plugin's settings, and paste the key into Buffer API key. Set Time zone to your IANA zone (default Australia/Sydney): the reports count each post on its day there. Save.
- Open Plugins > Buffer Plus and select Setup.
- Select Discover channels.
- Turn on each channel you want to post to, and choose when it posts (queue, share next, share now or a Buffer draft) and what it attaches (image, link card or nothing). Pinterest also needs a board.
- Under Collections, tick the collections to share from and choose where each takes its image.
- Publish an entry. It goes to Buffer straight away, or within a minute or two when many channels are on.
Each collection needs a URL Pattern (under Content Types) so entries have a public link. On Cloudflare Workers, the sync needs the Cron Trigger from EmDash's deployment guide.
To use the MCP tools, turn on Agent access for the plugin under Plugins. Turn it on again after an update that adds a tool or a permission.