Keyword Harvesting 2026: Google Ads Scripts & N-Gram Analyse für automatisierte Optimierung
N-Gram Analyse kombiniert mit Google Ads Scripts findet automatisch profitable Keywords und schließt unprofitable aus – ohne manuellen Suchbegriffsbericht. Dieser Prozess analysiert Wortfragmente über alle Suchanfragen hinweg und liefert aggregierte Metriken zu Kosten, Conversions und ROAS in unter 3 Minuten.
Einleitung
Die manuelle Analyse des Suchbegriffberichts kostet bei einem mittelgroßen Konto 4–6 Stunden pro Woche und produziert inkonsistente Ergebnisse. Hunderte Suchanfragen manuell durchzugehen übersieht systematisch Muster, die erst durch Aggregation sichtbar werden.
Keyword Harvesting mit N-Gram Analyse und Google Ads Scripts automatisiert diesen Prozess vollständig. Statt einzelne Suchanfragen zu prüfen, analysieren Sie systematisch Wortfragmente über alle Suchanfragen hinweg. Ein einziges Script liefert innerhalb von 3 Minuten, welche Begriffe konsistent gute oder schlechte Performance liefern – basierend auf aggregierten Metriken wie Kosten, Conversions und ROAS.
Dieser Artikel deckt 4 Kernbereiche ab: die grundlegende N-Gram Analyse, GAQL-kompatible Google Ads Scripts, BigQuery-Lösungen für große Konten und automatisierte Workflows, die profitable Keywords skalieren und unprofitable ausschließen. Datengrundlage: WordStream DACH-Benchmarks 2026 und Google Ads Branchenbenchmarks.
Was ist Keyword Harvesting?
Definition: Systematische Gewinnung neuer Keywords aus Suchanfragen
Keyword Harvesting bezeichnet die systematische Extraktion und Analyse von Suchanfragen, um daraus optimierte Keyword- und Negativlisten zu entwickeln. Der Begriff beschreibt treffend den Prozess: Google Ads Scripts sammeln kontinuierlich neue Suchanfragen, die Ihre Anzeigen auslösen, aggregieren deren Performance und liefern auswertbare Erkenntnisse.
Google Ads sammelt bei Broad Match und Phrase Match Keywords automatisch Suchanfragen, die mehr oder weniger relevant für Ihre Anzeigen sind. Einige dieser Suchanfragen erzielen ROAS-Werte von 3,5 oder mehr, andere vernichten Budget bei ROAS unter 0,5 (Quelle: Google Ads Branchenbenchmarks). Keyword Harvesting identifiziert systematisch beide Kategorien.
Im Gegensatz zur reinen Suchbegriffsbericht-Analyse, die einzelne Queries isoliert betrachtet, fokussiert sich Keyword Harvesting auf 3 Kernprozesse:
- Wortfragmente: Einzelne Wörter oder Wortkombinationen, die wiederholt in profitablen oder unprofitablen Suchanfragen auftreten
- Aggregierte Metriken: Statt 5 Klicks auf eine einzelne Suchanfrage bewertet Google Ads Scripts 500 Klicks auf alle Suchanfragen, die das Wortfragment „günstig" enthalten
- Automatisierte Aktionen: High-Performer landen automatisch als Exact Match oder Phrase Match Keywords, Low-Performer landen auf Negativlisten
Warum der manuelle Suchbegriffsbericht nicht ausreicht
Der klassische Suchbegriffsbericht in Google Ads besitzt 5 strukturelle Limitierungen, die systematische Optimierung verhindern.
1. Keine Aggregation über Suchanfragen hinweg Enthalten 20 verschiedene Suchanfragen das Wort „günstig" und hat jede einzelne nur 2–3 Klicks, zeigt der Suchbegriffsbericht 20 separate Zeilen mit geringer statistischer Signifikanz. Das Wortfragment „günstig" verursacht insgesamt 50 Klicks bei 0 % Conversion-Rate – dieses Muster bleibt im manuellen Report unsichtbar.
2. Zeitaufwand skaliert nicht Ein Konto mit 10 Kampagnen und 1.000 Suchanfragen pro Monat ist noch manuell analysierbar. Bei 50 Kampagnen und 10.000+ Suchanfragen pro Monat wird die manuelle Analyse zur Vollzeitbeschäftigung – ohne proportionalen Mehrwert.
3. Subjektive Bewertung und Inkonsistenz Manuelle Entscheidungen führen zu inkonsistenten Optimierungen – verschiedene Personen treffen unterschiedliche Entscheidungen bei identischen Daten. Google Ads Scripts wenden dieselben Schwellenwerte auf jede Suchanfrage an und eliminieren Subjektivität vollständig.
4. Langsame Reaktionszeit Eine wöchentliche oder monatliche manuelle Prüfung des Suchbegriffberichts verschwendet zwischen den Audits Budget für erkennbar schlechte Suchanfragen – bei einem 20.000 EUR/Monat Konto können das 1.000–3.000 EUR pro Monat sein.
5. Muster bleiben unsichtbar Ohne systematische N-Gram Analyse übersieht die manuelle Auswertung strukturelle Muster: Alle Suchanfragen mit „Standortname" performen schlecht, alle Queries mit „Vergleich" erzielen überdurchschnittliche Conversion-Rates. N-Gram Analyse macht diese 2 Mustertypen in einer einzigen Analyse sichtbar.
Das Ziel: Profitable Keywords skalieren, unprofitable ausschließen
Keyword Harvesting durchläuft 4 Phasen in einem kontinuierlichen Optimierungszyklus.
Phase 1: Entdeckung Broad Match und Phrase Match Keywords lösen eine breite Palette von Suchanfragen aus. Google Ads sammelt Daten darüber, was Nutzer tatsächlich suchen – dieser Prozess erzeugt die Rohdaten für alle weiteren Phasen.
Phase 2: Analyse N-Gram Analyse und Google Ads Scripts identifizieren Muster in den Suchanfragen: Wortfragmente mit überdurchschnittlichem ROAS signalisieren Skalierungspotenzial, Wortfragmente mit ROAS unter 0,5 signalisieren Budget-Vernichtung.
Phase 3: Aktion High-Performer werden als Exact Match oder Phrase Match Keywords hinzugefügt – mehr Kontrolle, höhere Gebote. Low-Performer landen als negative Keywords auf thematischen Negativlisten – Budget wird umgeleitet.
Phase 4: Iteration Neue Suchanfragen generieren neue Daten, Google Ads Scripts analysieren automatisch, und das Konto wird laufend präziser. Das Keyword-Portfolio steigert seinen ROAS im Schnitt nach 90 Tagen systematischen Harvestings um 20–40 % (Quelle: WordStream DACH-Benchmarks 2026).
N-Gram Analyse: Die Geheimwaffe der PPC-Profis
Was sind N-Grams? (1-Gram, 2-Gram, 3-Gram erklärt)
N-Grams sind zusammenhängende Sequenzen von N Wörtern aus einem Text. Im Kontext von Google Ads zerlegen Google Ads Scripts Suchanfragen in ihre Bestandteile und analysieren diese Fragmente separat.
1-Gram (Unigram): Einzelne Wörter Suchanfrage: „günstige nike schuhe kaufen" 1-Grams: „günstige", „nike", „schuhe", „kaufen"
2-Gram (Bigram): Wortkombinationen aus 2 Wörtern 2-Grams: „günstige nike", „nike schuhe", „schuhe kaufen"
3-Gram (Trigram): Wortkombinationen aus 3 Wörtern 3-Grams: „günstige nike schuhe", „nike schuhe kaufen"
Der entscheidende Vorteil: Statt einzelne Suchanfragen isoliert zu bewerten, aggregieren N-Grams Metriken über alle Suchanfragen hinweg, die ein bestimmtes Wortfragment enthalten.
Beispiel aus der Praxis:
1.000 Suchanfragen im Bericht – davon enthalten 150 das Wort „günstig" als 1-Gram: „günstige schuhe", „schuhe günstig online", „wo kann man günstig schuhe kaufen", „günstig nike schuhe bestellen" und 146 weitere.
Manuelle Analyse: 150 Suchanfragen einzeln durchgehen und subjektiv bewerten.
N-Gram Analyse durch Google Ads Scripts – automatisch aggregiert:
- Wortfragment: „günstig"
- Klicks: 450
- Kosten: 890 EUR
- Conversions: 3
- CPA: 296,67 EUR
- Durchschnittlicher Konto-CPA: 45 EUR
Ergebnis: Das 1-Gram „günstig" erzielt einen 6,6-fach höheren CPA als der Kontodurchschnitt – klare Handlungsempfehlung: Als negatives Keyword ausschließen.
Wie N-Gram Analyse Muster in Suchanfragen aufdeckt
N-Gram Analyse funktioniert durch statistische Aggregation. Statt auf einzelne Datenpunkte mit niedriger Signifikanz zu schauen, kombiniert sie Hunderte oder Tausende von Impressionen, Klicks und Conversions für jedes Wortfragment.
4 Gründe, warum N-Gram Analyse funktioniert:
-
Statistische Signifikanz: Eine einzelne Suchanfrage mit 3 Klicks und 0 Conversions liefert keine belastbaren Daten. Ein 1-Gram mit 300 Klicks und 2 Conversions besitzt 100-fach höhere Aussagekraft.
-
Mustererkennung über Variationen: Nutzer formulieren dieselbe Suchintention unterschiedlich – „günstige nike schuhe", „nike schuhe günstig", „wo nike schuhe günstig kaufen" enthalten alle das 1-Gram „günstig". N-Gram Analyse erkennt dieses Muster über alle 3 Formulierungen hinweg.
-
Kontext durch mehrteilige N-Grams: Während 1-Grams einzelne Wörter isolieren, zeigen 2-Grams und 3-Grams Kontext – das 1-Gram „gebraucht" ist bei Neuware-Verkäufern negativ, das 2-Gram „wie gebraucht" ist eine Zustandsbeschreibung, das 3-Gram „sieht wie gebraucht aus" ist eine Beschwerde.
-
Vergleichbarkeit: N-Gram Scores wie CPA pro N-Gram versus Kontodurchschnitt machen Performance objektiv und reproduzierbar vergleichbar.
Beispiel: „günstig" als Wortfragment mit niedrigem ROAS identifizieren
N-Gram Analyse deckt in einem E-Commerce-Konto mit 1.500 EUR Tagesbudget innerhalb von 30 Tagen Verluste auf, die im manuellen Suchbegriffsbericht unsichtbar bleiben.
Ausgangssituation ohne N-Gram Analyse: Der Werbetreibende nutzt Broad Match Keywords wie „schuhe kaufen" und „sportschuhe online". Im Suchbegriffsbericht erscheinen täglich Dutzende Suchanfragen mit dem Wort „günstig", jede mit 1–5 Klicks. Manuelle Negatives werden inkonsistent hinzugefügt.
N-Gram Analyse über 30 Tage:
| N-Gram | Klicks | Kosten | Conversions | Conv.-Wert | CPA | ROAS |
|---|---|---|---|---|---|---|
| günstig | 1.247 | 2.890 EUR | 18 | 1.260 EUR | 160,56 EUR | 0,44 |
| billig | 892 | 2.103 EUR | 12 | 840 EUR | 175,25 EUR | 0,40 |
| hochwertig | 423 | 1.105 EUR | 35 | 3.150 EUR | 31,57 EUR | 2,85 |
| marken | 678 | 1.456 EUR | 52 | 4.680 EUR | 28,00 EUR | 3,21 |
Kontodurchschnitt: CPA 42 EUR, ROAS 2,1
3 Erkenntnisse:
- „günstig" und „billig" erzielen einen 4-fach überdurchschnittlichen CPA und destruktive ROAS-Werte von 0,44 und 0,40 statt 2,1
- „hochwertig" und „marken" übertreffen den Durchschnitt um 33 % bzw. 53 % beim ROAS
- Die schlechten 1-Grams verursachen zusammen 4.993 EUR Kosten bei nur 2.100 EUR Umsatz = 2.893 EUR Verlust in 30 Tagen
Handlung: „Günstig" und „billig" werden als negative Keywords auf Kampagnen-Ebene hinzugefügt. Neue Exact Match Keywords mit „hochwertig" und „marken" werden erstellt.
Ergebnis nach 30 Tagen:
- Budget-Umverteilung: 5.000 EUR eingesparte Kosten fließen in profitable Keywords
- ROAS steigt von 2,1 auf 2,8
- Monatlicher Profit steigt um 8.500 EUR (2.893 EUR direkt eingespart + 5.607 EUR durch bessere Budget-Allokation)
Metriken pro N-Gram: Klicks, Kosten, Conversions, CPA
Ein vollständiger N-Gram Report in Google Sheets enthält für jedes Wortfragment 4 Metrik-Gruppen.
Basis-Metriken:
- N-Gram: Das Wortfragment selbst – z. B. „günstig", „nike schuhe", „günstig kaufen"
- Anzahl Suchanfragen: Anzahl verschiedener Suchanfragen, die dieses N-Gram enthalten
- Impressionen: Gesamtzahl der Impressionen über alle Suchanfragen mit diesem N-Gram
- Klicks: Gesamtzahl der Klicks
- Kosten: Gesamtkosten in EUR
Conversion-Metriken:
- Conversions: Gesamtzahl der Conversions
- Conversion-Wert: Gesamtwert aller Conversions in EUR
- CPA (Cost per Acquisition): Kosten dividiert durch Conversions
- ROAS (Return on Ad Spend): Conversion-Wert dividiert durch Kosten
Vergleichsmetriken:
- CPA vs. Kontodurchschnitt: z. B. „+320 %" bedeutet 4,2-fach höher als Durchschnitt
- ROAS vs. Kontodurchschnitt: z. B. „-79 %" bedeutet ROAS ist 79 % niedriger
- CTR (Click-Through-Rate): Klicks dividiert durch Impressionen
- Conversion-Rate: Conversions dividiert durch Klicks
Erweiterte Metriken (optional):
- Durchschnittlicher CPC: Kosten dividiert durch Klicks
- Anteil an Gesamt-Kosten: z. B. 12 % bedeutet dieses N-Gram verursacht 12 % aller Kosten
- Trend: Vergleich aktueller Zeitraum versus vorheriger Zeitraum
Die Kombination dieser Metriken ermöglicht 3 klare Klassifikationen:
- High-Performer: CPA deutlich unter Durchschnitt + hohe Conversion-Rate + mindestens 20 Klicks
- Low-Performer: CPA deutlich über Durchschnitt + niedrige Conversion-Rate + hohe Kosten
- Neutral/unentschieden: Metriken nahe am Durchschnitt oder unter 20 Klicks Datenbasis
Google Ads Scripts sortieren automatisch nach größter Abweichung vom Durchschnitt – die extremsten Ausreißer in beide Richtungen erscheinen sofort an erster Stelle.
Google Ads Scripts für Keyword Harvesting
Das ultimative N-Gram Script (GAQL-kompatibel 2026)
Google Ads Scripts sind JavaScript-basierte Automatisierungen, die direkt in Google Ads laufen und komplexe N-Gram Analysen in unter 3 Minuten abschließen. Sie greifen auf dieselben Daten zu wie die Benutzeroberfläche und schreiben Ergebnisse automatisch in Google Sheets.
Für Keyword Harvesting mit N-Gram Analyse führt das Script 6 Schritte aus:
- Suchanfragen extrahieren: Alle Suchanfragen aus einem definierten Zeitraum, z. B. letzte 30 Tage
- N-Grams generieren: Jede Suchanfrage in 1-Grams, 2-Grams und 3-Grams zerlegen
- Metriken aggregieren: Klicks, Kosten, Conversions pro N-Gram summieren
- Schwellenwerte anwenden: Nur N-Grams mit mindestens 10 Klicks berücksichtigen
- Performance bewerten: CPA und ROAS pro N-Gram versus Kontodurchschnitt berechnen
- Exportieren: Ergebnisse in Google Sheets schreiben
Wichtig für 2026: Das Script nutzt ausschließlich GAQL (Google Ads Query Language). Google hat AWQL seit 2024 deprecated und stellt den Support 2026 vollständig ein.
Basis-Struktur eines GAQL-kompatiblen N-Gram Scripts:
function main() {
const CONFIG = {
dateRange: 'LAST_30_DAYS',
minClicks: 10,
campaignFilter: '', // Leer = alle Kampagnen
spreadsheetUrl: 'IHR_SPREADSHEET_URL',
sheetName: 'NGram Analysis'
};
// 1. Suchanfragen abrufen via GAQL
const queries = getSearchQueries(CONFIG);
// 2. N-Grams generieren
const nGrams = generateNGrams(queries);
// 3. Performance berechnen
const nGramStats = calculatePerformance(nGrams);
// 4. In Google Sheets exportieren
exportToSheet(nGramStats, CONFIG);
Logger.log('N-Gram Analyse abgeschlossen. ' +
Object.keys(nGramStats).length + ' N-Grams analysiert.');
}
function getSearchQueries(config) {
const query = `
SELECT
search_term_view.search_term,
metrics.clicks,
metrics.cost_micros,
metrics.conversions,
metrics.conversions_value
FROM search_term_view
WHERE segments.date DURING ${config.dateRange}
AND metrics.clicks >= ${config.minClicks}
ORDER BY metrics.cost_micros DESC
`;
const report = AdsApp.search(query);
const results = [];
while (report.hasNext()) {
const row = report.next();
results.push({
searchTerm: row.searchTermView.searchTerm,
clicks: row.metrics.clicks,
cost: row.metrics.costMicros / 1000000,
conversions: row.metrics.conversions,
conversionValue: row.metrics.conversionsValue
});
}
return results;
}
function generateNGrams(queries) {
const nGrams = {};
queries.forEach(query => {
const words = query.searchTerm.toLowerCase().split(' ');
// 1-Grams
words.forEach(word => {
addToNGram(nGrams, word, query);
});
// 2-Grams
for (let i = 0; i < words.length - 1; i++) {
const bigram = words[i] + ' ' + words[i + 1];
addToNGram(nGrams, bigram, query);
}
// 3-Grams
for (let i = 0; i < words.length - 2; i++) {
const trigram = words[i] + ' ' + words[i + 1] + ' ' + words[i + 2];
addToNGram(nGrams, trigram, query);
}
});
return nGrams;
}
function addToNGram(nGrams, nGram, query) {
if (!nGrams[nGram]) {
nGrams[nGram] = {
clicks: 0,
cost: 0,
conversions: 0,
conversionValue: 0,
queryCount: 0
};
}
nGrams[nGram].clicks += query.clicks;
nGrams[nGram].cost += query.cost;
nGrams[nGram].conversions += query.conversions;
nGrams[nGram].conversionValue += query.conversionValue;
nGrams[nGram].queryCount += 1;
}
Dieses Grundgerüst bildet die Basis für alle N-Gram Scripts. Die folgenden Abschnitte zeigen Installation, Konfiguration und Erweiterung.
Schritt-für-Schritt Installation im Google Ads Konto
Google Ads Scripts installiert ein funktionsfähiges N-Gram Script in 6 Schritten – der gesamte Prozess dauert 30–60 Minuten.
Schritt 1: Google Ads Scripts öffnen
- Melden Sie sich in Google Ads an
- Klicken Sie im linken Menü auf Tools und Einstellungen (Schraubenschlüssel-Icon)
- Unter Bulk-Aktionen wählen Sie Scripts
- Klicken Sie auf das + Symbol, um ein neues Script zu erstellen
Schritt 2: Script-Code einfügen
- Löschen Sie den Beispiel-Code im Editor
- Fügen Sie den vollständigen N-Gram Script-Code ein
- Vergeben Sie den Namen „N-Gram Analysis - Keyword Harvesting"
Schritt 3: Google Sheets vorbereiten
- Erstellen Sie ein neues Google Sheet
- Benennen Sie das erste Tabellenblatt „NGram Analysis"
- Kopieren Sie die URL des Spreadsheets
- Fügen Sie die URL in die Zeile
spreadsheetUrl: 'IHR_SPREADSHEET_URL'ein
Schritt 4: Berechtigungen autorisieren
- Klicken Sie auf Vorschau (Preview) im Script-Editor
- Google Ads fordert Zugriff auf Ihr Konto und Google Sheets an
- Klicken Sie auf Autorisieren (Authorize)
- Wählen Sie Ihr Google-Konto und bestätigen Sie die Berechtigungen
Schritt 5: Test-Durchlauf
- Klicken Sie auf Ausführen (Run)
- Das Script schließt bei großen Konten in 1–3 Minuten ab
- Prüfen Sie das Log: „N-Gram Analyse abgeschlossen. X N-Grams analysiert." bestätigt Erfolg
- Öffnen Sie Google Sheets: Zeilen mit N-Grams und Metriken bestätigen korrekten Export
Schritt 6: Zeitplan einrichten
- Klicken Sie auf das Uhr-Symbol (Schedule) im Script-Editor
- Wählen Sie Wöchentlich, Montag, 08:00 Uhr
- Klicken Sie auf Speichern
4 häufige Installationsfehler:
- „Unauthorized API call": Autorisierung abgebrochen – wiederholen Sie Schritt 4
- „Spreadsheet not found": URL im Script ist falsch oder fehlende Sheet-Berechtigung
- „Script timeout": Bei Konten mit mehr als 100.000 Suchanfragen – Lösung:
LAST_7_DAYSstattLAST_30_DAYS - „GAQL syntax error": Tippfehler in der Query oder veraltete AWQL-Syntax verwendet
Wichtig: GAQL statt AWQL (Migration 2025/2026)
Google stellt AWQL (AdWords Query Language) 2026 vollständig ein – alle Google Ads Scripts benötigen GAQL (Google Ads Query Language), das 2019 als Nachfolger eingeführt wurde.
4 Vorteile von GAQL gegenüber AWQL:
- Konsistenz: GAQL verwendet dieselbe Syntax wie die Google Ads API v15+ und Reporting-Tools wie Looker Studio
- Performance: GAQL-Queries verarbeiten große Datenmengen schneller, besonders bei Konten mit mehr als 50.000 Suchanfragen pro Monat
- Features: Nur GAQL unterstützt neue Metriken – z. B. Performance Max-spezifische Felder
- Zukunftssicherheit: Alle neuen Features werden ausschließlich in GAQL implementiert
Syntax-Unterschiede (entscheidend bei der Migration alter Scripts):
AWQL (veraltet):
var report = AdsApp.report(
'SELECT Query, Clicks, Cost, Conversions ' +
'FROM SEARCH_QUERY_PERFORMANCE_REPORT ' +
'WHERE Clicks > 5 ' +
'DURING LAST_30_DAYS'
);
GAQL (modern):
const query = `
SELECT
search_term_view.search_term,
metrics.clicks,
metrics.cost_micros,
metrics.conversions
FROM search_term_view
WHERE metrics.clicks > 5
AND segments.date DURING LAST_30_DAYS
`;
const report = AdsApp.search(query);
6 kritische Unterschiede bei der Migration:
- Methode:
AdsApp.report()→AdsApp.search() - FROM: Report-Namen wie
SEARCH_QUERY_PERFORMANCE_REPORT→ View-Namen wiesearch_term_view - Felder: CamelCase wie
Cost→ dot.notation wiemetrics.cost_micros - Währung: Kosten in Währung → Kosten in Micros (durch 1.000.000 dividieren)
- WHERE: Direkt nach FROM → mit
segments.datePräfix versehen - DURING: Direkt in WHERE → benötigt
segments.dateals Präfix
Migration-Checkliste für alte Scripts:
-
AdsApp.report()durchAdsApp.search()ersetzen - Report-Namen durch View-Namen ersetzen – z. B.
SEARCH_QUERY_PERFORMANCE_REPORT→search_term_view - Alle Feldnamen auf dot.notation umstellen (Dokumentation: Google Ads API Field Reference)
-
metrics.cost_microsdurch 1.000.000 dividieren, um EUR zu erhalten -
segments.datebei allen Datums-Filtern hinzufügen - Script im Vorschau-Modus testen und Log prüfen
Konfiguration: Zeiträume, Mindestklicks, Kampagnen-Filter
Ein professionelles N-Gram Script besitzt 5 konfigurierbare Parameter, die es an verschiedene Kontogrößen und Analysen anpassen.
1. Zeitraum (dateRange)
const CONFIG = {
dateRange: 'LAST_30_DAYS', // oder 'LAST_7_DAYS', 'LAST_90_DAYS', 'THIS_MONTH', etc.
};
3 Empfehlungen nach Kontogröße:
- Kleine Konten (unter 5.000 EUR/Monat):
LAST_60_DAYSoderLAST_90_DAYSfür ausreichend Datenmenge - Mittlere Konten (5.000–50.000 EUR/Monat):
LAST_30_DAYSfür Balance zwischen Aktualität und Signifikanz - Große Konten (über 50.000 EUR/Monat):
LAST_7_DAYSoderLAST_14_DAYSfür schnelle Reaktion auf Trends
2. Mindestklicks (minClicks)
const CONFIG = {
minClicks: 10, // N-Grams mit weniger Klicks werden ignoriert
};
Hintergrund: N-Grams mit 1–2 Klicks liefern keine statistische Signifikanz. Der Schwellenwert verhindert False Positives durch zufällige Ausreißer.
3 Schwellenwert-Optionen:
- Konservativ:
minClicks: 20– nur sehr signifikante N-Grams - Standard:
minClicks: 10– Balance zwischen Signifikanz und Abdeckung - Aggressiv:
minClicks: 5– mehr Kandidaten, höheres Rauschen, erfordert manuelles Review
3. Kampagnen-Filter (campaignFilter)
const CONFIG = {
campaignFilter: "campaign.name LIKE '%Brand%'", // Nur Brand-Kampagnen analysieren
};
4 Anwendungsfälle:
- Nur Brand-Kampagnen:
"campaign.name LIKE '%Brand%'" - Nur Non-Brand:
"campaign.name NOT LIKE '%Brand%'" - Bestimmte Kampagne:
"campaign.name = 'Shopping - High ROAS'" - Alle Kampagnen: Leer lassen
Brand- und Non-Brand-Keywords besitzen komplett unterschiedliche Performance-Profile – Brand-Suchanfragen erzielen laut Google Ads Branchenbenchmarks 3–5-fach niedrigere CPAs als Non-Brand. Analysieren Sie beide getrennt, um Verzerrungen zu vermeiden.
4. Conversion-Aktionen (conversionActions)
const CONFIG = {
conversionActions: ['Purchase', 'Lead'], // Nur bestimmte Conversions zählen
};
Konten mit mehreren Conversion-Aktionen – z. B. „Newsletter-Anmeldung", „Kauf", „Kontaktanfrage" – filtern hier auf die wertrelevanten Aktionen. Standard: alle Conversions.
5. Export-Einstellungen
const CONFIG = {
spreadsheetUrl: 'https://docs.google.com/spreadsheets/d/...',
sheetName: 'NGram Analysis',
sortBy: 'costDiff', // Sortierung: 'cost', 'cpa', 'roas', 'costDiff'
topN: 500 // Nur Top 500 N-Grams exportieren
};
Best Practice: Richten Sie 3 Script-Versionen parallel ein:
- „N-Gram Analysis - Brand":
dateRange: 'LAST_30_DAYS',campaignFilter: '%Brand%' - „N-Gram Analysis - Non-Brand":
dateRange: 'LAST_30_DAYS',campaignFilter: 'NOT LIKE %Brand%' - „N-Gram Analysis - Last 7 Days":
dateRange: 'LAST_7_DAYS'für wöchentliche Schnellchecks
Google Sheets Integration für automatische Reports
Google Sheets Integration automatisiert den Export von N-Gram-Daten in ein strukturiertes Dashboard, das wöchentliche Reviews auf 15–30 Minuten komprimiert.
Basis-Export-Funktion:
function exportToSheet(nGramStats, config) {
const spreadsheet = SpreadsheetApp.openByUrl(config.spreadsheetUrl);
let sheet = spreadsheet.getSheetByName(config.sheetName);
// Sheet erstellen, falls nicht vorhanden
if (!sheet) {
sheet = spreadsheet.insertSheet(config.sheetName);
}
// Alte Daten löschen
sheet.clear();
// Header schreiben
const headers = [
'N-Gram',
'Type',
'Queries',
'Clicks',
'Cost',
'Conversions',
'Conv. Value',
'CPA',
'ROAS',
'CPA vs Avg',
'ROAS vs Avg',
'Recommendation'
];
sheet.getRange(1, 1, 1, headers.length).setValues([headers]);
// Daten vorbereiten
const rows = [];
const accountAvg = calculateAccountAverage(nGramStats);
for (const [nGram, stats] of Object.entries(nGramStats)) {
if (stats.clicks < config.minClicks) continue;
const cpa = stats.conversions > 0 ? stats.cost / stats.conversions : 0;
const roas = stats.cost > 0 ? stats.conversionValue / stats.cost : 0;
const cpaDiff = accountAvg.cpa > 0 ? (cpa - accountAvg.cpa) / accountAvg.cpa : 0;
const roasDiff = accountAvg.roas > 0 ? (roas - accountAvg.roas) / accountAvg.roas : 0;
let recommendation = 'Neutral';
if (cpaDiff < -0.3 && roas > accountAvg.roas * 1.2) {
recommendation = 'Add as Keyword';
} else if (cpaDiff > 0.5 || roas < accountAvg.roas * 0.5) {
recommendation = 'Add as Negative';
}
rows.push([
nGram,
nGram.split(' ').length + '-Gram',
stats.queryCount,
stats.clicks,
stats.cost.toFixed(2),
stats.conversions,
stats.conversionValue.toFixed(2),
cpa > 0 ? cpa.toFixed(2) : 'N/A',
roas > 0 ? roas.toFixed(2) : 'N/A',
(cpaDiff * 100).toFixed(0) + '%',
(roasDiff * 100).toFixed(0) + '%',
recommendation
]);
}
// Nach Kosten-Abweichung sortieren (größte Ausreißer zuerst)
rows.sort((a, b) => {
const aCost = parseFloat(a[4]);
const bCost = parseFloat(b[4]);
return bCost - aCost;
});
// Daten schreiben
if (rows.length > 0) {
sheet.getRange(2, 1, rows.length, headers.length).setValues(rows);
}
// Formatierung
sheet.getRange(1, 1, 1, headers.length).setFontWeight('bold').setBackground('#4285F4').setFontColor('#FFFFFF');
sheet.setFrozenRows(1);
sheet.autoResizeColumns(1, headers.length);
// Bedingte Formatierung für Recommendations
const recommendationCol = headers.indexOf('Recommendation') + 1;
const dataRange = sheet.getRange(2, recommendationCol, rows.length, 1);
// Grün für "Add as Keyword"
const ruleGreen = SpreadsheetApp.newConditionalFormatRule()
.whenTextEqualTo('Add as Keyword')
.setBackground('#D9EAD3')
.setRanges([dataRange])
.build();
// Rot für "Add as Negative"
const ruleRed = SpreadsheetApp.newConditionalFormatRule()
.whenTextEqualTo('Add as Negative')
.setBackground('#F4CCCC')
.setRanges([dataRange])
.build();
sheet.setConditionalFormatRules([ruleGreen, ruleRed]);
Logger.log('Export abgeschlossen: ' + rows.length + ' Zeilen geschrieben.');
}
5 erweiterte Features für Google Sheets:
1. Separate Tabellenblätter für verschiedene N-Gram-Typen
exportToSheet(oneGrams, config, '1-Grams');
exportToSheet(twoGrams, config, '2-Grams');
exportToSheet(threeGrams, config, '3-Grams');
2. Zeitvergleich (aktueller Monat vs. Vormonat)
Google Ads Scripts führt das Script zweimal mit verschiedenen dateRange-Parametern aus und ergänzt eine „Trend"-Spalte für Veränderungen.
3. Pivot-Tabellen automatisch erstellen
function createPivotTable(sheet) {
const pivotTable = sheet.insertSheet('Pivot - Top N-Grams');
// Pivot-Logik hier (komplexer, siehe Google Sheets API Doku)
}
4. Charts automatisch generieren
function createChart(sheet) {
const chart = sheet.newChart()
.setChartType(Charts.ChartType.BAR)
.addRange(sheet.getRange('A2:A21'))
.addRange(sheet.getRange('E2:E21'))
.setPosition(1, 13, 0, 0)
.setOption('title', 'Top 20 N-Grams nach Kosten')
.build();
sheet.insertChart(chart);
}
5. E-Mail-Benachrichtigung bei kritischen N-Grams
function sendAlertEmail(criticalNGrams) {
const recipient = 'ihr-email@beispiel.de';
const subject = 'WARNUNG: Kritische N-Grams mit hohen Kosten';
let body = 'Die folgenden N-Grams verursachen hohe Kosten bei schlechter Performance:\n\n';
criticalNGrams.forEach(nGram => {
body += `- "${nGram.term}": ${nGram.cost.toFixed(2)} EUR Kosten, CPA ${nGram.cpa.toFixed(2)} EUR (${nGram.cpaDiff}% über Durchschnitt)\n`;
});
body += '\nBitte prüfen Sie, ob diese als negative Keywords hinzugefügt werden sollten.';
MailApp.sendEmail(recipient, subject, body);
}
Best Practice Workflow – 4 Zeitpunkte:
- Montag 08:00 Uhr: Google Ads Scripts läuft automatisch, analysiert letzte 30 Tage
- 08:05 Uhr: Google Sheet aktualisiert, E-Mail-Alert bei kritischen N-Grams
- Montag 9:00–10:00 Uhr: Account Manager prüft Sheet, markiert N-Grams für Aktion
- Freitag: Wöchentliche Bulk-Aktion – markierte N-Grams als Keywords oder Negatives hinzufügen
Google Ads Scripts übernimmt die Analyse, der Account Manager trifft die finalen Entscheidungen – diese Kombination reduziert den Zeitaufwand für Keyword Harvesting auf 15–30 Minuten pro Woche.
Datenanalyse: Gewinner und Verlierer identifizieren
High-Performer: Keywords mit überdurchschnittlichem ROAS/CPA
High-Performer sind N-Grams, die signifikant besser performen als der Kontodurchschnitt und als Exact Match oder Phrase Match Keywords hinzugefügt werden. Diese Wortfragmente verdienen höhere Gebote und dedizierte Ad Groups.
5 Kriterien für High-Performer:
- CPA mindestens 30 % unter Durchschnitt: Conversions kosten messbar weniger
- ROAS mindestens 20 % über Durchschnitt: Profitabilität übersteigt den Benchmark
- Mindestens 20 Klicks: Statistische Signifikanz ist gewährleistet
- Conversion-Rate über Durchschnitt: Relevanz ist bestätigt
- Mindestens 1 % der Gesamtkosten: Optimierungshebel ist groß genug
Beispiele aus der Praxis:
E-Commerce (Sportschuhe):
| N-Gram | Klicks | Kosten | Conv. | CPA | CPA vs Avg | ROAS | ROAS vs Avg | Empfehlung |
|---|---|---|---|---|---|---|---|---|
| „laufschuhe herren" | 890 | 1.245 EUR | 78 | 15,96 EUR | -62% | 3,8 | +81% | Add Exact Match |
| „nike pegasus" | 456 | 823 EUR | 52 | 15,83 EUR | -62% | 4,1 | +95% | Add Exact Match |
| „trail" | 234 | 412 EUR | 28 | 14,71 EUR | -65% | 3,2 | +52% | Add Phrase Match |
| „größe 44" | 189 | 298 EUR | 31 | 9,61 EUR | -77% | 5,6 | +167% | Add Phrase Match |
B2B (Software-Lösungen):
| N-Gram | Klicks | Kosten | Conv. | CPA | CPA vs Avg | ROAS | ROAS vs Avg | Empfehlung |
|---|---|---|---|---|---|---|---|---|
| „demo buchen" | 123 | 567 EUR | 18 | 31,50 EUR | -48% | — | — | Add Exact Match |
| „unverbindlich" | 98 | 412 EUR | 14 | 29,43 EUR | -51% | — | — | Add Phrase Match |
| „vergleich" | 234 | 892 EUR | 28 | 31,86 EUR | -47% | — | — | Add Phrase Match |
5 Handlungsschritte für High-Performer:
1. Als Exact Match Keyword hinzufügen Exact Match bietet maximale Kontrolle über Gebote und Anzeigentext. Empfohlen für stark performende 2-Grams und 3-Grams – z. B. „nike pegasus 40".
2. Als Phrase Match Keyword hinzufügen Phrase Match balanciert Kontrolle und Reichweite. Empfohlen für 1-Grams und generische 2-Grams – z. B. „trail", „größe 44".
3. Dedicated Ad Group erstellen High-Performer mit mehr als 500 Klicks pro Monat erhalten eigene Ad Groups mit spezifischem Anzeigentext – z. B. Ad Group „Nike Pegasus" mit Anzeigen zum Modell.
4. Gebote erhöhen Existiert das N-Gram bereits als Keyword, steigt das Gebot um 20–30 %. Bei aktivem Smart Bidding: Target ROAS senken oder Target CPA erhöhen für aggressivere Gebote.
5. Landing Page optimieren High-Performer erhalten dedizierte Landing Pages – z. B. Kategorie-Seite „Laufschuhe Herren" statt generische Homepage. Dedizierte Landing Pages steigern die Conversion-Rate laut Google Ads Branchenbenchmarks um 25–40 %.
Automatisierung mit Google Ads Scripts:
function addHighPerformersAsKeywords(highPerformers) {
highPerformers.forEach(nGram => {
if (nGram.words.length === 1) {
// 1-Gram als Phrase Match
addKeywordToAdGroup(nGram.term, 'PHRASE', nGram.suggestedBid);
} else {
// 2-Gram/3-Gram als Exact Match
addKeywordToAdGroup(nGram.term, 'EXACT', nGram.suggestedBid);
}
});
}
Low-Performer: Wortfragmente zum Ausschließen
Low-Performer sind N-Grams, die überproportional Budget vernichten ohne angemessene Conversions zu liefern, und als negative Keywords auf thematischen Negativlisten ausgeschlossen werden.
5 Kriterien für Low-Performer:
- CPA mindestens 50 % über Durchschnitt: Conversions sind deutlich teurer als der Benchmark
- ROAS mindestens 50 % unter Durchschnitt: Oder 0 Conversions bei signifikanten Kosten
- Mindestens 10 Klicks: Ausreichend Datenbasis für Bewertung
- Mindestens 0,5 % der Gesamtkosten: Ausschließen lohnt sich finanziell
- Conversion-Rate unter 50 % des Kontodurchschnitts: Relevanz ist nicht gegeben
Beispiele aus der Praxis:
E-Commerce (Sportschuhe):
| N-Gram | Klicks | Kosten | Conv. | CPA | CPA vs Avg | ROAS | ROAS vs Avg | Empfehlung |
|---|---|---|---|---|---|---|---|---|
| „günstig" | 1.247 | 2.890 EUR | 18 | 160,56 EUR | +284% | 0,44 | -79% | Negative Exact |
| „billig" | 892 | 2.103 EUR | 12 | 175,25 EUR | +319% | 0,40 | -81% | Negative Exact |
| „gebraucht" | 567 | 1.234 EUR | 4 | 308,50 EUR | +638% | 0,21 | -90% | Negative Exact |
| „outlet nähe" | 234 | 678 EUR | 2 | 339,00 EUR | +711% | 0,18 | -91% | Negative Phrase |
B2B (Software-Lösungen):
| N-Gram | Klicks | Kosten | Conv. | CPA | CPA vs Avg | ROAS | ROAS vs Avg | Empfehlung |
|---|---|---|---|---|---|---|---|---|
| „kostenlos" | 456 | 1.567 EUR | 3 | 522,33 EUR | +763% | — | — | Negative Exact |
| „gehalt" | 234 | 892 EUR | 0 | — | — | — | — | Negative Exact |
| „wikipedia" | 189 | 723 EUR | 1 | 723,00 EUR | +1.095% | — | — | Negative Exact |
| „jobs" | 298 | 1.104 EUR | 2 | 552,00 EUR | +812% | — | — | Negative Exact |
5 typische Low-Performer-Muster:
Preisorientierte Begriffe: „günstig", „billig", „billigste", „preiswert", „schnäppchen" ziehen Schnäppchenjäger mit niedriger Kaufabsicht an.
Informationsorientierte Begriffe: „was ist", „wie funktioniert", „definition", „wikipedia", „anleitung" – Nutzer recherchieren und konvertieren nicht.
Jobsuche-Begriffe: „gehalt", „stellenangebote", „jobs", „karriere", „bewerbung" – vollständig irrelevant für B2B-Software oder E-Commerce.
Second-Hand/Gebraucht: „gebraucht", „second hand", „ebay kleinanzeigen" – relevant bei Neuware-Verkäufern als Ausschlusskriterium.
Lokale Absicht ohne lokales Angebot: „in meiner nähe", „abholen", „outlet", „geschäft" – blockieren, falls kein physischer Standort existiert.
4 Handlungsschritte für Low-Performer:
1. Negative Keyword-Listen thematisch organisieren
Erstellen Sie 4 thematische Listen und wenden Sie diese auf Kampagnen-Ebene an:
- „Preisorientiert": günstig, billig, schnäppchen, outlet, rabatt, angebote
- „Informational": was ist, wie funktioniert, definition, anleitung, wikipedia, youtube
- „Jobsuche": gehalt, jobs, karriere, stellenangebote, bewerbung
- „Gebraucht": gebraucht, second hand, ebay, kleinanzeigen
2. Match Type wählen
- Exact Match Negative
[wort]: Blockiert nur exakt dieses Wort - Phrase Match Negative
"wort": Blockiert das Wort in beliebiger Phrase – empfohlen für die meisten Fälle - Broad Match Negative
wort: Blockiert alle Variationen – Vorsicht vor zu aggressiver Reichweite
Phrase Match Negative "günstig" blockiert „günstige nike schuhe", „nike schuhe günstig kaufen" und „wo kann man günstig nike schuhe kaufen" – aber nicht „hochwertige nike schuhe".
3. Stufenweise Ausschließen (Safe Approach)
- Woche 1: Als Phrase Match Negative hinzufügen
- Woche 2–3: Performance beobachten – Impressionen/Klicks gesunken? CPA/ROAS verbessert?
- Woche 4: Bei positiver Entwicklung beibehalten; bei zu aggressiver Wirkung auf Exact Match Negative reduzieren
4. Automatisierung mit Google Ads Scripts:
function addLowPerformersAsNegatives(lowPerformers) {
const negativeList = AdsApp.negativeKeywordLists()
.withCondition("Name = 'Auto-Generated Low Performers'")
.get()
.next();
lowPerformers.forEach(nGram => {
// 1-Grams als Phrase Match, 2-Grams+ als Exact Match
const matchType = nGram.words.length === 1 ? 'PHRASE' : 'EXACT';
negativeList.addNegativeKeyword(nGram.term, matchType);
Logger.log(`Hinzugefügt: ${matchType} "${nGram.term}"`);
});
}
Schwellenwerte für statistische Signifikanz
Statistische Signifikanz stellt sicher, dass Optimierungen auf echten Mustern basieren und nicht auf zufälligen Ausreißern mit kleiner Datenbasis.
Das Problem kleiner Stichproben:
Ein N-Gram mit 3 Klicks und 0 Conversions besitzt technisch einen unendlichen CPA – die nächsten 3 Klicks hätten 2 Conversions erzielen können. Mindestens 20 Klicks bilden die belastbare Entscheidungsgrundlage.
3 Mindest-Klick-Schwellenwerte:
- Minimum für Analyse: 10 Klicks
- Empfohlen für manuelle Entscheidungen: 20 Klicks
- Automatisierte Aktionen: 30 Klicks für höhere Sicherheit
Konfidenzintervalle (für Fortgeschrittene):
function calculateConfidenceInterval(conversions, clicks, confidenceLevel = 0.95) {
const conversionRate = conversions / clicks;
const z = 1.96; // 95% Konfidenz
const margin = z * Math.sqrt((conversionRate * (1 - conversionRate)) / clicks);
return {
lower: conversionRate - margin,
upper: conversionRate + margin,
significant: clicks >= 30 // Faustregel
};
}
Überschneiden sich die Konfidenzintervalle des N-Grams und des Kontodurchschnitts nicht, ist der Unterschied statistisch signifikant.
Praktische Schwellenwerte für Aktionen:
| Metrik | High-Performer | Low-Performer | Mindest-Klicks |
|---|---|---|---|
| CPA | <-30% vs Durchschnitt | >+50% vs Durchschnitt | 20 |
| ROAS | >+20% vs Durchschnitt | <-50% vs Durchschnitt | 20 |
| Conversion-Rate | >+30% vs Durchschnitt | <-50% vs Durchschnitt | 30 |
| Kosten | Mind. 1% Gesamt | Mind. 0,5% Gesamt | 10 |
Beispiel-Script-Logik:
function classifyNGram(nGram, accountAvg) {
if (nGram.clicks < 20) return 'INSUFFICIENT_DATA';
const cpaDiff = (nGram.cpa - accountAvg.cpa) / accountAvg.cpa;
const roasDiff = (nGram.roas - accountAvg.roas) / accountAvg.roas;
if (cpaDiff < -0.3 && roasDiff > 0.2) {
return 'HIGH_PERFORMER';
} else if (cpaDiff > 0.5 || roasDiff < -0.5) {
return 'LOW_PERFORMER';
} else {
return 'NEUTRAL';
}
}
Visualisierung in Google Sheets (Pivot-Tabellen)
Visualisierung in Google Sheets reduziert die Analysezeit für N-Gram Reports von 60 auf 15 Minuten, weil Muster sofort erkennbar werden.
1. Bedingte Formatierung
3 Farbcodes strukturieren die Analyse:
- Grün: CPA mehr als 30 % unter Durchschnitt, ROAS mehr als 20 % über Durchschnitt
- Rot: CPA mehr als 50 % über Durchschnitt, ROAS mehr als 50 % unter Durchschnitt
- Gelb: Borderline-Fälle nahe den Schwellenwerten
2. Sortierung und Filterung
In Google Sheets:
- Header-Zeile markieren
- Daten → Filter erstellen klicken
- Filter-Dropdown nutzen – z. B. „Recommendation = Add as Negative"
3. Pivot-Tabellen für aggregierte Ansichten
Beispiel: Kosten nach N-Gram-Typ
| N-Gram Type | Summe Kosten | Summe Conversions | Durchschnitt CPA |
|---|---|---|---|
| 1-Gram | 12.456 EUR | 234 | 53,23 EUR |
| 2-Gram | 18.923 EUR | 456 | 41,50 EUR |
| 3-Gram | 8.734 EUR | 189 | 46,21 EUR |
Pivot-Tabelle in 5 Schritten erstellen:
- Daten markieren (inkl. Header)
- Einfügen → Pivot-Tabelle
- Zeilen: „Type" (1-Gram, 2-Gram, 3-Gram)
- Werte: „Cost" (Summe), „Conversions" (Summe), „CPA" (Durchschnitt)
- Pivot-Tabelle zeigt aggregierte Metriken nach N-Gram-Typ
4. Charts für visuelle Insights
Balkendiagramm – Top 20 N-Grams nach Kosten:
- Spalten „N-Gram" und „Cost" (Top 20 Zeilen) markieren
- Einfügen → Diagramm
- Diagrammtyp: Balkendiagramm
Scatter Plot – CPA vs. Kosten:
- X-Achse: Kosten
- Y-Achse: CPA
- Punktgröße: Anzahl Klicks
Der Scatter Plot identifiziert sofort N-Grams mit hohen Kosten UND hohem CPA – die obere rechte Ecke zeigt die größten Optimierungshebel.
5. Dashboard-Ansicht
Ein separates Tabellenblatt „Dashboard" enthält 4 Elemente:
- KPI-Übersicht: Gesamt-Klicks, Gesamt-Kosten, Durchschnitts-CPA, Durchschnitts-ROAS
- Top 10 High-Performer (grün formatiert)
- Top 10 Low-Performer (rot formatiert)
- Charts: Balkendiagramm und Scatter Plot
Dieses Dashboard eignet sich für wöchentliche Reviews mit Stakeholdern – alle wichtigen Insights auf einen Blick, exportierbar nach Looker Studio.
Vom Insight zur Aktion: Automatisierte Workflows
High-Performer automatisch als Keywords hinzufügen
Automatisierte Workflows in Google Ads Scripts setzen N-Gram Insights direkt in Keyword-Aktionen um – mit integrierten Sicherheitsmechanismen gegen Fehlkonfigurationen.
6 Workflow-Schritte:
1. High-Performer identifizieren Google Ads Scripts filtert N-Grams nach: CPA mehr als 30 % unter Durchschnitt, ROAS mehr als 20 % über Durchschnitt, mindestens 20 Klicks.
2. Duplikate prüfen Vor dem Hinzufügen prüft das Script, ob das Keyword bereits existiert:
function keywordExists(adGroup, keywordText, matchType) {
const keywords = adGroup.keywords()
.withCondition(`Text = "${keywordText}"`)
.withCondition(`KeywordMatchType = ${matchType}`)
.get();
return keywords.hasNext();
}
3. Geeignete Ad Group finden
3 Optionen für die Keyword-Zuordnung:
- Thematisch passende Ad Group: Regex-Matching – z. B. N-Gram „nike pegasus" → Ad Group „Nike Schuhe"
- Neue Ad Group erstellen: Für High-Performer mit mehr als 500 Klicks pro Monat
- Standard-Ad Group: Fallback bei fehlender thematischer Zuordnung
function findBestAdGroup(campaign, nGram) {
const adGroups = campaign.adGroups().get();
while (adGroups.hasNext()) {
const adGroup = adGroups.next();
const adGroupName = adGroup.getName().toLowerCase();
// Einfaches Matching: Wenn Ad Group-Name N-Gram-Wort enthält
if (nGram.split(' ').some(word => adGroupName.includes(word))) {
return adGroup;
}
}
// Fallback: Erste Ad Group in der Kampagne
return campaign.adGroups().get().next();
}
4. Keyword hinzufügen mit optimiertem Gebot
function addHighPerformerKeyword(adGroup, nGram, stats) {
const matchType = nGram.split(' ').length === 1 ? 'PHRASE' : 'EXACT';
// Empfohlenes Gebot: 20% höher als aktueller Durchschnitts-CPC
const suggestedBid = stats.avgCpc * 1.2;
const keywordOperation = adGroup.newKeywordBuilder()
.withText(nGram)
.withCpc(suggestedBid)
.build();
Logger.log(`Hinzugefügt: ${matchType} Keyword "${nGram}" in Ad Group "${adGroup.getName()}" mit Gebot ${suggestedBid.toFixed(2)} EUR`);
}
5. Dokumentation in Google Sheets
| Datum | N-Gram | Match Type | Ad Group | Gebot | Status |
|---|---|---|---|---|---|
| 2026-02-10 | nike pegasus | EXACT | Nike Schuhe | 1,85 EUR | Hinzugefügt |
| 2026-02-10 | trail | PHRASE | Trail Running | 1,42 EUR | Hinzugefügt |
6. Dry-Run Modus (Sicherheitsnetz)
const CONFIG = {
dryRun: true, // Wenn true: nur loggen, keine Änderungen vornehmen
};
function addKeyword(adGroup, keyword, bid) {
if (CONFIG.dryRun) {
Logger.log(`[DRY RUN] Würde Keyword "${keyword}" mit Gebot ${bid} EUR hinzufügen.`);
return;
}
// Echte Aktion
adGroup.newKeywordBuilder().withText(keyword).withCpc(bid).build();
}
Google Ads Scripts läuft 1 Woche im Dry-Run Modus – erst nach Validierung aller Logs setzt dryRun: false den Live-Betrieb frei.
Low-Performer zu Negativlisten hinzufügen
Google Ads Scripts fügt Low-Performer in 5 Schritten automatisch zu thematischen Negativlisten hinzu – mit Duplikate-Prüfung und Brand-Schutz.
1. Low-Performer identifizieren Das Script filtert: CPA mehr als 50 % über Durchschnitt, ROAS mehr als 50 % unter Durchschnitt, mindestens 10 Klicks, mindestens 0,5 % der Gesamtkosten.
2. Duplikate prüfen
function negativeKeywordExists(list, keywordText) {
const negatives = list.negativeKeywords()
.withCondition(`Text = "${keywordText}"`)
.get();
return negatives.hasNext();
}
3. Zur richtigen Negative Keyword Liste hinzufügen
function addToNegativeList(nGram, category) {
let listName;
if (category === 'price') {
listName = 'Negatives - Preisorientiert';
} else if (category === 'informational') {
listName = 'Negatives - Informational';
} else {
listName = 'Negatives - Auto-Generated';
}
const list = AdsApp.negativeKeywordLists()
.withCondition(`Name = "${listName}"`)
.get()
.next();
if (negativeKeywordExists(list, nGram)) {
Logger.log(`Übersprungen: "${nGram}" bereits in Liste "${listName}".`);
return;
}
const matchType = nGram.split(' ').length === 1 ? 'PHRASE' : 'EXACT';
list.addNegativeKeyword(`${matchType === 'PHRASE' ? '"' + nGram + '"' : '[' + nGram + ']'}`);
Logger.log(`Hinzugefügt: ${matchType} Negative "${nGram}" zu Liste "${listName}".`);
}
4. Automatische Kategorisierung
function categorizeNGram(nGram) {
const priceTerms = ['günstig', 'billig', 'schnäppchen', 'rabatt', 'angebote', 'outlet'];
const infoTerms = ['was ist', 'wie', 'definition', 'anleitung', 'wikipedia'];
const jobTerms = ['gehalt', 'jobs', 'karriere', 'stellenangebote'];
if (priceTerms.some(term => nGram.includes(term))) return 'price';
if (infoTerms.some(term => nGram.includes(term))) return 'informational';
if (jobTerms.some(term => nGram.includes(term))) return 'jobs';
return 'other';
}
5. Sanity Checks – 3 Pflichtprüfungen:
function isSafeToNegate(nGram, brandTerms) {
// Prüfung 1: Keine Brand-Keywords
if (brandTerms.some(brand => nGram.includes(brand))) {
Logger.log(`WARNUNG: "${nGram}" enthält Brand-Begriff. Nicht hinzugefügt.`);
return false;
}
// Prüfung 2: Keine zu generischen 1-Grams
const tooGeneric = ['kaufen', 'online', 'shop', 'bestellen', 'günstig'];
if (nGram.split(' ').length === 1 && tooGeneric.includes(nGram)) {
Logger.log(`WARNUNG: "${nGram}" zu generisch. Manuelle Prüfung erforderlich.`);
return false;
}
return true;
}
Dry-Runs und Änderungsprotokolle (Sicherheitsnetz)
Dry-Runs sind unverzichtbar, weil ein falsch konfiguriertes Google Ads Script in 3 Schadensszenarien dramatische Folgen hat: Brand-Keywords als Negatives – Traffic-Einbruch; hunderte irrelevante Keywords – Budget-Explosion; profitable Keywords pausiert – Umsatzrückgang.
4 Dry-Run Best Practices:
- Erste Ausführung immer im Dry-Run:
dryRun: true - Logs vollständig prüfen: Stimmen die vorgeschlagenen Aktionen mit den Erwartungen überein?
- 10–20 zufällige Änderungen manuell validieren: Stichprobenprüfung vor Live-Schaltung
- Schrittweise freischalten: Zuerst nur High-Performer automatisieren, dann Negatives
Änderungsprotokoll in Google Sheets:
function logChange(action, nGram, details) {
const sheet = SpreadsheetApp.openByUrl(CONFIG.changeLogUrl).getSheetByName('Change Log');
sheet.appendRow([
new Date(),
action, // z. B. "ADD_KEYWORD", "ADD_NEGATIVE"
nGram,
details.adGroup || details.listName,
details.bid || 'N/A',
details.matchType,
CONFIG.dryRun ? 'DRY RUN' : 'LIVE'
]);
}
Beispiel Change Log:
| Timestamp | Action | N-Gram | Ziel | Gebot | Match Type | Status |
|---|---|---|---|---|---|---|
| 2026-02-10 08:05 | ADD_KEYWORD | nike pegasus | Nike Schuhe | 1,85 EUR | EXACT | LIVE |
| 2026-02-10 08:05 | ADD_NEGATIVE | günstig | Negatives - Price | N/A | PHRASE | LIVE |
| 2026-02-10 08:06 | ADD_KEYWORD | trail running | Trail | 1,42 EUR | PHRASE | DRY RUN |
Das Change Log liefert 3 unmittelbare Vorteile: Performance-Tracking nach Änderungen, schnelle Fehlerdiagnose bei Traffic-Einbrüchen, Audit-Trail für Kunden und Teams.
Benachrichtigungs-Automatisierung per E-Mail
E-Mail-Alerts informieren über 4 kritische Ereignisse in Google Ads Scripts – ohne manuelles Monitoring.
1. Script-Ausführung abgeschlossen
function sendCompletionEmail(stats) {
const subject = `N-Gram Analyse abgeschlossen - ${stats.nGramsAnalyzed} N-Grams analysiert`;
const body = `
Ihre wöchentliche N-Gram Analyse ist abgeschlossen.
Zusammenfassung:
- ${stats.nGramsAnalyzed} N-Grams analysiert
- ${stats.highPerformers} High-Performer identifiziert
- ${stats.lowPerformers} Low-Performer identifiziert
- ${stats.keywordsAdded} Keywords hinzugefügt
- ${stats.negativesAdded} Negative Keywords hinzugefügt
Details finden Sie hier: ${CONFIG.spreadsheetUrl}
Nächste Ausführung: ${getNextExecutionDate()}
`;
MailApp.sendEmail('ihr-email@beispiel.de', subject, body);
}
2. Kritische Low-Performer Alert
function sendCriticalAlert(criticalNGrams) {
if (criticalNGrams.length === 0) return;
const subject = `⚠️ WARNUNG: ${criticalNGrams.length} kritische N-Grams mit hohen Kosten`;
let body = `Die folgenden N-Grams verursachen signifikante Kosten bei schlechter Performance:\n\n`;
criticalNGrams.forEach(nGram => {
body += `- "${nGram.term}": ${nGram.cost.toFixed(2)} EUR Kosten, CPA ${nGram.cpa.toFixed(2)} EUR (+${nGram.cpaDiff}% vs Durchschnitt), ${nGram.conversions} Conversions\n`;
});
body += `\n${CONFIG.dryRun ? 'DRY RUN MODUS - Keine Aktionen durchgeführt.' : 'Diese wurden automatisch als negative Keywords hinzugefügt.'}`;
body += `\n\nDetails: ${CONFIG.spreadsheetUrl}`;
MailApp.sendEmail('ihr-email@beispiel.de', subject, body);
}
3. Hohe Budget-Änderungen
function sendBudgetImpactEmail(impact) {
const subject = `💰 Keyword Harvesting: ${impact.savings.toFixed(0)} EUR/Monat eingespart`;
const body = `
Ihre automatisierte Keyword-Optimierung hat signifikante Budget-Änderungen verursacht:
Budget-Einsparungen durch Negatives: ${impact.savings.toFixed(2)} EUR/Monat
Zusätzliches Budget für High-Performer: +${impact.additionalSpend.toFixed(2)} EUR/Monat
Erwartete zusätzliche Conversions: +${impact.additionalConversions} pro Monat
Details: ${CONFIG.spreadsheetUrl}
`;
MailApp.sendEmail('ihr-email@beispiel.de', subject, body);
}
4. Fehler-Alerts
function main() {
try {
// Script-Logik
runNGramAnalysis();
} catch (e) {
const subject = '🚨 FEHLER: N-Gram Script fehlgeschlagen';
const body = `
Das N-Gram Analyse Script ist mit einem Fehler abgebrochen:
Fehler: ${e.message}
Stack Trace: ${e.stack}
Bitte prüfen Sie das Script im Google Ads Konto.
`;
MailApp.sendEmail('ihr-email@beispiel.de', subject, body);
throw e; // Fehler weitergeben, damit Google Ads den Fehler registriert
}
}
Best Practice Benachrichtigungs-Setup – 4 Regeln:
- Wöchentlich: Vollständiger Report mit Zusammenfassung – Montag morgens
- Kritische Alerts: Sofort bei kritischen N-Grams über 500 EUR Kosten – immer
- Budget-Impact: Nur bei Änderungen über 500 EUR pro Monat – monatlich
- Fehler: Sofort – immer
Fortgeschritten: BigQuery & ML.NGRAMS für große Konten
Wann BigQuery sinnvoll wird (>100.000 Suchanfragen/Monat)
BigQuery löst 3 strukturelle Limitierungen von Google Ads Scripts, die bei Konten mit mehr als 100.000 Suchanfragen pro Monat zum Problem werden.
3 Limitierungen von Google Ads Scripts:
- 30-Minuten Timeout: Google Ads Scripts bricht nach 30 Minuten automatisch ab
- Speicher-Limit: Bei mehr als 500.000 Zeilen erschöpft sich der verfügbare Speicher
- Performance: Die Verarbeitung von Millionen von N-Grams in JavaScript überschreitet das Timeout
5 Vorteile von BigQuery:
- Unbegrenzte Skalierung: Milliarden von Zeilen werden ohne Performance-Einbußen verarbeitet
- ML.NGRAMS Funktion: Native N-Gram-Generierung in SQL – schneller als JavaScript-Loops
- Integration mit Google Ads Data Transfer: Automatischer täglicher Import aller Google Ads Daten
- Historische Analysen: Analyse über Jahre statt 30–90 Tage
- Advanced Analytics: N-Gram Analysen kombiniert mit CRM-Daten und Looker Studio
Kosten – realistisch kalkuliert:
- Speicher: 0,02 EUR pro GB/Monat (1 Jahr Google Ads Daten = 5–20 GB = 0,10–0,40 EUR/Monat)
- Queries: 5 EUR pro TB verarbeitete Daten (1 N-Gram Analyse = 10–50 GB = 0,05–0,25 EUR)
- Data Transfer: Google Ads Data Transfer ist kostenlos
BigQuery kostet für ein mittelgroßes Konto mit 50.000 EUR Monatsbudget unter 10 EUR pro Monat.
Entscheidungsmatrix nach Kontogröße:
| Konto-Größe | Suchanfragen/Monat | Empfehlung |
|---|---|---|
| Klein | <10.000 | Google Ads Script ausreichend |
| Mittel | 10.000–100.000 | Google Ads Script ausreichend, BigQuery optional |
| Groß | 100.000–1.000.000 | BigQuery empfohlen |
| Enterprise | >1.000.000 | BigQuery zwingend erforderlich |
ML.NGRAMS Funktion für Millionen von Zeilen
BigQuery verarbeitet mit der nativen ML.NGRAMS Funktion 10 Millionen Suchanfragen in unter 30 Sekunden – deutlich schneller als JavaScript-Loops in Google Ads Scripts.
Beispiel-Query: 1-Grams aus Suchanfragen extrahieren
SELECT
ngram,
COUNT(*) as query_count,
SUM(clicks) as total_clicks,
SUM(cost_micros) / 1000000 as total_cost,
SUM(conversions) as total_conversions,
SUM(conversions_value) as total_conversion_value
FROM
`your-project.your-dataset.SearchQueryStats_*`,
UNNEST(ML.NGRAMS(SPLIT(LOWER(search_term), ' '), [1, 1])) as ngram
WHERE
_TABLE_SUFFIX BETWEEN '20260101' AND '20260131'
AND clicks >= 1
GROUP BY
ngram
HAVING
total_clicks >= 10
ORDER BY
total_cost DESC
7 Schritte dieser Query:
- Tabelle:
SearchQueryStats_*– partitionierte Tabelle aus Google Ads Data Transfer - Zeitraum:
_TABLE_SUFFIX BETWEEN '20260101' AND '20260131'= Januar 2026 - ML.NGRAMS:
ML.NGRAMS(SPLIT(LOWER(search_term), ' '), [1, 1])generiert 1-Grams - UNNEST: Zerlegt das N-Gram-Array in separate Zeilen
- Aggregation:
SUM(clicks),SUM(cost_micros)summieren Metriken pro N-Gram - Filter:
HAVING total_clicks >= 10wendet den Mindest-Klicks-Schwellenwert an - Sortierung:
ORDER BY total_cost DESCzeigt teuerste N-Grams an erster Stelle
2-Grams und 3-Grams generieren:
-- 2-Grams
UNNEST(ML.NGRAMS(SPLIT(LOWER(search_term), ' '), [2, 2])) as ngram
-- 3-Grams
UNNEST(ML.NGRAMS(SPLIT(LOWER(search_term), ' '), [3, 3])) as ngram
-- Alle N-Grams (1-Gram, 2-Gram, 3-Gram gemeinsam)
UNNEST(ML.NGRAMS(SPLIT(LOWER(search_term), ' '), [1, 3])) as ngram
Ergebnis-Export:
-- In BigQuery: "Export → Export to Google Sheets"
Scheduled Queries in BigQuery führen die N-Gram Analyse automatisch wöchentlich aus und schreiben Ergebnisse in eine Zieltabelle – die Verbindung zu Looker Studio oder Google Sheets erfolgt dann ohne manuellen Eingriff.
Kombination mit Google Ads Data Transfer
Google Ads Data Transfer exportiert täglich alle Google Ads Daten automatisch nach BigQuery – das Setup ist einmalig und erfordert keine laufende Wartung.
Setup in 4 Schritten:
-
BigQuery Projekt erstellen:
- Gehen Sie zu console.cloud.google.com
- Erstellen Sie ein neues Projekt – z. B. „Google Ads Analytics"
-
Data Transfer einrichten:
- In BigQuery: Data transfers → Create transfer
- Source: Google Ads
- Destination dataset: z. B.
google_ads_data - Schedule: Daily – nachts, z. B. 03:00 Uhr
-
Google Ads Konto verknüpfen:
- BigQuery autorisieren, auf Google Ads zuzugreifen
- Konto oder MCC für mehrere Konten wählen
-
Tabellen prüfen – 4 Kerntabellen:
SearchQueryStats_YYYYMMDD– SuchanfragenCampaignStats_YYYYMMDD– Kampagnen-PerformanceAdGroupStats_YYYYMMDD– Ad Group-PerformanceCriteria_YYYYMMDD– Keywords
N-Gram Analyse auf einem kompletten Jahreszeitraum:
-- Analyse über das gesamte Jahr 2025
SELECT
ngram,
SUM(clicks) as total_clicks,
SUM(cost_micros) / 1000000 as total_cost,
SUM(conversions) as total_conversions,
SAFE_DIVIDE(SUM(cost_micros) / 1000000, SUM(conversions)) as cpa
FROM
`your-project.google_ads_data.SearchQueryStats_*`,
UNNEST(ML.NGRAMS(SPLIT(LOWER(search_term), ' '), [1, 1])) as ngram
WHERE
_TABLE_SUFFIX BETWEEN '20250101' AND '20251231'
AND clicks >= 1
GROUP BY
ngram
HAVING
total_clicks >= 50
ORDER BY
total_cost DESC
LIMIT 1000
Trend-Analysen – aktueller Monat vs. Vormonat:
WITH current_period AS (
SELECT
ngram,
SUM(conversions) as conversions,
SAFE_DIVIDE(SUM(cost_micros) / 1000000, SUM(conversions)) as cpa
FROM `your-project.google_ads_data.SearchQueryStats_*`,
UNNEST(ML.NGRAMS(SPLIT(LOWER(search_term), ' '), [1, 1])) as ngram
WHERE _TABLE_SUFFIX BETWEEN '20260101' AND '20260131'
GROUP BY ngram
),
previous_period AS (
SELECT
ngram,
SUM(conversions) as conversions,
SAFE_DIVIDE(SUM(cost_micros) / 1000000, SUM(conversions)) as cpa
FROM `your-project.google_ads_data.SearchQueryStats_*`,
UNNEST(ML.NGRAMS(SPLIT(LOWER(search_term), ' '), [1, 1])) as ngram
WHERE _TABLE_SUFFIX BETWEEN '20251201' AND '20251231'
GROUP BY ngram
)
SELECT
c.ngram,
c.conversions as current_conversions,
p.conversions as previous_conversions,
c.cpa as current_cpa,
p.cpa as previous_cpa,
SAFE_DIVIDE(c.cpa - p.cpa, p.cpa) as cpa_change_pct
FROM current_period c
LEFT JOIN previous_period p ON c.ngram = p.ngram
WHERE c.conversions >= 10
ORDER BY cpa_change_pct DESC
Diese Query identifiziert N-Grams, deren CPA sich am stärksten verändert hat – positiv oder negativ – und liefert frühzeitige Signale für neue Trends.
Automatisierung mit Scheduled Queries – 5 Schritte:
- In BigQuery: Scheduled queries → Create scheduled query
- Query: N-Gram Analyse Query einfügen
- Schedule: „Wöchentlich, Montag 08:00 Uhr"
- Destination table: z. B.
ngram_analysis_results - Notification: E-Mail bei Erfolg oder Fehler aktivieren
BigQuery schreibt Ergebnisse automatisch in eine Zieltabelle, die Looker Studio oder Google Sheets als Live-Datenquelle einbindet – vollständig ohne manuelle Eingriffe.
Best Practices und häufige Fehler
Regelmäßige Audit-Intervalle (wöchentlich vs. monatlich)
Wöchentliche Audits sind für 80 % der Konten die überlegene Strategie gegenüber monatlichen Analysen – weil schnellere Reaktionszeiten Budget-Verschwendung minimieren.
Wöchentliche Audits – 3 Vorteile:
- Schnelle Reaktion auf neue Trends und problematische Suchanfragen
- Kleinere Datenmengen pro Audit – 15–30 Minuten Review statt 2–3 Stunden
- Kontinuierliche Optimierung statt einmaligem monatlichen Batch
Best Practice Wochenrhythmus:
- Montag morgens: Google Ads Scripts läuft automatisch über Wochenend-Daten
- Montag 10–11 Uhr: 15–30 Minuten Review der Top-Insights
- Bei Bedarf: Manuelle Anpassungen oder Freigabe automatisierter Aktionen
Monatliche Audits – 2 Vorteile und 2 Nachteile:
Vorteile: Höhere statistische Signifikanz durch mehr Daten pro N-Gram; weniger Zeitaufwand – 1-mal statt 4-mal pro Monat.
Nachteile: Problematische Keywords verschwenden bis zu 30 Tage Budget bevor sie identifiziert werden; größere Datenmengen erschweren die Analyse.
Empfehlung nach 3 Kontokategorien:
- Kleine Konten (unter 5.000 EUR/Monat): Monatlich ausreichend
- Mittlere Konten (5.000–50.000 EUR/Monat): Wöchentlich
- Große Konten (über 50.000 EUR/Monat): Wöchentlich oder täglich für kritische Kampagnen
Tägliches Monitoring für große Konten:
Tägliche Alerts mit 1 Kriterium: N-Gram verursacht heute mehr als 100 EUR Kosten bei 0 Conversions → sofortiger E-Mail-Alert → Account Manager prüft → ggf. sofortiges Ausschließen.
Kombination mit Smart Bidding: Nicht gegeneinander arbeiten
Smart Bidding und aggressives Keyword Harvesting arbeiten gegeneinander, wenn Negatives Suchanfragen blockieren, die Smart Bidding bereits durch niedrige Gebote optimiert hat.
Das Problem in 3 Schritten:
- Tag 1–14: Smart Bidding testet Broad Match Keyword „schuhe kaufen" – Suchanfragen mit „günstig" erhalten automatisch niedrige Gebote
- Tag 15: Google Ads Scripts fügt „günstig" als Phrase Match Negative hinzu
- Resultat: Blockierter Traffic hatte durch Smart Bidding bereits minimale Kosten – der Optimierungseffekt ist marginal, der Eingriff störte den Lernprozess
5 Best Practices für Smart Bidding + Keyword Harvesting:
1. Fokus auf extreme Ausreißer Smart Bidding übernimmt normale Optimierungen. Google Ads Scripts greift nur bei extremen Ausreißern ein – mehr als 200 % CPA-Abweichung oder 0 Conversions bei mehr als 500 EUR Kosten.
2. Mindestens 30 Tage Daten analysieren Smart Bidding benötigt 2–4 Wochen für den Lernprozess. Negatives nach weniger als 30 Tagen Datenbasis blockieren Suchanfragen, die Smart Bidding noch optimiert.
3. High-Performer aggressiver skalieren Bei aktivem Smart Bidding ist es effektiver, High-Performer als Exact Match Keywords hinzuzufügen und Gebote zu erhöhen – als Low-Performer auszuschließen, die Smart Bidding sowieso mit niedrigen Geboten belegt.
4. Separate Harvesting-Kampagne einrichten
2-Kampagnen-Struktur verhindert Interferenz:
- Kampagne A: Brand + High Intent Keywords mit Smart Bidding – keine Harvesting-Eingriffe
- Kampagne B: Discovery-Kampagne mit Broad Match – aggressives Harvesting und hohe Negative-Dichte
5. Performance Max und Keyword Harvesting Performance Max bietet keinen vollständigen Suchbegriffsbericht – nur „Search Terms Insights" mit limitierten aggregierten Daten. 3 Alternativen zu klassischem N-Gram Harvesting:
- Asset Group Signale analysieren
- Audience Signals testen und Muster identifizieren
- Konto-weite Negative Keyword Listen für offensichtliche Ausschlüsse – Jobs, Wikipedia, etc.
Zu aggressive Negatives: Versehentlich guten Traffic blockieren
Zu breite Negatives blockieren profitablen Traffic – 5 typische Fehler erzeugen dieses Problem.
Fehler 1: Broad Match Negatives zu aggressiv nutzen
günstig als Broad Match Negative blockiert auch „qualitativ hochwertig günstig" und Synonyme wie „preiswert" oder „erschwinglich".
Lösung: Phrase Match Negatives "günstig" oder Exact Match [günstig] sichern präzise Kontrolle.
Fehler 2: Ohne Kontext ausschließen
Das 1-Gram „gebraucht" mit schlechtem CPA blockiert als Negative auch „Gebrauchsanweisung" und „wie gebraucht aussehen".
Lösung: 2-Grams und 3-Grams prüfen für Kontext. Spezifische Phrase-Match-Negatives statt breiter 1-Grams hinzufügen.
Fehler 3: Zu wenig Daten
Ein N-Gram mit 5 Klicks und 0 Conversions als sofortiges Negative – mit 50 Klicks hätte es 8 Conversions erzielt.
Lösung: Mindestens 20 Klicks abwarten, außer bei offensichtlich irrelevanten Begriffen wie „Jobs" oder „Wikipedia".
Fehler 4: Brand-Variationen versehentlich blockieren
billig als Negative blockiert auch „nike schuhe nicht billig" – der Nutzer sucht hochwertige Nike-Schuhe.
Lösung: Google Ads Scripts kombiniert Negatives mit Brand-Ausnahmen:
function isSafeToNegate(nGram, brandTerms) {
if (brandTerms.some(brand => nGram.includes(brand))) {
return false;
}
return true;
}
Fehler 5: Saisonale Schwankungen ignorieren
Im Januar performen „Geschenk"-Suchanfragen schlecht – als Negative gesetzt, blockieren sie im November/Dezember profitablen Weihnachts-Traffic.
Lösung: Saisonale Negative Keyword Listen erstellen und nur in bestimmten Monaten aktivieren.
3 Sicherheitsmechanismen:
- Whitelist: Begriffe, die niemals als Negatives hinzugefügt werden – Brand-Namen, Produktnamen, Kern-Keywords
- Manual Review bei Volumen über 1.000 Impressionen/Monat: N-Grams mit hohem Volumen immer manuell prüfen
- Dokumentierte Negatives: Alle hinzugefügten Negatives im Change Log erfassen für schnelles Rückgängigmachen
Close Variants beachten (Google matched breiter als erwartet)
Google matcht Exact Match Keywords seit 2018 mit 6 Close-Variant-Typen – N-Gram Analysen enthalten deshalb Suchanfragen, die nie explizit als Keywords hinzugefügt wurden.
6 Close-Variant-Typen:
- Rechtschreibfehler: „nike shuhe" matcht
[nike schuhe] - Singular/Plural: „schuh" matcht
[schuhe] - Funktionswörter: „nike schuhe für herren" matcht
[nike schuhe herren] - Umstellungen: „schuhe nike" matcht
[nike schuhe] - Synonyme (seit 2019): „turnschuhe" matcht
[sneaker] - Suchintention (seit 2021): „günstige laufschuhe" matcht
[marathon schuhe]
Beispiel der Auswirkung:
Keyword [nike pegasus 40] (Exact Match) löst 4 Suchanfragen aus: „nike pegasus 40" (exakt), „nike pegasus 40 herren" (Funktionswort), „nike pegasus vierzig" (Synonym), „pegasus 40 von nike" (Umstellung). N-Gram Analyse zeigt „vierzig" und „von" als separate N-Grams – obwohl sie nie als Keywords hinzugefügt wurden.
4 Herausforderungen durch Close Variants:
1. N-Gram-Rauschen Close Variants erhöhen die Anzahl einzigartiger N-Grams erheblich – viele mit geringer Datenmenge.
Lösung: minClicks: 20 eliminiert Low-Volume-Rauschen.
2. Fehlende Kontrolle über Synonyme Google entscheidet eigenständig über Synonyme – „Sportschuhe" ist breiter als „Laufschuhe" und erzielt schlechtere Performance.
Lösung: Synonym-Close-Variants mit schlechter Performance als Exact Match Negative ausschließen – z. B. [sportschuhe] für Kampagne „Laufschuhe".
3. Unklare Attribution nach Match Type N-Gram mit schlechter Performance – unklar ob durch Broad Match oder Close Variant eines Exact Match Keywords gematcht.
Lösung: Analyse nach Match Type segmentieren:
// GAQL Query mit Match Type Filter
WHERE keyword.info.match_type = 'EXACT'
4. Aggressives Intent-Matching seit 2021
Keyword marathon schuhe matcht „beste schuhe für langen lauf" – keine Wort-Überschneidung, Google interpretiert Intent als identisch.
3 Lösungen für Intent-Matching:
- Close Variants als Realität akzeptieren: Google hat die Opt-out-Option 2018 entfernt
- Negatives strategisch einsetzen: Unerwünschte Close Variants mit Phrase oder Exact Match Negatives blockieren
- Exact Match Keyword-Dichte erhöhen: Mehr Exact Match Keywords reduzieren die Abhängigkeit von Close Variants
Close-Variant-Analyse in BigQuery:
-- BigQuery Query: Alle Close Variants für Exact Match Keywords
SELECT
search_term,
keyword_text,
SUM(clicks) as clicks,
SUM(cost_micros) / 1000000 as cost,
SUM(conversions) as conversions
FROM `your-project.google_ads_data.SearchQueryStats_*`
WHERE
_TABLE_SUFFIX BETWEEN '20260101' AND '20260131'
AND keyword_match_type = 'EXACT'
AND LOWER(search_term) != LOWER(keyword_text) -- Close Variants
GROUP BY search_term, keyword_text
HAVING clicks >= 5
ORDER BY cost DESC
Diese Query identifiziert alle Close Variants für Exact Match Keywords – unerwünschte Variants mit schlechter Performance werden direkt als Negatives auf die Liste gesetzt.
FAQ
1. Wie lange dauert die Implementierung eines N-Gram Scripts?
Ein Basis-Script ist in 30–60 Minuten einsatzbereit – Installation, Google Sheets Setup, erster Test-Durchlauf. Ein vollautomatisiertes Script mit Dry-Run, E-Mail-Alerts und automatischen Aktionen erfordert 3–5 Stunden Entwicklung und Testing. Ein fertiges Script aus GitHub ist in 15 Minuten installiert.
2. Kann ich Keyword Harvesting mit Performance Max Kampagnen nutzen?
Performance Max unterstützt klassisches N-Gram Harvesting nicht – Google zeigt nur „Search Terms Insights" mit aggregierten Daten für Top-Suchanfragen ohne vollständigen Suchbegriffsbericht. Alternative: Parallel-Kampagne mit Standard Search und Broad Match Keywords für Harvesting einrichten; gewonnene High-Performer in Performance Max Asset Group Signale übernehmen.
3. Wie oft sollte ich meine Negative Keyword Listen aktualisieren?
Wöchentliche Updates sind der Standard für mittlere bis große Konten. Google Ads Scripts laufen täglich und melden kritische N-Grams sofort – die finale Entscheidung über neue Negatives reviewt der Account Manager wöchentlich, um False Positives zu vermeiden.
4. Funktioniert N-Gram Analyse auch für Display- oder Video-Kampagnen?
N-Gram Analyse funktioniert ausschließlich für Search-Kampagnen und eingeschränkt für Performance Max. Display und Video nutzen Placement-Targeting, Audience-Targeting oder Themen-Targeting – diese Kampagnentypen erzeugen keine Suchanfragen im klassischen Sinne.
5. Was ist der Unterschied zwischen 1-Gram, 2-Gram und 3-Gram N-Grams?
- 1-Gram: Einzelne Wörter – z. B. „günstig", „nike", „schuhe" – für breite Mustererkennung
- 2-Gram: Wortkombinationen aus 2 Wörtern – z. B. „günstige schuhe", „nike pegasus" – für Kontext
- 3-Gram: Wortkombinationen aus 3 Wörtern – z. B. „günstige nike schuhe", „nike pegasus 40" – für präzise Signale
1-Grams identifizieren breite Kostentreiber, 3-Grams liefern präzise Handlungsempfehlungen – kombiniert ergibt sich das vollständige Optimierungsbild.
6. Kann ich N-Gram Scripts für mehrere Google Ads Konten gleichzeitig nutzen?
MCC-Scripts iterieren über alle verknüpften Konten und führen N-Gram Analysen parallel durch. Ergebnisse landen in separaten Google Sheets pro Konto oder in einem gemeinsamen Sheet mit Konto-Spalte. MCC-Scripts besitzen ein 60-Minuten-Timeout statt 30 Minuten für Einzelkonto-Scripts.
7. Sind N-Gram Analysen DSGVO-konform?
N-Gram Analysen sind vollständig DSGVO-konform – Suchanfragen in Google Ads sind bereits anonymisiert und enthalten keine personenbezogenen Daten. N-Gram Analysen aggregieren diese Daten weiter und eliminieren jeden theoretischen Personenbezug vollständig.
8. Was mache ich, wenn mein Script das 30-Minuten-Timeout erreicht?
4 Lösungen lösen das Timeout-Problem: (1) LAST_7_DAYS statt LAST_30_DAYS als Zeitraum verwenden; (2) minClicks-Schwellenwert erhöhen, um weniger N-Grams zu verarbeiten; (3) campaignFilter auf einzelne Kampagnen einschränken; (4) BigQuery einsetzen – keine Timeout-Limits, verarbeitet Millionen von Zeilen in Sekunden.
Fazit: Keyword Harvesting als kontinuierlicher Wettbewerbsvorteil
Keyword Harvesting mit N-Gram Analyse steigert den ROAS eines durchschnittlichen E-Commerce-Kontos nach 90 Tagen um 20–40 % (Quelle: WordStream DACH-Benchmarks 2026) – weil jeder Optimierungszyklus systematisch Budget umleitet.
5 Kernergebnisse:
1. Google Ads Scripts skalieren manuelle Arbeit Ein einziges Script analysiert in 3 Minuten, was manuell 4–6 Stunden kostet – konsistent und fehlerfrei, Woche für Woche.
2. N-Gram Analyse macht unsichtbare Muster sichtbar Aggregation über alle Suchanfragen hinweg zeigt, welche Wortfragmente Budget vernichten und welche maximalen Profit liefern – dieser Überblick ist im manuellen Suchbegriffsbericht strukturell nicht erreichbar.
3. Automatisierung mit menschlichem Urteil kombinieren Google Ads Scripts liefert Insights und Empfehlungen. Der erfahrene Account Manager trifft die finale Entscheidung – besonders bei grenzwertigen Fällen und Brand-Begriffen.
4. Wöchentliche Inkrementaloptimierung schlägt monatliche Batch-Optimierung Kontinuierliche Verbesserung akkumuliert mehr Gewinn als einmalige große Änderungen – weil jede Woche Fehlallokationen früher korrigiert werden.
5. BigQuery skaliert mit der Kontogröße Kleine Konten: Google Ads Scripts ausreichend. Konten mit mehr als 100.000 Suchanfragen pro Monat: BigQuery mit ML.NGRAMS-Funktion unverzichtbar. Looker Studio visualisiert beide Datenquellen in einem Dashboard.
ROI-Kalkulation für ein 20.000 EUR/Monat E-Commerce-Konto:
- 5–15 % Budget eingespart durch Negatives: 1.000–3.000 EUR/Monat
- 10–25 % mehr Conversions durch High-Performer-Skalierung
- ROAS-Steigerung um 20–40 % durch präzisere Keyword-Struktur
Die Implementierung kostet einmalig 3–5 Stunden und danach 15–30 Minuten pro Woche. Bei 1.500 EUR monatlichen Einsparungen und 3.000 EUR zusätzlichem Umsatz durch bessere Keywords ergibt sich ein monatlicher Gewinn von 4.500 EUR – was einem effektiven Stundensatz von 1.125 EUR für die Optimierungsarbeit entspricht.
Sie möchten Keyword Harvesting professionell implementieren?
Adkontakt bietet Full-Service Google Ads Betreuung mit modernsten Automatisierungs-Tools:
- ✅ Implementierung maßgeschneiderter N-Gram Scripts für Ihr Konto
- ✅ Wöchentliche Keyword Harvesting Audits durch zertifizierte Experten
- ✅ Automatisierte Workflows mit Dry-Runs und Change-Protokollen
- ✅ BigQuery-Setup für große Konten (>100.000 Suchanfragen/Monat)
- ✅ Integration mit Ihren Reporting-Dashboards
Alle Leistungen ab 299 EUR/Monat – keine Setup-Gebühren, monatlich kündbar.
Jetzt kostenloses Erstgespräch vereinbaren und erfahren Sie, wie viel Budget Sie aktuell durch ineffiziente Suchanfragen verschwenden.
Weiterführende Artikel
- Google Ads Keywords – Grundlagen der Keyword-Recherche und -Strukturierung
- Negative Keywords – Strategien für effektive Ausschlusslisten
- Google Ads optimieren – Umfassender Leitfaden für Performance-Steigerung
- Google Ads Scripts – Einführung in Automatisierung mit JavaScript
- Google Ads Automatisierung – Best Practices für Regeln, Scripts und Workflows
- Google Ads Suchbegriffe analysieren – Manuelle Analyse-Techniken und Reporting
- Google Ads Conversion Tracking – Korrekte Messung für datenbasierte Optimierungen
- Smart Bidding Google Ads – Kombination von automatischen Gebotsstrategien mit Keyword Harvesting