Files
2026-07-05 18:35:41 +05:00

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/