Installation

Komplette Installationsanleitung für die AI Metatags TYPO3 Extension.

Systemvoraussetzungen

Mindestanforderungen

  • TYPO3: Version 13.0.0 – 13.99.99
  • PHP: Version 8.1 oder höher
  • OpenAI API: Gültiger API-Schlüssel erforderlich
  • Internet: Stabile Verbindung für API-Aufrufe

Empfohlene Umgebung

  • PHP: Version 8.2 oder höher
  • Memory Limit: Mindestens 256M
  • Max Execution Time: 60 Sekunden oder mehr
  • SSL/HTTPS: Für sichere API-Kommunikation

Installation

Option 1: Installation über Extension Manager

  1. Extension-Datei herunterladen
    • Laden Sie die Extension von TER (TYPO3 Extension Repository) herunter
    • Oder verwenden Sie die bereitgestellte .zip-Datei
  2. Im TYPO3 Backend installieren
    Admin Tools → Extensions → Upload Extension
    • Wählen Sie die .zip-Datei aus
    • Klicken Sie auf „Upload and Install“
  3. Extension aktivieren
    Admin Tools → Extensions → Installed Extensions
    • Suchen Sie „AI Metatags“
    • Klicken Sie auf „Activate“

Option 2: Manuelle Installation

# Extension in fileadmin/extensions/ entpacken
cd /path/to/your/typo3/project/fileadmin/extensions/
unzip ai-metatags.zip

# Oder in typo3conf/ext/ (für ältere TYPO3 Versionen)
cd /path/to/your/typo3/project/typo3conf/ext/
unzip ai-metatags.zip

Alternative: Installation über Composer

# In Ihr TYPO3 Root-Verzeichnis wechseln
cd /path/to/your/typo3/project

# Extension installieren
composer require itmichel/ai-metatags

# TYPO3 Cache leeren
./vendor/bin/typo3 cache:flush

Grundkonfiguration

1. OpenAI API-Schlüssel einrichten

API-Schlüssel generieren

  1. Besuchen Sie https://platform.openai.com/account/api-keys
  2. Melden Sie sich mit Ihrem OpenAI-Account an
  3. Klicken Sie auf „Create new secret key“
  4. Kopieren Sie den generierten API-Schlüssel

In TYPO3 konfigurieren

Admin Tools → Settings → Extension Configuration → ai_metatags

OpenAI API Einstellungen:

API Key: [Ihr OpenAI API-Schlüssel]
Model: gpt-4o (empfohlen)
Temperature: 0.5
Max Tokens: 1000
Top P: 1
Frequency Penalty: 0.8
Presence Penalty: 0

2. Grundlegende Extension-Konfiguration

Prompt-Einstellungen:

Firmenname: [Ihr Unternehmensname]
Firmenbeschreibung: [Kurze Beschreibung Ihres Unternehmens]
Zielgruppe: [Ihre Hauptzielgruppe]

Weitere Einstellungen:

Webseitenanalyse aktiviert: Ja (1)
Textlänge für Analyse: 200 Zeichen
Anzahl Vorschläge: 2

3. Cache leeren

Bei Composer-Installation:

# Backend Cache leeren
./vendor/bin/typo3 cache:flush

Bei manueller Installation oder Extension Manager:

Admin Tools → Maintenance → Flush Cache

Erweiterte Konfiguration

Custom Extensions integrieren

Für News Extension (EXT:news)

  1. TCA-Override erstellen:
    Configuration/TCA/Overrides/tx_news_domain_model_news.php
  2. Dateiinhalt:
    <?php
    $GLOBALS['TCA']['tx_news_domain_model_news']['columns']['teaser']['config'] = array_merge_recursive(
        $GLOBALS['TCA']['tx_news_domain_model_news']['columns']['teaser']['config'],
        [
            'fieldControl' => [
                'importControl' => [
                    'renderType' => 'aiMetaTitle'
                ]
            ]
        ]
    );
    
    $GLOBALS['TCA']['tx_news_domain_model_news']['columns']['keywords']['config'] = array_merge_recursive(
        $GLOBALS['TCA']['tx_news_domain_model_news']['columns']['keywords']['config'],
        [
            'fieldControl' => [
                'importControl' => [
                    'renderType' => 'aiMetaTitle'
                ]
            ]
        ]
    );
    
    $GLOBALS['TCA']['tx_news_domain_model_news']['columns']['alternative_title']['config'] = array_merge_recursive(
        $GLOBALS['TCA']['tx_news_domain_model_news']['columns']['alternative_title']['config'],
        [
            'fieldControl' => [
                'importControl' => [
                    'renderType' => 'aiMetaTitle'
                ]
            ]
        ]
    );
  3. Extension-URL konfigurieren:
    extensionUrl = 14|tx_news_domain_model_news|['tx_news_pi1'=>['controller' => 'News','action' => 'detail','news' => @id]]
  4. Kategorien-Support (optional):
    extensionUrlCat = tx_news_domain_model_news|\GeorgRinger\News\Domain\Repository\NewsRepository|categories|category

Für eigene Extensions

  1. TCA-Override Vorlage:
    <?php
    // Datei: Configuration/TCA/Overrides/tx_myext_domain_model_item.php
    
    $GLOBALS['TCA']['tx_myext_domain_model_item']['columns']['title']['config'] = array_merge_recursive(
        $GLOBALS['TCA']['tx_myext_domain_model_item']['columns']['title']['config'],
        [
            'fieldControl' => [
                'importControl' => [
                    'renderType' => 'aiMetaTitle'
                ]
            ]
        ]
    );
    
    $GLOBALS['TCA']['tx_myext_domain_model_item']['columns']['description']['config'] = array_merge_recursive(
        $GLOBALS['TCA']['tx_myext_domain_model_item']['columns']['description']['config'],
        [
            'fieldControl' => [
                'importControl' => [
                    'renderType' => 'aiMetaTitle'
                ]
            ]
        ]
    );
  2. Extension-URL konfigurieren:
    Format: UIDSingleSidePage|TabelName|URLBuilder
    
    Beispiel:
    extensionUrl = 42|tx_myext_domain_model_item|['tx_myext_pi1'=>['controller' => 'Item','action' => 'show','item' => @id]]

TypoScript einrichten (falls erforderlich)

# Seiten-Types für Webseitenanalyse (optional)
page.typeNum = 1237
page.1237 = PAGE
page.1237 {
    config {
        disableAllHeaderCode = 1
        additionalHeaders.10.header = Content-Type: text/plain; charset=utf-8
    }
    10 = CONTENT
    10 {
        table = tt_content
        select {
            orderBy = sorting
            where = deleted=0 AND hidden=0
        }
        renderObj = TEXT
        renderObj {
            field = bodytext
            stripHtml = 1
        }
    }
}

# Keywords-Type
page.1240 = PAGE
page.1240 {
    config {
        disableAllHeaderCode = 1
        additionalHeaders.10.header = Content-Type: text/plain; charset=utf-8
    }
    10 = TEXT
    10.value = {field:keywords}
    10.insertData = 1
}

Funktionstest

1. Basis-Funktionalität testen

  1. Seite bearbeiten:
    • Öffnen Sie eine Seite im TYPO3 Backend
    • Navigieren Sie zum „SEO“ Tab
    • Suchen Sie nach AI-Buttons bei den Metadaten-Feldern
  2. AI-Generierung testen:
    • Klicken Sie auf einen AI-Button
    • Warten Sie auf die Vorschläge (5-10 Sekunden)
    • Wählen Sie einen Vorschlag aus und übernehmen Sie ihn

2. Custom Extension testen

  1. News-Item bearbeiten (falls News Extension installiert):
    • Öffnen Sie einen News-Eintrag
    • Prüfen Sie ob AI-Buttons in den konfigurierten Feldern erscheinen
    • Testen Sie die Funktionalität

3. Debug-Informationen sammeln

Bei Problemen können Sie Debug-Informationen sammeln:

# In Configuration/AdditionalConfiguration.php temporär hinzufügen:
$GLOBALS['TYPO3_CONF_VARS']['BE']['debug'] = true;
$GLOBALS['TYPO3_CONF_VARS']['FE']['debug'] = true;

Troubleshooting

Häufige Probleme und Lösungen

Problem: AI-Buttons erscheinen nicht

Mögliche Ursachen:

  • Extension nicht aktiviert
  • Cache nicht geleert
  • TCA-Override fehlt (bei Custom Extensions)

Lösungsschritte:

Bei Composer-Installation:

# Cache komplett leeren
./vendor/bin/typo3 cache:flush

# Extension-Status prüfen
./vendor/bin/typo3 extension:list | grep ai_metatags

# Database-Schema aktualisieren
./vendor/bin/typo3 database:updateschema

Bei manueller Installation:

Admin Tools → Maintenance → Flush Cache
Admin Tools → Extensions → Installed Extensions (Extension-Status prüfen)

Problem: „Keine OpenAI API Key“ Fehlermeldung

Lösung:

  1. Prüfen Sie die Extension-Konfiguration
  2. Stellen Sie sicher, dass der API-Key korrekt eingegeben wurde
  3. Testen Sie den API-Key über OpenAI Website

Problem: Vorschläge zu kurz/lang oder irrelevant

Mögliche Anpassungen:

Max Tokens: Erhöhen auf 1500-2000
Temperature: Anpassen (0.3 für konservativere, 0.8 für kreativere Ergebnisse)
Firmenbeschreibung: Detaillierter ausfüllen

Problem: Custom Extension funktioniert nicht

Prüfpunkte:

  1. TCA-Override korrekt erstellt?
  2. Extension-URL richtig konfiguriert?
  3. Entsprechende Seite für Single View existiert?
  4. Repository-Klasse korrekt angegeben (bei Kategorien)?

Log-Dateien prüfen

# TYPO3 Logs prüfen
tail -f var/log/typo3_*.log

# Webserver-Logs prüfen
tail -f /var/log/apache2/error.log
# oder
tail -f /var/log/nginx/error.log

Performance-Optimierung

Empfohlene Einstellungen

Für bessere Performance:

Max Tokens: 500-800 (für kürzere Antwortzeiten)
Textlänge Analyse: 150-200 Zeichen
Anzahl Vorschläge: 2 (weniger API-Calls)

Cache-Konfiguration:

# Additional Configuration für besseres Caching
$GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['ai_metatags'] = [
    'backend' => \TYPO3\CMS\Core\Cache\Backend\FileBackend::class,
    'options' => [
        'defaultLifetime' => 3600,
    ],
];

Sicherheitshinweise

API-Schlüssel schützen

  1. Umgebungsvariablen verwenden:
    # In .env Datei:
    OPENAI_API_KEY=sk-your-secret-key-here
    
    # In AdditionalConfiguration.php:
    $GLOBALS['TYPO3_CONF_VARS']['EXTENSIONS']['itm_ai_metatags']['apiKeyOpenAi'] = getenv('OPENAI_API_KEY');
  2. Dateiberechtigungen prüfen:
    # Extension-Verzeichnis schützen
    chmod 755 public/typo3conf/ext/itm_ai_metatags/
    chmod 644 public/typo3conf/ext/itm_ai_metatags/Configuration/*

Netzwerksicherheit

# .htaccess Regel für zusätzliche Sicherheit
<Files "ext_conf_template.txt">
    Order Deny,Allow
    Deny from all
</Files>

Support und Updates

Updates

Bei Composer-Installation:

# Extension aktualisieren
composer update itmichel/ai-metatags

# Nach Updates immer Cache leeren
./vendor/bin/typo3 cache:flush
./vendor/bin/typo3 database:updateschema

Bei manueller Installation:

  • Neue Version herunterladen und entpacken
  • Über Extension Manager installieren
  • Cache über Backend leeren: Admin Tools → Maintenance → Flush Cache