# AI Content Generator Service

Automatische Generierung von H5P-Lerninhalten mit Claude AI und YouTube-Integration.

## Übersicht

Der AI Content Generator analysiert hochgeladene Lernmaterialien und generiert automatisch alle 8 H5P-Content-Typen:

1. **Quiz** - Multiple Choice Fragen
2. **Interactive Video** - YouTube-Videos mit Interaktionen
3. **Course Presentation** - Präsentationsfolien
4. **Flashcards** - Lernkarten
5. **Timeline** - Chronologische Darstellungen
6. **Drag and Drop** - Zuordnungsaufgaben
7. **Fill in the Blanks** - Lückentexte
8. **Memory Game** - Memory-Paare

## Funktionen

### Material-Analyse
- **PDF**: Textextraktion aus mehrseitigen PDFs
- **Images**: OCR-Texterkennung (Tesseract)
- **DOCX**: Word-Dokument Analyse
- **Text**: Plain-Text Dateien

### YouTube-Integration
- Automatische Video-Suche (optional)
- Transkript-Analyse (deutsch/englisch)
- KI-generierte Interaktionen mit Zeitstempeln

### Claude AI Integration
- Altersgerechte Content-Generierung
- Basiert auf hochgeladenen Materialien
- JSON-strukturierte Ausgaben

## Installation

### Lokale Entwicklung

```bash
cd ai-content-generator

# Virtual Environment erstellen
python3 -m venv venv
source venv/bin/activate

# Dependencies installieren
pip install -r requirements.txt

# Tesseract OCR installieren (für Image-Analyse)
# macOS:
brew install tesseract tesseract-lang

# Ubuntu/Debian:
sudo apt-get install tesseract-ocr tesseract-ocr-deu
```

### Umgebungsvariablen

Kopiere `.env.example` zu `.env`:

```bash
cp .env.example .env
```

Setze deinen Anthropic API Key:

```env
ANTHROPIC_API_KEY=your-api-key-here
```

### Docker

```bash
# Content Services starten (inkl. AI Generator)
docker-compose -f docker-compose.content.yml up -d

# Nur AI Generator neu bauen
docker-compose -f docker-compose.content.yml up -d --build ai-content-generator
```

## API Endpoints

### Health Check

```bash
GET /health
```

### Content Generierung starten

```bash
POST /api/generate-content
Content-Type: multipart/form-data

# Form Data:
- topic: string (z.B. "Das Auge")
- description: string (optional)
- target_grade: string (z.B. "5-6", "7-8")
- materials: File[] (PDFs, Images, DOCX)
```

**Beispiel:**

```bash
curl -X POST http://localhost:8004/api/generate-content \
  -F "topic=Das Auge" \
  -F "description=Biologie Thema für Klasse 7" \
  -F "target_grade=7-8" \
  -F "materials=@auge_skizze.pdf" \
  -F "materials=@auge_text.docx"
```

**Response:**

```json
{
  "job_id": "550e8400-e29b-41d4-a716-446655440000",
  "status": "pending",
  "message": "Content generation started"
}
```

### Generation Status prüfen

```bash
GET /api/generation-status/{job_id}
```

**Response:**

```json
{
  "job_id": "550e8400-e29b-41d4-a716-446655440000",
  "status": "processing",
  "progress": 50,
  "current_step": "Generating Quiz questions..."
}
```

### Generierte Inhalte abrufen

```bash
GET /api/generated-content/{job_id}
```

**Response:**

```json
{
  "topic": "Das Auge",
  "target_grade": "7-8",
  "generated_at": "2025-01-15T10:30:00Z",
  "content_types": {
    "quiz": {
      "type": "quiz",
      "title": "Quiz: Das Auge",
      "questions": [...]
    },
    "interactive_video": {
      "type": "interactive-video",
      "videoUrl": "https://youtube.com/watch?v=...",
      "interactions": [...]
    },
    "flashcards": {...},
    "timeline": {...},
    "drag_drop": {...},
    "fill_blanks": {...},
    "memory": {...},
    "course_presentation": {...}
  }
}
```

### YouTube Video-Suche

```bash
POST /api/youtube-search
Content-Type: application/json

{
  "query": "Das Auge Biologie",
  "max_results": 5
}
```

## Content-Typen Struktur

### Quiz

```json
{
  "type": "quiz",
  "title": "Quiz: Das Auge",
  "questions": [
    {
      "question": "Was ist die Funktion der Pupille?",
      "options": ["A", "B", "C", "D"],
      "correct_answer": 0,
      "explanation": "..."
    }
  ]
}
```

### Interactive Video

```json
{
  "type": "interactive-video",
  "videoUrl": "https://youtube.com/watch?v=xyz",
  "interactions": [
    {
      "time": "01:30",
      "seconds": 90,
      "type": "question",
      "title": "Verständnisfrage",
      "content": "Was wurde gerade erklärt?"
    }
  ]
}
```

### Flashcards

```json
{
  "type": "flashcards",
  "cards": [
    {
      "id": 1,
      "front": "Begriff",
      "back": "Definition"
    }
  ]
}
```

### Timeline

```json
{
  "type": "timeline",
  "events": [
    {
      "id": 1,
      "year": "1800",
      "title": "Ereignis",
      "description": "..."
    }
  ]
}
```

### Drag and Drop

```json
{
  "type": "drag-drop",
  "title": "Zuordnung",
  "zones": [
    {"id": 1, "name": "Kategorie 1"}
  ],
  "draggables": [
    {"id": 1, "text": "Element", "correctZoneId": 1}
  ]
}
```

### Fill in the Blanks

```json
{
  "type": "fill-blanks",
  "title": "Lückentext",
  "text": "Das Auge hat eine *Linse* und eine *Netzhaut*.",
  "hints": "Tipps..."
}
```

### Memory Game

```json
{
  "type": "memory",
  "pairs": [
    {
      "id": 1,
      "card1": "Begriff 1",
      "card2": "Zugehöriger Begriff"
    }
  ]
}
```

### Course Presentation

```json
{
  "type": "course-presentation",
  "slides": [
    {
      "id": 1,
      "title": "Folie 1",
      "content": "...",
      "backgroundColor": "#ffffff"
    }
  ]
}
```

## Technologie-Stack

- **FastAPI**: Web Framework
- **Anthropic Claude**: AI Content Generation
- **youtube-transcript-api**: YouTube Transkript-Analyse
- **PyPDF2**: PDF-Verarbeitung
- **Pillow + Tesseract**: OCR für Bilder
- **python-docx**: Word-Dokument Verarbeitung

## Entwicklung

### Tests ausführen

```bash
# Unit Tests (TODO)
pytest tests/

# Integration Tests (TODO)
pytest tests/integration/
```

### Service lokal starten

```bash
source venv/bin/activate
uvicorn app.main:app --reload --port 8004
```

API-Dokumentation: http://localhost:8004/docs

## Limitierungen

- **YouTube API**: Ohne API Key wird Fallback verwendet
- **OCR**: Erfordert Tesseract Installation
- **Anthropic API**: Kostenpflichtig (Claude API Key erforderlich)
- **Job Store**: In-Memory (TODO: Redis Backend)

## TODO

- [ ] Redis Backend für Job Store
- [ ] Celery für Background Tasks
- [ ] Rate Limiting
- [ ] Unit & Integration Tests
- [ ] API Authentication
- [ ] Webhook Notifications
- [ ] Batch Processing
- [ ] Content Quality Validation

## Support

Bei Fragen oder Problemen:
- GitHub Issues
- Dokumentation: `/docs/ai-content-generator/`
