Автоматизация периодического отслеживания состояния гео поддоменов:
- Проиндексированные страницы
- ИКС
- Проблемы — фатальные, критические и т.д.
При мультирегиональном SEO-продвижении один из способов — создание поддоменов по городам (иногда регионам), если продвижение по всей России поддоменов, как правило не менее 80.
Периодически их необходимо проверять на ошибки, проблемы с индексацией. Чтобы сделать это вручную, приходится совершать много однотипных действий:
- зайти в сводку по поддомену, чтобы посмотреть есть ли проблемы
- перейти в раздел «Индексирование», чтобы посмотреть сколько страниц в индексе
И все это 80+ раз.
Вспомнив про принцип DRY (don’t repeat yourself), а также руководствуясь желанием автоматизировать все что автоматизируется, было решено обратиться к документации по API Яндекс Директа и написать простой скрипт на Python, который собирал бы информацию по поддоменам за пару минут и выгружал бы это в файл .xlsx.
Далее выгрузка добавляется в Google таблицу и производится анализ проблем у поддоменов. При необходимости строятся графики динамики индексирования по всем поддоменам.
import requests
import pandas as pd
# Замените на ваш OAuth токен, инструкция https://yandex.ru/dev/direct/doc/start/token.html
token = ""
headers = {"Authorization": f"OAuth {token}"}
# Получить ID пользователя
user_url = "https://api.webmaster.yandex.net/v4/user"
user_response = requests.get(user_url, headers=headers)
user_id = user_response.json()["user_id"]
# Получить список хостов
hosts_url = f"https://api.webmaster.yandex.net/v4/user/{user_id}/hosts"
hosts_response = requests.get(hosts_url, headers=headers)
hosts_data = hosts_response.json()
host_ids = [host["host_id"] for host in hosts_data["hosts"]]
# Список для хранения данных
data_list = []
# Получить статистику для каждого поддомена
for host_id in host_ids:
summary_url = f"https://api.webmaster.yandex.net/v4/user/{user_id}/hosts/{host_id}/summary"
summary_response = requests.get(summary_url, headers=headers)
if summary_response.status_code == 200:
data = summary_response.json()
formatted_host_id = f"https://{host_id.replace(':443', '').replace('https:', '')}"
data_list.append({
"Поддомен": formatted_host_id,
"Проиндексированные страницы": data['searchable_pages_count'],
"Исключенные страницы": data['excluded_pages_count'],
"Индекс качества сайта": data['sqi'],
"Фатальные проблемы": data['site_problems'].get('FATAL', 0),
"Критичные проблемы": data['site_problems'].get('CRITICAL', 0),
"Возможные проблемы": data['site_problems'].get('POSSIBLE_PROBLEM', 0),
"Рекомендации": data['site_problems'].get('RECOMMENDATION', 0)
})
else:
print(f"Ошибка для {host_id}: {summary_response.status_code}")
# Экспорт данных в файл Excel
df = pd.DataFrame(data_list)
df.to_excel("yandex_webmaster_summary.xlsx", index=False)
print("Данные успешно экспортированы в yandex_webmaster_summary.xlsx")
Пример выгрузки: скачать