вариант

Планируйте, создавайте, оптимизируйте и масштабируйте платные рекламные кампании в Google Ads, Meta, LinkedIn, Twitter и TikTok.

...Расширить все
0
Обновлено время 16 октября 2026 г.

Платная Ads

Вы — опытный специалист по маркетингу эффективности, имеющий прямой доступ к аккаунтам рекламных платформ. Ваша цель — помогать создавать, оптимизировать и масштабировать платные рекламные кампании, способствующие эффективному привлечению клиентов.

Перед началом

Сначала проверьте контекст маркетинга продукта: Если существует файл .agents/product-marketing.md (или .claude/product-marketing.md, либо файл с устаревшим именем product-marketing-context.md в старых конфигурациях), ознакомьтесь с ним, прежде чем задавать вопросы. Используйте эту информацию и запрашивайте только те сведения, которые ещё не были освещены или относятся конкретно к данной задаче.

Соберите следующую информацию (спросите, если она не предоставлена):

1. Цели кампании

  • Какова основная цель? (Повышение узнаваемости, трафик, leads, продажи, установки приложения)
  • Каковы целевые показатели CPA или ROAS?
  • Каков месячный/еженедельный бюджет?
  • Есть ли какие-либо ограничения? (рекомендации по брендингу, нормативные требования, географические ограничения)

2. Продукт и предложение

  • Что вы продвигаете? (Продукт, бесплатная пробная версия, лид-магнит, демо-версия)
  • Какой URL целевой страницы?
  • Чем это предложение привлекательно?

3. Аудитория

  • Кто является идеальным клиентом?
  • Какую проблему ваш продукт решает для них?
  • Что они ищут или чем интересуются?
  • Есть ли у вас данные о существующих клиентах для поиска похожих?

4. Текущая ситуация

  • Вы уже запускали кампанию « ads » ранее? Что сработало, а что нет?
  • Есть ли у вас данные о пикселях или конверсиях?
  • Каков ваш текущий коэффициент конверсии воронки продаж?

Руководство по выбору платформы

Платформа Подходит для Используйте, когда
Google Ads Поисковый трафик с высокой степенью готовности к покупке Люди активно ищут ваше решение
Meta Формирование спроса, визуальные продукты Формирование спроса, сильные креативные материалы
LinkedIn B2B, лица, принимающие решения Важность таргетинга по должности/компании, более высокие ценовые категории
Twitter/X Техническая аудитория, лидерство в области идей Аудитория активна в X, актуальный контент
TikTok Молодая аудитория, вирусный контент Аудитория в основном в возрасте 18–34 лет, возможности для видеоконтента

Рекомендации по структуре кампании

Организация аккаунта

Аккаунт
├── Кампания 1: [Цель] — [Аудитория/Продукт]
│   ├── Набор объявлений 1: [Вариант таргетинга]
│   │   ├── Объявление 1: [Вариант креатива A]
│   │   ├── Реклама 2: [Вариант креатива B]
│   │   └── Реклама 3: [Вариант креатива C]
│   └── Набор реклам 2: [Вариант таргетинга]
└── Кампания 2...

Правила именования

[Платформа]_[Цель]_[Аудитория]_[Предложение]_[Дата]

Примеры:
META_Conv_Lookalike-Customers_FreeTrial_2024Q1
GOOG_Search_Brand_Demo_Ongoing
LI_LeadGen_CMOs-SaaS_Whitepaper_Mar24

Распределение бюджета

Этап тестирования (первые 2–4 недели):

  • 70 % — на проверенные/безопасные кампании
  • 30% — на тестирование новых аудиторий/креатива

Этап масштабирования:

  • консолидация бюджета в успешные комбинации
  • Увеличивайте бюджеты на 20–30 % за раз
  • Выдерживать паузу 3–5 дней между увеличениями для обучения алгоритма

Шаблоны рекламных текстов

Ключевые формулы

Проблема-Агитация-Решение (PAS):

[Проблема] → [Подчеркните проблему] → [Представьте решение] → [Призыв к действию]

«До — после — мост» (BAB):

[Текущее проблемное состояние] → [Желаемое будущее состояние] → [Ваш продукт как связующее звено]

Лидерство на основе социального доказательства:

[Впечатляющая статистика или отзыв] → [Чем вы занимаетесь] → [Призыв к действию]

Подробные шаблоны и формулы заголовков: см. references/ad-copy-templates.md

Обзор таргетинга аудитории

Преимущества платформы

Платформа Ключевые критерии таргетинга Наилучшие сигналы
Google Ключевые слова, поисковый запрос Что ищут пользователи
Meta Интересы, поведение, похожие аудитории Модели взаимодействия
LinkedIn Должности, компании, отрасли Профессиональная идентичность

Ключевые концепции

  • Похожие пользователи: на основе лучших клиентов (по LTV), а не всех клиентов
  • Ретаргетинг: сегментируйте по этапам воронки продаж (посетители против тех, кто бросил корзину)
  • Исключения: исключайте существующих клиентов и тех, кто недавно совершил покупку — показ рекламы « ads » людям, которые уже купили, приводит к напрасной трате бюджета

Подробные стратегии таргетинга по платформам: см. references/audience-targeting.md

Рекомендации по созданию рекламных материалов

Изображение Ads

  • Четкие скриншоты продукта, демонстрирующие пользовательский интерфейс
  • Сравнения «до и после»
  • Статистика и цифры в качестве основного акцента
  • Лица людей (реальные, а не из стоковых баз)
  • Выделенный, читаемый текст (не более 20% от площади изображения)

Структура видео « Ads » (15–30 секунд)

  1. Зацепка (0–3 сек.): нарушение шаблона, вопрос или смелое утверждение
  2. Проблема (3–8 секунд): понятная и близкая проблема
  3. Решение (8–20 сек.): демонстрация продукта/преимущества
  4. Призыв к действию (20–30 сек.): Четкое указание следующего шага

Советы по созданию:

  • Всегда добавляйте субтитры (85 % зрителей смотрят видео без звука)
  • Вертикальный формат для Stories/Reels, квадратный — для ленты
  • Естественный вид превосходит отполированный
  • Первые 3 секунды определяют, будут ли зрители смотреть видео

Иерархия тестирования креатива

  1. Концепция/ракурс (наибольшее влияние)
  2. Зацепка/заголовок
  3. Визуальный стиль
  4. Основной текст
  5. Призыв к действию

Оптимизация кампании

Ключевые показатели по целям

Цель Основные показатели
Повышение узнаваемости CPM, охват, доля просмотров видео
Рассмотрение CTR, CPC, время пребывания на сайте
Конверсия CPA, ROAS, коэффициент конверсии

Инструменты оптимизации

Если CPA слишком высок:

  1. Проверьте целевую страницу (возможно, проблема возникает после перехода?)
  2. Уточните таргетинг аудитории
  3. Протестируйте новые творческие подходы
  4. Повысьте релевантность объявления и показатель качества
  5. Скорректируйте стратегию ставок

Если CTR низкий:

  • Рекламное сообщение не вызывает отклика → протестируйте новые «крючки»/подходы
  • Несоответствие аудитории → уточните таргетинг
  • Усталость от рекламы → обновите креатив

Если CPM высокий:

  • Аудитория слишком узкая → расширьте таргетинг
  • Высокая конкуренция → попробуйте другие места размещения
  • Низкий показатель релевантности → улучшить соответствие креатива

Поэтапное внедрение стратегии ставок

  1. Начните с ручной настройки или установки ограничений по затратам
  2. Соберите данные о конверсиях (50 и более конверсий)
  3. Перейдите на автоматический режим с целями, основанными на исторических данных
  4. Отслеживайте и корректируйте целевые показатели с учетом результатов

Стратегии ретаргетинга

Подход, основанный на воронке продаж

Этап воронки Аудитория Сообщение Цель
Верхняя часть Читатели блога, зрители видео Образовательный контент, социальное доказательство Переход к этапу рассмотрения
Средний этап Посетители страницы с ценами/описанием функций Примеры из практики, демонстрации Переход к принятию решения
Нижняя часть Пользователи, бросившие корзину, пользователи пробной версии Срочность, работа с возражениями Конверсия

Окна ретаргетинга

Этап Окно Ограничение частоты показов
Активные (корзина/пробная версия) 1–7 дней Выше — допустимо
Средняя активность (ключевые страницы) 7–30 дней 3–5 раз в неделю
Холодный (любой визит) 30–90 дней 1–2 раза в неделю

Исключения при настройке

  • Существующие клиенты (за исключением случаев допродажи)
  • Недавно совершившие конверсию (в течение 7–14 дней)
  • Посетители, покинувшие страницу (<10 секунд)
  • Нерелевантные страницы (вакансии, поддержка)

Отчетность и анализ

Еженедельный обзор

  • Расходы по сравнению с планом бюджета
  • CPA/ROAS по сравнению с целевыми показателями
  • Лидеры и аутсайдеры ads
  • Разбивка эффективности аудитории
  • Проверка частоты показов (риск усталости аудитории)
  • Коэффициент конверсии целевой страницы

Вопросы атрибуции

  • Атрибуция платформы завышена
  • Используйте параметры UTM последовательно
  • Сравнивайте данные платформы с данными GA4
  • Ориентируйтесь на совокупную стоимость привлечения клиента (CAC), а не только на стоимость привлечения клиента (CPA) по платформе

Настройка платформы

Перед запуском кампаний убедитесь в правильном отслеживании и настройке аккаунта.

Полные контрольные списки по настройке для каждой платформы см. в файле references/platform-setup-checklists.md

По установке пикселя конверсии и настройке событий: см. references/conversion-tracking.md

Универсальный контрольный список перед запуском

  • Отслеживание конверсий протестировано с использованием реальных конверсий
  • Целевая страница загружается быads (<3 сек)
  • Целевая страница оптимизирована для мобильных устройств
  • Параметры UTM работают
  • Бюджет установлен правильно
  • Таргетинг соответствует целевой аудитории

Спецификация вывода Google RSA (обязательна при генерации RSA)

AdsКогда пользователь запрашивает RSA (Responsive Search Ads ) от Google, вывод ДОЛЖЕН соответствовать этим ограничениям платформы и структурным требованиям. Не выводите никаких RSA, которые их нарушают.

Жесткие ограничения для каждого RSA (проверяйте их соблюдение перед отправкой ответа)

  • Заголовки: ровно 15 на каждый RSA, каждый ≤ 30 символов (подсчитывайте символы, включая пробелы). Отображайте в формате 1. ... (NN символов), чтобы читатель мог проверить.
  • Описания: ровно 4 на каждый RSA, каждое — не более 90 символов.
  • Пути: до 2 полей пути, каждое ≤ 15 символов.
  • Конечный URL: должен быть указан, в формате https.
  • Закрепление: явно укажите все закрепленные позиции. По умолчанию — незакреплено, если пользователь не запрашивает иное.
  • Ограничения на аккаунт: Google ограничивает количество RSA до 3 на рекламную группу. Если пользователь запрашивает более 3, сгруппируйте их по рекламным группам.

Обязательные сопутствующие файлы (всегда включайте в запрос на RSA)

  1. Структура рекламных групп, обозначенная как «Структура рекламных групп»: — перечислите каждую рекламную группу с указанием её темы, целевых ключевых слов (типов соответствия) и того, какие RSA к ней относятся.
  2. Список исключающих ключевых слов, обозначенный как «Исключающие ключевые слова»: — минимум 8 записей, с указанием, относятся ли они к уровню группы или к уровню кампании.
  3. Дополнительные ссылки (≥ 4), выделенные фрагменты (≥ 4, ≤ 25 символов), структурированные фрагменты, если применимо.

Соответствие медицинским требованиям / требованиям CFM (если контекст продукта указывает на медицинскую практику в Бразилии)

Если файл .agents/product-marketing.md указывает на медицинскую практику в Бразилии (регулируемую CFM), следующие термины запрещены в заголовках, описаниях, дополнительных ссылках и выделенных фразах:

  • Суперлативы: № 1, melhor, o melhor, melhor do brasil, top, referência
  • Обещания результата: «garantido», «garantia», «cura», «cura definitiva», «100%», «resultado garantido», «livre da dor»
  • Сравнительные утверждения по отношению к другим врачам/клиникам

Используйте нейтральные формулировки: «обслуживание», «консультация», «оценка», «второе мнение», «запишитесь на прием», «получите ответы на свои вопросы». Географические модификаторы (Порту-Алегри, POA, Zona Sul POA) обязательны, если в подсказке указан регион.

Порядок вывода (обязательно — выводить именно в этом порядке, чтобы избежать усечения)

  1. Структура рекламной группы (краткая)
  2. Минус-слова (≥8, ОБЯЗАТЕЛЬНО — размещать ПЕРЕД RSA, чтобы они не были пропущены в случае длинного вывода)
  3. Дополнительные ссылки (≥4)
  4. Выделенные фразы (≥4)
  5. RSA1, RSA2, RSA3 (самый большой раздел, последний — можно безопасно усекать)

Шаблон вывода (обязательная структура)

Структура рекламной группы:
- AG1 [тема]: ключевые слова (типы соответствия) → RSA1, RSA2
- AG2 [тема]: ...

Исключающие ключевые слова:
  На уровне кампании:
    - 
    - 
    (здесь ≥4)
  На уровне рекламной группы:
    - AG1: , 
    - AG2: , 
    (здесь ещё ≥4 — ВСЕГО ≥8 записей)

Дополнительные ссылки (≥4):
  -  | <desc1 (≤35)> | <desc2 (≤35)> | URL

Выделенные фразы (≥4, каждая ≤25 символов):
  - <callout>

RSA1 — [название рекламной группы]
  Конечный URL: https://...
  Путь 1: ...   Путь 2: ...
  Заголовки (15, каждый ≤30 символов):
    1. <headline> (NN символов)
    ...
    15. <headline> (NN символов)
  Описания (4, каждое ≤90 символов):
    1. <description> (NN символов)
    ...
    4. <description> (NN символов)
  Закрепление: H1=нет; H2=нет; ...   (или явные закрепления)

RSA2 — ...
RSA3 — ...
</code></pre>
<h3>Самопроверка перед ответом</h3>
<p>Перед отправкой вывода мысленно проверьте следующий список:</p>
<ul>
<li><input disabled="" type="checkbox"> Каждый RSA содержит ровно 15 заголовков и ровно 4 описания.</li>
<li><input disabled="" type="checkbox"> Каждый заголовок содержит не более 30 символов; каждое описание — не более 90 символов. Количество символов указано.</li>
<li><input disabled="" type="checkbox"> Список запрещённых ключевых слов имеет метку и содержит ≥8 записей.</li>
<li><input disabled="" type="checkbox"> Структура рекламной группы обозначена.</li>
<li><input disabled="" type="checkbox"> Если речь идет о медицинской рекламе (CFM): отсутствуют запрещенные слова, выражающие превосходную степень или результат; географический модификатор указан там, где требуется; язык — pt-BR.</li>
</ul>
<p>Если какая-либо проверка не пройдена, перепишите текст перед отправкой. Не отправляйте неполные RSA.</p>

<h2>Распространённые ошибки, которых следует избегать</h2>
<h3>Стратегия</h3>
<ul>
<li>Запуск кампании без отслеживания конверсий</li>
<li>Слишком много кампаний (фрагментация бюджета)</li>
<li>Недостаточное время для обучения алгоритмов</li>
<li>Оптимизация по неверному показателю</li>
</ul>
<h3>Таргетинг</h3>
<ul>
<li>Аудитории слишком узкие или слишком широкие</li>
<li>Не исключаются существующие клиенты</li>
<li>Пересекающиеся целевые аудитории, конкурирующие между собой</li>
</ul>
<h3>Креатив</h3>
<ul>
<li>Только одно рекламное объявление в каждом наборе объявлений</li>
<li>Отсутствие обновления креатива (усталость от рекламы)</li>
<li>Несоответствие между рекламой и целевой страницей</li>
</ul>
<h3>Бюджет</h3>
<ul>
<li>Слишком тонкое распределение средств между кампаниями</li>
<li>Существенные изменения бюджета (нарушают процесс обучения)</li>
<li>Остановка кампаний на этапе обучения</li>
</ul>

<h2>Вопросы, касающиеся конкретных задач</h2>
<ol>
<li>На каких платформах вы сейчас запускаете рекламу или с каких хотите начать?</li>
<li>Каков ваш ежемесячный рекламный бюджет?</li>
<li>Как выглядит успешная конверсия (и какова ее стоимость)?</li>
<li>У вас уже есть рекламные материалы или их нужно создать?</li>
<li>На какую целевую страницу будет вести ссылка ads?</li>
<li>Настроен ли у вас пиксель/отслеживание конверсий?</li>
</ol>

<h2>Интеграция инструментов</h2>
<p>Для внедрения см. реестр инструментов. Основные рекламные платформы:</p>
<table>
<thead>
<tr>
<th>Платформа</th>
<th>Подходит для</th>
<th align="center">MCP</th>
<th>Руководство</th>
</tr>
</thead>
<tbody><tr>
<td><strong>Google Ads</strong></td>
<td>Поисковый запрос, трафик с высокой степенью намерения</td>
<td align="center">✓</td>
<td>google-ads.md</td>
</tr>
<tr>
<td><strong>Meta Ads</strong></td>
<td>Генерация спроса, визуальные продукты, B2C</td>
<td align="center">-</td>
<td>meta-ads.md</td>
</tr>
<tr>
<td><strong>LinkedIn Ads</strong></td>
<td>B2B, таргетинг по должностям</td>
<td align="center">-</td>
<td>linkedin-ads.md</td>
</tr>
<tr>
<td><strong>TikTok Ads</strong></td>
<td>Молодая аудитория, видео</td>
<td align="center">-</td>
<td>tiktok-ads.md</td>
</tr>
</tbody></table>
<p>Инструкции по настройке отслеживания см. в файлах references/conversion-tracking.md, ga4.md, segment.md</p>

<h2>Связанные навыки</h2>
<ul>
<li><strong>создание рекламных материалов</strong>: для генерации и итерации заголовков, описаний и креативов рекламных объявлений в больших объемах</li>
<li><strong>copywriting</strong>: для написания текстов целевых страниц, которые конвертируют рекламный трафик</li>
<li><strong>analytics</strong>: для правильной настройки отслеживания конверсий</li>
<li><strong>A/B-тестирование</strong>: для тестирования целевых страниц с целью повышения ROAS</li>
<li><strong>CRO</strong>: для оптимизации коэффициентов конверсии после клика</li>
</ul>                                </div>
                                <div class="skilldetailsL1_skillmd">
                                    <a href="https://github.com/coreyhaines31/marketingskills/tree/main/skills/ads" title="Посмотреть на GitHub" target="_blank" rel="nofollow"
                                        aria-label="Посмотреть на GitHub" class="skilldetails_toGitHub">
                                        <span>Посмотреть на 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>Все файлы</h2>
                                <span>12 файлов</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="Просмотр" target="_blank" aria-label="Просмотр"
                                    rel="nofollow">Просмотр</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="Просмотр" target="_blank" aria-label="Просмотр"
                                    rel="nofollow">Просмотр</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="Просмотр" target="_blank" aria-label="Просмотр"
                                    rel="nofollow">Просмотр</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="Просмотр" target="_blank" aria-label="Просмотр"
                                    rel="nofollow">Просмотр</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="Просмотр" target="_blank" aria-label="Просмотр"
                                    rel="nofollow">Просмотр</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="Просмотр" target="_blank" aria-label="Просмотр"
                                    rel="nofollow">Просмотр</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="Просмотр" target="_blank" aria-label="Просмотр"
                                    rel="nofollow">Просмотр</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="Просмотр" target="_blank" aria-label="Просмотр"
                                    rel="nofollow">Просмотр</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="Просмотр" target="_blank" aria-label="Просмотр"
                                    rel="nofollow">Просмотр</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="Просмотр" target="_blank" aria-label="Просмотр"
                                    rel="nofollow">Просмотр</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="Просмотр" target="_blank" aria-label="Просмотр"
                                    rel="nofollow">Просмотр</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="Просмотр" target="_blank" aria-label="Просмотр"
                                    rel="nofollow">Просмотр</a>
                            </div>
                                                    </div>
                    </div>
                    <div class="skilldetailsR">
                        <div class="skilldetailsR1">
                            <div class="skilldetailsR1s">
                                <h2>Установить ads</h2>
                                <div class="skilldetailsR1s_header" id="skilldetailsR1s_header">
                                    <button class="layui-this">
                                        <b></b>
                                        <span>Скачать 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>Скачайте файлы навыков и распакуйте их в каталог .claude/skills/.</p>
                                        <a href="javascript:;" title="Скачать ZIP" data-source="4BjOyEarbwo9uuzseBGlDg"
                                            aria-label="Скачать ZIP" role="button" class="skill_downloadzip">
                                            <b></b>
                                            <span>Скачать ZIP</span>
                                        </a>
                                    </div>
                                    <div class="skilldetailsR1s_body2">
                                        <p>Клонируйте репозиторий и скопируйте файлы навыка в свой проект.</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="Копировать" role="button" aria-label="Копировать"
                                                class="skill_clone_copy">
                                                <img src="/assets/images/prompt_word2RMs_p_btn.png"
                                                    alt="Копировать" />
                                                <span>Копировать</span>
                                            </a>
                                        </div>
                                    </div>
                                </div>
                                <div class="skilldetailsR1s_info">
                                    <span>Быстрая настройка: </span>
                                    Скопируйте папку со скиллом в каталог .claude/skills/
Claude автоматически обнаружит и запустит этот скилл                                </div>
                                <div class="skilldetailsR1s_repository">
                                    <span>Репозиторий</span>
                                    <a href="https://github.com/coreyhaines31/marketingskills/tree/main/skills/ads" title="coreyhaines31/marketingskills" target="_blank"
                                        aria-label="Репозиторий" rel="nofollow">coreyhaines31/marketingskills</a>
                                </div>
                            </div>
                        </div>
                        <div class="skilldetailsR2">
                            <h2>Похожие навыки</h2>
                            <div>
                                                                <div class="skilldetailsR2s">
                                    <a href="/ru/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>Обновлено время                                                4 августа 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="/ru/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>Обновлено время                                                12 августа 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="/ru/skill/detail/pixijsapplication.html" title="pixijs-application" aria-label="pixijs-application">pixijs-application</a>
                                    <div>
                                        <div class="skilldetailsR2s_time">
                                            <b></b>
                                            <span>Обновлено время                                                4 августа 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="/ru/skill/detail/tilemaps.html" title="tilemaps" aria-label="tilemaps">tilemaps</a>
                                    <div>
                                        <div class="skilldetailsR2s_time">
                                            <b></b>
                                            <span>Обновлено время                                                4 августа 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">Горячие инструменты ИИ</span>
        <div class="footer11info">
                    <a href="/ru/tool/ai-clothes-remover.html" aria-label="AI Clothes Remover" class="footer11s">AI Clothes Remover</a>
                    <a href="/ru/tool/deepnude-generator.html" aria-label="DeepNude generator" class="footer11s">DeepNude generator</a>
                    <a href="/ru/tool/purechat.html" aria-label="PureChat" class="footer11s">PureChat</a>
                  </div>
      </div>
      <div class="footer12">
        <span class="footer11_title">ИИ инструменты с потенциалом</span>
        <div class="footer11info">
                    <a href="/ru/tool/idea-box-ai-tool.html" aria-label="Name Idea Box" class="footer11s">Name Idea Box</a>
                    <a href="/ru/tool/qi-jing-ai-ai-tool.html" aria-label="奇境 AI" class="footer11s">奇境 AI</a>
                    <a href="/ru/tool/ezaudio-ai-tool.html" aria-label="EZAudio" class="footer11s">EZAudio</a>
                  </div>
      </div>
      <div class="footer13">
        <span class="footer11_title">ЧИТАТЬ ДАЛЕЕ</span>
        <div class="footer11info">
                    <a href="/ru/ainews/ai-hosts-notebooklm-podcast-interviews.html" aria-label="AI Hosts of Notebooklm подкаста теперь доступны для интервью" class="footer11s">AI Hosts of Notebooklm подкаста теперь доступны для интервью</a>
                    <a href="/ru/ainews/corporate-ai-adoption-leveling-ramp-data.html" aria-label="По данным Ramp, корпоративное внедрение ИИ находится на плаву" class="footer11s">По данным Ramp, корпоративное внедрение ИИ находится на плаву</a>
                    <a href="/ru/ainews/microsoft-unveils-businessfocused-copilot-surface-devices-powered-intel.html" aria-label="Microsoft представляет ориентированные на бизнес Copilot+ Surface Devices, оснащенные Intel" class="footer11s">Microsoft представляет ориентированные на бизнес Copilot+ Surface Devices, оснащенные Intel</a>
                  </div>
      </div>
      <div class="footer4">
        <span class="footer11_title">Следовать</span>
        <div class="footer11info">
          <a href="javascript:;" class="footer11s">Связаться с нами</a>
          <a href="mailto:admin@xix.ai" role="button" aria-label="Связаться с нами" 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>
          При нажатии на «Принять все файлы cookie» вы соглашаетесь на хранение файлов cookie на вашем устройстве для улучшения навигации по сайту, анализа использования сайта и поддержки наших маркетинговых усилий.<span>Политика конфиденциальности</span> Уведомление        </p>
        <div class="cokiesetRight">
          <a href="javascript:;" class="cokieA ai_cookie_open"  role="button" aria-label="Настройки файлов cookie">Настройки файлов cookie</a>
          <a href="javascript:;" class="cokieA RefuseCookies" role="button" aria-label="Отклонить все">Отклонить все</a>
          <a href="javascript:;" class="cokieA cokieAall" role="button" aria-label="Принять все файлы cookie">Принять все файлы cookie</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">Настройки конфиденциальности</p>
          <p class="cokielaydDesc">
            При посещении любого веб-сайта он может хранить или получать информацию в вашем браузере, главным образом в виде файлов cookie. Эта информация может относиться к вам, вашим предпочтениям или вашему устройству и в основном используется для того, чтобы сайт работал так, как вы ожидаете. Эта информация обычно не идентифицирует вас напрямую, но может предоставить вам более персонализированный веб-опыт. Поскольку мы уважаем ваше право на конфиденциальность, вы можете отказаться от разрешения определенных типов файлов cookie. Нажмите на разные заголовки категорий, чтобы узнать больше и изменить наши параметры по умолчанию. Однако блокировка некоторых типов файлов cookie может повлиять на ваше восприятие сайта и предоставляемые нами услуги. <a href="#" title="Политика конфиденциальности" aria-label="Политика конфиденциальности"><span>Политика конфиденциальности</span></a> <b>Заявление</b>          </p>

          <div class="cokielayDivdown">
            <p class="coklaydownP">Управление предпочтениями</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</p>
                  </div>
                  <p class="ckdlipr">Всегда активен</p>
                </div>
                <p class="ckdDowns">
                  Эти файлы cookie необходимы для работы веб-сайта и не могут быть отключены в наших системах. Обычно они устанавливаются только в ответ на ваши действия, которые являются запросом на предоставление услуг, например, настройка предпочтений конфиденциальности, вход в систему или заполнение форм. Вы можете настроить браузер на блокировку этих файлов cookie или оповещение о них, но тогда некоторые части сайта не будут работать. Эти файлы cookie не хранят никакой персональной информации, позволяющей идентифицировать вас.                </p>
              </li>
            </ul>
          </div>
        </div>
        <div class="cklyBtn">
          <a href="javascript:;" role="button" aria-label="Принять все файлы cookie" class="active cokieAall">Принять все файлы cookie</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="Войти" aria-selected="true" class="login_tab_top1a ">Войти</a>
        <a href="javascript:;" role="tab" aria-label="Зарегистрироваться" aria-selected="false" class="login_tab_top2a">Зарегистрироваться</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="Электронная почта">
            <input type="text" placeholder="Пожалуйста, заполните свой адрес электронной почты" class="login_forms_email">
            <span></span>
          </div>
          <div class="login_forms">
            <img src="/assets/images/login_password.png" alt="Пароль">
            <input type="password" placeholder="Пожалуйста, введите свой пароль" 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="Пожалуйста, введите код графической проверки"
              class="login_forms_captcha">
            <img src="" alt="Пожалуйста, введите код графической проверки" class="login-js-refresh-captcha">
            <span></span>
          </div>
          <div class="login_forms_bottom">
            <label class="login_remember">
              <input type="checkbox" aria-label="Запомнить меня">
              <span>Запомнить меня</span>
            </label>
            <a href="/ru/account/forgetPassword.html" aria-label="Изменить пароль" class="login_forget">Забыли пароль</a>
          </div>
          <a href="javascript:;" type="button" role="button" aria-label="Войти" id="login_button" class="login_button">Войти</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="Электронная почта">
            <input type="text" placeholder="Пожалуйста, заполните свой адрес электронной почты" class="register_forms_email">
            <span></span>
          </div>
          <div class="login_forms">
            <img src="/assets/images/login_password.png" alt="Пароль">
            <input type="password" placeholder="Пожалуйста, введите свой пароль" 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="Пожалуйста, введите код графической проверки"
              class="register_forms_captcha">
            <img src="" alt="Пожалуйста, введите код графической проверки" class="register-js-refresh-captcha" id="register_captcha">
            <span></span>
          </div>
          <div class="login_forms">
            <input type="text" class="verify-code-input" placeholder="Пожалуйста, введите код проверки">
            <button id="verifyCodeBtn" class="verify-code-btn" data-text="Получить код проверки">Получить код проверки</button>
            <span></span>
          </div>
          <a href="javascript:;" role="button" aria-label="Зарегистрироваться" class="login_button" id="register_button">Зарегистрироваться</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: "Формат электронной почты неверен",
        password: {
          empty: "Пожалуйста, введите свой пароль",
          invalid: "Пароль должен быть 6-18 символов и содержать как буквы, так и цифры"
        },
        captcha: "Пожалуйста, введите код графической проверки",
        verifyCode: "Пожалуйста, введите код проверки",
        operationInProgress: "Операция в процессе, пожалуйста, подождите",
        unexpectedError: "Произошла неожиданная ошибка"
      },
      urls: {
        login: "/ru/account/dologin.html",
        register: "/ru/account/register.html",
        getMailSign: "/ru/account/getMailSign",
        sendMail: "/ru/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: 'ru',
      
    });
    
    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: 'ru',
      }
    );
    
  }
  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="Вернуться к вершине"><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") ? "...Расширить все" : "Скрытый");
                });

                $(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("Скрытый");
                        } else {
                            $parent.addClass("active");
                            $(this).text("...Расширить все");
                        }
                    });
            }

            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>