Implementiert automatische YouTube-Kommentar-Synchronisation und KI-gestützte Antwortvorschläge für das Community Management. Neue Features: - Cron-Endpoint für externen Scheduler (/api/cron/youtube-sync) - ClaudeReplyService für AI-generierte Antworten (3 Tonalitäten) - Sync Status API mit Live-Polling - AI Reply Suggestions UI mit Varianten-Auswahl - Job Logger für strukturiertes Logging von Background Jobs Änderungen: - ClaudeAnalysisService: Model-Update auf claude-3-5-haiku-20241022 - CommunityInbox: Sync Status Badge, AI Reply Suggestions Integration - SCSS: Styles für Sync-Indicator und Suggestion Cards Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
7.5 KiB
Phase 2.2 Prompt - Korrektur-Bericht
Datum: 16. Januar 2026
Erstellt von: Claude Code (Opus 4.5)
Prompt-Datei: /prompts/Phase2.2 youtube sync ai replies prompt.md
Zusammenfassung
Der Phase 2.2 Prompt beschreibt die Implementierung von:
- YouTube Auto-Sync - Automatischer Kommentar-Import
- AI Reply Suggestions - KI-Antwortvorschläge mit Claude
- UI Integration - Erweiterungen für CommunityInbox
- Cron-Konfiguration - Automatische Sync-Jobs
Ergebnis: Der Prompt enthält mehrere Annahmen über existierende Infrastruktur, die nicht zutreffen. Korrekturen sind erforderlich.
KRITISCHE Korrektur: ClaudeAnalysisService fehlt
Problem
Der Prompt geht davon aus, dass ClaudeAnalysisService.ts bereits existiert:
// Prompt Zeile 44-50:
// src/lib/integrations/claude/ClaudeAnalysisService.ts
// - analyzeSentiment(message: string): Promise<SentimentResult>
// - extractTopics(message: string): Promise<string[]>
// - detectMedicalContent(message: string): Promise<boolean>
Realität: Das Verzeichnis src/lib/integrations/claude/ ist LEER.
Auswirkung
Der existierende CommentsSyncService.ts importiert ClaudeAnalysisService:
// src/lib/integrations/youtube/CommentsSyncService.ts, Zeile 5:
import { ClaudeAnalysisService } from '../claude/ClaudeAnalysisService'
Der Code kann nicht kompiliert/ausgeführt werden, solange ClaudeAnalysisService fehlt!
Lösung
ClaudeAnalysisService.ts muss ZUERST erstellt werden, bevor der Sync-Service funktioniert.
Der Prompt enthält bereits den vollständigen Code dafür (Zeilen 1236-1339).
Bestandsaufnahme: Was existiert bereits?
Vorhandene Dateien
| Datei | Status | Anmerkungen |
|---|---|---|
src/lib/integrations/youtube/YouTubeClient.ts |
Existiert | Leicht andere Signatur als im Prompt |
src/lib/integrations/youtube/CommentsSyncService.ts |
Existiert | Importiert fehlenden ClaudeAnalysisService |
src/lib/integrations/youtube/oauth.ts |
Existiert | Vollständig funktional |
src/lib/integrations/claude/ |
LEER | ClaudeAnalysisService fehlt! |
src/collections/CommunityInteractions.ts |
Existiert | 568 Zeilen, vollständig |
src/collections/SocialAccounts.ts |
Existiert | Vollständig |
src/collections/SocialPlatforms.ts |
Existiert | Vollständig |
src/lib/services/RulesEngine.ts |
Existiert | 9054 Bytes |
Vorhandene API Routes
| Route | Status | Anmerkungen |
|---|---|---|
/api/community/sync-comments/ |
Existiert | POST - Manueller Sync (pro Account) |
/api/community/analytics/* |
Existiert | 8 Endpoints (Phase 2.1) |
/api/community/export/ |
Existiert | Export-Funktionalität |
/api/community/reply/ |
Existiert | Antworten senden |
/api/community/stats/ |
Existiert | Statistiken |
Korrekturen am Prompt
1. ClaudeAnalysisService muss erstellt werden (nicht "bereits implementiert")
Prompt-Text ändern von:
### Claude Integration (bereits implementiert)
// src/lib/integrations/claude/ClaudeAnalysisService.ts
Ändern zu:
### Claude Integration (MUSS ERSTELLT WERDEN)
// src/lib/integrations/claude/ClaudeAnalysisService.ts
// HINWEIS: Diese Datei existiert noch nicht und muss als erstes erstellt werden!
2. API Route Namenskonvention anpassen
Prompt schlägt vor:
/api/community/sync/route.ts
Bereits existiert:
/api/community/sync-comments/route.ts
Empfehlung: Den existierenden Pfad beibehalten oder Prompt aktualisieren.
3. YouTubeClient Signatur-Unterschiede
Im Prompt:
class YouTubeClient {
constructor(accessToken: string, accountId: number) { ... }
static async getValidClient(accountId: number): Promise<YouTubeClient | null>
}
Existierende Version:
class YouTubeClient {
constructor(credentials: YouTubeCredentials, payload: Payload) { ... }
// Keine statische getValidClient Methode
}
Empfehlung: Die existierende Version erweitern, nicht ersetzen.
4. Implementierungsreihenfolge aktualisieren
Neue empfohlene Reihenfolge:
- ClaudeAnalysisService erstellen (KRITISCH - ohne dies funktioniert nichts!)
- Type Definitions (
youtube.ts) - YouTubeClient erweitern (getValidClient Methode hinzufügen)
- CommentsSyncService prüfen/anpassen
- Job Runner + Logger
- Cron Endpoint
- ClaudeReplyService
- API Endpoint
/generate-reply - UI Integration
- SCSS Ergänzungen
Fehlende Komponenten
Laut Prompt zu erstellen
| Komponente | Pfad | Priorität |
|---|---|---|
| ClaudeAnalysisService | src/lib/integrations/claude/ClaudeAnalysisService.ts |
KRITISCH |
| ClaudeReplyService | src/lib/integrations/claude/ClaudeReplyService.ts |
Hoch |
| Type Definitions | src/types/youtube.ts |
Mittel |
| Job Runner | src/lib/jobs/syncAllComments.ts |
Mittel |
| Job Logger | src/lib/jobs/JobLogger.ts |
Mittel |
| Cron Endpoint | src/app/(payload)/api/cron/youtube-sync/route.ts |
Mittel |
| Generate Reply | src/app/(payload)/api/community/generate-reply/route.ts |
Hoch |
UI-Erweiterungen
- AI Reply Section in CommunityInbox
- Sync Status Badge
- SCSS Ergänzungen (~100 Zeilen)
Collection-Feldabgleich
CommunityInteractions - Prompt vs. Realität
| Feld (Prompt) | Vorhanden | Anmerkungen |
|---|---|---|
externalId |
Ja | Einzigartig, indiziert |
platform |
Ja | Relationship |
socialAccount |
Ja | Relationship |
linkedContent |
Ja | Relationship zu youtube-content |
type |
Ja | comment, reply, dm, mention, review, question |
author.* |
Ja | Vollständig |
message |
Ja | Textarea |
analysis.* |
Ja | Sentiment, Score, Confidence, Topics |
flags.* |
Ja | isMedicalQuestion, requiresEscalation, isSpam, isFromInfluencer |
status |
Ja | new, in_review, waiting, replied, resolved, archived, spam |
priority |
Ja | urgent, high, normal, low |
response.* |
Ja | text, usedTemplate, sentAt, sentBy |
Ergebnis: Collection ist vollständig kompatibel mit dem Prompt.
Umgebungsvariablen prüfen
Der Prompt erfordert folgende Umgebungsvariablen:
| Variable | Beschreibung | Status |
|---|---|---|
ANTHROPIC_API_KEY |
Claude API Key | Prüfen in .env |
YOUTUBE_CLIENT_ID |
YouTube OAuth Client ID | Prüfen in .env |
YOUTUBE_CLIENT_SECRET |
YouTube OAuth Client Secret | Prüfen in .env |
YOUTUBE_REDIRECT_URI |
OAuth Callback URL | Prüfen in .env |
CRON_SECRET |
Auth-Token für Cron-Endpoint | NEU - hinzufügen |
Empfohlene nächste Schritte
- Sofort:
ClaudeAnalysisService.tserstellen (Code aus Prompt Zeilen 1236-1339) - Dann: Build testen -
pnpm build - Danach: Sync-Funktionalität manuell testen
- Fortfahren: Restliche Komponenten implementieren
Hinweise für die Implementierung
Claude API Modell
Der Prompt verwendet claude-3-haiku-20240307. Dieses Modell ist schnell und kostengünstig, aber veraltet. Aktuelle Alternativen:
claude-3-5-haiku-20241022- Neuere Versionclaude-3-5-sonnet-20241022- Bessere Qualität bei höheren Kosten
Rate Limiting
Der Prompt enthält Rate-Limiting zwischen API-Calls:
- 100ms zwischen Kommentaren
- 200ms zwischen Videos
Dies ist wichtig für YouTube API Quota und Claude API Kosten.
Error Handling
Die existierende CommentsSyncService hat Fallback-Analyse bei Claude-Fehlern - das ist gut implementiert.
Generiert am 16. Januar 2026 von Claude Code (Opus 4.5)