I build small WordPress plugins to solve problems I actually ran into on this site. If they turn out useful to me for more than a week, I clean them up and release them. This page lists them.
kobak social
Share posts to Mastodon and Bluesky. LinkedIn optional.
When a post is published for the first time, it goes out to Bluesky and Mastodon. The plugin remembers the URL of every copy it created and lists them under the post, marked up with the u-syndication microformat.
To be clear about the boundaries: the plugin publishes and marks up. It does not receive webmentions and it does not talk to Brid.gy. Getting replies back needs two more pieces alongside it: a webmention receiver such as the Webmention plugin, and Brid.gy, a free external service you connect to your accounts. Without those, the plugin still shares your posts, you simply do not get replies back.
What it does
- Posts to Bluesky and Mastodon on first publish. Editing an old post never re-shares it.
- Handles the character limits, 300 on Bluesky and 500 on Mastodon. The excerpt is shortened, the title and the link always survive.
- Links in the Bluesky post are clickable, using proper richtext facets.
- Adds a syndication box under the post with
u-syndicationlinks. - Can hide the local comment form without breaking webmentions, for people who collect replies on social instead.
- Keeps a short log of what was sent and what came back.
- LinkedIn support is optional and off by default. It works, but it needs your own LinkedIn app and a token that expires every 60 days, so it is deliberately kept separate. Currently a bit complicated, but once you set it up, it works.
Why I wrote it
For years I used Jetpack for this. One day I looked at my own Bluesky feed and could not find a single link to my blog.
The reason turned out to be the Jetpack sync queue. Jetpack sends the publish event to WordPress.com and the sharing happens over there. My sync queue had a lag of a few weeks. Disconnect, reconnect didn’t solve the issue. Jetpack is awesome, but a huge plugin with lots of functionality which I only partially use.
So I stopped trying to fix it and wrote something that talks to the networks directly, from my own server, with no middleman that can silently fall behind. If it fails, it says so in the log. That is the whole design goal.
Download and install
The plugin is in the official WordPress plugin directory: wordpress.org/plugins/kobak-social. The simplest way is to search for kobak social under Plugins, Add New in your own WordPress admin.
Once it is active, go to Settings, kobak social and fill in two things:
- Bluesky: your handle and an app password. In Bluesky, go to Settings, Privacy and security, App passwords. Do not use your account password.
- Mastodon: your instance URL and an access token. In Mastodon, go to Preferences, Development, New application, and give it the
write:statusesscope.
Tick Automatic sharing and you are done. There is a test button that shares your latest post, so you do not have to wait for the next one to find out whether it works.
LinkedIn is a separate section further down. Leave it switched off unless you want it. If you do, you will need to create your own LinkedIn app, add the Share on LinkedIn and Sign In with LinkedIn using OpenID Connect products, and generate a token with the w_member_social, openid and profile scopes. There is a button that checks the connection without posting anything, and another that posts a test to LinkedIn only.
Bugs and questions
If something does not work, the log at the bottom of the settings page records every attempt and the exact error that came back. That is usually enough to tell what happened.
If it is not, write to contact at this domain and include what the log says. I read everything, though I do not always answer quickly.
I am Balázs Koren, a maths teacher and EdTech specialist in Budapest. More about me.