Сейчас отправляется
Последовательность сообщений
Сендер отправляет все заполненные сообщения по порядку одному продавцу.
Плейсхолдеры:
{title} {price} {seller} {link} {url}
📋 Шаблоны быстрых ответов
Появляются кнопками под полем ответа во вкладке «Входящие».
🌐 Автозамена прокси через 9proxy
Когда OfferUp возвращает PROXY_BLOCKED / GEO_BLOCK или прокси падает по сети, бот сам берёт свежий IP из 9proxy (sticky 24ч) и обновляет аккаунт + Octo-профиль.
Загрузка настройки…
Сводка за последние
Топ аккаунтов по заменам
Последние события
Добавить аккаунт
🛡️ Octo API: проверка…
Поддерживаются 5 форматов:
Cookie-Editor JSON (массив [{"name":..,"value":..}]),
JSON-объект {"name":"value"},
Netscape cookies.txt,
Cookie-header строка a=1; b=2,
Puppeteer/Playwright JSON.
🔑 Userdata JWT (опционально, повышает шансы обхода 401)
Скопируйте значение заголовка Userdata из любого запроса OfferUp в DevTools/Burp.
🌐 Прокси (опционально)
Если указан, все запросы к OfferUp пойдут через этот прокси.
📦 Массовое добавление — загрузить пачку аккаунтов и подвязать к ним прокси
Cookies-файлы → очередь аккаунтов
Поддерживаются 5 форматов:
Cookie-Editor JSON (массив [{"name":..,"value":..}]),
JSON-объект {"name":"value"},
Netscape cookies.txt,
Cookie-header строка a=1; b=2,
Puppeteer/Playwright JSON.
| # | Метка (имя файла) | Cookies | Прокси (host:port:user:pass) |
|---|
Список прокси
🌐 Получить прокси из 9proxy API — сгенерирует и подставит в поле ниже
📋 Аккаунты
Кликните по строке аккаунта, чтобы развернуть детали и доступные действия.
API генерации реферальных ссылок
Опционально. Если настроено — каждое сообщение получает уникальную {link}.
После загрузки сервисов появится выпадающий список — поле выше можно не трогать.
Интервал между сообщениями
Пауза между сообщением 1 → 2 → 3 одному продавцу. Если указать «до», бот случайно выбирает в этом диапазоне для каждого сообщения. Рекомендуется 3–10 сек.
Задержка между циклами
Пауза перед следующей итерацией очереди. Если указать «до», случайно выбирается в этом диапазоне. Рекомендуется 30–120 сек.
Повторы при ошибке
Если отправка не удалась, объявление возвращается в очередь и за него возьмётся другой аккаунт. После исчерпания всех попыток объявление помечается как failed.
⏱️ Задержка AI-ответов по фазам диалога
Случайная пауза перед отправкой ответа ИИ продавцу (секунды). Если оба поля пары заданы — бот выбирает случайное число в диапазоне; иначе используется автоматический расчёт по длине текста (~3-30 сек). Только для авто-режима.
Продавец что-то ответил, ИИ задаёт уточняющий вопрос (состояние, самовывоз и т.п.).
Продавец дал номер, ИИ подтверждает что сейчас «оплатит».
После нажатия «оплатил», ИИ просит проверить SMS-уведомление.
Очередь сендера
📞 Полученные номера телефонов
Сендер автоматически сканирует чаты раз в минуту и сохраняет все телефоны от продавцов.
🔑 Spanch SMS (v3.43)
Ваш персональный API-ключ Spanch для авто-верификации телефонов. Без ключа авто-верификация отключена — аккаунт уйдёт в 12-часовой cooldown как раньше.
📲 Авто-верификация телефона (v3.42)
При cooldown «phone verification required» (10019) бот покупает US-номер через Spanch SMS и подтверждает аккаунт автоматически.
| Дата | Аккаунт | Статус | Номер | Цена | Ошибка |
|---|---|---|---|---|---|
| Загрузка… | |||||
✉️ Настройки SMS
SMS отправляется через бот @pensiya_robot. Имя из профиля OfferUp подставляется автоматически. Доступные плейсхолдеры в тексте: {name}, {link}, {address}, {item}, {price}, {seller}, {phone}, а также {numberN} — N случайных цифр (напр. {number4} = 4 цифры) и {lettersN} — N случайных букв.
Если включено — для каждой SMS бот равновероятно выберет один маршрут из списка отмеченных ниже (вместо отправки по всем сразу). Сохраняется по кнопке «Сохранить» внизу формы.
⚙️ Конфигурация
При обычном режиме — каждый отмеченный маршрут = одна SMS на номер. В режиме «Случайный выбор» — пул, из которого выбирается один маршрут на отправку.
sendAppLink) — у него нет carrier-маршрутов, поэтому выбор маршрутов и режим «случайный выбор» для этого провайдера не используются. Одна попытка отправки = один запрос с куками аккаунта через его прокси.
🔗 Генерация ссылки через pensiya-бот
Перед отправкой SMS бот автоматически создаёт фишинговую ссылку через POST /create-link и подставляет её в {link} (с именем и адресом из листинга). Если оставить хотя бы одно из полей пустым — ссылка не генерируется, используется обычная ссылка листинга.
Адрес вашего пенсия-бота. Если пусто — берётся общий из .env.
Личный API-ключ. Тогда вы видите только своих Worker / домены.
Текст, который отправится в OfferUp-чат вместо голой ссылки. Доступные переменные: {deeplink} / {branch} — Branch-ссылка, {name} / {seller} — имя продавца, {title} — название объявления, {price}, {address}. Если поле пустое — в чат уходит только URL.
Отправляется в тот же диалог OfferUp сразу после успешной автоотправки SMS. Доступные плейсхолдеры: {phone}, {title}, {seller}, {url}.
Чтобы followup не отправлялся сразу же (это выглядит как бот), бот подождёт указанное число секунд после успешной отправки SMS. Можно задать диапазон — тогда задержка для каждого сообщения будет случайной в этих пределах (выглядит естественнее).
Минимальная задержка. 0 = отправить сразу.
Максимум для случайной задержки. Если пусто — задержка ровно «От», без рандома.
Пример: От = 30, До = 90 → бот подождёт случайно от 30 до 90 секунд и потом напишет followup. От = 10, До = пусто → ровно 10 секунд.
🧪 Тестовая отправка
Отправляет SMS с текущими настройками (провайдер, маршруты, шаблон, sender ID) на указанный номер. Имя и адрес берутся из указанного аккаунта и листинга (либо можно оставить пустыми).
Имя профиля ({name}) берётся из первого активного аккаунта автоматически.
Имя продавца, название, цена и картинка подтянутся автоматически из ссылки на листинг.
📊 Клики по SMS-провайдерам
Источник: GET /stats/by-provider у бота-приёмника. Считает выпущенные ссылки, переходы по ним и ввод карты, сгруппированные по SMS-провайдеру.
📨 История отправок SMS
Каждая попытка отправки записывается отдельной строкой (по маршруту). Кнопка ↻ повторно отправит SMS на тот же номер с указанным маршрутом — удобно, если первый маршрут не доставил.
📈 SMS статистика — клики и доставка по парам
Метрики считаются по парам (провайдер × маршрут). OK% — доля принятых шлюзом. CTR — клики/принятые. Источник кликов — pensiya-bot /api/bot/clicks.
🔍 Диагностика кликов (для разбора «почему не пришёл клик»)
Настройки ИИ-ассистента
Включите, чтобы Claude отвечал продавцам в чатах OfferUp от вашего имени.
💡 Это запасное имя. Если у аккаунта во вкладке «Аккаунты» заполнено поле «Display name» (или подтянулось имя из OfferUp-профиля) — бот в каждом чате представляется именем этого аккаунта, а не значением отсюда. Глобальное имя используется только когда у аккаунта нет своего.
💡 Если продавец спросит «где ты?» — бот ответит этим городом/штатом. Когда модель вставляет плейсхолдер {city}/{state}, мы подставляем сюда введённые значения. Если оба поля пусты — бот сам выберет правдоподобный город рядом с городом продавца (он берётся из объявления).
💡 Опишите кем вы притворяетесь (студент, родитель, мастер), что ищете и почему. Эта легенда добавляется в системный промпт перед каждым ответом и сильнее всего влияет на тон. Подробнее — во вкладке «📖 Как пользоваться».
💡 Лимит срабатывает на каждый аккаунт-отправитель отдельно (не суммарно). Если видите много rpm cap в ошибках ИИ — поднимите. Дефолт: 6. Слишком высокое значение начнёт упираться в RPM-кап провайдера (Anthropic) и вернёт те же ошибки уже сверху.
💡 Контролирует «случайность» Claude. 1.0 (по умолчанию) — текущее поведение, бот может ответить по-разному на одно и то же сообщение. 0.0–0.3 — почти детерминированно, одни и те же шаблонные ответы (полезно, если у вас FAQ-чаты и хочется стабильности). Сильно ниже 0.5 — и персона начинает звучать «роботично».
Сумма tokens_in + tokens_out за окно. Окно сбрасывается в 00:00 UTC.
📊 Качество ответов — —
💰 Расход / проверка ключа — —
🔐 Anthropic Admin Key (для реальной стоимости) — не настроен
BYOK_MASTER_KEY отсутствует. Без неё ключ не будет зашифрован — попросите администратора задать её и перезапустить процесс.
Admin Key — отдельный ключ из консоли Anthropic (Settings → Admin Keys, префикс sk-ant-admin01-…). Не путать с обычным sk-ant-api03-… для чата. Этот ключ не используется для генерации сообщений — только для запроса реальной стоимости по всему аккаунту через Anthropic Cost API. Хранится зашифрованным (AES-256-GCM, версия v1) и обратно не отдаётся.
—
Показано только начало и хвост — настоящий ключ сервер обратно не отдаёт. «Проверить» делает ping cost_report за последний час.
Сохранится при нажатии «Сохранить» внизу. Пустое поле — без изменений.
Свои ключи Anthropic (BYOK) — не настроены
BYOK_MASTER_KEY. Без неё ключи нельзя зашифровать — попросите администратора задать её и перезапустить процесс.
Бот идёт по списку ключей в порядке приоритета (1 — главный). Если ключ возвращает ошибку, бот пробует следующий, а после двух подряд неудач отключает его на 15 минут и затем пробует ещё раз. Любые правки применяются к новым запросам моментально — перезагрузка не нужна.
Загрузка списка ключей…
Хранится зашифрованным (AES-256-GCM, версия v1). Сервер обратно не отдаёт — отображается только подсказка из первых 7 и последних 4 символов.
Если ключ настоящий — оставьте пустым (api.anthropic.com по умолчанию). Для reseller-ключей вставьте их URL (http:// и https:// — оба принимаются).
Если пусто — бот сам подтянет самый свежий claude-sonnet-4-* из списка /v1/models вашего реселлера и закэширует на 30 минут. Если хотите зафиксировать конкретную версию — впишите её ID вручную, например claude-sonnet-4-5-20250929, claude-opus-4-1-20250805, claude-haiku-4-5-20251015.
AI-режим по аккаунтам
Глобальный режим (fallback) задаётся на вкладке «Персона». Здесь — переопределения для отдельных аккаунтов-отправителей. «Наследовать» снимает переопределение и возвращает аккаунту общий режим.
Триггеры — правила «если… то…»
Бот проверяет каждое входящее сообщение и, если оно подходит под одно из правил, делает то, что вы указали: молчит, зовёт вас, шлёт уведомление или отправляет готовый ответ.
ℹ️ Как это работает (раскрыть, если непонятно)
Каждое правило состоит из двух частей:
- Когда — что должно случиться в чате (продавец прислал телефон, написал «zelle», молчит 30 минут и т.п.).
- Что делать — реакция бота (не отвечать, передать вам, прислать алерт в Telegram, отправить готовый текст).
Правила проверяются до того, как ИИ начнёт думать над ответом. Это защита: если в сообщении продавца есть стоп-слово (например «zelle»), ИИ даже не получит этот текст — никакого риска, что он сгенерирует неправильный ответ.
Самый быстрый старт: жмите «+ Добавить триггер» → внутри окна сверху выберите один из готовых шаблонов (скам, ловля телефона, увод с площадки и пр.) — форма заполнится сама. Проверьте кнопкой «🔍 Проверить на последних 10 сообщениях» и сохраните.
Очередь предложений ИИ
Что чаще всего спрашивают продавцы
Агрегируется фоном раз в сутки. Используется как RAG-контекст.
🛡 PAYOUT-HOLD review
Отклонённые и оценённые «плохо» черновики ИИ за выбранный период,
которые задевают темы payout-hold / SMS / refundable-hold / «другой ссылки».
Жёлтые карточки — НОВЫЕ формулировки, которые строгий фильтр ещё не ловит.
Скопируйте фразу и добавьте в PROMPT_FORBIDDEN_PAYOUT_HOLD_DENIALS.
⬆ Promoted overrides (0)
Эти фразы добавлены оператором поверх вшитого списка. Срабатывают и в строгом фильтре, и в промпте (как отдельный NEVER-пункт).
📖 Watch-словарь (что мы ищем в тексте)
🎓 Обучение на ваших примерах
Примеры пар «сообщение продавца → ваш ответ» подкладываются в системный промпт. Чем больше качественных примеров — тем точнее ИИ копирует ваш стиль. Каждое одобрение в очереди «Предложения» автоматически добавляет пример сюда.
➕ Добавить пример вручную
Напоминание: бот выступает покупателем и пишет продавцам. «Сообщение продавца» — это то, что продавец ответил вам. «Ваш ответ» — это то, что вы (как покупатель) напишете в ответ.
История пересчётов
📊 Статистика ИИ
ai_message_log текущего пользователя. Цены — справочные ставки Anthropic.
📖 Как пользоваться ИИ-ассистентом
🚀 С чего начать (5 минут)
- Откройте ⚙️ Персона → включите тумблер «Включить ИИ-ассистента».
- Заполните «Имя», «Тон» и «Дополнительный контекст» (легенду покупателя).
- Поставьте режим С подтверждением — первые 1–2 дня всё через очередь, чтобы вы видели каждый ответ.
- Откройте 📥 Предложения — там появятся варианты. Жмёте «✅ Одобрить» или редактируете и одобряете.
- Каждое одобрение копируется в 🎓 Обучение — ИИ учится на ваших правках.
- Когда стиль стабилизируется — переключите режим на Авто.
⚙️ Что значат три режима
- auto — ИИ отправляет ответ сразу, вы видите его постфактум в логах.
- approval — ИИ генерирует ответ и кладёт в очередь «Предложения». Ничего не уходит, пока вы не нажмёте «Одобрить» (в Telegram или здесь).
- off — ИИ полностью молчит для этого аккаунта/чата. Вы отвечаете сами.
Цепочка приоритетов: чат → аккаунт → общий. Конкретный чат бьёт аккаунт, аккаунт — общую персону.
🎯 Зачем триггеры
Триггеры — это правила «если входящее сообщение похоже на X — сделать Y». Они срабатывают до Claude и могут заблокировать ответ, передать чат вам или изменить тон. Типовые шаблоны (скам, ловля телефона, лоуболл, увод с площадки) уже преднастроены — нажмите «+ Добавить триггер» и выберите шаблон.
🎓 Как обучается ИИ
- Автоматически: каждое одобрение в очереди превращается в пару (сообщение продавца → ваш ответ) и кладётся в «🎓 Обучение».
- Вручную: можно добавить пример прямо в «🎓 Обучение» через форму «➕ Добавить пример вручную».
- Из импорта (скоро): загрузка CSV/JSON со сборкой большой базы за один присест.
- Включите тумблер «Использовать примеры в системном промпте» — без него корпус собирается, но не используется.
- Параметр «Сколько примеров класть в промпт» (0–50) контролирует, сколько последних пар Claude увидит при каждом ответе. Больше — точнее, но дороже по токенам.
🔑 Свой ключ Anthropic (BYOK)
По умолчанию все запросы к Claude идут через прокси Replit (вы платите по тарифу платформы). Если хотите платить со своего счёта Anthropic — вставьте ключ sk-ant-… в разделе 🔑 Свой Anthropic-ключ на вкладке «Персона».
Ключ хранится зашифрованным (AES-256-GCM). Чтобы шифрование работало, на сервере должна быть переменная окружения BYOK_MASTER_KEY (32-байтовый hex). Если её нет — раздел недоступен; попросите администратора задать её и перезапустить процесс.
💡 Полезные советы
- В легенде («Дополнительный контекст») опишите кем вы притворяетесь (студент, родитель, мастер) — это сильно влияет на тон.
- Если ответы звучат «по-боту» — добавьте 5–10 ваших старых хороших ответов вручную в «🎓 Обучение».
- Не выключайте режим approval, пока не увидите 20–30 одобренных ответов подряд без правок.
- Дневной лимит токенов защищает от непредвиденных расходов — поставьте порог, после которого всё уйдёт в approval.
- Если кампания временно остановлена — поставьте режим off на нужном аккаунте, не выключая глобально.
👥 Пользователи веб-панели
У каждого пользователя — изолированный кабинет (свои аккаунты, очередь, инбокс, настройки). Доступ выдаёте только вы.
Узнать свой Telegram ID можно у бота @userinfobot.