medienbaecker/kirby-mastodon

Two-way Mastodon integration for Kirby: post pages from the Panel or CLI, fetch and display replies

Maintainers

Package info

github.com/medienbaecker/kirby-mastodon

Type:kirby-plugin

pkg:composer/medienbaecker/kirby-mastodon

Statistics

Installs: 0

Dependents: 0

Suggesters: 0

Stars: 9

Open Issues: 0

2.0.1 2026-05-04 19:34 UTC

This package is auto-updated.

Last update: 2026-05-04 19:35:30 UTC


README

Post Kirby pages to Mastodon from the Panel or CLI. Display replies, stars and boosts on the backend and frontend.

Panel section in action: composing a toot with live preview, posting, then watching reply, boost and favourite tiles update with engagement counts.

Installation

composer require medienbaecker/kirby-mastodon

Configuration

// site/config/config.php
return [
    'medienbaecker.kirby-mastodon' => [
        'instance'      => 'https://mastodon.social',
        'token'         => 'YOUR_APP_TOKEN_HERE', // scope: write:statuses
        'post.default' => '{{ page.title }}: {{ page.url }}',
    ],
];

All options:

Option Default
instance Mastodon instance URL
token App token with write:statuses scope
post.default {{ page.title }}\n\n{{ page.url }} Default toot text. String or closure receiving the page. Supports page/site query placeholders. The kirby and user globals are intentionally shadowed so user-edited templates can't leak {{ kirby.option('token') }} or similar.
name Mastodon Brand name shown in the section labels
field mastodon_url Page field that stores the posted toot URL
cache.ttl 5 Reply cache freshness in minutes. 0 disables.

Posting

Add the section to a page blueprint:

sections:
  mastodon:
    type: mastodon

Before posting the section shows a textarea seeded with post.default, a Preview toggle, and a Post button. After posting it shows reply, boost and favourite counts plus Refresh and Unlink buttons. The { } button opens a dialog listing every supported placeholder. Only the posted URL is stored on the page (in mastodon_url); the toot text itself lives on Mastodon. Unlinking only clears the local field; the toot is left intact.

Or post from the CLI:

kirby mastodon:post path/to/article
kirby mastodon:post path/to/article --text="Custom toot for {{ page.title }}"

Requires composer global require getkirby/cli.

Displaying replies

<?php snippet('mastodon-replies') ?>

The wrapper snippet pulls in sub-snippets for heading, stats, list, reply, outro, empty, and error. Override any of them by placing your own version at site/snippets/mastodon-replies/<name>.php.

Reply data is also available raw via $page->mastodonReplies(), which returns success, url, replies, count, repliesCount, favouritesCount, reblogsCount, and error.

License

MIT