Instadon - Von Instagram über Mastodon zu Wordpress
Posted on 23.01.2026 in Technik
In diesem Blogbeitrag möchte ich erklären, wie man es schafft Inhalte von Instagram auf Mastodon zu posten und dann sogar auf einer Wordpress-Website anzuzeigen. Ich löse das mit freier Software, leider muss man diese aber dann selbst hosten. Wie das alles geht erfährst du hier!
Ich bin mir sicher, dass man das auch ohne das selfhosting hinbekommt. Seiten, wie rss.app erlauben einen automatischen RSS-Feed und n8n gibt es auch gehostet.
Der Hintergrund
Als ich jung war, habe ich mal Instagram benutzt. Bald ist das so Zehn Jahre her, dass ich die App irgendwann aus diesem Hang zur Selbstdarstellung gelöscht habe. Wirklich gefehlt hat sie mir nie. Schließlich hatte ich ja Reddit, wo man auch seine Zeit verbringen konnte.
Dann wurde reddit mit der API-Umstellung irgendwann auch shitty und so ging ich 2022 nach Mastodon. Eine tolle neue Welt, die mir bis heute viel Freude bereitet.
Obwohl Mastodon viele Probleme hat, sticht eins besonders hervor: die geringe Anzahl der Nutzer:innen. Während dieser Safespace zwar sehr schön ist, fördert er gleichzeitig auch zentrale Netzwerke, wie Instagram, Threads oder Tiktok.
Wie schaffen wir es also, die Nutzer:innen leichter ins Fediverse zu bekommen?
Das Problem
Ich betreibe seit kurzem die Website für eine lokale Organisation aus Bruchsal. Dort wollte ich auf der Startseite aktuelle Informationen vom Social-Media-Team anzeigen. Aus verständlichen Gründen ist das ab er (noch?) auf Instagram.
Natürlich kann ich das einbinden, aber dann muss man die ganze Zeit nach Cookies fragen und Facebook bekommt auch noch frei Haus alle Nutzer:innen-Daten. Das wollte ich nicht. Also brauchte es eine bessere Lösung und dabei dachte ich mir: Warum nicht gleich das Fediverse stärken und so machen, dass ich das nicht auch in meinem Feed habe?
Die Lösung
Um die Beiträge auf der Website anzuzeigen, muss ich einen Umweg gehen. Dieser (komfortable?) Umweg ist Mastodon. Das Setup ist damit das Folgende: Instagram <-> RSS Reader <-> Magie <-> Mastodon <-> Wordpress
Der gesamte Stack ist mit docker aufgesetzt, läuft lokal (ohne exposure ins Internet) und sollte relativ robust sein. Ich versuche das Einsteiger:innen-Freundlich zu halten, etwas IT-Wissen rund um Docker ist aber vorausgesetzt. Bei Problemen und Fragen, schreib mir gerne bei Mastodon oder LinkedIn (siehe Kontakt).
Der Stack
Das System besteht aus drei Teilen: RSS Reader, N8N und Wordpress.
Der RSS Feed und N8n laufen dabei zusammen in der gleichen Docker compose, während Wordpress eigene Dinge tut. Die Docker compose läuft auf meiner eigenen Hardware zuhause, während Wordpress extern ist.
Die compose.yml für die ersteren Beiden ist die folgende. Um loszulegen, müssen die beiden secure_pass und der enryption key angepasst werden.
Danach mit docker compose up -d hochfeuern und ab geht die Lutzi.
services:
postgres:
image: postgres:16-alpine
restart: unless-stopped
environment:
POSTGRES_USER: n8n
POSTGRES_PASSWORD: <secure_pass>
POSTGRES_DB: n8n
volumes:
- ./postgres_data:/var/lib/postgresql/data
n8n:
image: n8nio/n8n:latest
restart: unless-stopped
depends_on:
- postgres
ports:
- "5678:5678"
environment:
# --- Core ---
DB_TYPE: postgresdb
DB_POSTGRESDB_HOST: postgres
DB_POSTGRESDB_PORT: 5432
DB_POSTGRESDB_DATABASE: n8n
DB_POSTGRESDB_USER: n8n
DB_POSTGRESDB_PASSWORD: <secure_pass>
# --- URLs (adjust if you put it behind a domain/reverse proxy) ---
N8N_HOST: localhost
N8N_PORT: 5678
N8N_PROTOCOL: http
WEBHOOK_URL: http://localhost:5678/
N8N_EDITOR_BASE_URL: http://localhost:5678/
N8N_SECURE_COOKIE: False
# --- Basics ---
GENERIC_TIMEZONE: Europe/Berlin
# Optional but recommended:
N8N_ENCRYPTION_KEY: <encryption key>
volumes:
- ./n8n_data:/home/node/.n8n
rssbridge:
image: rssbridge/rss-bridge:latest
restart: unless-stopped
ports:
- "3000:80"
volumes:
- ./cache:/cache
Teil 1: RSS Bridge
Dieser Teil ist am einfachsten. Wenn der Docker-Stack erfolgreich hochgefahren ist, kann dieser unter http://localhost:3000 aufgerufen werden. Durch Eingabe der Instagram-URL fällt ein passender RSS-Feed heraus.
Teil 2: Automatisierung mit N8N
Die Idee ist relativ simpel. Schaue alle 15 Minuten, ob es einen neuen Post auf Instagram gibt und, falls ja, poste diesen auf Mastodon. Eine einzelne Erklärung der Schritte spare ich mir, verlinke aber das folgende Playbook, das in das Frontend von n8n geladen werden kann, nachdem dieses auf http://localhost:5678 aufgerufen wurde.
Das Debugging von meiner Seite aus hat relativ lange gedauert, nun müssten aber eigentlich nur die Werte angepasst werden.
Beachte bitte, dass du auch eine Datatable erstellen musst, in der die letzte ID des Posts gespeichert wird. Diese hat bei mir lediglich ein zusätzliches Feld: ig_id.
Die ganze Datei findest du hier: Instadon.json
Bevor du die Automatisierung anpasst, solltest du folgende Informationen haben:
- Deine öffentliche Instagram URL (https://instagram.com/foobar)
- RSSbridge URL (von Teil 1)
- Mastodon access key. Diesen bekommst du, wenn du in Mastodon eine App erstellst. Er braucht write zugriff auf Media und Statuses.
- Deine Mastdon URL (https://foobar.social/deinaccount)
Ich gehe einmal die Nodes durch und erzähle, was du anpassen musst:
- Schedule Trigger: Nichts
- RSS Read: Die URL von RSSBridge
- Code in JavaScript: Nichts
- Get Row(s): Referenziere deine Datentabelle
- If-else: Nichts
- Insert Row: Referenziere deine Datentabelle
- HTTP Request: Nichts
- HTTP Request: Passe die Mastodon URL an; Erstelle einen Auth bearer mit deinem Mastodon access key
- HTTP Request: Passe die Mastodon URL an; Referenziere deinen Auth bearer
Wenn du fertig bist, teste deinen Workflow und dann "Publish"!
Danach sollte dein letzter Beitrag auf Mastodon zu sehen sein.
Teil 3: Wordpress
Hier wird es ein wenig hacky. Es gibt das famose Plugin Fediverse embeds, das einen Mastodon post schön auf der Website anzeigt. Das Problem ist allerdings, dass es nur einen bestimmten Post anzeigt. Ich will aber, dass er mir immer den letzten Post anzeigt.
Um das zu verwirklichen, habe ich mir mittels KI ein Plugin herbeihalluzinieren lassen. Ist das sinnvoll? Vermutlich nicht. Ist das sicher? Ziemlich sicher nicht. Funktioniert das? Leider ja.
Für die Durchführung dieses frevelhaften Schabernacks, musst du in deinen Dateien deiner Website unter wp-content/plugins einen Ordner names mastodon-latest-embed erstellen. In diesen legst du die folgende Datei: mastodon-latest-embed.php.
Danach kannst du das Plugin in den Einstellungen deiner Site aktivieren.
Nun gehst du auf die Seite, in der du den letzten Mastodon-Post anzeigen lassen willst du und fügst einen Shortcode mit folgendem Inhalt ein: [mastodon_latest_embed acct="@account@mastodon.instanz" cache_minutes="10"].
Fertig.
Bestimmt habe ich ganz viele Details vergessen, die super wichtig sind. Sag mir welche, indem du mir auf Mastodon schreibst!
Schlusswort
Das ganze Setup ist nicht trivial, aber auch nicht mega komplex.
Der Hack mit dem Wordpress plugin könnte besser gelöst werden oder vielleicht gibt es ja ein plugin, das aktiv maintained wird? Ich werde meins nur lokal nutzen, da meine PHP-Kenntnisse mangelhaft sind und ich das sonst niemand antun möchte.
Auch, wenn ich nicht glücklich bin, dass viel zu viele Leute noch Instagram benutzen, so sehe ich das doch als kleinen Beitrag, um manchen Leuten den Umstieg leichter zu machen.
Klick dir einen Account auf mastodon und schau es dir an. Nichts ist einfacher als anfangen! Das Fediverse freut sich auf dich!