cms.c2sgmbh/docs/reports/phase2.2-corrections-report.md
Martin Porwoll 3464494b14 feat(community): Phase 2.2 - YouTube Auto-Sync und AI Reply Suggestions
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>
2026-01-16 15:44:06 +00:00

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:

  1. YouTube Auto-Sync - Automatischer Kommentar-Import
  2. AI Reply Suggestions - KI-Antwortvorschläge mit Claude
  3. UI Integration - Erweiterungen für CommunityInbox
  4. 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:

  1. ClaudeAnalysisService erstellen (KRITISCH - ohne dies funktioniert nichts!)
  2. Type Definitions (youtube.ts)
  3. YouTubeClient erweitern (getValidClient Methode hinzufügen)
  4. CommentsSyncService prüfen/anpassen
  5. Job Runner + Logger
  6. Cron Endpoint
  7. ClaudeReplyService
  8. API Endpoint /generate-reply
  9. UI Integration
  10. 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

  1. Sofort: ClaudeAnalysisService.ts erstellen (Code aus Prompt Zeilen 1236-1339)
  2. Dann: Build testen - pnpm build
  3. Danach: Sync-Funktionalität manuell testen
  4. 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 Version
  • claude-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)