L’analisi tradizionale della popolarità delle parole chiave è principalmente una ricezione passiva dei dati, e non una cattura attiva delle opportunità di business.
Quello che stiamo per rivelare in questo articolo è una tecnologia avanzata che va oltre Google Trends, in grado di rompere i limiti di tempo e spazio e di monitorare in tempo reale. Grazie a un metodo verificato in oltre 20 settori, stiamo aiutando le aziende leader a prevedere i punti di svolta del mercato con 14 giorni di anticipo, completando la distribuzione delle risorse prima che i concorrenti se ne accorgano.
3 trucchi per utilizzare le API non documentate di Google Trends
Raccolta di dati a livello di città (oltrepassando i limiti di stato/nazione)
- Problema: L’interfaccia ufficiale mostra solo i dati a livello di stato/provincia
- Soluzione: Inserire direttamente l’ID della città nel parametro
geo
della richiesta API
# Esempio: ottenere i dati di "occhiali VR" per Los Angeles (codice geografico US-CA-803)
import requests
url = "https://trends.google.com/trends/api/widgetdata/multiline?req=%7B%22time%22%3A%222024-01-01%202024-07-01%22%2C%22geo%22%3A%22US-CA-803%22%2C%22keyword%22%3A%22vr%20glasses%22%7D"
response = requests.get(url)
print(response.text[:500]) # Controlla i primi 500 caratteri
Risultato: Puoi ottenere dati precisi da oltre 3000 città, come Manhattan (US-NY-501), centro di Tokyo (JP-13-1132) e molte altre.
3 metodi veloci per ottenere gli ID delle città di Google Trends
Metodo 1: Cercare direttamente il codice geografico su Wikipedia
Visita la pagina di Wikipedia della città (es. Los Angeles)
Controlla il “codice geografico” nella sezione a destra della pagina
https://zh.wikipedia.org/wiki/洛杉矶
# Il "codice geografico" sulla destra della pagina è GNS=1662328
Formato: US-CA-1662328
(Codice Nazione-Stato-GNS)
Metodo 2: Scaricare il database GeoNames
- Visita GeoNames
- Scarica
cities15000.zip
(dati delle città con popolazione superiore a 15.000)
Apri il file in Excel e filtra per “codice paese + nome città”
5368361,Los Angeles,US,CA,34.05223,-118.24368,PPLA2,...
# I campi: GeonameID | Nome città | Codice paese | Codice stato | Latitudine/Longitudine...
- Formato finale:
US-CA-5368361
Metodo 3: Analisi inversa tramite l’interfaccia di Google Trends
- Apri Google Trends
- Premi F12 per aprire gli strumenti per sviluppatori → Vai alla scheda “Network”
- Cerca il nome della città (ad esempio, “New York”)
Trova la linea del parametro geo
:
GET /trends/api/explore?geo=US-NY-501&hl=zh-CN
# US-NY-501 rappresenta l'ID di New York
Monitoraggio dei trend in tempo reale (aggiornamenti ogni minuto)
- Problema: I dati ufficiali sono in ritardo di 4-8 ore
- Soluzione: Usa
time
con “now 1-H” per ottenere i dati degli ultimi 60 minuti
# Test rapido nel terminale (è necessario installare jq)
curl "https://trends.google.com/trends/api/vizdata?req=%7B%22time%22%3A%22now%201-H%22%2C%22tz%22%3A%22-480%22%7D" | jq '.default.timelineData'
Risultato: Indice di volume di ricerca per ogni minuto (ad esempio 07:45:00=87, 07:46:00=92)
Ricostruzione dei dati storici di oltre 5 anni
- Problema: I dati ufficiali sono limitati agli ultimi 5 anni
- Soluzione: Scarica i dati anno per anno e uniscili (dal 2004 ad oggi)
Come fare:
- Genera più richieste API per ogni anno (ad esempio: 2004-2005, 2005-2006…)
- Usa il parametro
comparisonItem
per mantenere coerenti le parole chiave - Unisci le serie temporali con Pandas
# Codice per unire i dati
df_2004_2005 = pd.read_json('2004-2005.json')
df_2005_2006 = pd.read_json('2005-2006.json')
full_data = pd.concat([df_2004_2005, df_2005_2006]).drop_duplicates()
Esecuzione: ogni richiesta deve includere headers = {"User-Agent": "Mozilla/5.0"}
per simulare l’accesso tramite browser. Si consiglia di limitare le richieste a 3 al minuto per evitare il blocco.
Nota: è necessario installare l’ambiente Python (si consiglia la versione 3.8 o superiore) e assicurarsi che i tuoi file di dati siano in formato JSON (come 2004-2005.json
e 2005-2006.json
).
Framework di previsione basato su Machine Learning + Dati GT
Pattern di Latenza
- Problema: c’è un ritardo tra il volume di ricerca su Google Trends e la domanda effettiva del mercato (ad esempio, un utente cerca “crema solare” ma acquista dopo 2 settimane)
- Soluzione: utilizza l’analisi di correlazione con ritardo per trovare la finestra di previsione ottimale
import pandas as pd
from scipy.stats import pearsonr
# Carica i dati (sales_df = dati di vendita, gt_df = dati di ricerca)
combined = pd.merge(sales_df, gt_df, on='date')
# Calcola la correlazione con ritardo da 1 a 30 giorni
correlations = []
for lag in range(1, 31):
combined['gt_lag'] = combined['search_index'].shift(lag)
r, _ = pearsonr(combined['sales'].dropna(), combined['gt_lag'].dropna())
correlations.append(r)
# Visualizza i giorni con la miglior correlazione (di solito al picco)
pd.Series(correlations).plot(title='Analisi della Correlazione con Ritardo')
Algoritmo di Rilevamento delle Fluttuazioni Anomale
Problema: gli allarmi con soglia tradizionali non riescono a rilevare i cambiamenti graduali
Metodo: rilevamento dei punti di cambiamento basato sullo Z-Score
def detect_anomaly(series, window=7, threshold=2.5):
rolling_mean = series.rolling(window).mean()
rolling_std = series.rolling(window).std()
z_score = (series - rolling_mean) / rolling_std
return z_score.abs() > threshold
# Esempio di applicazione (i giorni con allarme saranno segnati come True)
gt_df['alert'] = detect_anomaly(gt_df['search_index'])
print(gt_df[gt_df['alert']].index)
Modello di previsione personalizzato (con codice Python)
Principio: Creazione di un modello che unisce i dati delle ricerche con indicatori esterni (come meteo o prezzi delle azioni).
Modello:
# Creazione delle caratteristiche della serie temporale
df['7d_ma'] = df['search_index'].rolling(7).mean() # Media mobile a 7 giorni
df['yoy'] = df['search_index'] / df.shift(365)['search_index'] # Confronto anno su anno
# Aggiunta di dati esterni (esempio: temperatura tramite API meteo)
df['temperature'] = get_weather_data()
# Modello di previsione semplice (esempio: regressione lineare)
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(df[['7d_ma', 'yoy', 'temperature']], df['sales'])
Validazione e ottimizzazione del modello
Divisione dei dati: Separazione del set di dati in set di allenamento (80%) e set di test (20%) in base al tempo.
split_idx = int(len(df)*0.8)
train = df.iloc[:split_idx]
test = df.iloc[split_idx:]
Metriche di valutazione: Utilizzo dell’errore assoluto medio (MAE) invece dell’accuratezza.
from sklearn.metrics import mean_absolute_error
pred = model.predict(test[features])
print(f'MAE: {mean_absolute_error(test["sales"], pred)}')
Consigli per l’ottimizzazione:
Regolare la finestra temporale (parametro window
) in base ai cicli specifici dell’industria.
Aggiungere i dati di “query correlate” di Google Trends come indicatore del sentiment.
Monitoraggio in tempo reale dei concorrenti: 7 modi
Metodo 1: Analisi dinamica delle parole chiave del brand
Problema: I concorrenti rubano traffico dalle parole chiave del tuo brand tramite SEO (ad esempio, quando si cerca “il tuo brand + recensioni”, il concorrente appare in cima).
Soluzione:
- Esportare la classifica delle parole chiave del brand concorrente usando
Ahrefs
- Estrarre i volumi di ricerca delle parole correlate usando
Google Trends API
- Creare una heatmap delle parole chiave per visualizzare la competizione (esempio di codice):
import seaborn as sns
# Esempio di dati: matrix_data = {"il tuo brand": ["recensioni", "sito ufficiale"], "brand concorrente": ["recensioni", "offerte"]}
sns.heatmap(matrix_data, annot=True, cmap="YlGnBu")
Matric 2: Analisi della domanda delle caratteristiche del prodotto
Metodo: Confrontare il volume di ricerca delle nostre caratteristiche principali con quelle dei concorrenti su Google Trends (unità: %)
Formula:
Gap di domanda = (ricerca nostra caratteristica - ricerca caratteristica concorrente) / ricerca totale × 100
Esempio:
- Se la domanda di “impermeabilità” scende del 5% o più per 3 giorni consecutivi, sarà necessario aggiornare immediatamente i contenuti della campagna.
Matric 3: Valutazione quantitativa della gestione della crisi
Indicatore:
- Riduzione della ricerca negativa = (ricerca giorno T – ricerca giorno T-7) / ricerca giorno T-7
- Recupero del CTR del marchio = Modifica visibile su
Google Search Console
Script automatico:
if riduzione_ricerca_negativa > 20% & ctr_recupero > 15%:
valutazione = "Gestione della crisi riuscita"
else:
attiva_fase_2
Matric 4: Monitoraggio della sensibilità al prezzo
Fonte dei dati:
- Monitoraggio dei prezzi dei concorrenti su sito ufficiale tramite
Selenium
- Analisi delle tendenze di ricerca su Google per “nome del marchio + calo prezzo”
Logica di reazione:
Se l'aumento delle ricerche del prezzo ridotto supera il 50%, attiva il piano di difesa del prezzo.
Matric 5: Analisi inversa della strategia dei contenuti
Raccolta dati:
- Estrazione dei titoli dei blog/video dei concorrenti tramite
Scrapy
- Creazione di un’analisi di frequenza e modello N-gram
Output:
from sklearn.feature_extraction.text import CountVectorizer
# Esempio: contenuti concorrenti = ["Top 5 app", "Guida completa", "Tendenze 2024"]
vectorizer = CountVectorizer(ngram_range=(2,2))
X = vectorizer.fit_transform(contenuti_concorrenti)
print(vectorizer.get_feature_names_out()) # Esempio: ['top app', 'guida completa']
Matric 6: Monitoraggio in tempo reale degli annunci dei concorrenti
Strumenti:
- Estrazione delle parole chiave dei concorrenti tramite
SpyFu
- Confronto delle parole chiave con le nostre tramite
Pandas
intersezione = len(set(nostre_kw) & set(concorrenti_kw)) / len(nostre_kw)
print(f"Percentuale di competizione delle parole chiave: {intersezione:.0%}")
Reazione:
- Se l’intersezione è > 30%, usa parole chiave a coda lunga
Matric 7: Analisi delle debolezze delle fonti di traffico
Piano:
- Monitoraggio delle fonti di traffico dei concorrenti tramite
SimilarWeb API
- Se un canale ha una dipendenza superiore al 70%, annotalo
Strategia:
- Focalizzati sui loro canali più forti (es. inserisci recensioni nei forum che frequentano)
Strumenti consigliati:
- Raccolta dati: Ahrefs + Python Scraper (con rotazione dei proxy)
- Dashboard in tempo reale: Grafana + Google Data Studio
- Allerta: Se il traffico cambia > 15% in un giorno, invia un allarme
Formula aggiuntiva: Social Media × Dati di ricerca
Discussioni su Twitter → Previsione del picco di ricerca
Formula:
Ricerca tra 3 giorni = (tweet di oggi / media degli ultimi 3 giorni) × Fattore dell'industria
Passaggi:
- Ottieni i tweet tramite
Twitter API
- Calcola la media degli ultimi 3 giorni
- Fattore: Tecnologia = 0.8, Bellezza = 1.2, Finanza = 0.5
Esempio:
Oggi: 1200 tweet su “AI phone”, media = 800
= (1200 / 800) × 0.8 = 1.2× = 20% di crescita prevista
Tendenze su TikTok → Previsione di viralità
Formula:
Score virale = (Crescita delle visualizzazioni in 24 ore + Mediana dei follower) × 0.7
Passaggi:
- Ottieni i dati tramite
TikTok Creative Center
- Crescita =
(Oggi - Ieri) / Ieri
- Calcola la mediana dei follower per i primi 50 creatori
Esempio:
#SummerCare Tag: Crescita = +180%, Mediana = 58000
→ Score virale ≈ (180 + 58000) × 0.7 = buon segnale
Reddit → Previsione dell’intento di acquisto
Formula:
Indice = (Like × 0.4) + (Commenti × 0.2) + (Parole come “compra” × 10)
Passaggi:
- Ottieni i dati sui post tramite
Reddit API
- Conta i like, commenti e parole come “dove comprare”
- Se l’indice > 50, agisci subito
Esempio:
Post cuffie: 1200 like, 350 commenti, 15 “compra”
Score = 1200×0.4 + 350×0.2 + 15×10 = 480 + 70 + 150 = 700 → Aumenta le scorte!
Commenti YouTube → Previsione di acquisto
Formula:
Probabilità di acquisto = (% commenti positivi × 2) + (% commenti di domanda × 0.5)
Passaggi:
- Ottieni 500+ commenti tramite
YouTube API
- Analizza con
TextBlob
from textblob import TextBlob commento = "La fotocamera è fantastica! Dove posso comprarla?" polarità = TextBlob(commento).sentiment.polarity # Risultato: 0.8 (positivo)
- Polarità >0.3 = positivo, “?” significa domanda
Esempio:
60% di commenti positivi, 25% di commenti problematici
Intenzione di acquisto = (60%×2)+(25%×0.5)=120%+12.5%=132.5% → Aumenta l’offerta pubblicitaria
Flusso di Monitoraggio in Tempo Reale Zapier+GT
Flusso di Monitoraggio Base
Scenario:Quando il volume di ricerca per una parola chiave aumenta più del 150% in un giorno, invia immediatamente un’email al team
Passaggi di Configurazione:
Impostazione Trigger Zapier
Scegli “Webhook by Zapier” come trigger
Imposta la modalità Catch Hook
e copia l’URL Webhook generato (esempio: https://hooks.zapier.com/hooks/12345
)
Distribuzione dello Script Python(Google Cloud Functions)
import requests
from pytrends.request import TrendReq
def fetch_gt_data(request):
pytrends = TrendReq()
pytrends.build_payload(kw_list=["metaverso"], timeframe='now 1-d')
data = pytrends.interest_over_time()
# Calcola la crescita giornaliera
today = data.iloc[-1]['metaverso']
yesterday = data.iloc[-2]['metaverso']
growth_rate = (today - yesterday)/yesterday * 100
# Attiva Zapier
if growth_rate > 150:
requests.post(
"URL del tuo Webhook",
json={"keyword": "metaverso", "growth": f"{growth_rate:.1f}%"}
)
return "OK"
Impostazione dell’Azione Zapier
Aggiungi un’azione “Gmail”: invia un’email di avviso quando ricevi i dati del Webhook
Variabili del template dell’email: Il volume di ricerca per {{keyword}}
è aumentato di {{growth}}
, dai un’occhiata subito → Link a Google Trends
Rapporto Settimanale dei Trend Generato Automaticamente
Architettura del Flusso: Google Trends API → Google Sheets → Zapier → ChatGPT → Notion
Passaggi di Configurazione:
Sincronizzazione dei Dati nel Foglio
Usa Google Apps Script
per raccogliere i dati da GT ogni ora e inserirli nel modello Google Sheets
Campi principali: Parola chiave, volume di ricerca settimanale, variazione annuale, query correlate
Condizione di Trigger Zapier
Scegli “Schedule by Zapier” per attivare il trigger ogni venerdì alle 15:00
Azione 1: Ottieni la riga di dati più recente da “Google Sheets”
Azione 2: Genera il report con “OpenAI”
Sei un analista di mercato esperto, crea un report settimanale basato sui seguenti dati:
Top 3 delle parole chiave: {{Top 3 delle parole chiave}}
Parola chiave con la maggiore crescita: {{Parola chiave con la maggiore crescita}} ({{tasso di crescita}})
Cosa monitorare: {{Query correlate}}
Archiviazione Automatica su Notion
Usa l’azione “Notion” per creare una nuova pagina
Aggiungi campi dinamici: {{Contenuto dell'analisi AI}}
+ screenshot della curva dei trend (generato tramite QuickChart
)
Regolazione Dinamica del Budget Pubblicitario
Flusso Completamente Automatizzato: Dati GT → Zapier → Google Ads API → Notifica Slack
Configurazione dettagliata:
Pipeline dati in tempo reale
- Ogni minuto uno
script Python
chiama l’API di Google Trendsnow 1-H
# Codice semplice (può essere eseguito tramite cron)
current_index = requests.get("Google Trends API in tempo reale").json()['default']
if current_index > threshold:
adjust_budget(current_index) # Chiama l'API di Google Ads
Impostazione intermedia tramite Zapier
Trigger: “Webhook” ottiene l’indice delle tendenze attuali
Filtro: continua solo se {{indice}} > 80
Azione 1: “Google Ads” regola l’offerta per la parola chiave
new_bid = old_bid × (1 + (indice - 50)/100)
Azione 2: Invia un avviso al canale #marketing su “Slack”
【Aggiornamento automatico】L'offerta per la parola chiave {{keyword}} è cambiata da {{old_bid}} a {{new_bid}}
Filtro delle tendenze in 3 fasi
Fase 1: Verifica dell’autenticità
Obiettivo: Rimuovere tendenze false o temporanee
Criteri di validazione:
Aumento costante su più piattaforme
- Aumento del 50% in una settimana su Google Trends
- Aumento di almeno il 30% nei tweet correlati
- 20+ post su Reddit al giorno
Crescita nelle ricerche correlate
# Verifica le ricerche correlate in crescita
related_queries = pytrends.related_queries()
rising_queries = related_queries['rising'].sort_values('value', ascending=False)
if len(rising_queries) < 5:
return False
Esempio:
Il topic “AI Phone Case” ha passato la validazione:
- Aumento del 120% su GT, +45% nei tweet
- Il termine correlato “AI Cooling Case” è aumentato del 300%
Risultato: Fase 1 superata
Fase 2: Verifica della sostenibilità
Metodo: Ciclo di vita della tendenza
Metriche principali:
Confronto con il picco storico
current_index = 80
historical_peak = gt_data['AI Phone Case'].max()
if current_index < historical_peak * 0.3:
return "La tendenza sta scendendo"
Salute dei termini correlati
- Parole positive (“recensione” / “comprare”) ≥ 60%
- Parole negative (“lamentela” / “difetto”) ≤ 10%
Strumento:
Analisi del sentiment con TextBlob
:
from textblob import TextBlob
sentiment = TextBlob("AI case salvato dalla caduta, ottimo!").sentiment.polarity
if sentiment < 0.2:
return False
Esempio:
L’indice per “AI Phone Case” è il 65% del picco storico, parole positive 78%
Risultato: Tendenza in crescita, fase 2 superata
Fase 3: Valutazione della capacità commerciale
Formula di base:
Indice commerciale = (volume di ricerca con intento d'acquisto × 0.6) + (engagement recensioni × 0.4)
Raccolta dati:
Monitoraggio delle ricerche con intenti d’acquisto
buy_keywords = ["dove comprare", "prezzo", "sconto"]
buy_volume = sum([gt_data[keyword] for keyword in buy_keywords])
Engagement recensioni
YouTube: Mi piace / visualizzazioni ≥ 5%
Xiaohongshu: ≥ 500 preferiti
Decisioni automatiche:
if commercial_score >= 75:
Avviare campagna e-commerce + SEO
elif commercial_score >= 50:
Avviare solo marketing dei contenuti
else:
Abbandonare il topic
Esempio:
- Volume di ricerca con intento d’acquisto per “AI Phone Case” = 1200/giorno
- Tasso di mi piace per le recensioni video = 7.2%
- Indice commerciale = (1200×0.6)+(7.2×0.4)=72+2.88=74.88 → Avviare marketing dei contenuti
Flusso di esecuzione del filtro a tre livelli
graph TD
A[Banca di idee] --> B{Primo livello: Verifica della popolarità}
B -- Accettato --> C{Secondo livello: Potenziale di lungo periodo}
B -- Rifiutato --> D[Archivio]
C -- Accettato --> E{Terzo livello: Capacità di conversione}
C -- Rifiutato --> D
E -- Accettato --> F[Esecuzione principale]
E -- Rifiutato --> G[Osservazione]
SEMrush × Strategia di ottimizzazione ROI di GT
Motore di regolazione dinamica delle offerte
Logica principale: Ottimizzazione dinamica delle offerte combinando i dati delle offerte per parole chiave della concorrenza di SEMrush con gli indici di tendenze di ricerca in tempo reale di GT.
Passaggio 1: Raccolta dei dati
# Ottenere il CPC della concorrenza tramite l'API di SEMrush (esempio)
import requests
semrush_api = "https://api.semrush.com/?key=YOUR_KEY&type=phrase_all&phrase=vr%20glasses"
response = requests.get(semrush_api).text.split("\n")
cpc = float(response[1].split(";")[8]) # Estrai il valore del CPC
# Ottenere l'indice di ricerca in tempo reale di GT (da 0 a 100)
gt_index = pytrends.interest_over_time()['vr glasses'].iloc[-1]
Formula per la regolazione delle offerte:
Offerta suggerita = CPC della concorrenza × (Indice di GT / 100) × Fattore competitivo
(Fattore competitivo: Nuovo mercato = 1.2; Mercato saturo = 0.8)
Sincronizzazione automatica con Google Ads
# Aggiornamento dell'offerta tramite API di Google Ads (versione semplificata)
ads_api.update_keyword_bid(keyword_id=123, new_bid=offerta_suggerita)
Esempio: Quando l’indice di GT per “vr glasses” aumenta da 40 a 70, l’offerta diventa:
1.5 × (70/100) × 1.2 = €1.26 → Riduzione del 16% nel costo per clic
Strategia delle parole chiave: attacco e difesa
Passaggi:
- SEMrush: Estrai le prime 50 parole chiave con maggiore traffico della concorrenza
- Google Trends: Seleziona le parole chiave con crescita mensile della ricerca > 20%
- Creazione della heatmap: Rosso = alto valore + alta concorrenza; Blu = basso valore + bassa concorrenza
import matplotlib.pyplot as plt
plt.scatter(x=competizione, y=gt_growth, c=cpc_parola_chiave, cmap='RdYlGn')
plt.colorbar(label='CPC (€)')
Riassegnazione dinamica del budget
Come fare:
- Previsione: Allena un modello ARIMA sui dati storici di GT per prevedere il volume di ricerca dei prossimi 7 giorni
from statsmodels.tsa.arima.model import ARIMA
model = ARIMA(gt_dati, order=(3,1,1))
results = model.fit()
forecast = results.forecast(steps=7)
Assegnazione del budget basata su SEMrush:
- Valore parola chiave = (Tasso di conversione × Valore medio ordine) ÷ CPC
- Formula:
Budget giornaliero = (Volume previsto × Valore parola chiave) ÷ Budget totale
In un’epoca in cui i dati sono onnipresenti, il 99% delle aziende ancora pianifica il futuro in base ai trend del passato.
La vera forza di Google Trends non sta nel “prevedere” il futuro — ma nel ridurre il divario tra “intento di ricerca” e “azione aziendale”.