A forma tradicional de analisar tendências de palavras-chave é passiva — só serve para ver dados depois que eles já aconteceram, e não ajuda a descobrir oportunidades de negócio de forma ativa.
O método que vou compartilhar hoje é mais poderoso que o Google Trends: ele quebra as barreiras de região e tempo, e permite observar o mercado em tempo real. Já foi usado em mais de 20 indústrias, ajudando empresas a prever mudanças de mercado com até 14 dias de antecedência em relação à concorrência.
3 truques escondidos da API do Google Trends que não estão na documentação oficial
Coletar dados por cidade específica (quebrando a limitação por estado ou país)
- Problema: a interface oficial só permite ver até o nível de província/estado
- Solução: inserir manualmente o código da cidade no parâmetro
geo
da API
# Exemplo: buscar tendências de "vr glasses" para Los Angeles (código 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]) # imprime os primeiros 500 caracteres para checar
Resultado: dá pra pegar dados super específicos de mais de 3 mil cidades, tipo Manhattan (US-NY-501) ou o centro de Tóquio (JP-13-1132)
3 formas de encontrar os geo-códigos de cidades no Google Trends
Método 1: buscar na Wikipédia
Procure a cidade na Wikipedia (ex: Los Angeles)
Do lado direito, na seção de dados geográficos
https://zh.wikipedia.org/wiki/洛杉矶
# Vai ter algo como: GNS=1662328
Código no formato: US-CA-1662328
(país-estado-GNS)
Método 2: baixar a base do GeoNames
- Acesse o site do GeoNames
- Baixe o
cities15000.zip
(cidades com mais de 15 mil habitantes)
Abra no Excel e filtre pelo nome e país
5368361,Los Angeles,US,CA,34.05223,-118.24368,PPLA2,...
# Colunas: GeoNameID | Nome | País | Estado | Coordenadas...
- Formato final:
US-CA-5368361
Método 3: espionar pelo Google Trends
- Abra o Google Trends
- Aperte F12 para abrir o DevTools → vá em “Network”
- Pesquise o nome da cidade, tipo “New York”
Ache o parâmetro geo
nas requisições:
GET /trends/api/explore?geo=US-NY-501&hl=zh-CN
# O código US-NY-501 representa Nova York
Ver dados em tempo real (com atualização minuto a minuto)
- Problema: os dados normais têm atraso de 4 a 8 horas
- Solução: use o valor
now 1-H
no parâmetrotime
— isso mostra os últimos 60 minutos
# Teste rápido no terminal (usa 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'
Resultado: você vê o índice de busca de minuto em minuto (ex: 07:45 = 87, 07:46 = 92)
Ver dados históricos além dos últimos 5 anos
- Problema: a interface só mostra dados dos últimos 5 anos
- Solução: faz várias chamadas para cada ano desde 2004 e junta tudo
Como fazer:
- Crie uma requisição para cada intervalo: 2004-2005, 2005-2006, etc.
- Use o parâmetro
comparisonItem
para manter a mesma palavra-chave - Depois junte tudo com Pandas
# Exemplo de como juntar os dados
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()
Execução: todas as requisições devem incluir headers = {"User-Agent": "Mozilla/5.0"}
para simular o acesso via navegador. Recomenda-se fazer no máximo 3 requisições por minuto para evitar bloqueios.
Observação: esta operação exige que você tenha o ambiente Python instalado (versão 3.8 ou superior recomendada), e que seus arquivos de dados estejam no formato JSON (como 2004-2005.json
e 2005-2006.json
).
Framework de previsão com Aprendizado de Máquina + dados do GT
Padrão de defasagem
- Dor: há um atraso entre o volume de buscas no Google Trends e a demanda real de mercado (por exemplo, a pessoa pesquisa “protetor solar”, mas só compra 2 semanas depois)
- Abordagem: usar análise de correlação defasada para encontrar a melhor janela de previsão
import pandas as pd
from scipy.stats import pearsonr
# Carregar os dados (sales_df = dados de vendas, gt_df = dados de busca)
combined = pd.merge(sales_df, gt_df, on='date')
# Calcular correlações para defasagens de 1 a 30 dias
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)
# Visualizar o número de dias com maior correlação (geralmente é o pico)
pd.Series(correlations).plot(title='Análise de Correlação Defasada')
Algoritmo de detecção de anomalias
Dor: alertas baseados em limite fixo não captam mudanças graduais nas tendências
Método: Detecção de pontos de ruptura com base no 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
# Exemplo de uso (os dias com alerta serão marcados como True)
gt_df['alert'] = detect_anomaly(gt_df['search_index'])
print(gt_df[gt_df['alert']].index)
Modelo de previsão personalizado (em Python)
Ideia principal: combinar dados de busca com indicadores externos (como clima ou ações) para construir um modelo.
Modelo:
# Criar variáveis de séries temporais
df['7d_ma'] = df['search_index'].rolling(7).mean() # Média móvel de 7 dias
df['yoy'] = df['search_index'] / df.shift(365)['search_index'] # Comparação ano a ano
# Adicionar dados externos (como temperatura via API de clima)
df['temperature'] = get_weather_data()
# Modelo de previsão simples (como regressão linear)
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(df[['7d_ma', 'yoy', 'temperature']], df['sales'])
Validação e ajuste do modelo
Divisão de dados: dividimos os dados por tempo — 80% para treino, 20% para teste.
split_idx = int(len(df)*0.8)
train = df.iloc[:split_idx]
test = df.iloc[split_idx:]
Métrica de avaliação: usamos MAE (erro absoluto médio) em vez de precisão.
from sklearn.metrics import mean_absolute_error
pred = model.predict(test[features])
print(f'MAE: {mean_absolute_error(test["sales"], pred)}')
Dicas para otimização:
Ajuste a janela da média móvel (window
) com base no seu setor.
Você também pode adicionar termos relacionados no Google Trends como sinais de intenção de busca.
Monitoramento de concorrência em tempo real: 7 ângulos
Ângulo 1: análise de palavras-chave relacionadas à marca
Dor: concorrentes estão pegando tráfego aparecendo em buscas com seu nome (ex: alguém busca “SuaMarca avaliação” e o site do concorrente aparece no topo).
Solução:
- Use
Ahrefs
para exportar palavras-chave de marca dos concorrentes - Use a
Google Trends API
para pegar dados de popularidade - Crie um mapa de calor das palavras-chave a proteger ou atacar (exemplo de código):
import seaborn as sns
# Exemplo de dados: matrix_data = {"SuaMarca": ["avaliação", "site oficial"], "ConcorrenteX": ["avaliação", "promoção"]}
sns.heatmap(matrix_data, annot=True, cmap="YlGnBu")
Métrica 2: Análise da Demanda por Funcionalidades do Produto
Método: comparar o volume de buscas por funcionalidades principais do nosso produto com as do concorrente no Google Trends (unidade: %)
Fórmula:
Lacuna de demanda = (Buscas da nossa função - Buscas da função concorrente) / Buscas totais × 100
Exemplo prático:
- Se por 3 dias seguidos a demanda por “à prova d’água” cair 5% ou mais, é hora de ajustar urgente o conteúdo da campanha.
Métrica 3: Avaliação Quantitativa da Gestão de Crise
Indicadores usados:
- Redução de buscas negativas = (buscas negativas no dia T – no dia T-7) / no dia T-7
- Recuperação do CTR da marca = mudança observada no
Google Search Console
Script automático:
if reducao_buscas_negativas > 20% & recuperacao_ctr > 15%:
avaliacao = "Gestão de crise eficaz"
else:
ativar fase 2 da resposta
Métrica 4: Monitoramento da Sensibilidade ao Preço
Fontes de dados:
- Monitorar preços nos sites oficiais dos concorrentes (via
Selenium
) - Acompanhar buscas no Google por “nome do concorrente + queda de preço”
Lógica de reação:
Se a queda de preço gerar aumento >50% nas buscas em relação à semana anterior, ativar plano de proteção de preços.
Métrica 5: Análise Inversa da Estratégia de Conteúdo
Como coletamos os dados:
- Usamos
Scrapy
para pegar títulos de blogs/vídeos dos concorrentes - Fazemos análise de frequência e geramos modelo N-gram
Resultado:
from sklearn.feature_extraction.text import CountVectorizer
# Exemplo: conteúdo dos concorrentes = ["Top 5 apps", "Guia completo", "Tendências 2024"]
vectorizer = CountVectorizer(ngram_range=(2,2))
X = vectorizer.fit_transform(conteudo_concorrente)
print(vectorizer.get_feature_names_out()) # resultado: ['top apps', 'guia completo']
Métrica 6: Rastreamento em tempo real dos anúncios dos concorrentes
Ferramentas:
- Captura de palavras-chave dos concorrentes via
SpyFu
- Comparação com nossas palavras usando
Pandas
intersecao = len(set(nossas_palavras) & set(palavras_concorrente)) / len(nossas_palavras)
print(f"Taxa de competição em palavras-chave: {intersecao:.0%}")
Resposta:
- Se interseção >30%, usar palavras-chave long-tail
Métrica 7: Análise das Vulnerabilidades nas Fontes de Tráfego
Plano:
- Usar
SimilarWeb API
para analisar fontes de tráfego dos concorrentes - Ver se eles dependem muito de algum canal (tipo: SEO >70%)
Estrategicamente:
- Atacar os canais-chave do concorrente (ex: fazer reviews nos fóruns que ele domina)
Ferramentas sugeridas:
- Coleta de dados: Ahrefs + Python Scraper (com rotação de proxy)
- Dashboard em tempo real: Grafana + Google Data Studio
- Alertas: se o tráfego variar >15% num dia, disparar notificação
Fórmula extra: redes sociais × dados de busca
Discussões no Twitter → previsão de pico nas buscas
Fórmula:
Busca prevista após 3 dias = (tweets de hoje / média de 3 dias) × fator do setor
Etapas:
- Coletar tweets via
Twitter API
- Calcular média de 3 dias
- Fator: tech = 0.8, beleza = 1.2, finanças = 0.5
Exemplo:
Hoje: 1200 tweets sobre “celular com AI”, média = 800
Previsão = (1200 / 800) × 0.8 = 1.2× (crescimento de 20%)
Tendência no TikTok → prever viralização
Fórmula:
Viralização = (Crescimento de views em 24h + mediana de seguidores) × 0.7
Etapas:
- Dados do
TikTok Creative Center
- Fórmula de crescimento:
(agora - ontem) / ontem
- Calcular mediana dos seguidores dos 50 principais criadores
Exemplo:
Hashtag #SummerCare: crescimento = +180%, mediana = 58000
Viralização ≈ (180 + 58000) × 0.7 ≈ 89.3% → pode lançar!
Índice de intenção de compra vindo do Reddit
Fórmula:
Índice = (likes × 0.4) + (comentários × 0.2) + (palavras como “comprar” × 10)
Etapas:
- Coletar posts via
Reddit API
- Contar likes, comentários e frases como “onde comprar”, “quero um”
- Se índice >50 — executar ação
Exemplo:
Post de fone de ouvido: 1200 likes, 350 comentários, 15 “comprar”
Índice = 1200×0.4 + 350×0.2 + 15×10 = 480 + 70 + 150 = 700 → reforçar estoque urgente!
Análise de comentários no YouTube → prever compra
Fórmula:
Intenção de compra = (% comentários positivos × 2) + (% perguntas × 0.5)
Etapas:
- Coletar 500+ comentários com
YouTube API
- Analisar com
TextBlob
(Python)from textblob import TextBlob comentario = "A câmera é ótima! Onde posso comprar?" polaridade = TextBlob(comentario).sentiment.polarity # resultado: 0.8 (positivo)
- Polaridade > 0.3 = positivo, presença de “?” = é pergunta
Exemplo:
60% de comentários positivos, 25% de comentários com reclamações
Intenção de compra = (60%×2)+(25%×0.5)=120%+12.5%=132.5% → aumentar o lance do anúncio
Fluxo de Monitoramento em Tempo Real com Zapier + GT
Fluxo de monitoramento básico
Cenário: quando o volume de buscas por uma palavra-chave aumenta mais de 150% em um único dia, envia um alerta por e-mail para a equipe
Passos de configuração:
Configuração do gatilho no Zapier
Escolha “Webhook by Zapier” como o gatilho
Configure no modo Catch Hook
e copie a URL do Webhook gerada (exemplo: https://hooks.zapier.com/hooks/12345
)
Deploy do 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()
# Calcular a taxa de crescimento diária
today = data.iloc[-1]['Metaverso']
yesterday = data.iloc[-2]['Metaverso']
growth_rate = (today - yesterday)/yesterday * 100
# Acionar Zapier
if growth_rate > 150:
requests.post(
"Sua URL do Webhook",
json={"keyword": "Metaverso", "growth": f"{growth_rate:.1f}%"}
)
return "OK"
Configuração da ação no Zapier
Adicione a ação “Gmail”: quando os dados chegarem via Webhook, envie um e-mail de alerta
Modelo de e-mail: buscas por {{keyword}}
aumentaram {{growth}}
, confira agora → Link do Google Trends
Geração automática de relatório semanal de tendências
Arquitetura do fluxo: API do Google Trends → Google Sheets → Zapier → ChatGPT → Notion
Passos de configuração:
Sincronizar dados para a planilha
Use Google Apps Script
para puxar os dados do GT para o modelo do Google Sheets a cada hora
Campos-chave: palavra-chave, volume semanal, variação ano a ano, buscas relacionadas
Condição de gatilho no Zapier
Escolha “Schedule by Zapier” para disparar toda sexta-feira às 15h
Ação 1: “Google Sheets” — pegar a linha de dados mais recente
Ação 2: “OpenAI” — gerar relatório de análise
Você é um analista de marketing experiente. Com base nos dados abaixo, gere um relatório semanal:
Top 3 palavras-chave: {{Top 3 palavras-chave}}
Palavra com maior crescimento: {{Palavra em alta}} ({{Taxa de crescimento}})
Palavras relacionadas que merecem atenção: {{Consultas relacionadas}}
Arquivamento automático no Notion
Use a ação “Notion” para criar uma nova página
Insira os campos dinâmicos: {{Análise da IA}}
+ gráfico de tendências (gerado com QuickChart
)
Ajuste dinâmico do orçamento de anúncios
Fluxo totalmente automatizado: Dados do GT → Zapier → API do Google Ads → Alerta no Slack
Configuração detalhada:
Pipeline de dados em tempo real
- Um script em
Python
consulta a API do Google Trendsnow 1-H
a cada minuto
# Código simplificado (pode rodar via cron)
current_index = requests.get("API do Google Trends tempo real").json()['default']
if current_index > threshold:
adjust_budget(current_index) # Chamada da API do Google Ads
Configuração intermediária com Zapier
Gatilho: “Webhook” recebe o índice de tendência atual
Filtro: só continua se {{índice}} > 80
Ação 1: “Google Ads” ajusta o lance da palavra-chave
novo_lance = lance_antigo × (1 + (índice - 50)/100)
Ação 2: “Slack” envia alerta para o canal #marketing
【Atualização automática】Palavra-chave {{palavra}} teve lance alterado de {{lance_antigo}} para {{novo_lance}}
Filtro de tendências em 3 etapas
Etapa 1: Verificação de autenticidade
Objetivo: eliminar fake trends ou hypes passageiros
Critérios de validação:
Crescimento consistente em várias plataformas
- Aumento de 50% no Google Trends em uma semana
- Volume de tweets relevantes subiu pelo menos 30%
- Mais de 20 posts/dia sobre o tema no Reddit
Crescimento em pesquisas relacionadas
# Verifica pesquisas relacionadas em alta
related_queries = pytrends.related_queries()
rising_queries = related_queries['rising'].sort_values('value', ascending=False)
if len(rising_queries) < 5:
return False
Exemplo:
Tema “capa de celular com IA” passou na validação:
- GT subiu 120% na semana, tweets +45%
- Termo relacionado “capa com IA e resfriamento” +300%
Resultado: passou a etapa 1
Etapa 2: Verificação de sustentabilidade
Método: ciclo de vida da tendência
Métricas principais:
Comparação com pico histórico
current_index = 80
historical_peak = gt_data['capa IA'].max()
if current_index < historical_peak * 0.3:
return "Tendência em queda"
Saúde dos termos relacionados
- Palavras positivas (“review” / “comprar”) ≥ 60%
- Palavras negativas (“reclamar” / “bugado”) ≤ 10%
Ferramenta:
Análise de sentimento com TextBlob
:
from textblob import TextBlob
sentiment = TextBlob("capa IA com proteção contra quedas é top!").sentiment.polarity
if sentiment < 0.2:
return False
Exemplo:
Índice da “capa IA” = 65% do pico, termos positivos 78%
Resultado: tendência está crescendo, passa a etapa 2
Etapa 3: Avaliação do potencial comercial
Fórmula base:
Índice comercial = (volume de buscas de intenção × 0.6) + (engajamento com reviews × 0.4)
Coleta de dados:
Monitoramento de buscas com intenção de compra
buy_keywords = ["onde comprar", "preço", "desconto"]
buy_volume = sum([gt_data[keyword] for keyword in buy_keywords])
Engajamento com reviews
YouTube: curtidas / views ≥ 5%
Xiaohongshu: ≥ 500 favoritos
Decisão automática:
if commercial_score >= 75:
iniciar campanha ecommerce + SEO
elif commercial_score >= 50:
apenas marketing de conteúdo
else:
descartar o tema
Exemplo:
- “Capa IA” tem 1200 buscas com intenção por dia
- Reviews em vídeo: 7.2% de curtidas
- Índice comercial = (1200×0.6)+(7.2×0.4)=72+2.88=74.88 → começar marketing de conteúdo
Fluxo de filtragem em três etapas
graph TD
A[Banco de Tópicos] --> B{Etapa 1: Verificação de Popularidade}
B -- Aprovado --> C{Etapa 2: Potencial de Longo Prazo}
B -- Rejeitado --> D[Arquivo]
C -- Aprovado --> E{Etapa 3: Potencial de Conversão}
C -- Rejeitado --> D
E -- Aprovado --> F[Conteúdo Âncora]
E -- Rejeitado --> G[Observação]
SEMrush × Estratégia de otimização com Google Trends
Mecanismo dinâmico de ajuste de lances
Lógica básica: usar os dados de CPC do SEMrush junto com o índice atual de tendências do Google Trends para ajustar lances automaticamente.
Etapa 1: Coleta de Dados
# Pegando o CPC via API do SEMrush (exemplo)
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]) # Extraindo o CPC
# Pegando índice em tempo real do Google Trends (escala de 0 a 100)
gt_index = pytrends.interest_over_time()['vr glasses'].iloc[-1]
Fórmula de ajuste do lance:
Lance sugerido = CPC × (Índice do Google Trends / 100) × Fator de Mercado
(fator: mercado emergente = 1.2; mercado competitivo = 0.8)
Sincronização com Google Ads em tempo real
# Atualizando lance via API do Google Ads (exemplo)
ads_api.update_keyword_bid(keyword_id=123, new_bid=lance_sugerido)
Exemplo: Se o índice GT de “vr glasses” subir de 40 para 70, o novo lance será:
1.5 × (70/100) × 1.2 = $1.26 → CPC efetivo cai 16%
Matriz ofensiva e defensiva de palavras-chave
Procedimento:
- SEMrush: encontre as 50 palavras-chave que mais trazem tráfego para os concorrentes
- Google Trends: filtre as que têm crescimento mensal > 20%
- Mapa de calor: vermelho = alto valor + alta concorrência; azul = baixo valor + baixa concorrência
import matplotlib.pyplot as plt
plt.scatter(x=concorrencia, y=crescimento_gt, c=cpc_palavras, cmap='RdYlGn')
plt.colorbar(label='CPC ($)')
Alocação dinâmica de orçamento
Etapas de cálculo:
- Previsão: treinar modelo ARIMA com dados históricos do GT para prever os próximos 7 dias de volume de busca
from statsmodels.tsa.arima.model import ARIMA
model = ARIMA(dados_gt, order=(3,1,1))
results = model.fit()
forecast = results.forecast(steps=7)
Distribuição orçamentária baseada no SEMrush:
- Valor da palavra-chave = (Taxa de conversão × ticket médio) ÷ CPC
- Fórmula:
Orçamento diário = (volume previsto × valor da palavra) ÷ orçamento total
Na era dos dados, 99% das empresas ainda planejam o futuro com base nas tendências de ontem.
O poder do Google Trends não é prever o futuro, e sim encurtar o caminho entre “intenção de busca” e “ação de negócios”.