185 lines
7.6 KiB
Markdown
185 lines
7.6 KiB
Markdown
# Yandex API — локальные прокси-сервисы
|
|
API-ключ для работы в AI Studio
|
|
AQVN0kCCdlt598SE87sP52uZYaG2tNP0OajDoC7B
|
|
|
|
Идентификатор API-ключа
|
|
ajei8217cmrpuv289str
|
|
|
|
Два сервиса для работы с Яндекс.Директ API v5 и Яндекс.Вордстат (Yandex Cloud Search API v2), запущенные на `192.168.1.152` (nik).
|
|
|
|
## Сервисы
|
|
|
|
| Сервис | Порт | Назначение |
|
|
|--------|------|-----------|
|
|
| **Yandex Direct API** | 8456 | Управление кампаниями, группами, объявлениями, ключевыми словами |
|
|
| **Wordstat API** | 8457 | Сбор частотности, топ-запросы, динамика, география |
|
|
|
|
## Быстрый старт
|
|
|
|
### Подключение с другого компьютера в сети
|
|
|
|
С других машин локальной сети (192.168.1.x) сервисы доступны напрямую по HTTP:
|
|
|
|
```bash
|
|
# Проверка доступности
|
|
curl http://192.168.1.152:8456/
|
|
curl http://192.168.1.152:8457/health
|
|
|
|
# Простой запрос — без ключей (статус)
|
|
curl http://192.168.1.152:8456/
|
|
curl http://192.168.1.152:8457/health
|
|
```
|
|
|
|
> **Примечание:** для запросов к реальному API (не /health) сервисы используют токены, захардкоженные в `config.py` на сервере. Ключи не нужно передавать в запросах.
|
|
|
|
### Создание кампаний (Direct API)
|
|
|
|
```bash
|
|
# Получить статус сервера
|
|
curl http://192.168.1.152:8456/
|
|
|
|
# Список кампаний
|
|
curl http://192.168.1.152:8456/campaigns
|
|
|
|
# Создать кампанию
|
|
curl -X POST http://192.168.1.152:8456/campaigns \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"name":"Моя кампания","daily_budget_rub":500,"strategy":"HIGHEST_POSITION"}'
|
|
|
|
# Создать группу объявлений
|
|
curl -X POST http://192.168.1.152:8456/adgroups \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"name":"Группа 1","campaign_id":709606618,"region_ids":[225]}'
|
|
|
|
# Создать объявление
|
|
curl -X POST http://192.168.1.152:8456/ads \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"adgroup_id":5747798281,"title":"Заголовок до 56 символов","text":"Текст объявления","href":"https://example.com"}'
|
|
|
|
# Добавить ключевые фразы
|
|
curl -X POST http://192.168.1.152:8456/keywords \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"adgroup_id":5747798281,"keywords":[{"keyword":"купить слона","bid_rub":50}]}'
|
|
|
|
# Управляемые аккаунты (client_login)
|
|
curl http://192.168.1.152:8456/campaigns?client_login=casamebelads
|
|
|
|
# Регионы (с кириллицей — URL-кодировать!)
|
|
curl -s -G 'http://192.168.1.152:8456/dictionaries/regions' --data-urlencode 'search=Иглино'
|
|
```
|
|
|
|
### Сбор частотности (Wordstat API)
|
|
|
|
```bash
|
|
# Получить частотность запроса
|
|
curl -X POST http://192.168.1.152:8457/top \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"phrase":"деревянные дома"}'
|
|
|
|
# Получить динамику по времени
|
|
curl -X POST http://192.168.1.152:8457/dynamics \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"phrase":"купить деревянный дом"}'
|
|
|
|
# Распределение по регионам
|
|
curl -X POST http://192.168.1.152:8457/regions \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"phrase":"деревянные дома"}'
|
|
|
|
# Справочник регионов (бесплатно, без квоты)
|
|
curl http://192.168.1.152:8457/regions/tree
|
|
|
|
# Статус API-ключа
|
|
curl http://192.168.1.152:8457/oauth/status
|
|
|
|
# Сохранённые ключевые слова
|
|
curl http://192.168.1.152:8457/keywords
|
|
```
|
|
|
|
## API-ключи и авторизация
|
|
|
|
Сервисы работают как локальный прокси — ключи хранятся на сервере `192.168.1.152`:
|
|
|
|
### Яндекс.Директ API (порт 8456)
|
|
- **OAuth-токен:** захардкожен в `config.py` на сервере
|
|
- **Режим:** production
|
|
- Для переключения на управляемые аккаунты — параметр `client_login`
|
|
|
|
### Wordstat API (порт 8457)
|
|
- **Yandex Cloud API Key:** хранится в `/home/neo/workspace/wordstat-api/.env`
|
|
- **Folder ID:** `b1g666nmgcdb1j6e551t`
|
|
- Получить ключ: https://aistudio.yandex.ru/
|
|
|
|
## Изменение API-ключей
|
|
|
|
Если нужно сменить ключи, подключись к `nik@192.168.1.152` по SSH и отредактируй конфиги:
|
|
|
|
```bash
|
|
# SSH на сервер
|
|
ssh nik@192.168.1.152
|
|
|
|
# Яндекс.Директ API — токен в config.py
|
|
nano /home/neo/workspace/yandex-direct-api/config.py
|
|
|
|
# Wordstat API — ключ в .env
|
|
nano /home/neo/workspace/wordstat-api/.env
|
|
|
|
# Перезапуск сервисов
|
|
systemctl --user restart yandex-direct-api
|
|
systemctl --user restart wordstat-api
|
|
```
|
|
|
|
## Удалённое подключение
|
|
|
|
С любого компьютера в сети `192.168.1.x`:
|
|
|
|
```python
|
|
import requests
|
|
|
|
# Яндекс.Директ
|
|
resp = requests.get("http://192.168.1.152:8456/")
|
|
print(resp.json()) # {"ok": true, "mode": "production", ...}
|
|
|
|
# Wordstat
|
|
resp = requests.get("http://192.168.1.152:8457/health")
|
|
print(resp.json()) # {"status": "ok", "api_key_set": true, ...}
|
|
```
|
|
|
|
## Порты и фаервол
|
|
|
|
Порты 8456 и 8457 должны быть доступны в локальной сети. Проверить:
|
|
|
|
```bash
|
|
# На сервере nik
|
|
ss -tlnp | grep -E '845[67]'
|
|
|
|
# Если порты не слушаются — проверить systemd сервисы
|
|
systemctl --user status yandex-direct-api wordstat-api
|
|
```
|
|
|
|
Если фаервол (UFW/firewalld) блокирует — разрешить:
|
|
|
|
```bash
|
|
sudo ufw allow from 192.168.1.0/24 to any port 8456
|
|
sudo ufw allow from 192.168.1.0/24 to any port 8457
|
|
```
|
|
|
|
## Ограничения и известное
|
|
|
|
- **Wordstat квота:** 100 запросов/час, 10/сек. Легко сжечь за минуту.
|
|
- **Wordstat status: Preview** — API может измениться.
|
|
- **Директ:** бюджет кампании минимум 300₽.
|
|
- **Директ API:** стратегия сетей `MAXIMUM_COVERAGE` не работает, использовать `SERVING_OFF`.
|
|
- **Директ API:** поле `DailyBudget: null` после создания — кампания может работать без лимита.
|
|
- **Директ API:** `ads/get` — допустимы ТОЛЬКО: AdCategories, AgeLabel, AdGroupId, CampaignId, Id, State, Status, StatusClarification, Type, Subtype. TextAd, MobileAppAd и т.д. НЕЛЬЗЯ.
|
|
- **Директ API:** GeoRegion children часто пустые. Использовать `client.get_regions(search=...)` вместо `get_dictionaries`.
|
|
- **Директ API:** активация кампании из DRAFT → ENABLED может требовать `update_campaigns` (множественное число) или веб-интерфейс.
|
|
|
|
## Ссылки
|
|
|
|
- Сервис Direct API: `/home/neo/workspace/yandex-direct-api/`
|
|
- Сервис Wordstat API: `/home/neo/workspace/wordstat-api/`
|
|
- Документация Директ API: https://yandex.ru/dev/direct/doc/ru/
|
|
- Документация Wordstat API: https://yandex.cloud/ru/docs/search-api/api-ref/wordstat
|
|
- AI Studio (API ключи): https://aistudio.yandex.ru/
|