TL;DR: Mit der Instagram Graph API von Meta kannst du Posts vollautomatisch erstellen und planen. Du brauchst ein Meta-Developer-Konto, eine registrierte App und Access-Tokens via OAuth. In diesem Guide zeige ich dir Schritt für Schritt, wie du die API einrichtest und nutzt.

Wenn Ihr einen Blog habt (wie ich) dann liegt natürlich die Möglichkeit nahe, alle möglichen Social-Media-Kanäle automatisiert mit Posts zu bespielen. Warum auch alles manuell machen, wenn man es mit einer REST-API automatisch machen kann?


Damit du alles Weitere verstehst, empfehle ich dir meinen Artikel über REST-APIs anzusehen, da du sonst vermutlich nicht alles verstehen wirst 👇

REST-APIs verstehen und nutzen
APIs: Allgegenwärtig und jeder nutzt sie , wenn auch in direkt. Aber wofür sind sie da und wie funktionieren sie? Wir klären auf 💡

Vorbereitungen 💡

Bevor du an dieser Stelle weiter machen kannst, benötigst du zwingend ein Meta-Konto und musst dich bei Meta als Developer registrieren. Wenn die Registrierung abgeschlossen ist, musst du dir eine neue App anlegen und alle entsprechenden Informationen hinterlegen. Zusätzlich benötigst du auch ein Instagram-Business-Konto.

Anlage der App bei Meta 💻

Um eine App bei Meta für Instagram anzulegen, musst du dich im Meta Developer Portal anmelden. Im Dashboard kannst du dann eine neue App anlegen:

Im nachfolgenden Bildschirm wählst du dann "andere" bzw. "other" aus, da du ja explizit die Instagram Basic Display API verwenden möchtest:

Jetzt wird es wichtig:
Wähle in dem nächsten Step unbedingt "Business" bzw. "Geschäft" aus, da du sonst keinen Zugriff auf die API von Instagram bekommst.

Als Nächstes gibst du einer App einen treffenden Namen, den kannst du aber später wieder ändern. Wenn du möchtest, kannst du hier auch noch einen Business Manager auswählen, ist aber kein Muss. Damit hast du dann die App angelegt.

Instagram Graph API einrichten ⚒️

Nach der Anlage der App wirst du weitergeleitet auf das App-Dashboard. Hier wählst du dann die Instagram Graph API aus uns sagst "Setup" bzw. "Einrichten".

Danach erscheint die folgende Seite, damit ist auch prinzipiell alles getan:

Damit wäre die Instagram Graph API auch erstellt. Zudem musst du noch "Facebook Login for Business" hinzufügen:

Auch hier sagst du "Setup". Es öffnet sich nun ein Fenster mit den Einstellungen für den Login. Hier musst du eine "OAuth Redirect URI" hinterlegen:

An diese Adresse wird später der Authentication Code gesendet. Mit diesem Code wird dann ein kurzlebiger Access Token erstellt der 2 Stunden gültig ist. Diesen kannst du dann aber später zu einem langlebigen Access Token umwandeln, der dann 60 Tage gültig ist.

💡
Kopiere dir am besten schon einmal direkt die "App ID" und das "App Secret", deiner App, die brauchst du später.

Ab hier wird es dann technisch und du musst Einstellungen für OAuth tätigen. Diese sind zwingend notwendig, damit du die Access-Tokens bekommst. OAuth selbst werde ich später in einem eigenen Artikel einmal beleuchten. Aber grundlegend arbeitet der OAuth-Flow mit Instagram wie folgt:

Wichtig sind hier die nun die Einstellungen für die OAuth-Callbacks. Die du wie folgt setzen solltest:

OAuth redirect url: https://localhost:5000/auth
Deauthorize callback URL: https://localhost:5000/auth/cancel
Data Deletion Request URL: https://localhost:5000/auth/delete

Wirklich wichtig ist nur die OAuth redirect url da hier hin der generierte Code für den späteren Access-Token hingeschickt wird.

💡
Damit du dir keine eigenen Websiten für die Callbacks anlegen musst, habe ich ein Python Skript erstellt, was einen Webserver startet und die Callbacks annehmen kann.

Hast du die Einstellungen gemacht, musst du noch einen eigenen Instagram-Account als Tester hinzufügen:

Es öffnet sich eine neue Seite wo du dann neue Leute via "Add People" hinzufügen kannst und dann musst du Instagram Tester hinzufügen und kann deinen eigenen Benutzer einladen:

Der Benutzer wurde dann hinzugefügt und muss nun nur noch die Test-Einladung annehmen:

Klick einfach hier, wenn du die Einladung annehmen möchtest. Du musst dann bei Instagram auf Test-Einladungen klicken und solltest deine Einladung sehen:

Nimm sie dort einfach an und das wars.

Access-Tokens abrufen 🔐

Damit du nun auf Inhalte Zugreifen kannst, muss du dich bei deinen API-Calls immer authentifizieren. Das geht über die OAuth-Access-Tokens. Die API von Instagram generiert in der Regel nur so genannte "short-lived access tokens", die nur eine Laufzeit von einer Stunde haben. Solltest du länge Laufzeiten benötigen, musst du diese Tokens in "long-lived access tokens" umwandeln. Diese haben dann eine Laufzeit von 60 Tagen.

Mehr dazu findest du direkt bei der Instagram Graph API Dokumentation. Um das alles abzukürzen habe ich ein Python Skript erstellt, was dir die ganze Arbeit abnimmt und dir die Tokens schön aufbereitet, so dass du diese ganz easy verwenden kannst.

Das Skript findest du hier:

GitHub - Disane87/instagram-long-lives-access-token: Get instagram basic display api ahort- and long-lived access tokens automagically 🪄
Get instagram basic display api ahort- and long-lived access tokens automagically 🪄 - Disane87/instagram-long-lives-access-token
💡
Bitte schau dir vor der Nutzung die Readme an, denn dort findest du heraus wie du das Skript nutzen kannst.

Hast du das Skript soweit gecloned und alle Dependencies installiert, kannst du das Skript mit deiner ClientIDund dem ClientSecretausführen:

python main.py --client-id [instagram-client-id] --client-secret [instagram-client-secret]

Es öffnet sich dann eine Seite in einem Browser, bei der du dich bei Instagram anmelden musst, sofern noch nicht geschehen. Danach wirst du gefragt ob du eine erzeugte App mit deinem Konto verknüpfen möchtest bzw. ob du der App die Rechte einräumen möchtest, in deinem Namen auf Instagram zugreifen zu dürfen:

Hast du zugestimmt, wirst du auf die Seite umgeleitet, die dir die Access-Tokens ausgibt, die du später dann für die "richtigen" API-Calls bei Instagram nutzen kannst:

💡
Bei der ersten Ausführung des Skriptes wird dir der Browser wohlmöglich anzeigen, dass die Seite unsicher ist. Das ist völlig normal und unbedenklich, da die Webseite nun bei dir lokal auf dem Server gehostet ist und via localhost aufgerufen wird. Instagram benötigt aber für die Callbacks zwingend HTTPS. Das Skript erzeugt zwar Zertifikate, damit sich die Seite überhaupt öffnet, aber es ist nur ein selbst signiertes Zertifikat, dem die Browser im Standard nicht vertrauen.

Testen der API mit den Access-Tokens

Hast du deinen Access-Token erhalten, kannst du die API direkt testen. Ein einfacher GET-Request auf den Endpunkt /me/media zeigt dir deine bisherigen Medien an. Um einen neuen Post zu erstellen, nutzt du einen zweistufigen Prozess:

  1. Container erstellen: Du sendest einen POST-Request an den Endpunkt /{ig-user-id}/media mit dem Bild-URL und der Caption.
  2. Veröffentlichen: Mit der zurückgegebenen Container-ID sendest du einen weiteren POST-Request an /{ig-user-id}/media_publish.
# 1. Container erstellen
curl -X POST "https://graph.facebook.com/v19.0/{ig-user-id}/media" \
  -d "image_url=https://example.com/bild.jpg" \
  -d "caption=Mein automatisierter Post" \
  -d "access_token={access-token}"

# 2. Post veröffentlichen
curl -X POST "https://graph.facebook.com/v19.0/{ig-user-id}/media_publish" \
  -d "creation_id={container-id}" \
  -d "access_token={access-token}"
💡
Denke daran, dass Bilder über eine öffentlich erreichbare URL verfügbar sein müssen, damit Instagram sie abrufen kann.

Wenn du den ganzen Prozess noch weiter automatisieren möchtest, schau dir auch Workflow-Automatisierung mit n8n an:

n8n Unleashed: Ultimative Workflow-Automatisierung

Fazit

Die Instagram Graph API bietet eine mächtige Möglichkeit, Posts programmatisch zu erstellen und zu veröffentlichen. Auch wenn die Einrichtung mit OAuth, Access-Tokens und der Meta Business Suite zunächst aufwendig erscheint, lohnt sich der Aufwand langfristig. Einmal eingerichtet, kannst du deine Social-Media-Präsenz komplett automatisieren und so wertvolle Zeit sparen.

Wenn du Fragen hast oder Hilfe bei der Einrichtung benötigst, schreib mir gerne einen Kommentar oder kontaktiere mich direkt. Happy Coding!

Artikel teilen:Share article: