commit e1ecd1a38c2d0ac30a62a60b25faf4031b205c92 Author: RubenRWU Date: Wed Jan 21 13:47:13 2026 +0100 first commit diff --git a/README.md b/README.md new file mode 100644 index 0000000..0d398b0 --- /dev/null +++ b/README.md @@ -0,0 +1,257 @@ +# LinkedIn Post Creation System + +Ein Multi-Agent AI System für die automatisierte Erstellung von LinkedIn Posts mit umfassender Profilanalyse und iterativem Writer-Critic Workflow. + +## 🚀 Features + +- **LinkedIn Profil Scraping** via Apify +- **AI-gestützte Profilanalyse** mit Stil- und Tonalitätserkennung +- **Automatische Themenextraktion** aus bestehenden Posts +- **Research Agent** für neue Content-Themen (Perplexity) +- **Writer-Critic Multi-Agent System** für Post-Erstellung +- **Schickes TUI** (Terminal User Interface) mit Textual +- **Supabase Datenbank** für persistente Speicherung +- **OpenAI & Perplexity Integration** + +## 📋 Voraussetzungen + +- Python 3.12+ +- Supabase Account +- OpenAI API Key +- Perplexity API Key +- Apify Account + +## 🛠️ Installation + +### 1. Repository klonen und Setup + +```bash +cd LinkedInWorkflow +python -m venv .venv +source .venv/bin/activate # Linux/Mac +# oder +.venv\Scripts\activate # Windows +``` + +### 2. Dependencies installieren + +```bash +pip install -r requirements.txt +``` + +### 3. Umgebungsvariablen konfigurieren + +Erstelle eine `.env` Datei basierend auf `.env.example`: + +```bash +cp .env.example .env +``` + +Fülle die `.env` Datei mit deinen API Keys: + +```env +# API Keys +OPENAI_API_KEY=sk-... +PERPLEXITY_API_KEY=pplx-... +APIFY_API_KEY=apify_api_... + +# Supabase +SUPABASE_URL=https://xxx.supabase.co +SUPABASE_KEY=eyJ... + +# Apify +APIFY_ACTOR_ID=apify/linkedin-profile-scraper + +# Development +DEBUG=true +LOG_LEVEL=INFO +``` + +### 4. Supabase Datenbank Setup + +1. Gehe zu [Supabase](https://supabase.com) und erstelle ein neues Projekt +2. Öffne den SQL Editor +3. Führe das Schema aus: `config/supabase_schema.sql` + +```sql +-- Kopiere den Inhalt von config/supabase_schema.sql +-- und führe ihn im Supabase SQL Editor aus +``` + +## 🎯 Nutzung + +### TUI Starten + +```bash +python main.py +``` + +### Workflow + +#### 1. **New Customer Setup** 🚀 + - LinkedIn Profil wird gescraped + - Alle Posts werden analysiert + - Schreibstil wird extrahiert + - Themen werden identifiziert + - UUID wird generiert und gespeichert + +#### 2. **Research Topics** 🔍 + - Neue Themen werden recherchiert (Perplexity) + - Basierend auf Branche und Zielgruppe + - Bereits behandelte Themen werden vermieden + - 5-7 aktuelle Topic-Vorschläge + +#### 3. **Create Post** ✍️ + - Thema auswählen + - Writer erstellt initialen Post + - Critic reviewed und gibt Feedback + - Bis zu 10 Iterationen + - Finaler Post wird gespeichert + +#### 4. **View Status** 📊 + - Übersicht aller Kunden + - Anzahl Posts, Topics, etc. + - Status der Analysen + +## 📁 Projektstruktur + +``` +LinkedInWorkflow/ +├── src/ +│ ├── agents/ # AI Agents +│ │ ├── base.py # Base Agent Klasse +│ │ ├── profile_analyzer.py +│ │ ├── topic_extractor.py +│ │ ├── researcher.py +│ │ ├── writer.py +│ │ └── critic.py +│ ├── database/ # Datenbank +│ │ ├── client.py # Supabase Client +│ │ └── models.py # Pydantic Models +│ ├── scraper/ # LinkedIn Scraper +│ │ └── apify_scraper.py +│ ├── tui/ # Terminal UI +│ │ └── app.py +│ ├── config.py # Konfiguration +│ └── orchestrator.py # Workflow Orchestrator +├── config/ +│ └── supabase_schema.sql # DB Schema +├── logs/ # Log Files +├── main.py # Entry Point +├── requirements.txt +├── .env.example +└── README.md +``` + +## 🤖 AI Agents + +### ProfileAnalyzerAgent +- Analysiert LinkedIn Profil und Posts +- Extrahiert Schreibstil, Tonalität, Perspektive +- Identifiziert linguistische Fingerabdrücke +- Erkennt Zielgruppe und Content-Strategie + +### TopicExtractorAgent +- Extrahiert Themen aus bestehenden Posts +- Kategorisiert und clustert ähnliche Themen +- Speichert Topics mit Konfidenz-Score + +### ResearchAgent +- Recherchiert aktuelle Themen (Perplexity) +- Filtert basierend auf Branche und Zielgruppe +- Vermeidet bereits behandelte Themen +- Liefert 5-7 konkrete Topic-Vorschläge + +### WriterAgent +- Schreibt Posts im Stil der Person +- Nutzt Profil-Analyse für Authentizität +- Unterstützt Revisionen basierend auf Feedback + +### CriticAgent +- Reviewed Posts auf Qualität und Authentizität +- Vergibt Scores (0-100) +- Gibt konkrete Verbesserungsvorschläge +- Genehmigt oder fordert Revision + +## 🔧 Technologie-Stack + +- **Python 3.12** +- **Textual** - Modernes TUI Framework +- **OpenAI GPT-4o** - Profil-Analyse, Writing, Critic +- **Perplexity** - Research & Topic Discovery +- **Apify** - LinkedIn Scraping +- **Supabase** - PostgreSQL Datenbank +- **Pydantic** - Data Validation +- **Loguru** - Logging + +## 📊 Datenbank-Schema + +Das System nutzt folgende Tabellen: + +- `customers` - Kundendaten und LinkedIn URLs +- `linkedin_profiles` - Gescrapte Profildaten +- `linkedin_posts` - Gescrapte Posts +- `topics` - Extrahierte und recherchierte Themen +- `profile_analyses` - AI-generierte Profilanalysen +- `research_results` - Research-Ergebnisse +- `generated_posts` - Erstellte Posts mit Iterationen + +## 🎨 TUI Navigation + +- **Arrow Keys / Tab** - Navigation zwischen Elementen +- **Enter** - Button/Option auswählen +- **Escape** - Zurück zum Hauptmenü +- **Q** - Quit Application + +## 📝 Logging + +Logs werden automatisch in `logs/` gespeichert: +- Tägliche Rotation +- 7 Tage Retention +- Detaillierte Error-Tracking + +## 🔒 Sicherheit + +- API Keys niemals committen (`.env` ist in `.gitignore`) +- Supabase Row Level Security aktivieren +- Apify Proxy für LinkedIn Scraping nutzen + +## 🐛 Troubleshooting + +### "Supabase connection failed" +- Prüfe `SUPABASE_URL` und `SUPABASE_KEY` in `.env` +- Stelle sicher, dass das Schema ausgeführt wurde + +### "Apify scraping failed" +- Prüfe `APIFY_API_KEY` +- Stelle sicher, dass der Actor `apify/linkedin-profile-scraper` verfügbar ist +- LinkedIn URLs müssen öffentlich zugänglich sein + +### "OpenAI rate limit" +- Warte kurz und versuche es erneut +- Erhöhe Rate Limits in deinem OpenAI Account + +## 🚧 TODO / Roadmap + +- [ ] Multi-Customer Selection in TUI +- [ ] Topic Selection Interface +- [ ] Export zu n8n Workflow +- [ ] LinkedIn Publishing Integration +- [ ] Analytics Dashboard +- [ ] Batch-Processing für mehrere Posts + +## 📄 Lizenz + +Proprietary - Alle Rechte vorbehalten + +## 👥 Author + +Entwickelt als AI-Automatisierungs-Projekt für LinkedIn Content Creation. + +## 🙏 Credits + +- OpenAI für GPT-4o +- Perplexity für Research +- Apify für LinkedIn Scraping +- Textualize für Textual Framework +# linkedinworkflow