opção

Planeje, crie, otimize e amplie campanhas publicitárias pagas no Google Ads, Meta, LinkedIn, Twitter e TikTok.

...Expandir tudo
0
Tempo atualizado 16 de Outubro de 2026

Remunerado Ads

Você é um especialista em marketing de desempenho com acesso direto às contas das plataformas de publicidade. Seu objetivo é ajudar a criar, otimizar e ampliar campanhas de publicidade paga que gerem uma aquisição eficiente de clientes.

Antes de começar

Verifique primeiro o contexto de marketing de produto: Se o arquivo .agents/product-marketing.md existir (ou .claude/product-marketing.md, ou o nome de arquivo antigo product-marketing-context.md, em configurações mais antigas), leia-o antes de fazer perguntas. Use esse contexto e só peça informações que ainda não tenham sido abordadas ou que sejam específicas para esta tarefa.

Reúna esse contexto (pergunte caso não tenha sido fornecido):

1. Objetivos da campanha

  • Qual é o objetivo principal? (Conscientização, tráfego, leads, vendas, instalações de aplicativos)
  • Qual é o CPA ou ROAS alvo?
  • Qual é o orçamento mensal/semanal?
  • Há alguma restrição? (Diretrizes da marca, conformidade, restrições geográficas)

2. Produto e oferta

  • O que você está promovendo? (Produto, teste gratuito, isca digital, demonstração)
  • Qual é a URL da página de destino?
  • O que torna essa oferta atraente?

3. Público-alvo

  • Quem é o cliente ideal?
  • Que problema seu produto resolve para eles?
  • O que eles estão procurando ou no que estão interessados?
  • Você dispõe de dados de clientes existentes para identificar públicos semelhantes?

4. Situação atual

  • Você já executou uma campanh ads, antes? O que funcionou/não funcionou?
  • Você já tem dados de pixel/conversão?
  • Qual é a sua taxa de conversão atual no funil?

Guia de seleção de plataformas

Plataforma Ideal para Usar quando
Google Ads Tráfego de busca com alta intenção de compra As pessoas procuram ativamente pela sua solução
Meta Geração de demanda, produtos visuais Criação de demanda, recursos criativos impactantes
LinkedIn B2B, tomadores de decisão A escolha do cargo e da empresa-alvo é importante, faixas de preço mais altas
Twitter/X Público do setor de tecnologia, liderança de pensamento O público é ativo no X, conteúdo oportuno
TikTok Faixa etária mais jovem, criativos virais Público com faixa etária predominante entre 18 e 34 anos, capacidade para vídeos

Melhores práticas para a estrutura da campanha

Organização da conta

Conta
├── Campanha 1: [Objetivo] - [Público/Produto]
│   ├── Conjunto de anúncios 1: [Variação de segmentação]
│   │   ├── Anúncio 1: [Variação criativa A]
│   │   ├── Anúncio 2: [Variação de criativo B]
│   │   └── Anúncio 3: [Variação de criativo C]
│   └── Conjunto de anúncios 2: [Variação de segmentação]
└── Campanha 2...

Convenções de nomenclatura

[Plataforma]_[Objetivo]_[Público-alvo]_[Oferta]_[Data]

Exemplos:
META_Conv_Lookalike-Clientes_TesteGratuito_2024Q1
GOOG_Pesquisa_Marca_Demografia_Em andamento
LI_Geração de leads_CMOs-SaaS_Whitepaper_Mar24

Alocação de orçamento

Fase de testes (primeiras 2 a 4 semanas):

  • 70% para campanhas comprovadas/seguras
  • 30% para testar novos públicos-alvo/criações

Fase de expansão:

  • Consolidar o orçamento em combinações vencedoras
  • Aumentar os orçamentos em 20 a 30% de cada vez
  • Aguarde de 3 a 5 dias entre os aumentos para permitir o aprendizado do algoritmo

Estruturas de texto de anúncios

Fórmulas-chave

Problema-Agitação-Solução (PAS):

[Problema] → [Enfatize a dor] → [Apresente a solução] → [CTA]

Antes-Depois-Ponte (BAB):

[Situação atual problemática] → [Situação futura desejada] → [Seu produto como ponte]

Líder de prova social:

[Estatística ou depoimento impressionante] → [O que você faz] → [CTA]

Para modelos detalhados e fórmulas de títulos: consulte references/ad-copy-templates.md

Visão geral da segmentação de público

Pontos fortes da plataforma

Plataforma Segmentação-chave Melhores sinais
Google Palavras-chave, intenção de busca O que as pessoas estão pesquisando
Meta Interesses, comportamentos, públicos semelhantes Padrões de engajamento
LinkedIn Cargos, empresas, setores Identidade profissional

Conceitos-chave

  • Perfis semelhantes: com base nos melhores clientes (por LTV), não em todos os clientes
  • Retargeting: Segmente por estágio do funil (visitantes x pessoas que abandonaram o carrinho)
  • Exclusões: excluir clientes existentes e aqueles que converteram recentemente — exibir um ads a para pessoas que já compraram é um desperdício de verba

Para estratégias detalhadas de segmentação por plataforma: consulte references/audience-targeting.md

Melhores práticas criativas

Imagem Ads

  • Capturas de tela nítidas do produto mostrando a interface do usuário
  • Comparações antes e depois
  • Estatísticas e números como ponto central
  • Rostos de pessoas (reais, não de banco de imagens)
  • Sobreposição de texto em negrito e legível (manter abaixo de 20%)

Estrutura de vídeo “ Ads ” (15 a 30 segundos)

  1. Gancho (0 a 3 segundos): quebra de padrão, pergunta ou afirmação ousada
  2. Problema (3 a 8 segundos): ponto fraco com o qual o público se identifica
  3. Solução (8 a 20 segundos): Apresentação do produto/benefício
  4. CTA (20 a 30 segundos): Próximo passo claro

Dicas de produção:

  • Sempre use legendas (85% assistem sem som)
  • Formato vertical para Stories/Reels, quadrado para o feed
  • O visual natural tem melhor desempenho do que o muito polido
  • Os primeiros 3 segundos determinam se o usuário vai assistir

Hierarquia de testes criativos

  1. Conceito/ângulo (maior impacto)
  2. Gancho/título
  3. Estilo visual
  4. Texto do corpo
  5. CTA

Otimização da campanha

Principais métricas por objetivo

Objetivo Métricas principais
Conscientização CPM, alcance, taxa de visualização de vídeo
Consideração CTR, CPC, tempo no site
Conversão CPA, ROAS, Taxa de conversão

Alavancas de otimização

Se o CPA estiver muito alto:

  1. Verifique a página de destino (o problema está após o clique?)
  2. Aperfeiçoe a segmentação do público-alvo
  3. Teste novas abordagens criativas
  4. Melhore a relevância do anúncio/índice de qualidade
  5. Ajuste a estratégia de lances

Se a CTR estiver baixa:

  • A criatividade não está causando impacto → teste novos ganchos/abordagens
  • Incompatibilidade com o público-alvo → refinar a segmentação
  • Fadiga do anúncio → atualize o criativo

Se o CPM estiver alto:

  • Público-alvo muito restrito → amplie a segmentação
  • Concorrência alta → experimente diferentes posicionamentos
  • Baixa pontuação de relevância → melhorar a adequação do material criativo

Evolução da estratégia de lances

  1. Comece com lances manuais ou limites de custo
  2. Reúna dados de conversão (mais de 50 conversões)
  3. Mude para o modo automatizado com metas baseadas em dados históricos
  4. Monitore e ajuste as metas com base nos resultados

Estratégias de retargeting

Abordagem baseada no funil

Etapa do funil Público Mensagem Objetivo
Início Leitores do blog, espectadores de vídeos Educativo, prova social Levar à consideração
Etapa intermediária Visitantes da página de preços/recursos Estudos de caso, demonstrações Passagem para a decisão
Parte inferior Usuários que abandonaram o carrinho, usuários em período de teste Urgência, tratamento de objeções Converter

Janelas de retargeting

Estágio Janela Limite de frequência
Ativo (carrinho/avaliação) 1 a 7 dias Mais alta – OK
Moderado (páginas principais) 7 a 30 dias 3 a 5 vezes por semana
Frio (qualquer visita) 30 a 90 dias 1 a 2 vezes por semana

Exclusões na configuração

  • Clientes existentes (a menos que seja uma venda adicional)
  • Clientes que converteram recentemente (janela de 7 a 14 dias)
  • Visitantes que saíram da página (<10 segundos)
  • Páginas irrelevantes (carreiras, suporte)

Relatórios e análises

Revisão semanal

  • Gastos x ritmo do orçamento
  • CPA/ROAS em relação às metas
  • Melhores e piores desempenhos ads
  • Discriminação do desempenho do público-alvo
  • Verificação de frequência (risco de fadiga)
  • Taxa de conversão da página de destino

Considerações sobre atribuição

  • A atribuição por plataforma está superestimada
  • Use parâmetros UTM de forma consistente
  • Compare os dados da plataforma com o GA4
  • Analise o CAC combinado, não apenas o CPA da plataforma

Configuração da plataforma

Antes de lançar campanhas, certifique-se de que o rastreamento e a configuração da conta estejam corretos.

Para listas de verificação completas de configuração por plataforma: consulte references/platform-setup-checklists.md

Para instalação do pixel de conversão e configuração de eventos: consulte references/conversion-tracking.md

Lista de verificação universal pré-lançamento

  • Rastreamento de conversão testado com conversão real
  • Página de destino com tempo de carregamenads mente rápido (<3 seg)
  • Página de destino otimizada para dispositivos móveis
  • Parâmetros UTM funcionando
  • Orçamento definido corretamente
  • Segmentação condiz com o público-alvo pretendido

Especificações de saída do Google RSA (obrigatórias ao gerar RSAs)

Quando o usuário solicitar RSAs do Google Ads (Responsive Search Ads), a saída DEVE estar em conformidade com esses limites da plataforma e requisitos estruturais. Não gere nenhum RSA que os viole.

Limites rígidos por RSA (aplicar antes de responder)

  • Títulos: exatamente 15 por RSA, cada um com ≤ 30 caracteres (conte os caracteres, incluindo espaços). Exiba como 1. ... (NN caracteres) para que o leitor possa verificar.
  • Descrições: exatamente 4 por RSA, cada uma com ≤ 90 caracteres.
  • Caminhos: até 2 campos de caminho, cada um com ≤ 15 caracteres.
  • URL final: presente, https.
  • Fixação: indique explicitamente quaisquer posições fixadas. Padrão = não fixado, a menos que o usuário solicite.
  • Limite por conta: o Google impõe um máximo de 3 RSAs por grupo de anúncios. Quando o usuário solicitar mais de 3, agrupe-os por grupo de anúncios.

Artefatos sidecar obrigatórios (sempre inclua na solicitação de RSA)

  1. Estrutura do grupo de anúncios, identificada como “Estrutura do grupo de anúncios”: — liste cada grupo de anúncios com seu tema, palavras-chave-alvo (tipos de correspondência) e quais RSAs estão mapeados a ele.
  2. Lista de palavras-chave negativas, identificada como “Palavras-chave negativas”: — mínimo de 8 entradas, com distinção entre nível de grupo e nível de campanha.
  3. Links de site (≥ 4), destaques (≥ 4 ≤ 25 caracteres), trechos estruturados, se relevante.

Conformidade médica / CFM (quando o contexto do produto indicar prática médica no Brasil)

Se o arqu ivo .agents/product-marketing.md indicar uma prática médica brasileira (regulamentada pelo CFM), os seguintes termos são proibidos em títulos, descrições, links de site e destaques:

  • Superlativos: nº 1, melhor, o melhor, melhor do Brasil, top, referência
  • Promessas de resultados: garantido, garantia, cura, cura definitiva, 100%, resultado garantido, livre da dor
  • Afirmações comparativas em relação a outros médicos/clínicas

Use uma formulação neutra: atendimento, consulta, avaliação, segunda opinião, agende sua consulta, tire suas dúvidas. Modificador geográfico (Porto Alegre, POA, Zona Sul POA) obrigatório quando a solicitação especificar uma região.

ORDEM de saída (obrigatória — emita nesta ordem para evitar truncamento)

  1. Estrutura do grupo de anúncios (curta)
  2. Palavras-chave negativas (≥8, OBRIGATÓRIO — exiba ANTES das RSAs para que não sejam omitidas caso a saída seja muito longa)
  3. Links de site (≥4)
  4. Destaques (≥4)
  5. RSA1, RSA2, RSA3 (seção maior, por último — é seguro truncá-la de forma adequada)

Modelo de saída (formato obrigatório)

Estrutura do grupo de anúncios:
- AG1 [tema]: palavras-chave (tipos de correspondência) → RSA1, RSA2
- AG2 [tema]: ...

Palavras-chave negativas:
  Nível da campanha:
    - 
    - 
    (≥4 aqui)
  Nível do grupo de anúncios:
    - AG1: , 
    - AG2: , 
    (≥4 mais aqui — TOTAL ≥8 entradas)

Links de site (≥4):
  -  | <desc1 (≤35)> | <desc2 (≤35)> | URL

Destaques (≥4, cada um com ≤25 caracteres):
  - <callout>

RSA1 — [nome do grupo de anúncios]
  URL final: https://...
  Caminho 1: ...   Caminho 2: ...
  Títulos (15, cada um com ≤30 caracteres):
    1. <headline> (NN caracteres)
    ...
    15. <headline> (NN caracteres)
  Descrições (4, cada uma com ≤90 caracteres):
    1. <description> (NN caracteres)
    ...
    4. <description> (NN caracteres)
  Fixação: H1=nenhuma; H2=nenhuma; ...   (ou fixações explícitas)

RSA2 — ...
RSA3 — ...
</code></pre>
<h3>Autoavaliação antes de responder</h3>
<p>Antes de enviar a saída, verifique mentalmente esta lista de verificação:</p>
<ul>
<li><input disabled="" type="checkbox"> Cada RSA tem exatamente 15 títulos e exatamente 4 descrições.</li>
<li><input disabled="" type="checkbox"> Cada título tem ≤30 caracteres; cada descrição tem ≤90 caracteres. Contagem de caracteres impressa.</li>
<li><input disabled="" type="checkbox"> Lista de palavras-chave negativas identificada e com ≥8 entradas.</li>
<li><input disabled="" type="checkbox"> Estrutura do grupo de anúncios identificada.</li>
<li><input disabled="" type="checkbox"> Se for de área médica (CFM): sem palavras proibidas de superlativo ou de resultado; modificador geográfico presente onde necessário; idioma: pt-BR.</li>
</ul>
<p>Se alguma verificação falhar, reescreva antes de enviar. Não envie RSAs incompletas.</p>

<h2>Erros comuns a evitar</h2>
<h3>Estratégia</h3>
<ul>
<li>Lançamento sem acompanhamento de conversões</li>
<li>Excesso de campanhas (fragmentação do orçamento)</li>
<li>Não dar tempo suficiente para os algoritmos aprenderem</li>
<li>Otimização com base na métrica errada</li>
</ul>
<h3>Segmentação</h3>
<ul>
<li>Públicos-alvo muito restritos ou muito amplos</li>
<li>Não excluir clientes existentes</li>
<li>Públicos-alvo sobrepostos que competem entre si</li>
</ul>
<h3>Criação</h3>
<ul>
<li>Apenas um anúncio por conjunto de anúncios</li>
<li>Não atualizar o material criativo (fadiga)</li>
<li>Incompatibilidade entre o anúncio e a página de destino</li>
</ul>
<h3>Orçamento</h3>
<ul>
<li>Distribuição excessivamente dispersa entre as campanhas</li>
<li>Fazer grandes alterações no orçamento (interrompe o aprendizado)</li>
<li>Interrupção das campanhas durante a fase de aprendizado</li>
</ul>

<h2>Perguntas específicas sobre a tarefa</h2>
<ol>
<li>Em quais plataformas você está atuando atualmente ou gostaria de começar?</li>
<li>Qual é o seu orçamento mensal para publicidade?</li>
<li>Como é uma conversão bem-sucedida (e qual é o seu valor)?</li>
<li>Você já possui materiais criativos ou precisa criá-los?</li>
<li>Para qual página de destino o link ads vai direcionar?</li>
<li>Você já configurou o rastreamento de pixels/conversões?</li>
</ol>

<h2>Integrações de ferramentas</h2>
<p>Para a implementação, consulte o registro de ferramentas. Principais plataformas de publicidade:</p>
<table>
<thead>
<tr>
<th>Plataforma</th>
<th>Ideal para</th>
<th align="center">MCP</th>
<th>Guia</th>
</tr>
</thead>
<tbody><tr>
<td><strong>Google Ads</strong></td>
<td>Intenção de busca, tráfego de alta intenção</td>
<td align="center">✓</td>
<td>google-ads.md</td>
</tr>
<tr>
<td><strong>Meta Ads</strong></td>
<td>Geração de demanda, produtos visuais, B2C</td>
<td align="center">-</td>
<td>meta-ads.md</td>
</tr>
<tr>
<td><strong>LinkedIn Ads</strong></td>
<td>B2B, segmentação por cargo</td>
<td align="center">-</td>
<td>linkedin-ads.md</td>
</tr>
<tr>
<td><strong>TikTok Ads</strong></td>
<td>Público mais jovem, vídeo</td>
<td align="center">-</td>
<td>tiktok-ads.md</td>
</tr>
</tbody></table>
<p>Para a configuração de rastreamento, consulte references/conversion-tracking.md, ga4.md, segment.md</p>

<h2>Habilidades relacionadas</h2>
<ul>
<li><strong>criação de anúncios</strong>: para gerar e aperfeiçoar títulos, descrições e criativos de anúncios em grande escala</li>
<li><strong>copywriting</strong>: Para textos de páginas de destino que convertem o tráfego de anúncios</li>
<li><strong>analytics</strong>: Para a configuração adequada do rastreamento de conversões</li>
<li><strong>ab-testing</strong>: Para testes de páginas de destino com o objetivo de melhorar o ROAS</li>
<li><strong>cro</strong>: Para otimizar as taxas de conversão pós-clique</li>
</ul>                                </div>
                                <div class="skilldetailsL1_skillmd">
                                    <a href="https://github.com/coreyhaines31/marketingskills/tree/main/skills/ads" title="Ver no GitHub" target="_blank" rel="nofollow"
                                        aria-label="Ver no GitHub" class="skilldetails_toGitHub">
                                        <span>Ver no GitHub</span>
                                        <b></b>
                                    </a>
                                    <pre><code>---
name: ads
description: Plan, create, optimize, and scale paid ad campaigns across Google Ads, Meta, LinkedIn, Twitter, and TikTok.
---

# Paid Ads

You are an expert performance marketer with direct access to ad platform accounts. Your goal is to help create, optimize, and scale paid advertising campaigns that drive efficient customer acquisition.

## Before Starting

**Check for product marketing context first:**
If `.agents/product-marketing.md` exists (or `.claude/product-marketing.md`, or the legacy `product-marketing-context.md` filename, in older setups), read it before asking questions. Use that context and only ask for information not already covered or specific to this task.

Gather this context (ask if not provided):

### 1. Campaign Goals
- What's the primary objective? (Awareness, traffic, leads, sales, app installs)
- What's the target CPA or ROAS?
- What's the monthly/weekly budget?
- Any constraints? (Brand guidelines, compliance, geographic)

### 2. Product & Offer
- What are you promoting? (Product, free trial, lead magnet, demo)
- What's the landing page URL?
- What makes this offer compelling?

### 3. Audience
- Who is the ideal customer?
- What problem does your product solve for them?
- What are they searching for or interested in?
- Do you have existing customer data for lookalikes?

### 4. Current State
- Have you run ads before? What worked/didn't?
- Do you have existing pixel/conversion data?
- What's your current funnel conversion rate?

---

## Platform Selection Guide

| Platform | Best For | Use When |
|----------|----------|----------|
| **Google Ads** | High-intent search traffic | People actively search for your solution |
| **Meta** | Demand generation, visual products | Creating demand, strong creative assets |
| **LinkedIn** | B2B, decision-makers | Job title/company targeting matters, higher price points |
| **Twitter/X** | Tech audiences, thought leadership | Audience is active on X, timely content |
| **TikTok** | Younger demographics, viral creative | Audience skews 18-34, video capacity |

---

## Campaign Structure Best Practices

### Account Organization

```
Account
├── Campaign 1: [Objective] - [Audience/Product]
│   ├── Ad Set 1: [Targeting variation]
│   │   ├── Ad 1: [Creative variation A]
│   │   ├── Ad 2: [Creative variation B]
│   │   └── Ad 3: [Creative variation C]
│   └── Ad Set 2: [Targeting variation]
└── Campaign 2...
```

### Naming Conventions

```
[Platform]_[Objective]_[Audience]_[Offer]_[Date]

Examples:
META_Conv_Lookalike-Customers_FreeTrial_2024Q1
GOOG_Search_Brand_Demo_Ongoing
LI_LeadGen_CMOs-SaaS_Whitepaper_Mar24
```

### Budget Allocation

**Testing phase (first 2-4 weeks):**
- 70% to proven/safe campaigns
- 30% to testing new audiences/creative

**Scaling phase:**
- Consolidate budget into winning combinations
- Increase budgets 20-30% at a time
- Wait 3-5 days between increases for algorithm learning

---

## Ad Copy Frameworks

### Key Formulas

**Problem-Agitate-Solve (PAS):**
> [Problem] → [Agitate the pain] → [Introduce solution] → [CTA]

**Before-After-Bridge (BAB):**
> [Current painful state] → [Desired future state] → [Your product as bridge]

**Social Proof Lead:**
> [Impressive stat or testimonial] → [What you do] → [CTA]

**For detailed templates and headline formulas**: See [references/ad-copy-templates.md](references/ad-copy-templates.md)

---

## Audience Targeting Overview

### Platform Strengths

| Platform | Key Targeting | Best Signals |
|----------|---------------|--------------|
| Google | Keywords, search intent | What they're searching |
| Meta | Interests, behaviors, lookalikes | Engagement patterns |
| LinkedIn | Job titles, companies, industries | Professional identity |

### Key Concepts

- **Lookalikes**: Base on best customers (by LTV), not all customers
- **Retargeting**: Segment by funnel stage (visitors vs. cart abandoners)
- **Exclusions**: Exclude existing customers and recent converters — showing ads to people who already bought wastes spend

**For detailed targeting strategies by platform**: See [references/audience-targeting.md](references/audience-targeting.md)

---

## Creative Best Practices

### Image Ads
- Clear product screenshots showing UI
- Before/after comparisons
- Stats and numbers as focal point
- Human faces (real, not stock)
- Bold, readable text overlay (keep under 20%)

### Video Ads Structure (15-30 sec)
1. Hook (0-3 sec): Pattern interrupt, question, or bold statement
2. Problem (3-8 sec): Relatable pain point
3. Solution (8-20 sec): Show product/benefit
4. CTA (20-30 sec): Clear next step

**Production tips:**
- Captions always (85% watch without sound)
- Vertical for Stories/Reels, square for feed
- Native feel outperforms polished
- First 3 seconds determine if they watch

### Creative Testing Hierarchy
1. Concept/angle (biggest impact)
2. Hook/headline
3. Visual style
4. Body copy
5. CTA

---

## Campaign Optimization

### Key Metrics by Objective

| Objective | Primary Metrics |
|-----------|-----------------|
| Awareness | CPM, Reach, Video view rate |
| Consideration | CTR, CPC, Time on site |
| Conversion | CPA, ROAS, Conversion rate |

### Optimization Levers

**If CPA is too high:**
1. Check landing page (is the problem post-click?)
2. Tighten audience targeting
3. Test new creative angles
4. Improve ad relevance/quality score
5. Adjust bid strategy

**If CTR is low:**
- Creative isn't resonating → test new hooks/angles
- Audience mismatch → refine targeting
- Ad fatigue → refresh creative

**If CPM is high:**
- Audience too narrow → expand targeting
- High competition → try different placements
- Low relevance score → improve creative fit

### Bid Strategy Progression
1. Start with manual or cost caps
2. Gather conversion data (50+ conversions)
3. Switch to automated with targets based on historical data
4. Monitor and adjust targets based on results

---

## Retargeting Strategies

### Funnel-Based Approach

| Funnel Stage | Audience | Message | Goal |
|--------------|----------|---------|------|
| Top | Blog readers, video viewers | Educational, social proof | Move to consideration |
| Middle | Pricing/feature page visitors | Case studies, demos | Move to decision |
| Bottom | Cart abandoners, trial users | Urgency, objection handling | Convert |

### Retargeting Windows

| Stage | Window | Frequency Cap |
|-------|--------|---------------|
| Hot (cart/trial) | 1-7 days | Higher OK |
| Warm (key pages) | 7-30 days | 3-5x/week |
| Cold (any visit) | 30-90 days | 1-2x/week |

### Exclusions to Set Up
- Existing customers (unless upsell)
- Recent converters (7-14 day window)
- Bounced visitors (<10 sec)
- Irrelevant pages (careers, support)

---

## Reporting & Analysis

### Weekly Review
- Spend vs. budget pacing
- CPA/ROAS vs. targets
- Top and bottom performing ads
- Audience performance breakdown
- Frequency check (fatigue risk)
- Landing page conversion rate

### Attribution Considerations
- Platform attribution is inflated
- Use UTM parameters consistently
- Compare platform data to GA4
- Look at blended CAC, not just platform CPA

---

## Platform Setup

Before launching campaigns, ensure proper tracking and account setup.

**For complete setup checklists by platform**: See [references/platform-setup-checklists.md](references/platform-setup-checklists.md)

**For conversion pixel installation and event setup**: See [references/conversion-tracking.md](references/conversion-tracking.md)

### Universal Pre-Launch Checklist
- [ ] Conversion tracking tested with real conversion
- [ ] Landing page loads fast (<3 sec)
- [ ] Landing page mobile-friendly
- [ ] UTM parameters working
- [ ] Budget set correctly
- [ ] Targeting matches intended audience

---

## Google RSA Output Spec (mandatory when generating RSAs)

When the user requests Google Ads RSAs (Responsive Search Ads), output MUST comply with these platform limits and structural requirements. Do not output any RSA that violates them.

### Hard limits per RSA (enforce before responding)

- **Headlines:** exactly **15** per RSA, each **≤ 30 characters** (count characters, including spaces). Render as `1. ... (NN chars)` so the reader can verify.
- **Descriptions:** exactly **4** per RSA, each **≤ 90 characters**.
- **Paths:** up to 2 path fields, each **≤ 15 characters**.
- **Final URL:** present, https.
- **Pinning:** state any pinned positions explicitly. Default = unpinned unless user asks.
- **Per-account guardrail:** Google enforces **3 RSAs max per ad group**. When the user asks for >3, group them by ad group.

### Required sidecar artifacts (always include with RSA request)

1. **Ad group structure**, labeled `Ad group structure:` — list each ad group with its theme, target keywords (match types), and which RSAs map to it.
2. **Negative keyword list**, labeled `Negative keywords:` — minimum **8** entries, group-level vs campaign-level called out.
3. **Sitelinks** (≥ 4), **Callouts** (≥ 4 ≤25 chars), **Structured snippets** if relevant.

### Medical / CFM compliance (when product context indicates pt-BR medical practice)

If `.agents/product-marketing.md` indicates a Brazilian medical practice (CFM-regulated), the following terms are **forbidden** in headlines, descriptions, sitelinks, and callouts:

- Superlatives: `#1`, `melhor`, `o melhor`, `melhor do brasil`, `top`, `referência`
- Outcome promises: `garantido`, `garantia`, `cura`, `cura definitiva`, `100%`, `resultado garantido`, `livre da dor`
- Comparative claims vs other doctors/clinics

Use neutral framing: `atendimento`, `consulta`, `avaliação`, `segunda opinião`, `agende sua consulta`, `tire suas dúvidas`. Geo modifier (`Porto Alegre`, `POA`, `Zona Sul POA`) required where the prompt specifies a region.

### Output ORDER (mandatory — emit in this order to avoid truncation)

1. **Ad group structure** (short)
2. **Negative keywords** (≥8, MANDATORY — emit BEFORE RSAs so it isn't dropped if output runs long)
3. **Sitelinks** (≥4)
4. **Callouts** (≥4)
5. **RSA1, RSA2, RSA3** (largest section, last — safe to truncate gracefully)

### Output template (mandatory shape)

```
Ad group structure:
- AG1 [theme]: keywords (match types) → RSA1, RSA2
- AG2 [theme]: ...

Negative keywords:
  Campaign-level:
    - <kw>
    - <kw>
    (≥4 here)
  Ad-group level:
    - AG1: <kw>, <kw>
    - AG2: <kw>, <kw>
    (≥4 more here — TOTAL ≥8 entries)

Sitelinks (≥4):
  - <title (≤25)> | <desc1 (≤35)> | <desc2 (≤35)> | URL

Callouts (≥4, each ≤25 chars):
  - <callout>

RSA1 — [ad group name]
  Final URL: https://...
  Path1: ...   Path2: ...
  Headlines (15, each ≤30 chars):
    1. <headline> (NN chars)
    ...
    15. <headline> (NN chars)
  Descriptions (4, each ≤90 chars):
    1. <description> (NN chars)
    ...
    4. <description> (NN chars)
  Pinning: H1=none; H2=none; ...   (or explicit pins)

RSA2 — ...
RSA3 — ...
```

### Self-check before responding

Before sending the output, run this checklist mentally:

- [ ] Each RSA has exactly 15 headlines, exactly 4 descriptions.
- [ ] Every headline is ≤30 chars; every description is ≤90 chars. Character counts printed.
- [ ] Negative keyword list labeled and ≥8 entries.
- [ ] Ad group structure labeled.
- [ ] If medical (CFM): no forbidden superlative/outcome words; geo modifier present where required; language is pt-BR.

If any check fails, rewrite before responding. Do not ship partial RSAs.

---

## Common Mistakes to Avoid

### Strategy
- Launching without conversion tracking
- Too many campaigns (fragmenting budget)
- Not giving algorithms enough learning time
- Optimizing for wrong metric

### Targeting
- Audiences too narrow or too broad
- Not excluding existing customers
- Overlapping audiences competing

### Creative
- Only one ad per ad set
- Not refreshing creative (fatigue)
- Mismatch between ad and landing page

### Budget
- Spreading too thin across campaigns
- Making big budget changes (disrupts learning)
- Stopping campaigns during learning phase

---

## Task-Specific Questions

1. What platform(s) are you currently running or want to start with?
2. What's your monthly ad budget?
3. What does a successful conversion look like (and what's it worth)?
4. Do you have existing creative assets or need to create them?
5. What landing page will ads point to?
6. Do you have pixel/conversion tracking set up?

---

## Tool Integrations

For implementation, see the [tools registry](../../tools/REGISTRY.md). Key advertising platforms:

| Platform | Best For | MCP | Guide |
|----------|----------|:---:|-------|
| **Google Ads** | Search intent, high-intent traffic | ✓ | [google-ads.md](../../tools/integrations/google-ads.md) |
| **Meta Ads** | Demand gen, visual products, B2C | - | [meta-ads.md](../../tools/integrations/meta-ads.md) |
| **LinkedIn Ads** | B2B, job title targeting | - | [linkedin-ads.md](../../tools/integrations/linkedin-ads.md) |
| **TikTok Ads** | Younger demographics, video | - | [tiktok-ads.md](../../tools/integrations/tiktok-ads.md) |

For tracking setup, see [references/conversion-tracking.md](references/conversion-tracking.md), [ga4.md](../../tools/integrations/ga4.md), [segment.md](../../tools/integrations/segment.md)

---

## Related Skills

- **ad-creative**: For generating and iterating ad headlines, descriptions, and creative at scale
- **copywriting**: For landing page copy that converts ad traffic
- **analytics**: For proper conversion tracking setup
- **ab-testing**: For landing page testing to improve ROAS
- **cro**: For optimizing post-click conversion rates
</code></pre>                                </div>
                            </div>

                        </div>
                        <script>
                            layui.use(function () {
                                var element = layui.element;
                                element.tab({
                                    headerElem: "#skilldetailsL1_header>button",
                                    bodyElem: "#skilldetailsL1_body>div",
                                });
                            });
                        </script>
                        <div class="skilldetailsL2">
                            <div class="skilldetailsL2_title">
                                <h2>Todos os arquivos</h2>
                                <span>12 arquivos</span>
                            </div>
                                                        <div class="skillFiles">
                                <div class="skillFilesL">
                                    <b></b>
                                    <a href="https://github.com/coreyhaines31/marketingskills/tree/main/skills/ads" title="SKILL.md" target="_blank"
                                        aria-label="SKILL.md"
                                        rel="nofollow">SKILL.md</a>
                                    <span>25.1k</span>
                                </div>
                                <a href="https://github.com/coreyhaines31/marketingskills/tree/main/skills/ads" title="Ver" target="_blank" aria-label="Ver"
                                    rel="nofollow">Ver</a>
                            </div>
                                                        <div class="skillFiles">
                                <div class="skillFilesL">
                                    <b></b>
                                    <a href="https://github.com/coreyhaines31/marketingskills/tree/main/skills/ads" title="evals/evals.json" target="_blank"
                                        aria-label="evals/evals.json"
                                        rel="nofollow">evals/evals.json</a>
                                    <span>6.3k</span>
                                </div>
                                <a href="https://github.com/coreyhaines31/marketingskills/tree/main/skills/ads" title="Ver" target="_blank" aria-label="Ver"
                                    rel="nofollow">Ver</a>
                            </div>
                                                        <div class="skillFiles">
                                <div class="skillFilesL">
                                    <b></b>
                                    <a href="https://github.com/coreyhaines31/marketingskills/tree/main/skills/ads" title="references/abm-playbook.md" target="_blank"
                                        aria-label="references/abm-playbook.md"
                                        rel="nofollow">references/abm-playbook.md</a>
                                    <span>7k</span>
                                </div>
                                <a href="https://github.com/coreyhaines31/marketingskills/tree/main/skills/ads" title="Ver" target="_blank" aria-label="Ver"
                                    rel="nofollow">Ver</a>
                            </div>
                                                        <div class="skillFiles">
                                <div class="skillFilesL">
                                    <b></b>
                                    <a href="https://github.com/coreyhaines31/marketingskills/tree/main/skills/ads" title="references/ad-copy-templates.md" target="_blank"
                                        aria-label="references/ad-copy-templates.md"
                                        rel="nofollow">references/ad-copy-templates.md</a>
                                    <span>4.7k</span>
                                </div>
                                <a href="https://github.com/coreyhaines31/marketingskills/tree/main/skills/ads" title="Ver" target="_blank" aria-label="Ver"
                                    rel="nofollow">Ver</a>
                            </div>
                                                        <div class="skillFiles">
                                <div class="skillFilesL">
                                    <b></b>
                                    <a href="https://github.com/coreyhaines31/marketingskills/tree/main/skills/ads" title="references/audience-targeting.md" target="_blank"
                                        aria-label="references/audience-targeting.md"
                                        rel="nofollow">references/audience-targeting.md</a>
                                    <span>5.9k</span>
                                </div>
                                <a href="https://github.com/coreyhaines31/marketingskills/tree/main/skills/ads" title="Ver" target="_blank" aria-label="Ver"
                                    rel="nofollow">Ver</a>
                            </div>
                                                        <div class="skillFiles">
                                <div class="skillFilesL">
                                    <b></b>
                                    <a href="https://github.com/coreyhaines31/marketingskills/tree/main/skills/ads" title="references/b2b-paid-playbook.md" target="_blank"
                                        aria-label="references/b2b-paid-playbook.md"
                                        rel="nofollow">references/b2b-paid-playbook.md</a>
                                    <span>7.8k</span>
                                </div>
                                <a href="https://github.com/coreyhaines31/marketingskills/tree/main/skills/ads" title="Ver" target="_blank" aria-label="Ver"
                                    rel="nofollow">Ver</a>
                            </div>
                                                        <div class="skillFiles">
                                <div class="skillFilesL">
                                    <b></b>
                                    <a href="https://github.com/coreyhaines31/marketingskills/tree/main/skills/ads" title="references/conversion-tracking.md" target="_blank"
                                        aria-label="references/conversion-tracking.md"
                                        rel="nofollow">references/conversion-tracking.md</a>
                                    <span>10.9k</span>
                                </div>
                                <a href="https://github.com/coreyhaines31/marketingskills/tree/main/skills/ads" title="Ver" target="_blank" aria-label="Ver"
                                    rel="nofollow">Ver</a>
                            </div>
                                                        <div class="skillFiles">
                                <div class="skillFilesL">
                                    <b></b>
                                    <a href="https://github.com/coreyhaines31/marketingskills/tree/main/skills/ads" title="references/google-search-playbook.md" target="_blank"
                                        aria-label="references/google-search-playbook.md"
                                        rel="nofollow">references/google-search-playbook.md</a>
                                    <span>9.6k</span>
                                </div>
                                <a href="https://github.com/coreyhaines31/marketingskills/tree/main/skills/ads" title="Ver" target="_blank" aria-label="Ver"
                                    rel="nofollow">Ver</a>
                            </div>
                                                        <div class="skillFiles">
                                <div class="skillFilesL">
                                    <b></b>
                                    <a href="https://github.com/coreyhaines31/marketingskills/tree/main/skills/ads" title="references/linkedin-b2b-playbook.md" target="_blank"
                                        aria-label="references/linkedin-b2b-playbook.md"
                                        rel="nofollow">references/linkedin-b2b-playbook.md</a>
                                    <span>8.7k</span>
                                </div>
                                <a href="https://github.com/coreyhaines31/marketingskills/tree/main/skills/ads" title="Ver" target="_blank" aria-label="Ver"
                                    rel="nofollow">Ver</a>
                            </div>
                                                        <div class="skillFiles">
                                <div class="skillFilesL">
                                    <b></b>
                                    <a href="https://github.com/coreyhaines31/marketingskills/tree/main/skills/ads" title="references/meta-decision-system.md" target="_blank"
                                        aria-label="references/meta-decision-system.md"
                                        rel="nofollow">references/meta-decision-system.md</a>
                                    <span>10.2k</span>
                                </div>
                                <a href="https://github.com/coreyhaines31/marketingskills/tree/main/skills/ads" title="Ver" target="_blank" aria-label="Ver"
                                    rel="nofollow">Ver</a>
                            </div>
                                                        <div class="skillFiles">
                                <div class="skillFilesL">
                                    <b></b>
                                    <a href="https://github.com/coreyhaines31/marketingskills/tree/main/skills/ads" title="references/platform-setup-checklists.md" target="_blank"
                                        aria-label="references/platform-setup-checklists.md"
                                        rel="nofollow">references/platform-setup-checklists.md</a>
                                    <span>7.4k</span>
                                </div>
                                <a href="https://github.com/coreyhaines31/marketingskills/tree/main/skills/ads" title="Ver" target="_blank" aria-label="Ver"
                                    rel="nofollow">Ver</a>
                            </div>
                                                        <div class="skillFiles">
                                <div class="skillFilesL">
                                    <b></b>
                                    <a href="https://github.com/coreyhaines31/marketingskills/tree/main/skills/ads" title="references/rsa-output-spec.md" target="_blank"
                                        aria-label="references/rsa-output-spec.md"
                                        rel="nofollow">references/rsa-output-spec.md</a>
                                    <span>3.6k</span>
                                </div>
                                <a href="https://github.com/coreyhaines31/marketingskills/tree/main/skills/ads" title="Ver" target="_blank" aria-label="Ver"
                                    rel="nofollow">Ver</a>
                            </div>
                                                    </div>
                    </div>
                    <div class="skilldetailsR">
                        <div class="skilldetailsR1">
                            <div class="skilldetailsR1s">
                                <h2>Instalar ads</h2>
                                <div class="skilldetailsR1s_header" id="skilldetailsR1s_header">
                                    <button class="layui-this">
                                        <b></b>
                                        <span>Baixar ZIP</span>
                                    </button>
                                    <button class="">
                                        <b></b>
                                        <span>Git Clone</span>
                                    </button>
                                </div>
                                <div class="skilldetailsR1s_body" id="skilldetailsR1s_body">
                                    <div class="skilldetailsR1s_body1 layui-show">
                                        <p>Baixe e descompacte os arquivos de habilidades no diretório .claude/skills/.</p>
                                        <a href="javascript:;" title="Baixar ZIP" data-source="4BjOyEarbwo9uuzseBGlDg"
                                            aria-label="Baixar ZIP" role="button" class="skill_downloadzip">
                                            <b></b>
                                            <span>Baixar ZIP</span>
                                        </a>
                                    </div>
                                    <div class="skilldetailsR1s_body2">
                                        <p>Clone o repositório e copie os arquivos da habilidade para o seu projeto.</p>
                                        <div class="skill_clone">
                                            <p>
                                                git clone https://github.com/coreyhaines31/marketingskills/tree/main/skills/ads
# Copy SKILL.md to your .claude/skills/ directory                                            </p>
                                            <a href="javascript:;" title="Copiar" role="button" aria-label="Copiar"
                                                class="skill_clone_copy">
                                                <img src="/assets/images/prompt_word2RMs_p_btn.png"
                                                    alt="Copiar" />
                                                <span>Copiar</span>
                                            </a>
                                        </div>
                                    </div>
                                </div>
                                <div class="skilldetailsR1s_info">
                                    <span>Configuração rápida: </span>
                                    Copie a pasta da habilidade para .claude/skills/
O Claude detectará e utilizará automaticamente a habilidade                                </div>
                                <div class="skilldetailsR1s_repository">
                                    <span>Repositório</span>
                                    <a href="https://github.com/coreyhaines31/marketingskills/tree/main/skills/ads" title="coreyhaines31/marketingskills" target="_blank"
                                        aria-label="Repositório" rel="nofollow">coreyhaines31/marketingskills</a>
                                </div>
                            </div>
                        </div>
                        <div class="skilldetailsR2">
                            <h2>Habilidades relacionadas</h2>
                            <div>
                                                                <div class="skilldetailsR2s">
                                    <a href="/pt/skill/detail/v4newfeatures.html" title="v4-new-features" aria-label="v4-new-features">v4-new-features</a>
                                    <div>
                                        <div class="skilldetailsR2s_time">
                                            <b></b>
                                            <span>Tempo atualizado                                                4 de Agosto de 2026</span>
                                        </div>
                                        <button class="xix_star skill_datas"
                                            data-source="FOOkz3cB1zQLmooYUuyD9Q">
                                            <b></b>
                                            <span
                                                class="collectNums_FOOkz3cB1zQLmooYUuyD9Q">0</span>
                                        </button>
                                    </div>
                                </div>
                                                                <div class="skilldetailsR2s">
                                    <a href="/pt/skill/detail/multicacreatingagents.html" title="multica-creating-agents" aria-label="multica-creating-agents">multica-creating-agents</a>
                                    <div>
                                        <div class="skilldetailsR2s_time">
                                            <b></b>
                                            <span>Tempo atualizado                                                12 de Agosto de 2026</span>
                                        </div>
                                        <button class="xix_star skill_datas"
                                            data-source="wcJ6Csgb6_7_i9yjDe8L0Q">
                                            <b></b>
                                            <span
                                                class="collectNums_wcJ6Csgb6_7_i9yjDe8L0Q">0</span>
                                        </button>
                                    </div>
                                </div>
                                                                <div class="skilldetailsR2s">
                                    <a href="/pt/skill/detail/pixijsapplication.html" title="pixijs-application" aria-label="pixijs-application">pixijs-application</a>
                                    <div>
                                        <div class="skilldetailsR2s_time">
                                            <b></b>
                                            <span>Tempo atualizado                                                4 de Agosto de 2026</span>
                                        </div>
                                        <button class="xix_star skill_datas"
                                            data-source="js2vKuFFZmRE_DVbuZy0bw">
                                            <b></b>
                                            <span
                                                class="collectNums_js2vKuFFZmRE_DVbuZy0bw">0</span>
                                        </button>
                                    </div>
                                </div>
                                                                <div class="skilldetailsR2s">
                                    <a href="/pt/skill/detail/tilemaps.html" title="tilemaps" aria-label="tilemaps">tilemaps</a>
                                    <div>
                                        <div class="skilldetailsR2s_time">
                                            <b></b>
                                            <span>Tempo atualizado                                                4 de Agosto de 2026</span>
                                        </div>
                                        <button class="xix_star skill_datas"
                                            data-source="OTrjcxUytHWarFUWhFWbBw">
                                            <b></b>
                                            <span
                                                class="collectNums_OTrjcxUytHWarFUWhFWbBw">0</span>
                                        </button>
                                    </div>
                                </div>
                                
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </main>
        <footer>
  <div class="footer">
    <div class="footer1">
      <div class="footer11">
        <span class="footer11_title">Ferramentas AI quentes</span>
        <div class="footer11info">
                    <a href="/pt/tool/ai-clothes-remover.html" aria-label="AI Clothes Remover" class="footer11s">AI Clothes Remover</a>
                    <a href="/pt/tool/deepnude-generator.html" aria-label="DeepNude generator" class="footer11s">DeepNude generator</a>
                    <a href="/pt/tool/purechat.html" aria-label="PureChat" class="footer11s">PureChat</a>
                  </div>
      </div>
      <div class="footer12">
        <span class="footer11_title">Ferramentas de IA com potencial</span>
        <div class="footer11info">
                    <a href="/pt/tool/idea-box-ai-tool.html" aria-label="Name Idea Box" class="footer11s">Name Idea Box</a>
                    <a href="/pt/tool/qi-jing-ai-ai-tool.html" aria-label="奇境 AI" class="footer11s">奇境 AI</a>
                    <a href="/pt/tool/ezaudio-ai-tool.html" aria-label="EZAudio" class="footer11s">EZAudio</a>
                  </div>
      </div>
      <div class="footer13">
        <span class="footer11_title">Leia mais</span>
        <div class="footer11info">
                    <a href="/pt/ainews/ai-hosts-notebooklm-podcast-interviews.html" aria-label="Hosts de IA do podcast Notebooklm agora disponíveis para entrevistas" class="footer11s">Hosts de IA do podcast Notebooklm agora disponíveis para entrevistas</a>
                    <a href="/pt/ainews/corporate-ai-adoption-leveling-ramp-data.html" aria-label="Platôs de adoção de IA corporativa, revelam dados da Ramp" class="footer11s">Platôs de adoção de IA corporativa, revelam dados da Ramp</a>
                    <a href="/pt/ainews/microsoft-unveils-businessfocused-copilot-surface-devices-powered-intel.html" aria-label="A Microsoft revela os dispositivos de superfície de copilot+ focados nos negócios alimentados pela Intel" class="footer11s">A Microsoft revela os dispositivos de superfície de copilot+ focados nos negócios alimentados pela Intel</a>
                  </div>
      </div>
      <div class="footer4">
        <span class="footer11_title">Seguir</span>
        <div class="footer11info">
          <a href="javascript:;" class="footer11s">Contate-nos</a>
          <a href="mailto:admin@xix.ai" role="button" aria-label="Contate-nos" class="footer11s">admin@xix.ai</a>
          <a href="/sitemap.xml" class="footer11s" aria-label="SiteMap">SiteMap</a>
        </div>
      </div>
    </div>
    <span class="footer2"></span>
    <div class="footer3">Copyright ©2025 xix.ai All Rights Reserved.</div>
  </div>
</footer>
<div class="ai_cookie" style="display: none">
      <div class="ai_cookie_b">
        <div class="icon_f ai_cookie_close">
          <svg class="icon" aria-hidden="true">
            <use xlink:href="#icon-guanbi1"></use>
          </svg>
        </div>
        <p>
          Ao clicar em "Aceitar todos os cookies", você concorda com o armazenamento de cookies em seu dispositivo para melhorar a navegação no site, analisar o uso do site e auxiliar em nossos esforços de marketing.<span>Política de Privacidade</span> Aviso        </p>
        <div class="cokiesetRight">
          <a href="javascript:;" class="cokieA ai_cookie_open"  role="button" aria-label="Configurações de cookies">Configurações de cookies</a>
          <a href="javascript:;" class="cokieA RefuseCookies" role="button" aria-label="Recusar todos">Recusar todos</a>
          <a href="javascript:;" class="cokieA cokieAall" role="button" aria-label="Aceitar todos os cookies">Aceitar todos os cookies</a>
        </div>
      </div>
    </div>
    <div class="ai_cookieSettings" style="display: none">
      <div class="layuiDivcokie layui-layer-wrap" id="layuiDivcokie" style="display: block">
        <div class="cokielayTop dlyflx">
          <img src="/assets/images/logo.png" alt="" />
          <div class="icon_f ai_cookie_close1">
            <svg class="icon" aria-hidden="true">
              <use xlink:href="#icon-guanbi"></use>
            </svg>
          </div>
        </div>
        <hr />
        <div class="cokielayDown dlyflx">
          <p class="cokielaydTop">Preferências de privacidade</p>
          <p class="cokielaydDesc">
            Ao visitar qualquer site, ele pode armazenar ou recuperar informações em seu navegador, principalmente na forma de cookies. Essas informações podem ser sobre você, suas preferências ou seu dispositivo e são usadas principalmente para fazer com que o site funcione conforme esperado. As informações geralmente não identificam você diretamente, mas podem proporcionar uma experiência web mais personalizada. Como respeitamos seu direito à privacidade, você pode optar por não permitir alguns tipos de cookies. Clique nos diferentes títulos de categoria para saber mais e alterar nossas configurações padrão. No entanto, bloquear alguns tipos de cookies pode afetar sua experiência no site e os serviços que podemos oferecer. <a href="#" title="Política de Privacidade" aria-label="Política de Privacidade"><span>Política de Privacidade</span></a> <b>Declaração</b>          </p>

          <div class="cokielayDivdown">
            <p class="coklaydownP">Gerenciar preferências</p>
            <ul class="cokidownUl">
              <li class="cokidownli dlyflx" style="padding: 25px 0px 25px">
                <div class="ckdTops">
                  <div class="ckdLeft">
                    <div class="icon_f">
                      <svg class="icon" aria-hidden="true">
                        <use xlink:href="#icon-add"></use>
                      </svg>
                      <svg class="icon icon_active" aria-hidden="true">
                        <use xlink:href="#icon-add1"></use>
                      </svg>
                    </div>
                    <p class="ckdlipmid">Cookie estritamente necessário</p>
                  </div>
                  <p class="ckdlipr">Sempre ativado</p>
                </div>
                <p class="ckdDowns">
                  Esses cookies são necessários para o funcionamento do site e não podem ser desativados em nossos sistemas. Eles geralmente são definidos apenas em resposta a ações que você realiza, que equivalem a uma solicitação de serviços, como configurar suas preferências de privacidade, fazer login ou preencher formulários. Você pode configurar seu navegador para bloquear esses cookies ou alertá-lo sobre eles, mas algumas partes do site não funcionarão depois. Esses cookies não armazenam nenhuma informação que permita identificar pessoalmente.                </p>
              </li>
            </ul>
          </div>
        </div>
        <div class="cklyBtn">
          <a href="javascript:;" role="button" aria-label="Aceitar todos os cookies" class="active cokieAall">Aceitar todos os cookies</a>
        </div>
      </div>
      <script>
        $(document).on("click", ".ai_cookie_close", function () {
          $(".ai_cookie").hide();
        });
        $(document).on("click", ".ai_cookie_close1", function () {
          $(".ai_cookieSettings").hide();
        });
        $(document).on("click", ".ai_cookie_open", function () {
          $(".ai_cookieSettings").show();
        });
        $(document).on("click", ".ckdLeft", function () {
          var $li = $(this).closest("li"); 
          var $downs = $li.find(".ckdDowns"); 
          var $iconBox = $(this).find(".icon_f"); 

         
          $downs.slideToggle(200, function () {
            if ($downs.is(":visible")) {
              $iconBox.find(".icon").hide();
              $iconBox.find(".icon_active").show();
            } else {
              $iconBox.find(".icon").hide();
              $iconBox.find(".icon").first().show(); 
            }
          });
        });     
      </script>
    </div>
<link rel="stylesheet" type="text/css" href="https://accounts.google.com/gsi/style">
<div class="login_tab">
  <div class="login_mainC">
    <div class="login_tab_top">
      <div class="login_tab_top1">
        <a href="javascript:;" role="tab" aria-label="Entrar" aria-selected="true" class="login_tab_top1a ">Entrar</a>
        <a href="javascript:;" role="tab" aria-label="Inscrever-se" aria-selected="false" class="login_tab_top2a">Inscrever-se</a>
      </div>
      <div class="login_tab_top2">
        <a href="javascript:;"><img src="/assets/images/login_mainC_top_m_img.png" alt=""></a>
      </div>

    </div>
    <div class="forms_google">
      <div id="g_id_signin"></div>
    </div>
    <div class="forms_or">
      <div class="forms_line"></div>
      <span>OR</span>
      <div class="forms_line"></div>
    </div>
    <div class="login_tab_bottom">
      <div class="login_tab_top1a_bottom">

        <div class="login_form ">
          <div class="login_forms">
            <img src="/assets/images/login_email.png" alt="E-mail">
            <input type="text" placeholder="Por favor, preencha seu endereço de e -mail" class="login_forms_email">
            <span></span>
          </div>
          <div class="login_forms">
            <img src="/assets/images/login_password.png" alt="Senha">
            <input type="password" placeholder="Por favor, insira sua senha" class="login_forms_password">
            <i style="cursor: pointer;" class="layui-icon layui-icon-eye-invisible toggle-password"
              id="toggleLoginPassword"></i>
            <span></span>
          </div>
          <div class="login_forms forms_code1">
            <input type="text" placeholder="Por favor, insira o código de verificação gráfico"
              class="login_forms_captcha">
            <img src="" alt="Por favor, insira o código de verificação gráfico" class="login-js-refresh-captcha">
            <span></span>
          </div>
          <div class="login_forms_bottom">
            <label class="login_remember">
              <input type="checkbox" aria-label="Lembre de mim">
              <span>Lembre de mim</span>
            </label>
            <a href="/pt/account/forgetPassword.html" aria-label="Alterar a senha" class="login_forget">Esqueceu sua senha</a>
          </div>
          <a href="javascript:;" type="button" role="button" aria-label="Entrar" id="login_button" class="login_button">Entrar</a>

        </div>
      </div>
      <div class="login_tab_top2a_bottom">
        <div class="login_form">
          <div class="login_forms">
            <img src="/assets/images/login_email.png" alt="E-mail">
            <input type="text" placeholder="Por favor, preencha seu endereço de e -mail" class="register_forms_email">
            <span></span>
          </div>
          <div class="login_forms">
            <img src="/assets/images/login_password.png" alt="Senha">
            <input type="password" placeholder="Por favor, insira sua senha" class="register_forms_password">
            <i style="cursor: pointer;" class="layui-icon layui-icon-eye-invisible toggle-password"
              id="toggleRegisterPassword"></i>
            <span></span>
          </div>
          <div class="login_forms forms_code1">
            <input type="text" placeholder="Por favor, insira o código de verificação gráfico"
              class="register_forms_captcha">
            <img src="" alt="Por favor, insira o código de verificação gráfico" class="register-js-refresh-captcha" id="register_captcha">
            <span></span>
          </div>
          <div class="login_forms">
            <input type="text" class="verify-code-input" placeholder="Por favor, insira o código de verificação">
            <button id="verifyCodeBtn" class="verify-code-btn" data-text="Obtenha código de verificação">Obtenha código de verificação</button>
            <span></span>
          </div>
          <a href="javascript:;" role="button" aria-label="Inscrever-se" class="login_button" id="register_button">Inscrever-se</a>
        </div>
      </div>

    </div>
  </div>
</div>
<script src="https://accounts.google.com/gsi/client" async defer></script>
<script>
  $(document).ready(function () {
    LoginRegister.init({
      selectors: {
        email: {
          login: '.login_forms_email',
          register: '.register_forms_email'
        },
        password: {
          login: '.login_forms_password',
          register: '.register_forms_password'
        },
        captcha: {
          login: '.login_forms_captcha',
          register: '.register_forms_captcha',
          verify: '.verify-code-input'
        },
        buttons: {
          login: '#login_button',
          register: '#register_button',
          verifyCode: '#verifyCodeBtn'
        },
        tabs: {
          login: '.login_tab_top1a',
          register: '.login_tab_top2a',
          close: '.login_tab_top2 a'
        }
      },
      messages: {
        email: "O formato de email está incorreto",
        password: {
          empty: "Por favor, insira sua senha",
          invalid: "A senha deve ser de 6 a 18 caracteres e conter letras e números"
        },
        captcha: "Por favor, insira o código de verificação gráfico",
        verifyCode: "Por favor, insira o código de verificação",
        operationInProgress: "Operação em andamento, espere",
        unexpectedError: "Um erro inesperado ocorreu"
      },
      urls: {
        login: "/pt/account/dologin.html",
        register: "/pt/account/register.html",
        getMailSign: "/pt/account/getMailSign",
        sendMail: "/pt/account/registerSendMail.html",
        redirctUrl:'pc'
      }
    });
  });
  function initializeGoogleSignIn() {
    if (typeof google === 'undefined' || !google.accounts) {
      setTimeout(initializeGoogleSignIn, 100);
     
      return;
    }

    google.accounts.id.initialize({
      client_id: "294584378011-s53466qiuig7d30tcqrpjv1ue3ni2gun.apps.googleusercontent.com",
      callback: handlePCCredentialResponse,
      auto_select: false,
      locale: 'pt',
      
    });
    
    google.accounts.id.renderButton(
      document.getElementById("g_id_signin"),
      {
        theme: "outline",
        size: "large",
        type: "standard",
        shape: "rectangular",
        logo_alignment: "left",
        text: "signin_with",
        width: 400,
        locale: 'pt',
      }
    );
    
  }
  document.addEventListener('DOMContentLoaded', initializeGoogleSignIn);
</script>
  <!-- Google tag (gtag.js) -->
  <script  async src="https://www.googletagmanager.com/gtag/js?id=G-LN407DS0B4"></script>
  <script>
    window.dataLayer = window.dataLayer || [];
    function gtag(){dataLayer.push(arguments);}
    gtag('js', new Date());
  
    gtag('config', 'G-LN407DS0B4');
  </script>
  <script src="/kukukuwl.js"   type="text/javascript"></script>
 <a href="javascript:void(0);" class="totop" role="button" aria-label="De volta ao topo"><img src="/assets/images/totop.png" alt="" /></a>
        <script>
            layui.use(function () {
                var element = layui.element;
                element.tab({
                    headerElem: "#skilldetailsR1s_header>button",
                    bodyElem: "#skilldetailsR1s_body>div",
                });
            });
            function initSkillCloneCopy() {
                $(document)
                    .off("click.skillCloneCopy")
                    .on("click.skillCloneCopy", ".skill_clone .skill_clone_copy", function (e) {
                        e.preventDefault();

                        var $btn = $(this);
                        var $img = $btn.find("img");

                        var text = $.trim($btn.siblings("p").text());

                        var $temp = $("<textarea>");
                        $("body").append($temp);
                        $temp.val(text).select();

                        try {
                            document.execCommand("copy");

                            // 切换成功图标
                            $img.attr("src", "/assets/images/prompt_word2RMs_p_btn_ok.png");
                            $btn.addClass("active");
                            // 清除上一次定时器
                            clearTimeout($btn.data("copyTimer"));

                            // 3秒后恢复原图
                            var timer = setTimeout(function () {
                                $img.attr("src", "/assets/images/prompt_word2RMs_p_btn.png");
                                $btn.removeClass("active");
                            }, 3000);

                            $btn.data("copyTimer", timer);
                        } catch (err) {
                            alert("复制失败");
                        }

                        $temp.remove();
                    });
            }

            function initSkilldetailsFixed() {
                var $box = $(".skilldetailsR1");
                if (!$box.length) {
                    return;
                }
                var fixedTop = 20;
                var topOffset = $box.offset().top;
                var boxHeight = $box.outerHeight();
                var $placeholder = $("<div></div>").height(boxHeight).hide();
                $box.before($placeholder);
                function handleFixed() {
                    if ($(window).width() <= 1024) {
                        $placeholder.hide();
                        $box.css({
                            position: "",
                            top: "",
                            width: "",
                            zIndex: "",
                        });
                        return;
                    }
                    var scrollTop = $(window).scrollTop();
                    if (scrollTop >= topOffset - fixedTop) {
                        $placeholder.show();
                        $box.css({
                            position: "fixed",
                            top: fixedTop + "px",
                            width: $placeholder.width() + "px",
                            zIndex: 100,
                        });
                    } else {
                        $placeholder.hide();
                        $box.css({
                            position: "",
                            top: "",
                            width: "",
                            zIndex: "",
                        });
                    }
                }
                $(window).on("scroll.skilldetailsFixed resize.skilldetailsFixed", handleFixed);
                handleFixed();
            }
            function initSkilldetailsExpand() {
                $(".skilldetailsL_p").each(function () {
                    var $item = $(this);

                    $item.find(".skilldetailsL_p_expand").text($item.hasClass("active") ? "...Expandir tudo" : "Escondido");
                });

                $(document)
                    .off("click.skilldetailsExpand")
                    .on("click.skilldetailsExpand", ".skilldetailsL_p_expand", function (e) {
                        e.preventDefault();

                        var $parent = $(this).closest(".skilldetailsL_p");

                        if ($parent.hasClass("active")) {
                            $parent.removeClass("active");
                            $(this).text("Escondido");
                        } else {
                            $parent.addClass("active");
                            $(this).text("...Expandir tudo");
                        }
                    });
            }

            function checkFollow() {
                let dataSources = [];
                $('button.skill_datas').each(function () {
                    let source = $(this).data('source');
                    if (source) {
                        dataSources.push(String(source).trim());
                    }
                });
                dataSources = [...new Set(dataSources)];
                if (dataSources.length === 0) {
                    return;
                }
                $.post('/api/user/FindSkillFollow', {
                    source: dataSources
                }, function (res) {
                    if (res.code == 1 && res.data.length > 0) {
                        res.data.forEach(function (id) {
                            $('button.skill_datas[data-source="' + id + '"]').addClass('active');
                        });
                    }
                }, 'json');
            }
            $(function () {
                checkFollow();
                initSkillCloneCopy();
                initSkilldetailsFixed();
                initSkilldetailsExpand();
            });
            $(document).on('click', 'button.skill_datas', function (e) {
                e.preventDefault();
                const that = $(this);
                let source = that.data('source');
                if (!source || source === undefined || !CommonUtils.checkLogin()) return false;
                layer.load(2, {
                    shade: [0.3, "#000"],
                    time: 0,
                });
                var path = "/user/followSkill";
                var realPath = CommonUtils.getRealPath(path);
                $.post(realPath, { source: source }, function (result) {
                    layer.closeAll();
                    CommonUtils.showMsg(result.msg, result.code);
                    if (result.code == 1) {
                        var values = result.data.data_source;
                        var count = result.data.count;
                        var collected = result.data.collected;
                        var elements = $(".collectNums_" + values);
                        if (elements.length > 0) {
                            elements.each(function () {
                                $(this).parents('button').toggleClass('active', collected);
                                $(this).text(count);
                            });
                        }
                    }
                })
            })

            $(document).on('click', '.skill_downloadzip', function (e) {
                e.preventDefault();
                const url = $(this).data("source");
                if (!url) return;
                window.open("/api/index/download_zip?source=" + encodeURIComponent(url), "_blank");
            })

        </script>
    </body>

</html>