Разбор
ИИ отвечает на отзывы в Авито и 2GIS: схема без шаблонов и стоп-слов
67% клиентов читают ответы на негативные отзывы до первого визита. Большинство бизнесов молчит неделями. Показываю рабочую схему: Python + Claude API + Авито и 2GIS API — агент отвечает в течение часа, каждый ответ уникален.
Клиент позвонил в автосервис и сказал, что посмотрел их отзывы на 2GIS прямо перед визитом. Один из них — негативный, трёхмесячной давности. Ответа нет до сих пор. Он всё равно приехал, но позвонил сначала, чтобы убедиться что «там не бардак». Это не единичная история — это норма.
Большинство малого бизнеса отвечает на отзывы раз в месяц, если вообще отвечает. Некоторые делегируют это задачу «когда будет время». Времени не бывает. Отзывы копятся, рейтинг ползёт вниз, а потенциальные клиенты уходят к конкуренту с 4.7 вместо 4.2.
Покажу конкретную схему: Python + Claude API + Авито API и 2GIS API. Агент забирает новые отзывы каждые 30 минут, анализирует тональность, генерирует уникальный ответ и публикует его. Без шаблонов. Без стоп-слов. Без ожидания.
Почему шаблонные ответы хуже, чем молчание
Я видел бизнесы с хорошим временем реакции — 2–4 часа на каждый отзыв. Выглядело как работа. Только все ответы были написаны по одному шаблону: «Спасибо за обратную связь! Мы всегда стараемся…». Клиенты замечают. На Флампе и 2GIS есть целые обсуждения про конкретные сети именно из-за этого.
Harvard Business Review в 2018 году проанализировал 4 153 отеля и обнаружил: компании, которые регулярно отвечают на отзывы, получают на 12% больше новых отзывов и рейтинг в среднем выше на 0.12 звезды. Но только если ответы выглядят как живые реакции, а не копипаст.
Задача агента — не просто ответить быстро. Задача — ответить так, чтобы следующий читающий этот отзыв понял: здесь живые люди, которые слышат конкретные претензии.
Четыре типа отзывов и как с ними работать
Классификатор перед генерацией ответа — обязательный шаг. Один и тот же промпт для позитивного и токсичного отзыва даст одинаково плохой результат.
| Тип | Сигналы | Стратегия ответа | Тон |
|---|---|---|---|
| positive | Оценка 4–5, позитивная лексика, конкретная похвала | Благодарность + зеркало конкретики (повторить что именно понравилось) + приглашение вернуться | Тёплый, неформальный |
| neutral | Оценка 3, смешанные эмоции, «нормально но» | Принять позитивное, адресовать «но» — конкретное обещание или объяснение | Деловой, конструктивный |
| negative | Оценка 1–2, конкретная претензия, описание ситуации | Признание ошибки + конкретный шаг к решению + личный контакт для урегулирования | Серьёзный, без оправданий |
| toxic | Оскорбления, угрозы, нет конкретики, признаки PR-атаки | Флаг → передать живому человеку. Автоответ не публиковать | Не отвечать автоматически |
Граница между negative и toxic тонкая. Claude справляется с этим хорошо, но несколько раз в промпте нужно явно указать признаки токсичности: угрозы репутации, призывы к бойкоту, несколько одинаковых отзывов от разных аккаунтов за один день.
Как работает схема
каждые 30 мин
Claude API
Telegram
Claude API
Авито / 2GIS API
Авито API отдаёт отзывы через endpoint /core/v1/ratings/list с параметром limit и курсором для пагинации. Новые отзывы определяются по полю created_at — сравниваем с временем последней проверки. 2GIS для отзывов использует свой API, но в большинстве ниш проще работать через Яндекс Бизнес API, который покрывает отзывы с Карт и нескольких агрегаторов.
Код: классификация и генерация ответа
Это рабочий фрагмент. Переменные вроде AVITO_TOKEN и ANTHROPIC_API_KEY из environment.
import anthropic
import requests
import json
from datetime import datetime, timezone
client = anthropic.Anthropic()
CLASSIFY_PROMPT = """Ты анализируешь отзыв о бизнесе.
Верни JSON с одним полем "type" одного из значений:
- positive (оценка 4-5, позитивный тон, доволен)
- neutral (смешанные эмоции, оценка 3, есть замечания)
- negative_constructive (конкретная претензия, оценка 1-3, но описывает ситуацию)
- toxic (оскорбления, угрозы, нет конкретики, возможная PR-атака)
Отзыв: {review_text}
Оценка: {rating}/5
Верни только JSON, без объяснений."""
RESPONSE_PROMPTS = {
"positive": """Ты представитель {business_name}.
Напиши живой, тёплый ответ на позитивный отзыв.
Правила:
- Упомяни конкретно что похвалил клиент (не переформулируй, зеркаль его слова)
- Не используй: "Спасибо за обратную связь", "Мы всегда рады", "Будем рады видеть вас снова"
- Длина: 2-3 предложения
- Тон: как будто отвечает живой человек, а не PR-отдел
Отзыв: {review_text}""",
"neutral": """Ты представитель {business_name}.
Напиши конструктивный ответ на нейтральный отзыв.
Правила:
- Прими позитивное, адресуй конкретное замечание
- Не оправдывайся, не обещай абстрактно "стать лучше"
- Если замечание конкретное — дай конкретный ответ или шаг
- Длина: 2-4 предложения
Отзыв: {review_text}""",
"negative_constructive": """Ты представитель {business_name}.
Напиши честный ответ на негативный отзыв с конкретной претензией.
Правила:
- Признай проблему прямо, без "К сожалению, такое бывает"
- Дай конкретный шаг: как урегулировать или что изменилось
- Предложи связаться напрямую (телефон или Telegram — {contact})
- Не оправдывайся и не отрицай факты
- Длина: 3-4 предложения
Отзыв: {review_text}
Оценка: {rating}/5"""
}
def classify_review(review_text: str, rating: int) -> str:
message = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=100,
messages=[{
"role": "user",
"content": CLASSIFY_PROMPT.format(
review_text=review_text,
rating=rating
)
}]
)
result = json.loads(message.content[0].text)
return result["type"]
def generate_response(
review_type: str,
review_text: str,
rating: int,
business_name: str,
contact: str
) -> str | None:
if review_type == "toxic":
return None # флагируем, не отвечаем автоматически
prompt_template = RESPONSE_PROMPTS[review_type]
prompt = prompt_template.format(
business_name=business_name,
review_text=review_text,
rating=rating,
contact=contact
)
message = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=300,
messages=[{"role": "user", "content": prompt}]
)
return message.content[0].text.strip()
def process_review(review: dict, config: dict) -> dict:
review_type = classify_review(review["text"], review["rating"])
if review_type == "toxic":
# Отправить алерт в Telegram
send_telegram_alert(review, config["telegram_token"])
return {"status": "flagged", "type": "toxic"}
response_text = generate_response(
review_type=review_type,
review_text=review["text"],
rating=review["rating"],
business_name=config["business_name"],
contact=config["contact"]
)
# Публикуем через Авито API
publish_response(review["id"], response_text, config["avito_token"])
return {"status": "published", "type": review_type}Два вызова Claude на один отзыв — классификация и генерация. Можно объединить в один промпт, но раздельные вызовы дают чище результат: на первом шаге модель не «загрязнена» контекстом про тон ответа и работает точнее как классификатор.
Промпты для разных ситуаций
Три примера реальных ответов, которые агент генерирует по этим промптам.
Позитивный отзыв (клиент хвалит мастера Дмитрия и быструю диагностику):
«Дмитрий — молодец, за такую скорость диагностики отдельное спасибо. Приятно когда не тянут время. Ждём снова при следующем ТО.»
Нейтральный (сервис хороший, но пришлось ждать полтора часа лишних):
«За ожидание — честно, извините. По пятницам запись плотнее, чем обычно — сейчас тестируем систему уведомлений, чтобы предупреждать заранее. Если поедете снова — скажите при записи, что были, поставим с запасом.»
Негативный с конкретикой (сказали одну цену, взяли другую):
«Ситуация с ценой — серьёзное. Диагностика показала дополнительный расход на прокладку, мастер должен был позвонить до работ, не после. Напишите нам в Telegram @autoservice_example или позвоните +7 999 000-00-00 — разберём конкретно вашу ситуацию и решим.»
Заметьте — никаких «уважаемый клиент», никаких «ваше мнение важно для нас». Просто прямо по существу.
Есть вопрос по теме?
Пришлю 2 файла: инструкцию по удалению негатива + базу отзывников по нишам
Кейс: автосервис в Москве
Автосервис на три поста, район Бирюлёво. В феврале 2026 года подключили агента на Авито и 2GIS. До этого — менеджер отвечал на отзывы «когда есть время», то есть примерно раз в 10 дней.
Три конкретных момента из этого кейса, которые удивили:
Первое — несколько авторов негативных отзывов вернулись после того, как им ответил агент. Не потому что им пообещали скидку. Просто потому что ответили быстро и по делу. Один из них оставил второй отзыв — уже на 4 звезды.
Второе — количество новых отзывов выросло само по себе. Клиенты видят, что бизнес реагирует, и охотнее пишут. За три месяца — 47 новых отзывов против 12 за предыдущие три месяца.
Третье — один раз агент правильно флагировал токсичный отзыв, который оказался частью атаки от конкурента. Три одинаковых аккаунта, зарегистрированных в один день, один и тот же шаблонный текст. Менеджер подал жалобу через личный кабинет 2GIS — отзывы удалили.
Насколько опасен твой рейтинг прямо сейчас
Проверь риски репутации
5 вопросов — честный диагноз за 2 минуты
Что нельзя автоматизировать
Это важнее, чем сам код. Агент не должен отвечать в четырёх ситуациях.
PR-атака. Десять похожих отзывов за два дня, все с оценкой 1, аккаунты зарегистрированы недавно — это координированная атака. Автоответ здесь только добавит контента к атаке. Нужна жалоба на платформу и при необходимости юрист.
Угрозы и правовые претензии. «Подам в суд», «напишу в Роспотребнадзор», «вызову проверку» — такие отзывы требуют живого человека. Автоматический ответ может быть использован против компании.
Скандал с пострадавшим. Кто-то получил травму, есть жертвы, ситуация попала в СМИ — это кризис, а не просто отзыв. Агент не понимает масштаб репутационного ущерба.
Крупный клиент. Если по контексту понятно что пишет корпоративный заказчик или публичная персона — стоит ответить лично.
Хорошая практика — добавить в промпт классификации дополнительный параметр requires_human и обязательно дублировать все флагованные отзывы в Telegram-бот менеджеру.
Готовый код для polling’а Авито API, структура config.json и полные промпты для всех четырёх типов отзывов — по слову РЕПУТАЦИЯ в Telegram.
Есть вопрос по теме?
Пришлю 2 файла: инструкцию по удалению негатива + базу отзывников по нишам
Источники
AI-агенты · Персональная карта
4 часа потратил — не работает?
Покажу где ты пошёл не туда и как сделать правильно за 2 недели
Получить разбор бесплатно →AI-агенты · 10 мест
Ты работаешь до полуночи — AI-агент будет работать вместо тебя
Покажу какой агент закроет твою главную операционную боль
Узнать свой маршрут →Есть вопрос по теме?
Пришлю 2 файла: инструкцию по удалению негатива + базу отзывников по нишам
Источники
Читайте также
Часто задаваемые вопросы
- Можно ли автоматически отвечать на отзывы в Авито и 2GIS без шаблонов?
- Да. Claude API анализирует текст каждого отзыва и генерирует уникальный ответ с учётом тональности, конкретных претензий и контекста. Никаких заготовленных фраз — каждый ответ адаптирован под ситуацию. Агент работает через Авито API и 2GIS API, публикует ответ автоматически.
- Как классифицировать тип отзыва перед ответом?
- Отправляешь текст отзыва в Claude с промптом классификации. Модель возвращает один из четырёх типов: positive, neutral, negative_constructive, toxic. Дальше агент выбирает стратегию ответа: благодарность, признание проблемы + решение, или нейтральный тон без конфронтации.
- Сколько стоит автоматизация ответов на отзывы через Claude API?
- Claude Sonnet 4.6 стоит $3 за 1 млн входящих токенов и $15 за 1 млн исходящих. Один цикл классификации + генерации ответа занимает примерно 800–1200 токенов. При 100 отзывах в месяц расходы не превысят 15–20 рублей. Основные затраты — разработка агента.
- Какие отзывы нельзя обрабатывать автоматически?
- PR-атаки с координированными волнами негатива, угрозы судебным иском, скандальные ситуации с публичным резонансом и кризисы с пострадавшими клиентами. Агент должен флагировать такие отзывы и передавать живому человеку без попытки ответить автоматически.
- Как измерить результат автоматических ответов на отзывы?
- Три метрики: рейтинг на платформе до/после (смотреть через 30, 60, 90 дней), время ответа (должно снизиться с нескольких дней до 1 часа), процент отзывов с ответом (цель — 100%). В реальном кейсе автосервиса в Москве рейтинг вырос с 4.1 до 4.6 за 3 месяца.
- Нужен ли доступ к Авито API для автоматических ответов?
- Да. Авито предоставляет API для работы с отзывами — нужен токен через OAuth. 2GIS имеет закрытый API для партнёров, но для многих ниш работает через API Яндекс Бизнеса. Полинг новых отзывов делается каждые 15–30 минут, webhook-подписка доступна в PRO-тарифах.
Канал «Лёха Маркетолог»
Практика без воды: кейсы, инсайты, разборы. 1–2 поста в неделю.
Пока без комментариев. Будьте первым.