Como criar um AI Agent inteligente para automatizar campanhas Google Ads usando N8n, SerpAPI e WordPress com 5 exemplos práticos
Tutorial completo para criar um AI Agent que automatiza pesquisa de palavras-chave, criação de landing pages e otimização de campanhas Google Ads usando N8n, SerpAPI e WordPress.
AI Agents são poderosos, mas precisam de supervisão. Configure alertas para budget, performance e qualidade dos anúncios. Revise os resultados semanalmente e ajuste os parâmetros conforme necessário.
IA analisa dados de concorrentes em tempo real, identifica oportunidades de palavras-chave e otimiza lances automaticamente.
Automação elimina desperdício de budget, ajusta lances em tempo real e pausa campanhas com baixa performance.
Cria centenas de campanhas personalizadas, landing pages dinâmicas e testa variações automaticamente.
Enquanto concorrentes fazem tudo manual, você opera 24/7 com inteligência artificial otimizando resultados.
AI Agents são poderosos, mas precisam de supervisão. Configure alertas para budget, performance e qualidade dos anúncios. Revise os resultados semanalmente e ajuste os parâmetros conforme necessário.
Sistema completo que integra N8n, SerpAPI, WordPress e Google Ads para automação inteligente de campanhas.
Implementações reais com código completo para você colocar em produção hoje mesmo.
Setup inicial do workflow principal com triggers e conexões
{
"name": "AI Agent Google Ads",
"nodes": [
{
"parameters": {
"httpMethod": "POST",
"path": "webhook-keyword-research",
"responseMode": "responseNode"
},
"name": "Webhook Trigger",
"type": "n8n-nodes-base.webhook",
"position": [240, 300]
},
{
"parameters": {
"url": "https://serpapi.com/search",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "serpApi",
"sendQuery": true,
"queryParameters": {
"parameters": [
{
"name": "engine",
"value": "google"
},
{
"name": "q",
"value": "={{$json.keyword}}"
},
{
"name": "location",
"value": "Brazil"
},
{
"name": "hl",
"value": "pt"
},
{
"name": "gl",
"value": "br"
}
]
}
},
"name": "SerpAPI Search",
"type": "n8n-nodes-base.httpRequest",
"position": [460, 300]
}
],
"connections": {
"Webhook Trigger": {
"main": [
[
{
"node": "SerpAPI Search",
"type": "main",
"index": 0
}
]
]
}
}
}
// Configuração SerpAPI
{
"name": "SerpAPI",
"type": "serpApi",
"data": {
"api_key": "sua_serpapi_key_aqui"
}
}
// Configuração Google Ads
{
"name": "Google Ads API",
"type": "googleAdsApi",
"data": {
"client_id": "seu_client_id",
"client_secret": "seu_client_secret",
"refresh_token": "seu_refresh_token",
"developer_token": "seu_developer_token"
}
}
// Configuração WordPress
{
"name": "WordPress",
"type": "wordpressApi",
"data": {
"url": "https://seusite.com",
"username": "admin",
"password": "sua_application_password"
}
}
Configure variáveis de ambiente para todas as credenciais. Use o N8n Cloud para evitar problemas de configuração local. Teste cada nó individualmente antes de conectar o workflow completo.
Análise de concorrentes e extração de dados de SERP
{
"parameters": {
"url": "https://serpapi.com/search",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "serpApi",
"sendQuery": true,
"queryParameters": {
"parameters": [
{
"name": "engine",
"value": "google"
},
{
"name": "q",
"value": "={{$json.keyword}} site:{{$json.competitor_domain}}"
},
{
"name": "location",
"value": "Brazil"
},
{
"name": "hl",
"value": "pt"
},
{
"name": "gl",
"value": "br"
},
{
"name": "num",
"value": "100"
}
]
}
},
"name": "SerpAPI Competitor Analysis",
"type": "n8n-nodes-base.httpRequest"
}
// Nó JavaScript para processar resultados SerpAPI
const serpResults = $input.all();
const processedData = [];
for (const result of serpResults) {
const organicResults = result.json.organic_results || [];
for (const organic of organicResults) {
processedData.push({
title: organic.title,
link: organic.link,
snippet: organic.snippet,
position: organic.position,
domain: new URL(organic.link).hostname,
keyword: result.json.search_parameters.q,
location: result.json.search_parameters.location,
timestamp: new Date().toISOString()
});
}
}
// Análise de palavras-chave dos títulos
const keywordAnalysis = processedData.map(item => {
const titleWords = item.title.toLowerCase().split(' ');
const snippetWords = item.snippet.toLowerCase().split(' ');
return {
...item,
title_keywords: titleWords.filter(word => word.length > 3),
snippet_keywords: snippetWords.filter(word => word.length > 3),
estimated_traffic: Math.floor(Math.random() * 10000) + 100
};
});
return keywordAnalysis.map(item => ({ json: item }));
Lista estruturada com títulos, snippets, posições e palavras-chave dos concorrentes. Dados prontos para análise de IA e criação de campanhas otimizadas.
Geração dinâmica de páginas otimizadas para conversão
// Nó WordPress - Criar Post/Página
{
"parameters": {
"resource": "post",
"operation": "create",
"title": "={{$json.keyword}} - Solução Completa",
"content": `
<div class="landing-page-container">
<header class="hero-section">
<h1>{{$json.keyword}} - A Solução que Você Procura</h1>
<p class="hero-subtitle">
Descubra como {{$json.keyword.toLowerCase()}} pode transformar
seus resultados em apenas 30 dias
</p>
<button class="cta-button" onclick="scrollToCTA()">
Quero Saber Mais
</button>
</header>
<section class="benefits-section">
<h2>Por que Escolher Nossa Solução?</h2>
<div class="benefits-grid">
{{#each benefits}}
<div class="benefit-card">
<h3>{{title}}</h3>
<p>{{description}}</p>
</div>
{{/each}}
</div>
</section>
<section class="social-proof">
<h2>Mais de 1.000 Clientes Satisfeitos</h2>
<div class="testimonials">
{{#each testimonials}}
<blockquote>
<p>"{{quote}}"</p>
<cite>- {{author}}, {{company}}</cite>
</blockquote>
{{/each}}
</div>
</section>
<section id="cta-section" class="final-cta">
<h2>Pronto para Começar?</h2>
<p>Não perca mais tempo. Comece hoje mesmo!</p>
<form class="lead-form">
<input type="email" placeholder="Seu melhor e-mail" required>
<input type="tel" placeholder="Seu WhatsApp" required>
<button type="submit">Quero Acesso Gratuito</button>
</form>
</section>
</div>
<style>
.landing-page-container { max-width: 1200px; margin: 0 auto; }
.hero-section { text-align: center; padding: 80px 20px; }
.hero-section h1 { font-size: 3rem; margin-bottom: 20px; }
.cta-button {
background: #ff6b35;
color: white;
padding: 15px 30px;
border: none;
border-radius: 5px;
font-size: 1.2rem;
cursor: pointer;
}
.benefits-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 30px; }
.benefit-card { padding: 30px; background: #f8f9fa; border-radius: 10px; }
.lead-form { display: flex; flex-direction: column; max-width: 400px; margin: 0 auto; }
.lead-form input, .lead-form button { margin: 10px 0; padding: 15px; border-radius: 5px; }
</style>
<script>
function scrollToCTA() {
document.getElementById('cta-section').scrollIntoView({ behavior: 'smooth' });
}
document.querySelector('.lead-form').addEventListener('submit', function(e) {
e.preventDefault();
// Integração com CRM/Email Marketing
const formData = new FormData(this);
fetch('/api/leads', {
method: 'POST',
body: formData
}).then(response => {
if(response.ok) {
alert('Obrigado! Em breve entraremos em contato.');
}
});
});
</script>
`,
"status": "publish",
"slug": "={{$json.keyword.toLowerCase().replace(/\s+/g, '-')}}",
"meta": {
"description": "={{$json.meta_description}}",
"keywords": "={{$json.keywords.join(', ')}}"
}
}
}
// Nó OpenAI GPT-4 para gerar conteúdo
{
"parameters": {
"model": "gpt-4",
"messages": [
{
"role": "system",
"content": "Você é um especialista em copywriting para landing pages. Crie conteúdo persuasivo e otimizado para conversão."
},
{
"role": "user",
"content": `Crie uma landing page para a palavra-chave "{{$json.keyword}}".
Inclua:
1. 5 benefícios principais
2. 3 depoimentos realistas
3. Meta description otimizada
4. Lista de palavras-chave relacionadas
5. Call-to-action persuasivo
Formato JSON:
{
"benefits": [{"title": "", "description": ""}],
"testimonials": [{"quote": "", "author": "", "company": ""}],
"meta_description": "",
"keywords": [],
"cta_text": ""
}`
}
],
"temperature": 0.7,
"max_tokens": 2000
}
}
Landing page criada automaticamente com conteúdo otimizado, design responsivo e formulário de captura integrado. Pronta para receber tráfego pago.
Setup completo de campanhas com budget e lances otimizados
// Nó HTTP Request - Google Ads API
{
"parameters": {
"url": "https://googleads.googleapis.com/v14/customers/{{$json.customer_id}}/campaigns:mutate",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "googleAdsApi",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "developer-token",
"value": "={{$credentials.googleAdsApi.developer_token}}"
}
]
},
"sendBody": true,
"bodyParameters": {
"parameters": [
{
"name": "operations",
"value": [
{
"create": {
"name": "AI Agent - {{$json.keyword}}",
"status": "ENABLED",
"advertisingChannelType": "SEARCH",
"biddingStrategyType": "TARGET_CPA",
"targetCpa": {
"targetCpaMicros": "{{Math.floor($json.target_cpa * 1000000)}}"
},
"campaignBudget": {
"amountMicros": "{{Math.floor($json.daily_budget * 1000000)}}",
"deliveryMethod": "STANDARD"
},
"networkSettings": {
"targetGoogleSearch": true,
"targetSearchNetwork": true,
"targetContentNetwork": false,
"targetPartnerSearchNetwork": false
},
"geoTargetTypeSetting": {
"positiveGeoTargetType": "PRESENCE_OR_INTEREST",
"negativeGeoTargetType": "PRESENCE"
}
}
}
]
}
]
}
}
}
// Criação automática de Ad Groups
{
"parameters": {
"url": "https://googleads.googleapis.com/v14/customers/{{$json.customer_id}}/adGroups:mutate",
"sendBody": true,
"bodyParameters": {
"parameters": [
{
"name": "operations",
"value": [
{
"create": {
"name": "{{$json.keyword}} - Exact Match",
"status": "ENABLED",
"type": "SEARCH_STANDARD",
"campaign": "customers/{{$json.customer_id}}/campaigns/{{$json.campaign_id}}",
"cpcBidMicros": "{{Math.floor($json.max_cpc * 1000000)}}"
}
}
]
}
]
}
}
}
// Criação de palavras-chave
{
"parameters": {
"url": "https://googleads.googleapis.com/v14/customers/{{$json.customer_id}}/adGroupCriteria:mutate",
"sendBody": true,
"bodyParameters": {
"parameters": [
{
"name": "operations",
"value": "={{$json.keywords.map(keyword => ({
create: {
adGroup: `customers/${$json.customer_id}/adGroups/${$json.ad_group_id}`,
status: 'ENABLED',
keyword: {
text: keyword.text,
matchType: keyword.match_type
},
finalUrls: [`https://seusite.com/${keyword.text.toLowerCase().replace(/\s+/g, '-')}`]
}
}))}"
}
]
}
}
}
// Anúncios responsivos otimizados
{
"parameters": {
"url": "https://googleads.googleapis.com/v14/customers/{{$json.customer_id}}/adGroupAds:mutate",
"sendBody": true,
"bodyParameters": {
"parameters": [
{
"name": "operations",
"value": [
{
"create": {
"adGroup": "customers/{{$json.customer_id}}/adGroups/{{$json.ad_group_id}}",
"status": "ENABLED",
"ad": {
"responsiveSearchAd": {
"headlines": [
{"text": "{{$json.keyword}} - Solução Completa"},
{"text": "Melhor {{$json.keyword}} do Brasil"},
{"text": "{{$json.keyword}} com Garantia"},
{"text": "Especialistas em {{$json.keyword}}"}
],
"descriptions": [
{"text": "Descubra a melhor solução em {{$json.keyword}}. Resultados garantidos!"},
{"text": "{{$json.keyword}} profissional. Atendimento especializado 24/7."}
],
"path1": "{{$json.keyword.toLowerCase().replace(/\s+/g, '')}}",
"path2": "solucao"
},
"finalUrls": ["https://seusite.com/{{$json.landing_page_slug}}"]
}
}
}
]
}
]
}
}
}
Campanhas criadas com budget inteligente, lances otimizados por IA e anúncios responsivos. Monitoramento automático de performance e ajustes em tempo real.
Descoberta e análise de palavras-chave com IA
// Nó OpenAI para análise de keywords
{
"parameters": {
"model": "gpt-4",
"messages": [
{
"role": "system",
"content": `Você é um especialista em SEO e Google Ads.
Analise as palavras-chave fornecidas e classifique por:
1. Intenção de busca (informacional, navegacional, transacional)
2. Dificuldade de ranqueamento (1-10)
3. Potencial de conversão (1-10)
4. Volume de busca estimado
5. CPC estimado
6. Palavras-chave relacionadas`
},
{
"role": "user",
"content": `Analise estas palavras-chave extraídas dos concorrentes:
{{$json.competitor_keywords.join(', ')}}
Palavra-chave principal: {{$json.main_keyword}}
Retorne JSON estruturado:
{
"keywords_analysis": [
{
"keyword": "",
"search_intent": "",
"difficulty": 0,
"conversion_potential": 0,
"estimated_volume": 0,
"estimated_cpc": 0,
"match_types": ["exact", "phrase", "broad"],
"negative_keywords": [],
"related_keywords": []
}
],
"campaign_structure": {
"ad_groups": [
{
"name": "",
"keywords": [],
"landing_page_focus": ""
}
]
}
}`
}
],
"temperature": 0.3,
"max_tokens": 3000
}
}
// Nó JavaScript para filtrar keywords
const keywordAnalysis = $input.all()[0].json.keywords_analysis;
const filters = {
min_conversion_potential: 6,
max_difficulty: 7,
min_volume: 100,
max_cpc: 15.00,
exclude_brand_terms: true,
focus_intent: ['transacional', 'comercial']
};
const filteredKeywords = keywordAnalysis.filter(keyword => {
// Filtro por potencial de conversão
if (keyword.conversion_potential < filters.min_conversion_potential) {
return false;
}
// Filtro por dificuldade
if (keyword.difficulty > filters.max_difficulty) {
return false;
}
// Filtro por volume
if (keyword.estimated_volume < filters.min_volume) {
return false;
}
// Filtro por CPC
if (keyword.estimated_cpc > filters.max_cpc) {
return false;
}
// Filtro por intenção
if (!filters.focus_intent.includes(keyword.search_intent.toLowerCase())) {
return false;
}
// Excluir termos de marca
if (filters.exclude_brand_terms) {
const brandTerms = ['google', 'facebook', 'amazon', 'mercadolivre'];
const hasBrand = brandTerms.some(brand =>
keyword.keyword.toLowerCase().includes(brand)
);
if (hasBrand) return false;
}
return true;
});
// Priorização por score
const prioritizedKeywords = filteredKeywords.map(keyword => ({
...keyword,
priority_score: (
keyword.conversion_potential * 0.4 +
(10 - keyword.difficulty) * 0.3 +
Math.min(keyword.estimated_volume / 1000, 10) * 0.2 +
Math.min(20 - keyword.estimated_cpc, 10) * 0.1
)
})).sort((a, b) => b.priority_score - a.priority_score);
return prioritizedKeywords.slice(0, 50).map(keyword => ({ json: keyword }));
// Salvar dados no Supabase
{
"parameters": {
"url": "https://seu-projeto.supabase.co/rest/v1/keyword_research",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "supabaseApi",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "apikey",
"value": "={{$credentials.supabaseApi.service_key}}"
},
{
"name": "Authorization",
"value": "Bearer {{$credentials.supabaseApi.service_key}}"
},
{
"name": "Content-Type",
"value": "application/json"
}
]
},
"sendBody": true,
"bodyParameters": {
"parameters": [
{
"name": "project_id",
"value": "={{$json.project_id}}"
},
{
"name": "main_keyword",
"value": "={{$json.main_keyword}}"
},
{
"name": "keywords_data",
"value": "={{JSON.stringify($json.prioritized_keywords)}}"
},
{
"name": "analysis_date",
"value": "={{new Date().toISOString()}}"
},
{
"name": "total_keywords",
"value": "={{$json.prioritized_keywords.length}}"
},
{
"name": "avg_difficulty",
"value": "={{$json.prioritized_keywords.reduce((sum, k) => sum + k.difficulty, 0) / $json.prioritized_keywords.length}}"
},
{
"name": "estimated_budget",
"value": "={{$json.prioritized_keywords.reduce((sum, k) => sum + (k.estimated_cpc * k.estimated_volume * 0.02), 0)}}"
}
]
}
}
}
Keywords analisadas, filtradas e priorizadas automaticamente. Dados salvos no Supabase para análise histórica e otimização contínua das campanhas.
Como implementar e escalar seu AI Agent Google Ads
AI Agents são poderosos, mas precisam de supervisão. Configure alertas para budget, performance e qualidade dos anúncios. Revise os resultados semanalmente e ajuste os parâmetros conforme necessário.