Handbuch: Social-Media-Automatisierung für Verlage mit Python, Playwright und OpenAI
Inhaltsverzeichnis
1. Ziel und Rahmen
1.1 Zweck des Systems
1.2 Abgrenzung: Assistenzsystem statt Bot-Farm
1.3 Unterstützte Plattformen
1.4 Manuelle, halbautomatische und automatische Workflows
1.5 Technische Grundannahmen
1.6 Projektstruktur
2. Systemarchitektur
2.1 Gesamtübersicht
2.2 Komponenten
2.3 Datenfluss
2.4 Statusmodell für Beiträge
2.5 Statusmodell für Interaktionen
2.6 Fehler- und Retry-Konzept
2.7 Logging und Nachvollziehbarkeit
3. Projekt-Setup
3.1 Python-Version und virtuelle Umgebung
3.2 Abhängigkeiten installieren
3.3 Playwright installieren
3.4 OpenAI-Client einrichten
3.5 .env-Konfiguration
3.6 Verzeichnisstruktur
3.7 Erster Smoke-Test
4. Konfiguration
4.1 Plattform-Konfiguration
4.2 Account-Konfiguration
4.3 Posting-Limits
4.4 Themen-Limits
4.5 Zeitfenster
4.6 Sicherheitsparameter
4.7 Beispiel: config.yaml
5. Datenmodell
5.1 Book
5.2 Author
5.3 PostDraft
5.4 ApprovedPost
5.5 PublishedPost
5.6 InteractionCandidate
5.7 InteractionLog
5.8 JSON-Dateien vs. SQLite
5.9 Beispiel-Schema SQLite
6. Content-Quellen
6.1 Buchdaten aus JSON
6.2 Buchdaten aus CSV
6.3 Buchdaten aus Datenbank
6.4 Blogartikel als Quelle
6.5 Zitate als Quelle
6.6 Covermotive als Quelle
6.7 Manuelle Themenliste
6.8 Normalisierung der Eingangsdaten
7. OpenAI-Integration
7.1 Client-Klasse
7.2 Request-Struktur
7.3 Modell-Konfiguration
7.4 safety_identifier
7.5 Fehlerbehandlung
7.6 Token- und Kostenbegrenzung
7.7 Wiederverwendbare Prompt-Templates
7.8 Strukturierte JSON-Ausgabe
7.9 Validierung der KI-Antworten
8. Prompt-Bibliothek
8.1 Beitrag für LinkedIn
8.2 Beitrag für Instagram
8.3 Beitrag für Facebook
8.4 Buchvorstellung
8.5 Klassiker-Zitat
8.6 Verlagswerkstatt
8.7 Blogartikel-Zusammenfassung
8.8 Kommentarvorschlag
8.9 Antwort auf Nutzerkommentar
8.10 Dublettenprüfung
8.11 Tonalitätsprüfung
8.12 Kürzung auf Plattformlimit
9. Content-Generator
9.1 Generator-Service
9.2 Themenauswahl
9.3 Beitragsvarianten erzeugen
9.4 Plattformvarianten erzeugen
9.5 Hashtags erzeugen
9.6 Call-to-Action begrenzen
9.7 Entwürfe speichern
9.8 Beispiel: generate_posts.py
10. Qualitätsprüfung
10.1 Harte Ausschlussregeln
10.2 Generik-Erkennung
10.3 Wiederholungsprüfung
10.4 Link-Prüfung
10.5 Zeichenlimit-Prüfung
10.6 Tonalitätsprüfung
10.7 Verkaufsdruck-Prüfung
10.8 Beispiel: quality_gate.py
11. Review-Queue
11.1 Zweck der Queue
11.2 Status: draft, approved, rejected, published, failed
11.3 CLI zur Freigabe
11.4 Vorschau im Terminal
11.5 Bearbeiten eines Entwurfs
11.6 Automatische Freigabe nach Regeln
11.7 Beispiel: review_queue.py
12. Playwright-Grundlagen
12.1 Browser starten
12.2 Persistente Session
12.3 Login manuell durchführen
12.4 storage_state speichern
12.5 Session wiederverwenden
12.6 Screenshots
12.7 Selektoren stabil halten
12.8 Timeout-Strategie
12.9 Beispiel: browser_session.py
13. Posting-Engine
13.1 Gemeinsames Interface
13.2 Plattformadapter
13.3 Text einfügen
13.4 Bild hochladen
13.5 Link hinzufügen
13.6 Post absenden
13.7 Screenshot nach Veröffentlichung
13.8 Ergebnis speichern
13.9 Beispiel: publisher.py
14. LinkedIn-Automatisierung
14.1 Login-Session
14.2 Beitrag erstellen
14.3 Text posten
14.4 Bild posten
14.5 Link posten
14.6 Eigene Beiträge prüfen
14.7 Kommentare unter eigenen Beiträgen lesen
14.8 Antwortvorschläge erzeugen
14.9 Beispiel: linkedin_publisher.py
15. Instagram-Automatisierung
15.1 Besonderheiten bei Instagram
15.2 Bildpflicht
15.3 Caption erzeugen
15.4 Bild hochladen
15.5 Beitrag veröffentlichen
15.6 Hashtags begrenzen
15.7 Beispiel: instagram_publisher.py
16. Facebook-Automatisierung
16.1 Seitenkontext
16.2 Beitrag auf Seite veröffentlichen
16.3 Bildbeitrag
16.4 Linkbeitrag
16.5 Kommentare lesen
16.6 Antwortvorschläge
16.7 Beispiel: facebook_publisher.py
17. Bildgenerierung und Bildverwaltung
17.1 Bildquellen
17.2 Covermotiv vs. Social-Media-Grafik
17.3 Dateinamen-Konvention
17.4 Bildgrößen pro Plattform
17.5 Automatisches Zuschneiden
17.6 Textfreie Motive
17.7 Zitatkarten
17.8 Beispiel: image_prepare.py
18. Interaktionssystem
18.1 Kandidaten finden
18.2 Beiträge analysieren
18.3 Relevanz bewerten
18.4 Kommentarvorschlag erzeugen
18.5 Ausschlussregeln
18.6 Tageslimits
18.7 Manuelle Freigabe
18.8 Automatisches Liken nur nach Regeln
18.9 Beispiel: interaction_worker.py
19. Kommentarlogik
19.1 Wann kommentieren
19.2 Wann nicht kommentieren
19.3 Kommentararten
19.4 Fachlicher Zusatz
19.5 Keine generischen Komplimente
19.6 Keine Verkaufslinks
19.7 Keine politischen Debatten
19.8 Ähnlichkeitsprüfung
19.9 Beispiel: comment_generator.py
20. Scheduler
20.1 Einfacher Cronjob
20.2 Python-Scheduler
20.3 Posting-Zeitfenster
20.4 Queue-Verarbeitung
20.5 Retry-Strategie
20.6 Tageslimits
20.7 Beispiel: scheduler.py
20.8 Beispiel-Crontab
21. Logging
21.1 Strukturierte Logs
21.2 Aktionsprotokoll
21.3 Fehlerprotokoll
21.4 Screenshot-Archiv
21.5 API-Kostenprotokoll
21.6 Plattformantworten speichern
21.7 Beispiel: logger.py
22. Monitoring
22.1 Tagesreport
22.2 Wochenreport
22.3 Veröffentlichte Beiträge
22.4 Fehlgeschlagene Beiträge
22.5 Interaktionen
22.6 API-Kosten
22.7 Reichweiten-Metriken manuell erfassen
22.8 Beispiel: report.py
23. Sicherheits- und Sperrlogik
23.1 Globaler Kill-Switch
23.2 Plattform-Kill-Switch
23.3 Account-Lock bei Fehlern
23.4 Stop bei CAPTCHA
23.5 Stop bei Login-Problemen
23.6 Stop bei ungewöhnlicher Plattformreaktion
23.7 Keine Umgehungslogik
23.8 Beispiel: safety_guard.py
24. CLI-Werkzeuge
24.1 Beiträge generieren
24.2 Entwürfe anzeigen
24.3 Beitrag freigeben
24.4 Beitrag ablehnen
24.5 Posting ausführen
24.6 Queue prüfen
24.7 Logs anzeigen
24.8 Report erzeugen
24.9 Beispiel: main.py mit argparse
25. Deployment
25.1 Verzeichnis auf Server
25.2 .env produktiv setzen
25.3 Playwright-Browser installieren
25.4 Rechte setzen
25.5 Systemd-Unit
25.6 Cron-Konfiguration
25.7 Smoke-Test produktiv
25.8 Rollback
26. Tests
26.1 Unit-Tests für Generator
26.2 Unit-Tests für Quality-Gate
26.3 Tests für JSON-Validierung
26.4 Tests für Limits
26.5 Dry-Run für Publisher
26.6 Mock für OpenAI
26.7 Beispiel: pytest
27. Wartung
27.1 Selektoren aktualisieren
27.2 Prompt-Versionen pflegen
27.3 Content-Dubletten bereinigen
27.4 Fehlgeschlagene Posts prüfen
27.5 Session erneuern
27.6 Plattformänderungen dokumentieren
27.7 Monatsroutine
28. Anhang
28.1 Beispiel .env
28.2 Beispiel config.yaml
28.3 Beispiel books.json
28.4 Beispiel posts.json
28.5 Beispiel interaction_log.json
28.6 Beispiel-Prompts
28.7 Beispiel-Crontab
28.8 Beispiel-Systemd-Service
28.9 Fehlercodes
28.10 Checkliste MVP
28.11 Checkliste Produktivbetrieb
0 Kommentare