Social Publishing (Soziale Veröffentlichung)
Zweck
Veröffentlichen Sie die Launch-Inhalte zeitgesteuert von einem zentralen Ort aus über die offizielle API jeder Plattform, ohne ein persönliches Konto an die Marke oder die Marke an ein persönliches Konto zu verlieren. Das verwendete Tool ist Postiz (Open Source, selbst gehostet); die Plattformschritte gelten für jeden Scheduler.
Voraussetzungen
- Marken-Konten bereits erstellt: Instagram Professionell-Konto, Threads-Profil (stammt von Instagram), X-Konto, optional TikTok.
- Eine Domain bei Cloudflare (für den Tunnel-Hostnamen), Docker Desktop, ein Rechner, der zu den Posting-Zeiten eingeschaltet bleibt (oder eine kleine VPS).
- Das
console-automation-Setup, wenn Konsolen über einen Browser gesteuert werden. - Ein Inhaltskalender (siehe "Kalender" unten).
Plattform-Realität (vor Beginn erneut prüfen; diese ändern sich)
| Plattform | Offizieller Weg | Was blockiert |
|---|---|---|
| Meta-App + Facebook Login, IG Profi-Konto verknüpft mit einer Facebook-Seite | Neue Meta-Apps erhalten das "Unified Login" Instagram-Setup, das ein Business-Portfolio erfordert; das ältere Instagram-Login-only-Setup ist "für neuere Apps nicht verfügbar". Stories werden als einfache Medien veröffentlicht: Keine Umfragen, Links oder Countdown-Sticker über die API. | |
| Threads | Meta-App mit dem Threads Use Case | Bis zur App-Prüfung können nur Konten mit der Threads-Tester-Rolle eine Verbindung herstellen; der Tester akzeptiert in Threads › Einstellungen › Konto › Website-Berechtigungen › Einladungen. |
| X | Entwicklerkonto mit kostenpflichtigem API-Zugang (aktuelle X-API-Preise prüfen) | Benötigt eine Zahlungsmethode; legen Sie eine Ausgabenobergrenze fest. |
| TikTok | Content Posting API | Nicht geprüfte Apps posten nur privat, bis die Prüfung bestanden ist (die Prüfung dauert). Neue Konten benötigen Telefonverifizierung, und eine Nummer kann nur zu einem Konto gehören. |
| YouTube | Data API Upload | Nicht verifizierte API-Projekte laden als privat hoch, bis eine Compliance-Prüfung bestanden ist. |
Planen Sie um die Hürden herum: Starten Sie Prüfungen frühzeitig, posten Sie TikTok/YouTube nativ (TikTok Studio, YouTube Studio Scheduler), bis die Prüfungen bestanden sind, oder lassen Sie die Plattform weg.
Vorgehensweise
1. Postiz selbst hosten (Docker)
- Beginnen Sie mit der offiziellen
postiz-docker-compose-Datei. Führen Sie vorupFolgendes aus:- Entfernen Sie nicht benötigte Dienste sowie solche, die bereits verwendete Ports auf dem Rechner binden (die Upstream-Datei bindet die Temporal-Benutzeroberfläche an
127.0.0.1:8080). - Entfernen Sie Elasticsearch: Setzen Sie Temporal
ENABLE_ES=falseundSKIP_ADD_CUSTOM_SEARCH_ATTRIBUTES=true(SQL-Visibility). Postiz registriert nur zwei Schlüsselwortattribute. Wenn Temporal zuerst mit ES gestartet wurde, enthält die Datenbank noch die Standard-Textattribute und Postiz schlägt fehl mit "cannot have more than 3 search attribute of type Text": Erstellen Sie das Temporal-Datenbank-Volume neu, bevor etwas geplant wird. - Binden Sie Postiz nur an
127.0.0.1; setzen SieMAIN_URL,FRONTEND_URL,NEXT_PUBLIC_BACKEND_URLauf den öffentlichen HTTPS-Hostnamen. - Platzieren Sie Geheimnisse (
JWT_SECRET, Tunnel-Token, App-Schlüssel) in einer git-ignorierten.env, referenziert als${VAR}in der Compose-Datei. - Fügen Sie
mem_limit/cpuspro Dienst hinzu. Postiz führt Frontend, Backend und Orchestrator in einem Container; wir haben etwa 1,5 GB Nutzung beobachtet, daher vermied ein Limit von 2 GB das Erreichen der Grenze. Unter Windows begrenzen Sie auch die WSL-VM in%USERPROFILE%\.wslconfig(memory=4GB,processors=4,autoMemoryReclaim=gradual), dannwsl --shutdownund Docker Desktop neu starten.
- Entfernen Sie nicht benötigte Dienste sowie solche, die bereits verwendete Ports auf dem Rechner binden (die Upstream-Datei bindet die Temporal-Benutzeroberfläche an
- Erstellen Sie das erste Konto im Browser nachdem die Seite hydriert wurde (ein nicht hydriertes Formular sendet als GET und legt das Passwort in die URL). Setzen Sie dann
DISABLE_REGISTRATION=trueund starten Sie neu. - Behalten Sie
restart: alwaysbei und aktivieren Sie "Docker Desktop beim Anmelden starten"; deaktivieren Sie den Ruhezustand, wenn der Rechner der Scheduler ist.
2. Öffentlicher Hostname (Cloudflare Tunnel)
- Erstellen Sie einen remote verwalteten Tunnel (API:
POST /accounts/{id}/cfd_tunnelmitconfig_src: cloudflare,PUT .../configurationsmit der Ingress-Regel, ein proxiedCNAMEzu<tunnel-id>.cfargotunnel.com,GET .../token). - Führen Sie
cloudflaredals Dienst im selben Compose-Netzwerk aus und richten Sie den Ingress aufhttp://postiz:5000, nicht auflocalhost. - GENEHMIGUNG: Ein Tunnel setzt einen lokalen Dienst dem Internet aus; fragen Sie vor der Erstellung. Optional können Sie Cloudflare Access davor schalten (benötigt Zero Trust auf dem Konto; halten Sie
/uploadsfür Metas Medienabruf erreichbar).
3. Meta (Instagram + Threads)
- Erstellen Sie eine separate Meta-App für die Veröffentlichung (fügen Sie keine Use Cases zu einer App hinzu, die bereits eine In-App-Funktion wie Instagram Stories Teilen unterstützt). Use Cases: "Manage messaging & content on Instagram" und "Access the Threads API".
- Instagram:
- Erstellen Sie ein Business-Portfolio, wenn der Use Case danach fragt (kostenlos; Name, Besitzername, Geschäfts-E-Mail). Verifizierung wird nur für Daten anderer Personen und die App-Prüfung benötigt.
- Erstellen Sie eine Facebook-Seite für die Marke (auch für Meta Ads erforderlich) und verknüpfen Sie das Instagram-Profi-Konto damit: Seiten-Einstellungen › Verknüpfte Konten › Instagram › Verbinden. Das OAuth-Popup meldet sich mit dem Instagram-Konto an, das der Browser hält: Lesen Sie den Namen "Anmelden als …"; wenn es ein persönliches Konto ist, wechseln Sie zuerst das Konto (das Verbinden eines persönlichen Kontos wandelt es in ein professionelles um).
- Fügen Sie im Instagram-Use Case genau die Bereiche hinzu, die der Scheduler anfordert (Postiz:
instagram_basic,pages_show_list,pages_read_engagement,business_management,instagram_content_publish,instagram_manage_comments,instagram_manage_insights). Setzen Sie den Facebook Login for Business Redirect-URI auf den Callback des Schedulers (Postiz:/integrations/social/instagram). - App-ID + Geheimnis (App-Einstellungen › Basis; das Anzeigen des Geheimnisses fragt nach dem Facebook-Passwort) →
FACEBOOK_APP_ID/SECRET.
- Threads: fügen Sie
threads_basic,threads_content_publish,threads_manage_replies,threads_manage_insightshinzu; setzen Sie Redirect (/integrations/social/threads) plus Deinstallations-/Lösch-Callback-URLs; verwenden Sie die separate Threads App-ID/Secret; fügen Sie das Markenprofil als Threads-Tester hinzu und akzeptieren Sie die Einladung auf dem Telefon. - Wenn die Threads-Zustimmungs-URL auf der Threads-Startseite statt auf dem Zustimmungsbildschirm landet, befindet sich die Browsersitzung auf
threads.com, während der Schedulerthreads.netverwendet: Öffnen Sie dieselbe URL aufthreads.com. - Wenn der Browser derzeit als Seite agiert (nachdem sie bearbeitet wurde), zeigt die Facebook-Zustimmung zuerst "Sie müssen zu wechseln"; fahren Sie als Person fort, nicht als Seite.
- Während der Facebook-Zustimmung wählt Meta standardmäßig "alle aktuellen und zukünftigen Seiten/Unternehmen/Instagram-Konten". Wählen Sie auf einem Konto, das andere Marken verwaltet, "nur aktuelle" und wählen Sie die Assets der Marke aus.
4. X
- Developer Console Onboarding: Kontoname, eine präzise Use-Case-Beschreibung (nur eigenes Konto, kein Weiterverkauf von Daten, keine automatisierten Likes/Follows/DMs), Bedingungen akzeptieren.
- Kaufen Sie das kleinste Credit-Paket; lassen Sie die automatische Aufladung deaktiviert und setzen Sie eine Abrechnungszeitraum-Obergrenze. Das Dashboard-Gesamt kann hinter der Credit-Seite zurückbleiben.
- App › Benutzerauthentifizierungseinstellungen: Lesen und schreiben, "Web App, Automated App or Bot", Callback = Scheduler-Callback (Postiz:
/integrations/social/x), Website, AGB- und Datenschutz-URLs. Nach dem Speichern wird der OAuth 2.0-Client-Secret einmal angezeigt. - Postiz verwendet OAuth 1.0a: Generieren Sie den Consumer Key neu und kopieren Sie den Key + "Consumer Key Secret" (dieses genaue Label) einmal →
X_API_KEY/X_API_SECRET. - Autorisieren: aktivieren Sie "I trust this app", bestätigen Sie, dass der Bildschirm den Marken-Handle anzeigt, dann Autorisieren.
5. TikTok (optional)
Konto:
- Neue Konten erfordern eine Telefonverifizierung, und eine Nummer kann nur auf einem Konto verwendet werden; eine Web-Anmeldung kann mit "in der App fortfahren" enden. Optionen: eine zweite Nummer für Markenkonten oder die Konvertierung eines bestehenden persönlichen Kontos (neuer Benutzername und Anzeigename, Profilfoto, Biografie; alte persönliche Videos archivieren/privatisieren).
- In einigen Regionen ist die Ein-Klick-Option "Zu Business-Konto wechseln" verschwunden; das Menü bietet "Bestätigtes Business-Konto werden", was nach Firmendokumenten fragt. Ein persönliches Konto ist ausreichend: TikTok Studio-Planung, Analysen, Spark Ads und die Content Posting API funktionieren damit. Die Business-Musikbibliothek ist der Hauptverlust.
- Der Benutzername kann einmal alle 30 Tage geändert werden, der Anzeigename einmal alle 7 Tage. Das Web-Profil (Name, Biografie, Foto, Zählwerte) kann einen Tag oder länger hinter der App zurückbleiben; vertrauen Sie der App.
- Die Kontoregion wird bei der Anmeldung basierend auf SIM/IP festgelegt und konnte in den Einstellungen nicht geändert werden.
Entwickler-App (für den Scheduler):
- Die Anmeldung bei developers.tiktok.com zeigt nur "Enterprise Developer" (E-Mail + Code + Passwort), aber bei der Erstellung der App können Sie Einzelbesitzer wählen, sodass kein Unternehmen für den Start erforderlich ist.
- Erstellen Sie die App, dann eine Sandbox: grundlegende Informationen (Symbol 1024², Kategorie, Beschreibung ≤120 Zeichen, AGB-/Datenschutz-URLs, Web-Plattform-URL), Produkte Login Kit (Web-Redirect-URI = Scheduler-Callback; Postiz
/integrations/social/tiktok) und Content Posting API (Direct Post einschalten) und alle Bereiche, die der Scheduler anfordert. Postiz fragt nachuser.info.basic,user.info.profile,user.info.stats,video.list,video.upload,video.publish; ein fehlender Bereich zeigt "Something went wrong … correct the following: scope" auf der Zustimmungsseite. Klicken Sie nach jeder Bearbeitung auf "Apply changes". - Fügen Sie das Markenkonto als Sandbox Zielbenutzer hinzu (das Login-Popup akzeptiert einen QR-Scan von der Telefon-App). Verwenden Sie den Sandbox-Client-Key/Secret im Scheduler.
- Push-by-Datei erfordert keine Domain-Verifizierung; Pull-by-URL schon.
- Vor der Prüfung: Der
UPLOAD-Modus sendet das Video als Entwurf in den TikTok-Posteingang des Kontos (vom Telefon innerhalb von 24 Stunden veröffentlichen; max. 5 ausstehende pro 24 Stunden).DIRECT_POSTfunktioniert, postet aber nur privat. Reichen Sie die Produktions-App mit einem Demovideo für öffentliches Direct Posting zur Prüfung ein. - Der Zustimmungsschritt kann mit einem E-Mail-Code "Wirklich Sie?" verlangen. Nach vielen Kontoänderungen an einem Tag (E-Mail, Name, Biografie, neue Anmeldungen) drosselt TikTok diese Codes ("Maximale Anzahl von Versuchen erreicht"): Hören Sie auf und versuchen Sie es am nächsten Tag erneut, anstatt darauf einzuhämmern.
6. Überprüfung
- Die Scheduler-Kanalliste zeigt jedes Markenkonto (Name/Handle), keines deaktiviert.
- Posten Sie einen privaten/risikolosen Test pro Plattform oder einen Entwurf, bevor der Kalender startet.
- Ressourcennutzung nach einem Tag:
docker stats --no-stream.
Kalender
- Binden Sie den Posting-Kalender an echte Launch-Ereignisse, nicht an feste Daten: Pre-Launch (kein Download-Aufruf, kein Preis), dann der Launch jedes Stores, dann beide live. Store-Review-Termine verschieben sich; verankern Sie den Kalender neu, wenn sie dies tun.
- Überprüfen Sie jede Behauptung in einem Beitrag gegen die ausgelieferte Version und jeden Handlungsaufruf gegen das, was tatsächlich in jedem Store live ist.
- Stories mit Umfragen, Links oder Countdowns können nicht über die API veröffentlicht werden; posten Sie sie in der App.
Entscheidungspunkte, die eine menschliche Genehmigung erfordern
Erstellen von Markenkonten, Business-Portfolio, Facebook-Seite; Freigabe eines lokalen Dienstes über einen Tunnel; Kauf von API-Guthaben und Ausgabenobergrenze; welche persönlichen Konten nie verbunden werden dürfen; Konvertieren eines persönlichen Kontos; Löschen von Docker-Volumes oder -Daten.
Häufige Fallstricke
- Verbinden des persönlichen Instagram-Kontos, weil das OAuth-Popup die Browsersitzung wiederverwendet hat.
- Annahme, dass das alte Instagram-Login-Setup in einer neuen Meta-App existiert.
- Hinzufügen von Publishing-Use Cases zu der Meta-App, die in der mobilen App ausgeliefert wird.
- Elasticsearch im Stack belassen, wenn Temporal-SQL-Visibility ausreicht.
- Die Upstream-Compose-Datei, die einen bereits von einem anderen lokalen Dienst verwendeten Port belegt.
- Der X-Key, der vom falschen Label gespeichert wurde ("Consumer Key Secret", nicht der Dialogtitel).
- Der Kalender, der so geschrieben ist, als ob die App am Tag 1 auf beiden Stores live wäre.
- Alle TikTok-Kontoänderungen und die Entwicklerverbindung am selben Tag durchführen, was das Ratenlimit für den Verifizierungscode auslöst.