Zum Hauptinhalt springen

Social Media Freigabe (Outstand)

Neu in Social Media?

Lies zuerst Social Media — Einstieg (Checkliste für Redaktion). Diese Seite ist die vollständige Referenz.

Claude / MCP / v0

Social Cockpit läuft nicht über MCP. Posts, Freigaben, Engage und Performance bedient ihr im Dashboard — auch wenn ihr sonst viel mit Claude oder v0 arbeitet. Grenzen: Claude & MCP → wer macht was?.

Fanpage Karma wird durch cockpitOS Freigabe + Outstand Publish ersetzt. Strategie und Provider-Matrix: Social unter einem Cockpit-Dach.

WasSocial Cockpit (eigenes Modul): Kanäle, Post-Editor, Freigaben (/dashboard/social/approvals), Engage, Reporting; Publish über Outstand.
WarumSocial getrennt vom Website-Workflow — übersichtliche Freigabe, Metriken und Kanäle an einem Ort.
WerRedaktion, Center Manager, Org-Marketing, Center-Admin (Freigabe); Betrieb/IT (Outstand-Keys, Webhook, Cron).
WoSidebar Social Cockpit; Kanäle auch Center-Detail Social Media (?tab=social).
So testen1) Center → Social Media: Outstand-Profil verknüpfen. 2) Post erstellen → Freigabe anfordern (beliebige aktive Cockpit-Nutzer wählen). 3) Gewählte Prüfer: Glocke + Desktop-Push (opt-in unter Einstellungen → Benachrichtigungen) + Meine Freigaben auf dem Board (für alle eingeloggten Nutzer). 4) Optional Selbst freigeben (jeder mit Center-Zugang) oder Freigabe-Link für Gast. 5) Mit AgencyOS-Anbindung: zusätzlich Teams-DM vom Bot (Freigeber muss Bot einmal geöffnet haben).
BetriebOUTSTAND_API_KEY, optional OUTSTAND_WEBHOOK_SECRET, CRON_SECRET — siehe Abschnitt Env unten. Teams über AgencyOS: AGENCYOS_TEAMS_NOTIFY_URL + AGENCYOS_TEAMS_NOTIFY_SECRET (beide Server).

Rollen und Zuständigkeiten

Freigabe pro Post: Beim Einreichen wählt die Redaktion konkrete Personen aus allen aktiven Cockpit-Nutzern — nicht nur feste Freigabe-Rollen. Wer in der Liste steht, darf freigeben oder ablehnen (Filter Meine Freigaben auf dem Board).

Sortierung im Dialog: Zuerst Nutzer mit Center-Zuweisung, dann Organisation des Centers, danach das restliche Cockpit-Team. Suche nach Name, E-Mail oder Rolle.

Legacy ohne Zuweisung: Ältere Posts ohne assignedApproverIds bleiben bei den klassischen Freigabe-Rollen (Center Manager, Org-Marketing, Center-Admin, Super-Admin).

Direkt veröffentlichen: Button Veröffentlichen im Editor weiterhin nur für Freigabe-Rollen (publish_direct). Selbst freigeben im Freigabe-Dialog ist für jeden Nutzer mit Center-Zugang möglich (ohne Warteschlange).

Center Manager

  • Landing: /dashboard/center-manager — KPIs, Freigabe-Kurzliste, Schnellfreigabe (Feed mit ≤1 Medium)
  • Social Hub: Sidebar Social Cockpit — alles gebündelt (siehe unten)

Social Cockpit (Modul social-cockpit)

Alles an einem Ort unter Social Cockpit in der Sidebar (eigenes Modul, wie Mall Cockpit):

MenüPfadFunktion
Übersicht/dashboard/socialMission Control: Heute (Freigaben, geplant, live, Kanäle, offene Kommentare), große CTAs, Hub-Kacheln zu Reporting & Kanälen

Übersicht „Heute für dich“ (StatTile)

Die Startseite Social Cockpit (/dashboard/social) lädt Kennzahlen über GET /api/social/hub?centerId=…:

KachelBedeutungLink
Warten auf FreigabePosts in der Freigabe-WarteschlangeFreigaben
Kommentare offenUnbeantwortete Kommentare (Engage)Community & Antworten
GeplantTerminierte PostsFreigaben
Live (7 Tage)Kürzlich veröffentlichtEngage
Kanäle verbundenVerknüpfte Outstand-ProfileKanäle verknüpfen

Darunter optional Follower/Reichweite (Monat), große CTAs (Neuen Post, Freigaben, Antworten) und HubNavTile-Kacheln zu Reporting, Kanälen und Kunden-Reporting — gleiches Muster wie andere Modul-Hubs (HubNavGrid / StatTile in @mall-os/ui).

| Kanäle verknüpfen | /dashboard/settings/social-accounts | Outstand-Profile pro Center | | Post erstellen | /dashboard/social/new | Post anlegen | | Freigaben | /dashboard/social/approvals | Social-Freigaben (4 Status-Spalten) | | Community & Antworten | /dashboard/social/engage | Post-Liste + Kommentare beantworten (Master-Detail, Suche, Filter) | | Deine Performance | /dashboard/social/reporting | Follower, Reichweite, Top-Post, Post-Liste mit Suche & Seiten |

Community & Antworten: Zweispaltig — links Posts auf den Kanälen (Cockpit und extern, z. B. direkt auf Facebook), rechts Kommentare zum gewählten Post. Badge Cockpit vs. Kanal zeigt, ob der Post aus dem Cockpit-Editor kam. Oben Zeitraum wählen (7/30/90 Tage, Kalendermonat oder eigenes Von–Bis).

Outstand in Community & Antworten:

FunktionÜber Outstand-API
Kommentare lesenJa
Antwort als Thread unter KommentarJa (platform_post_id = Kommentar-ID)
Emoji in AntwortJa (Editor im Cockpit)
Post-Metriken (Likes, Kommentarzahl)Ja
Einzelnen Kommentar likenNein — native App (FB/IG)
Kommentar verbergenNein — native App (FB/IG)
Posts die nicht über Outstand veröffentlicht wurdenNein

Antworten erscheinen unter dem jeweiligen Kommentar, nicht als neuer Top-Level-Kommentar — dafür wird die native Kommentar-ID an Outstand übergeben.

Deine Performance: Drei KPI-Karten (Follower, Reichweite, Top-Post), Monats-Interaktionen, darunter alle Posts mit Suche und 8 pro Seite. Oben Zeitraum wählen (wie Community). Button Als PDF öffnet einen druckoptimierten Report (im Browser „Als PDF speichern“). Follower-Verlauf eingeklappt, optional alle Zeilen. Button Zahlen aktualisieren (technisch Metrik-Sync).

Outstand-Datenfluss: Publish → Outstand (/v1/posts/ + Media-Confirm) → Outstand sync schreibt Account- & Post-Metriken in die DB → Reporting, Engage und Dashboard-Home lesen daraus (Follower-Zuwachs, Monats-Reichweite, Interaktionen, Top-Post).

Performance & Plattform-Hinweise

  • Deine Performance: /dashboard/social/reporting — Kern-KPIs oben:
    • Follower & Zuwachs (Summe aller verknüpften Kanäle, Delta zwischen erstem und letztem Snapshot im Sync-Zeitraum)
    • Reichweite (Summe Reach aller Posts im laufenden Kalendermonat; Fallback Impressions wenn Reach fehlt)
    • Top-Post des Monats (stärkster Post im Kalendermonat nach Reach → Impressions → Interaktionen)
    • Interaktionen (eigene Karte): Likes, Kommentare und Geteilt als Monatssumme über alle synchronisierten Posts; in der Post-Liste pro Eintrag dieselben Werte im Detail
  • Dashboard-Home: Zeigt neben Reichweite auch die Monats-Interaktionen (Likes · Kommentare · Geteilt) mit Link zum Reporting
  • Outstand sync lädt frische Metriken von Outstand in die DB — ohne Sync bleiben KPIs leer oder veraltet (manuell in Reporting oder täglich per Cron /api/cron/outstand-sync)
  • Bluesky: Outstand liefert derzeit eingeschränkte Metriken und Kommentare
  • Detail-Freigabe: Story/Karussell/Reel immer im Workflow prüfen

Workflow

Social-Posts haben eine eigene Freigabe-Ansicht unter /dashboard/social/approvals (nicht mehr in der Website-Workflow-Liste vermischt).

Vier Bereiche:

  • Zur Freigabein_review, wartet auf Center/Marketing
  • Überarbeitung — abgelehnt, mit Grund; Button Erneut zur Freigabe
  • Entwürfe — noch nicht eingereicht
  • Live & geplant — veröffentlicht oder terminiert

Pro Karte: Vorschaubild, Status und Format auf Deutsch (z. B. „Zur Freigabe“, „Karussell“), Meta-Zeile (Eingereicht von, Center, Termin), Wartet auf (Avatare + Namen der gewählten Prüfer), aufklappbares Detail-Panel (Caption, Medien, Verlauf), darunter Editor, Freigabe-Link, Freigeben / Ablehnen (nur für zugewiesene Prüfer bzw. allgemeine Freigabe-Rolle ohne Zuweisung).

Freigabe anfordern (Dialog)

Beim Klick Zur Freigabe im Editor (oder Erneut zur Freigabe nach Ablehnung):

  1. Prüfer auswählen — alle aktiven Cockpit-Nutzer (Checkbox-Liste mit Avatar, Rolle; Suche; Center/Org zuerst sortiert)
  2. Freigabe-Regel: Eine Person reicht oder Alle müssen freigeben (bei mehreren Prüfern)
  3. Optional Freigabe-Link für Gast — ohne Cockpit-Login, wird in Benachrichtigung/E-Mail mitgeschickt
  4. Selbst freigeben — direkt veröffentlichen ohne Warteschlange (für jeden Nutzer mit Center-Zugang, z. B. Kopie eines bereits geprüften Posts)

Gewählte Prüfer erhalten Glocke und (ohne Digest) E-Mail. Auf dem Freigabe-Board: Filter Meine Freigaben zeigt Posts, bei denen du als Prüfer eingetragen bist — für alle eingeloggten Nutzer, nicht nur klassische Freigabe-Rollen.

Korrektur ohne Ablehnung: Freigeber öffnet Editor, korrigiert Text/Medien, speichert — Status bleibt zur Freigabe (kein Zurückweisen nötig).

Website-Freigaben bleiben unter /dashboard/workflow.

Im Content Planner (/dashboard/content/planner) erscheinen Social-Posts am geplanten Termin (scheduledAt) bzw. Veröffentlichungsdatum — Filter-Chip Social.

  • Neu anlegen: Sidebar Social Cockpit → Post erstellen oder /dashboard/social/new
  • Aus Website-Inhalt: Auf der Detailseite von News, Event oder Angebot Button Als Social-Post — übernimmt Titel, Kurztext und Bild(er) in einen neuen Entwurf (POST /api/social/from-content), Editor unter /dashboard/social/[draftId]
  • Aus Google-Bewertungen: Unter Analytics → Bewertungen (/dashboard/analytics/reviews) pro Review Social-Post — KI-Caption zu Lob/Kritik (Fallback: Textbaustein ohne AI-Key). Bei KI-Empfehlungen zusätzlich Social Sammel-Post zum Thema (z. B. mehrfach „Parken“ bemängelt). Optional Center-Hero als Bild.
  • Auf Google antworten: Nach OAuth-Verbindung (Integration → Google Places → Tab Business Profile, dann auf der Reviews-Seite Mit Google verbinden) Button Bei Google senden im Dialog. Ohne Verbindung: KI-Vorschlag, kopieren, Link zu Google.
  • Reviews-Anzahl: Ohne GBP-Verbindung zeigt Google Places höchstens 5 aktuelle Bewertungen; die Gesamtzahl auf Google kann höher sein. Mit verbundenem Business Profile werden mehr Reviews geladen (API mit Paginierung).
  • KI-Analyse erneuern: Button Erneut analysieren oder Aktualisieren (lädt Reviews neu und startet bei Bedarf eine neue KI-Auswertung). Fehlermeldung erscheint, wenn kein KI-API-Key konfiguriert ist.
  • Social aus Reviews: Buttons Themen-Post / Social: Thema aufgreifen erzeugen einen allgemeinen Beitrag zum Thema (z. B. Parken, Service) — keine direkte Social-Antwort auf eine einzelne Beschwerde. Für die persönliche Antwort: Antworten (Google / Kopieren).
  • Kommentare & Glocke: Hub zeigt Kommentare offen; neue Kommentare erzeugen eine Benachrichtigung in der Glocke (Deep-Link zu Community mit Filter „Mit Kommentaren“). Der tägliche Outstand-Cron prüft zusätzlich aktive Center.
  • Bearbeiten: In Social Freigaben Button Editor oder /dashboard/social/[draftId]
  • Editor (/dashboard/social/new): zweispaltiges Layout (volle Seitenbreite) — Center für diesen Post unabhängig vom Header-Switcher wählen
    • Emoji-Button neben dem Textfeld (Smiley) — Emojis direkt einfügen, ohne Tastatur-Hinweis
    • Medienvorschau: Thumbnail anklicken → Vergrößern (Lightbox)
    • Organisation filtern → Alle wählen oder einzelne Center per Checkbox ab-/auswählen
    • Kanäle beziehen sich nur auf die im Editor gewählten Center; fehlende Outstand-Profile werden pro Center mit Link zum Reiter Social Media genannt
    • Veröffentlichen (für Freigabe-Rollen direkt an Outstand), Zur Freigabe, Entwurf
  • KI Caption: Stichworte eingeben → Button Caption — Text orientiert sich an den im Editor gewählten Centern (Name, Stadt, Beschreibung, passende Shops/Events/Angebote aus der DB) und an den gewählten Kanälen (Plattform-Regeln, v. a. Facebook ohne Hashtags; bei Facebook + Instagram optional Hashtags als Erstkommentar). System-Prompt: socialCaptionGenerator (Quellcode: apps/dashboard/src/lib/social-caption-prompts.ts)
  • Bild-Assistent: Stichworte oder eigene Bildidee → Bild zaubern; Qualität wählen (Schnell / Schön / Wow) — ohne Technik-Jargon in der UI (Server: FAL_API_KEY)
  • Freigabe-Link (öffentlich): /freigabe/social/{token} — Medien aus dem Entwurf (containers); relative Pfade werden serverseitig aufgelöst. Ohne gespeichertes Medium erscheint ein Hinweis (Entwurf im Editor speichern, bevor der Link verschickt wird).
  • Termin & Format (aufklappbar): Post-Typ, geplante Veröffentlichung
  • Aus Dispatch: E-Mail → Entwurf → Tab Social Media

Nach Freigabe: Outstand POST /v1/posts/ — Medien als containers[].media mit { url, filename }. Optional Erster Kommentar im Editor (wird nach Live-Gang gepostet). Kanal-Status (Facebook/Instagram …) erscheint als Badges nach Publish.

Outstand-Webhook (optional, in Outstand unter Settings → Webhooks): POST /api/webhooks/outstand — Events post.published, post.error, account.token_expired. Env OUTSTAND_WEBHOOK_SECRET für Signaturprüfung. Metrik-Sync: manuell in Reporting oder Cron POST /api/cron/outstand-sync (CRON_SECRET, empfohlen täglich).

Hinweis: Caption-Änderungen im Workflow speichern die vorhandenen Medien im Entwurf (kein versehentliches Entfernen beim PATCH ohne containers).

Für Center Manager / Marketing, die kein Cockpit-Konto haben:

  1. Social Cockpit → Freigaben (/dashboard/social/approvals) → Post in Prüfung → Button Freigabe-Link (neben Editor)
  2. Link wird erzeugt und in die Zwischenablage kopiert — Format: /freigabe/social/[token]
  3. Empfänger öffnet die gebrandete Vorschauseite (Center-Logo, Farben) und kann freigeben oder ablehnen
  4. Link ist 30 Tage gültig; bei Ablauf in Freigaben einen neuen Link erzeugen
  5. Rückmeldung an die Redaktion: Der Ersteller (createdBy) erhält immer eine Benachrichtigung in der Glocke (Header). E-Mail: Ablehnung und Publish-Fehler sofort (SOCIAL_REVIEW); erfolgreiche Freigabe sofort, außer der Nutzer hat den täglichen Redaktions-Digest aktiviert — dann nur in der Zusammenfassung. Technik: Developer: Dashboard-E-Mails.

Hinweis: Kundenkontakt ist kein Freigabe-Link — dort generiert die KI nur einen E-Mail-Textvorschlag für Mieter/Kunden.

Technisch:

  • POST /api/social/drafts/[draftId]/review-link — Link erzeugen (Session)
  • GET/POST /api/social/review/[token] — Vorschau / Freigabe / Ablehnung (öffentlich, tokenbasiert)
  • GET/PUT /api/notifications — Cockpit-Glocke (persistente Benachrichtigungen pro Nutzer)

Benachrichtigungen (Glocke)

Die Glocke in der oberen Leiste zeigt ungelesene Workflow-Hinweise (z. B. Social-Freigabe über externen Link). Vollständige Liste: Benachrichtigungen (/dashboard/notifications). Technisch: Tabelle dashboard_notifications — Migration 20260521180000_add_dashboard_notifications_SAFE.sql.

Bei Freigabe anfordern erhalten gewählte Prüfer zusätzlich:

KanalWann
Cockpit-Glocke + optional Desktop-PushImmer (Glocke); Browser-Popup nur nach Opt-in unter Glocke → Desktop-Benachrichtigungen einrichten
E-MailWenn kein täglicher E-Mail-Digest aktiv
Microsoft Teams (AgencyOS-Bot)Nur wenn AGENCYOS_TEAMS_NOTIFY_URL und AGENCYOS_TEAMS_NOTIFY_SECRET gesetzt sind; Freigeber muss den Bot in Teams mindestens einmal geöffnet haben

Details und API-Vertrag: AgencyOS-Integration → Teams-Benachrichtigungen.

Verlauf (Timeline)

Unter Social-Freigaben (Karte aufklappen) und im Social-Editor (Seitenleiste) erscheint der Verlauf pro Post: Erstellung, Freigabe-Link, Einreichung, Freigabe/Ablehnung, Veröffentlichung. Technisch: Tabelle social_post_draft_events — Migration 20260521190000_add_social_draft_events_SAFE.sql, API GET /api/social/drafts/[draftId]/events.

Im Dashboard (für Redaktion):

  1. Empfohlen: Shopping Center öffnen → Center wählen → Reiter Social Media
    (/dashboard/content/centers/[centerId]?tab=social)
  2. Alternativ: Sidebar Social Cockpit → Kanäle verknüpfen
    (/dashboard/settings/social-accounts) — dort Center wählen und Outstand-Profile verknüpfen

Pro Center Outstand-Profile (Facebook, Instagram, …) zuordnen. Beim Anlegen von Social-Entwürfen werden verknüpfte Profile vorausgewählt.

Technisch: Tabelle center_social_accounts, APIs:

  • GET/PUT/DELETE /api/social/center-accounts
  • GET /api/social/outstand-accounts — verbundene Outstand-Konten

Ohne Mapping werden beim Anlegen keine Accounts vorausgewählt.

Env

  • OUTSTAND_API_KEY — org-weit (Render Dashboard-Service)
  • OUTSTAND_WEBHOOK_SECRET — optional, HMAC für /api/webhooks/outstand
  • CRON_SECRET — für /api/cron/outstand-sync (täglicher Metrik-Sync; GitHub Action Outstand Metrics Sync, 5:00 UTC)
  • FAL_API_KEY — Bild-Assistent im Post-Editor (Qualitätsstufen Schnell/Schön/Wow)
  • OpenAI (oder konfigurierter Provider) — Caption-KI über bestehende AI-Einstellungen
  • AGENCYOS_TEAMS_NOTIFY_URL — optional; vollständige AgencyOS-URL für Social-Review → Teams (z. B. https://team.cockpit-os.de/api/integrations/notifications/social-review)
  • AGENCYOS_TEAMS_NOTIFY_SECRET — optional; gemeinsames Bearer-Secret mit AgencyOS (nur Server)

Migration

Additive Tabellen: 20260521160000_add_social_outstand_SAFE.sql

Nutzungsstatistik: Seitenaufrufe werden anonymisiert erfasst. Im Umami-Dashboard nach diesem Pfad filtern: /dashboard/social-media-freigabe