Папка системы:
/home/user/partner-search-platform — пустая база, без чужих проектов. Заполни по инструкции в «Настройка с нуля».Чеклист перед запуском
- Домен (DuckDNS или свой) → A-запись на IP сервера
- Почта:
docker exec mailserver setup email add support@домен пароль - DNS: MX, SPF, DKIM + верификация отправителя в Brevo
automation.yaml— domain, from_email, web_search_query,enabled: truecp .env.outreach.example .env.outreach— GITHUB_TOKEN, OUTREACH_OWNER_EMAILS- Шаблоны в
templates/services_generic_*.txt systemctl --user enable --now partner-search-outreach.timer- Тест:
run-automation-cron.sh+ проверка лога
Полная инструкция (почта, DNS, API, CSV, troubleshooting): docs/SETUP_RU.md в папке системы.
Настройка (кратко)
- Домен. Зарегистрируй DuckDNS или свой домен. A-запись → IP сервера.
- Почта. На сервере:
docker exec -it mailserver setup email add support@ТВОЙ-ДОМЕН 'ПАРОЛЬ'
DNS: MX → IP сервера, SPF, DKIM. Отправитель — верифицировать в Brevo (иначе duckdns не доставляет). - automation.yaml — открой файл в папке системы. Замени
YOUR_PROJECT_NAME,YOUR_DOMAIN,YOUR_INDUSTRY, поисковые запросыweb_search_query. Поставьenabled: trueкогда всё готово. - API-ключи:
cd /home/user/partner-search-platform cp .env.outreach.example .env.outreach nano .env.outreach
GitHub: github.com/settings/tokens (scope public_repo). Hunter.io и SerpApi — опционально. - Шаблоны писем — папка
templates/:services_generic_subject.txtиservices_generic_body.txt. Переменные:{{DOMAIN}},{{FROM_EMAIL}},{{TO_NAME_OR_COMPANY}},{{SITE_URL}}. - Запуск автоматизации:
systemctl --user enable --now partner-search-outreach.timer systemctl --user start partner-search-outreach.service
- Проверка:
export OUTREACH_ROOT=/home/user/partner-search-platform /home/user/outreach/.venv/bin/python /home/user/outreach/outreach.py status tail -f /home/user/partner-search-platform/logs/automation-cron.log
Поля automation.yaml
name — имя проекта enabled — false до настройки, потом true segment — services domain — твой-домен.duckdns.org from_email — support@твой-домен.duckdns.org partner_audience — ru | int | gcc | cis partner_industry — отрасль (construction, b2b_services, …) web_search_query — главный поиск + contact email web_search_queries — доп. запросы (список) hunter_domains — домены для Hunter.io
Пример блока project в automation.yaml
projects:
- name: my-company
enabled: true
segment: services
domain: my-company.duckdns.org
from_email: support@my-company.duckdns.org
partner_audience: ru
partner_industry: construction
github_query: ""
github_limit: 0
web_search_query: "строительная компания партнёрство contact email"
web_search_queries:
- "генподрядчик email контакт"
hunter_domains:
- example-company.ru
Цикл работы
- Discover — поиск email: веб-поиск, GitHub API, Hunter.io, SerpApi. Мусор отфильтровывается автоматически.
- SQLite — контакты в
data/contacts.db, дедупликация по email. Статусы: new → sent → replied. - Send — письма через mailserver (Docker sendmail) по шаблонам из
templates/. - Sync — входящие ответы из почты обновляют статус в базе.
Расписание: каждый час в :25 UTC (partner-search-outreach.timer).
Структура папки
partner-search-platform/ ├── automation.yaml ← проекты и поисковые запросы ├── .env.outreach ← API-ключи (создай из .example) ├── data/contacts.db ← база контактов (создаётся автоматически) ├── templates/ ← тексты писем ├── logs/ ← логи автоматизации └── web-panel/ ← эта панель
Контакты
| Домен | Компания | Статус | Отправлено |
|---|
Входящие письма
| Дата | От | Тема | Домен |
|---|
Полезные команды
export OUTREACH_ROOT=/home/user/partner-search-platform # Статус базы /home/user/outreach/.venv/bin/python /home/user/outreach/outreach.py status # Ручной полный цикл (discover + send) /home/user/partner-search-platform/run-automation-cron.sh # Экспорт CSV /home/user/outreach/.venv/bin/python /home/user/outreach/outreach.py export-csv # Импорт своих лидов из CSV /home/user/outreach/.venv/bin/python /home/user/outreach/outreach.py db-import-csv --path data/my_leads.csv