СтатьяИИРеклама

Как проверить оффер от ИИ перед запуском рекламы

Как разложить AI-черновик на обещания, сопоставить их с источниками и вернуть скидки, сроки и ограничения в объявление.

Карточки рекламных обещаний сопоставляются с подтверждающими документами и отметками проверки.

Если ИИ предложил заголовки и описания для рекламы, выпишите из них все проверяемые обещания до загрузки в кабинет. Цена, размер скидки, бесплатная доставка, срок гарантии, география, лидерство и ожидаемый результат должны получить источник и срок действия. Формулировка без подтверждения удаляется; условие, которое модель потеряла, возвращается в объявление или на видимое место посадочной страницы.

Такой порядок нужен даже для аккуратного текста. Модель может соединить реальную скидку с неверным охватом, превратить «до 30%» в «30%» или распространить гарантию одной серии на весь ассортимент. Проверка стилистики этих ошибок не найдёт.

Разложите текст на отдельные утверждения

Возьмите финальный вариант объявления. Промпт для этой проверки вторичен. Разделите текст на минимальные утверждения, каждое из которых можно подтвердить одним источником.

Например, в строке «Скидка 30% на все кресла, бесплатная доставка по Беларуси» есть минимум четыре утверждения:

  • скидка равна 30%;
  • скидка действует на весь ассортимент кресел;
  • доставка бесплатна;
  • условие действует на всю Беларусь.

Одной ссылки на общую страницу акции недостаточно. В ней должны быть видны именно размер скидки, товары, география и ограничения. Если источник говорит «до 30% на шесть моделей» и «бесплатно от 600 BYN», исходный текст меняет условия предложения.

Запишите каждое утверждение отдельной строкой. Для регулярной работы достаточно таблицы:

ПолеЧто сохранить
generated_claimисходная формулировка ИИ без редактуры
evidence_textточный смысл из карточки товара, условий акции или утверждённого документа
evidence_urlадрес источника или ссылка на внутренний документ
valid_from, valid_toпериод, если обещание зависит от даты
policy_urlправило площадки, по которому проверяли формулировку
review_resultподтвердить, уточнить, удалить или отправить на ручную проверку
revised_claimверсия после возврата всех условий

Исходную формулировку полезно сохранять. По ней видно, что именно изменила проверка, и можно сравнить качество следующей генерации.

Сверяйте границы обещания с источником

Ссылка сама по себе ничего не подтверждает. Сопоставьте объём утверждения с объёмом доказательства.

Четыре рекламных обещания сопоставлены с источниками и решениями: уточнить, добавить условие, удалить или сузить.

Учебный пример: условия и ассортимент вымышлены; схема показывает способ проверки.

В учебном магазине офисных кресел ИИ подготовил четыре тезиса:

Черновик ИИЧто есть в источникеРешение
«Скидка 30% на все кресла»до 30% на шесть моделейуточнить размер и ассортимент
«Бесплатная доставка по Беларуси»бесплатно при заказе от 600 BYNвернуть порог заказа
«Кресла №1 в Минске»подтверждения нетудалить
«Гарантия 5 лет»пять лет для серий Pro и Ergonomicназвать серии

Первые две правки нельзя свести к замене пары слов. Нужно проверить, остаётся ли объявление понятным после возврата условий и может ли человек быстро найти те же условия на посадочной странице. Если уточнение не помещается в формат, сократите обещание или выберите другое преимущество.

Заявление «№1» требует заранее определённого показателя, периода, территории и надёжного источника. Без них безопасная редакция не состоит в том, чтобы заменить «№1» на «один из лидеров»: это другое неподтверждённое утверждение. Удалите его и вернитесь к проверяемой характеристике.

Проверьте совпадение объявления и посадочной страницы

Откройте конечную ссылку так, как её увидит пользователь. Убедитесь, что нужный товар доступен, цена и валюта совпадают, условие акции заметно, а дата ещё не истекла. Отдельно проверьте мобильную версию: оговорка может быть видна на широком экране и исчезать за свёрнутым блоком на телефоне.

В правилах Google Ads о недостоверном представлении отдельно названы неточные или маловероятные утверждения, нерелевантные посадочной странице промоакции и предложения, которых нет либо трудно найти на странице перехода. Поэтому текст проверяют вместе с посадочной страницей.

Яндекс Директ указывает, что объявления проходят модерацию, а требования охватывают текст, изображения и страницу перехода; для отдельных тематик действуют дополнительные ограничения и могут потребоваться документы. Поэтому общего списка «разрешённых фраз» недостаточно: после проверки фактов откройте правила конкретной тематики, формата и страны показа.

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

Используйте четыре результата проверки

Не пытайтесь оценить строку одним баллом. Зафиксируйте одно из четырёх решений:

  1. verified — источник полностью подтверждает смысл, охват и срок.
  2. qualify — факт есть, но объявлению нужна оговорка: «до», минимальная сумма, список моделей, регион или срок.
  3. unsupported — источник отсутствует либо не подтверждает утверждение; строку нельзя выпускать как факт.
  4. manual_policy_review — факт подтверждён, но правила тематики или формата требуют отдельной оценки.

Автоматическая проверка может найти пустой источник, неверную дату и незаполненную правку. Она не решит, соответствует ли рекламное обещание правилам и законодательству. Поэтому поле review_result заполняет человек после чтения источника, а скрипт проверяет полноту записи.

Воспроизведите проверку на учебном CSV

Сохраните первый блок как claims.csv. Адреса example.invalid намеренно показывают вымышленные страницы магазина; они не являются рабочими источниками.

claim_id,generated_claim,evidence_text,evidence_url,valid_from,valid_to,policy_url,review_result,revised_claim
1,Скидка 30% на все кресла,"Скидка до 30% действует на 6 моделей",https://example.invalid/promo/office-chairs,2026-10-01,2026-10-31,https://support.google.com/adspolicy/answer/6020955,qualify,Скидка до 30% на 6 моделей кресел
2,Бесплатная доставка по Беларуси,"Бесплатная доставка по Беларуси при заказе от 600 BYN",https://example.invalid/delivery,,,https://support.google.com/adspolicy/answer/6020955,qualify,Бесплатная доставка по Беларуси от 600 BYN
3,Кресла №1 в Минске,,,,,https://support.google.com/adspolicy/answer/6020955,unsupported,
4,Гарантия 5 лет,"Гарантия 5 лет действует на серии Pro и Ergonomic",https://example.invalid/warranty,,,https://yandex.ru/support/direct/ru/moderation/adv-rules,qualify,Гарантия 5 лет на серии Pro и Ergonomic

Сохраните второй блок как check_claims.py:

#!/usr/bin/env python3
import argparse
import csv
from datetime import date
from urllib.parse import urlparse

ALLOWED = {"verified", "qualify", "unsupported", "manual_policy_review"}

def is_https(value):
    parsed = urlparse(value)
    return parsed.scheme == "https" and bool(parsed.netloc)

def audit(row, as_of):
    issues = []
    result = row["review_result"].strip()
    if result not in ALLOWED:
        issues.append("unknown_review_result")
    if result in {"verified", "qualify", "manual_policy_review"}:
        if not row["evidence_text"].strip():
            issues.append("missing_evidence_text")
        if not is_https(row["evidence_url"].strip()):
            issues.append("missing_https_evidence_url")
    if result in {"qualify", "manual_policy_review"} and not row["revised_claim"].strip():
        issues.append("missing_revised_claim")
    if result == "unsupported" and row["revised_claim"].strip():
        issues.append("unsupported_claim_must_not_be_rewritten_as_fact")
    if not is_https(row["policy_url"].strip()):
        issues.append("missing_https_policy_url")
    for field, comparison in (("valid_from", "future"), ("valid_to", "expired")):
        raw = row[field].strip()
        if not raw:
            continue
        try:
            value = date.fromisoformat(raw)
        except ValueError:
            issues.append(f"invalid_{field}")
            continue
        if comparison == "future" and value > as_of:
            issues.append("offer_not_started")
        if comparison == "expired" and value < as_of:
            issues.append("offer_expired")
    return issues

def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("input")
    parser.add_argument("output")
    parser.add_argument("--as-of", required=True)
    args = parser.parse_args()
    as_of = date.fromisoformat(args.as_of)
    rows = []
    with open(args.input, newline="", encoding="utf-8-sig") as source:
        for row in csv.DictReader(source):
            issues = audit(row, as_of)
            rows.append({
                "claim_id": row["claim_id"],
                "generated_claim": row["generated_claim"],
                "review_result": row["review_result"],
                "revised_claim": row["revised_claim"],
                "audit_status": "ok" if not issues else "fix",
                "issues": ";".join(issues),
            })
    fields = list(rows[0]) if rows else []
    with open(args.output, "w", newline="", encoding="utf-8") as target:
        writer = csv.DictWriter(target, fieldnames=fields, lineterminator="\n")
        writer.writeheader()
        writer.writerows(rows)
    print(f"rows={len(rows)} fix={sum(r['audit_status'] == 'fix' for r in rows)}")

if __name__ == "__main__":
    main()

Запустите команду:

python3 check_claims.py claims.csv claims-audit.csv --as-of 2026-10-08

возвращает:

rows=4 fix=0

Скрипт проверяет допустимое значение решения, наличие HTTPS-ссылок, даты начала и окончания, обязательную правку для qualify и отсутствие «исправленного факта» у неподтверждённого тезиса. Повторный запуск на тех же входных данных создаёт идентичный CSV. Смысл источника и правила площадки остаются ручной частью проверки.

Для рабочего процесса добавьте два стоп-сигнала. Первый блокирует передачу объявления в кабинет, если у строки unsupported или есть ошибка полноты. Второй отправляет все строки manual_policy_review назначенному ответственному. Так автоматизация помогает не потерять решение, но не изображает экспертизу, которой у неё нет.

Верните исправления в исходные материалы

После проверки обновите объявление и связанные материалы. Если источник содержит условие, которое трудно найти, исправьте посадочную страницу или выберите другой URL. Если акция закончилась, удалите обещание из активных вариантов и шаблонов. Если ИИ снова повторяет одну ошибку, добавьте этот случай в контрольный набор.

Общий порядок проверки AI-ответов по фактам, расчётам и выводам разобран в статье «Как проверять качество ответов ИИ». Выбор инструмента и разделение маркетинговой задачи на проверяемые части есть в материале об ИИ для задач маркетолога. Следующий практический шаг — взять один готовый набор объявлений, разнести обещания по строкам и остановить публикацию всех тезисов без источника или обязательной оговорки.

Ограничения

Учебный пример не проверяет реальную компанию, ассортимент или акцию. Он показывает структуру приёмки. Правила рекламных площадок меняются и зависят от тематики, формата, страны показа и аккаунта; сверяйте их перед каждой публикацией.

Модерация площадки не заменяет внутреннюю проверку. Одобрение объявления не доказывает достоверность обещания, а отклонение не всегда раскрывает все проблемы текста. Сохраняйте источник, дату проверки, финальную редакцию и имя ответственного рядом с вариантом объявления.

Источники

Материал подготовлен редакцией WiseLab с помощью AI. Источники и фактические утверждения проверены при подготовке.

Загружаем рейтинг…

Насколько полезен материал?

Выберите оценкуСлева — меньше пользы, справа — больше

Загружаем вашу оценку…

Что думаете?

Загружаем комментарии…

СЛЕДУЮЩИЙ ШАГ

Что ещё поможет в этой задаче