Интеграция API Яндекс.Вебмастер
API открывает доступ к данным Яндекс.Вебмастера о сайтах. (https://yandex.ru/dev/webmaster/)
Данные в Вебмастере могут отличаться от данных Подбора слов (Wordstat) и Метрики!
1. Регистрация - нужен аккаунт любого из сервисов Яндекс. Например почта - https://mail.yandex.ru
2. Зарегистрировать новое приложение - https://oauth.yandex.ru/client/new.
Чтобы начать работу с API Яндекс.Вебмастера, компания должна заключить с Яндексом соглашение в установленной форме и получить client_id в системе авторизации Яндекса oauth.yandex.ru.
Без client_id использование API невозможно.
В дальнейшем оно нам потребуется, чтобы получать токены пользователей, сайты которых мы хотим мониторить.
Заходим в только что созданное приложение, получаем «id приложения» и «пароль приложения»:
Результат регистрации приложения:
ID: 6cbc6303d4c147e697303c1fca9906c9
Пароль: __________________________
Callback URL: https://oauth.yandex.ru/verification_code
Где, ID – это client_id=6cbc6303d4c147e697303c1fca9906c9.
3. Получить токен через код подтверждения (https://yandex.ru/dev/oauth/doc/dg/reference/web-client-docpage/).
URL для запроса токена. https://oauth.yandex.ru/authorize?response_type=token&client_id=6cbc6303d4c147e697303c1fca9906c9
Результат: AgAAAAAEvkq-___________________________
Альтернативный вариант.
Идентификатор доступен в https://oauth.yandex.ru/ (нажмите на название приложения, чтобы открыть его свойства).
4. Кроме этого, при обращении к ресурсам API необходимо указывать ID пользователя - нужен для вызова любых ресурсов API (https://yandex.ru/dev/webmaster/doc/dg/reference/user-docpage/).
Его можно получить в начале работы с помощью вызова ресурса user.
URL запроса: https://api.webmaster.yandex.net/v4/user
Тип запроса: GET
В Headers запроса необходимо указать ключ Authorization с значением OAuth ________________________.
Где OAuth .. – это токен.
Результат:
{
"user_id": 79579838
}
На данном этапе получены все параметры авторизации. Теперь можно работать с API запросами.
Документация - Обзор ресурсов API : https://yandex.ru/dev/webmaster/doc/dg/concepts/getting-started-docpage/.
API Яндекс.Вебмастера доступен для идентифицированных пользователей по адресу: https://api.webmaster.yandex.net.
Получение информации о популярных поисковых запросах
Документация: https://yandex.ru/dev/webmaster/doc/dg/reference/host-search-queries-popular-docpage/
Формат запроса:
Тип запроса: GET
Кодировка: UTF-8.
Формат ответа: JSON.
В Headers запроса необходимо указать ключ Authorization с значением OAuth AgAEA7qiYr3jAAZkPBHzz0KgYE6KtE6A77OlGE4.
URL запроса:
https://api.webmaster.yandex.net/v4/user/{user-id}/hosts/{host-id}/search-queries/popular?order_by=
Path-параметры |
|
user-id |
"user_id": 79579838 |
host-id |
ID сайта - https:falconspace.ru:443. |
Query-параметры |
|
order_by * |
Показатель для сортировки запросов TOTAL_SHOWS Количество показов. TOTAL_CLICKS Количество кликов. |
query_indicator |
Индикаторы для отображения запросов TOTAL_SHOWS Количество показов. TOTAL_CLICKS Количество кликов. AVG_SHOW_POSITION Средняя позиция показа. AVG_CLICK_POSITION Средняя позиция клика. |
date_from |
Дата начала интервала. Если не указан, то данные возвращаются за последнюю неделю. Формат: ГГГГ-ММ-ЧЧ. |
date_to |
Дата конца интервала. Если не указан, то данные возвращаются за последнюю неделю. Формат: ГГГГ-ММ-ЧЧ. |
limit |
Размер страницы (1—500). Значение по умолчанию: 500. |
Параметры query_indicator – можно написать несколько в одном запросе.
Пример – реальный запрос с перечислением всех индикаторов для отображения запросов.
https://api.webmaster.yandex.net/v4/user/79579838/hosts/https:falconspace.ru:443/search-queries/popular?order_by=TOTAL_SHOWS&query_indicator=TOTAL_SHOWS&date_from=2020-01-01&date_to=2020-12-31&query_indicator=TOTAL_CLICKS&query_indicator=AVG_SHOW_POSITION&query_indicator=AVG_CLICK_POSITION
Ответ запроса преобразуется из формата JSON в таблицу вида.
query_text |
TOTAL_SHOWS |
TOTAL_CLICKS |
AVG_SHOW_POSITION |
AVG_CLICK_POSITION |
cms для маркетплейса |
89.00 |
8.00 |
7.43 |
6.38 |
скрипт маркетплейса |
73.00 |
24.00 |
4.60 |
4.58 |
движок для маркетплейса |
64.00 |
7.00 |
7.52 |
6.86 |
движок маркетплейса |
49.00 |
5.00 |
5.14 |
5.00 |
falcon space |
44.00 |
13.00 |
1.30 |
1.00 |
Аналогичным образом реализованы несколько других запросов, указанных в документации.
Результат:
Приведен с сокращениями.
{
"count": 2791,
"queries": [
{
"query_id": "4655b69c239b6462",
"query_text": "cms для маркетплейса",
"indicators": {
"TOTAL_SHOWS": 92.0,
"TOTAL_CLICKS": 8.0,
"AVG_SHOW_POSITION": 7.521739130434782,
"AVG_CLICK_POSITION": 6.375
}
},
{
"query_id": "f8de4510bbd8a622",
"query_text": "скрипт маркетплейса",
"indicators": {
"TOTAL_SHOWS": 71.0,
"TOTAL_CLICKS": 25.0,
"AVG_SHOW_POSITION": 4.549295774647887,
"AVG_CLICK_POSITION": 4.52
}
},
…
{
"query_id": "dde486b6f18ac2c3",
"query_text": "манго офис коллтрекинг видео",
"indicators": {
"TOTAL_SHOWS": 2.0,
"TOTAL_CLICKS": 0.0,
"AVG_SHOW_POSITION": 13.0,
"AVG_CLICK_POSITION": null
}
}
],
"date_from": "2020-01-01",
"date_to": "2020-06-20"
}
CREATE PROCEDURE [dbo].[api_yaWebmasterQueriesPopularCounters_request]
@parameters ExtendedDictionaryParameter READONLY, -- входящие параметры для внутренней обработки (используйте Key, Value2)
@username nvarchar(32) -- текущий пользователь.
AS
BEGIN
-- ВХ.ПАРАМ. -- АВТОРИЗАЦИЯ
DECLARE @token nvarchar(MAX)
SET @token = N'OAuth AgAAAAAEvkq-_______________________' -- Authorization
DECLARE @user_id nvarchar(MAX) -- Тип: int64. ID пользователя. Необходим для вызова любых ресурсов API Яндекс.Вебмастера.
SET @user_id = N'79579838' -- N'"user_id": 79579838' --
DECLARE @host_id nvarchar(MAX) -- Тип: host id (string). ID сайта.
SET @host_id = N'https:falconspace.ru:443'
-- Параметры запроса
DECLARE @order_by nvarchar(100) -- ? order_by= -- TOTAL_SHOWS Количество показов. / TOTAL_CLICKS Количество кликов.
SET @order_by = N'TOTAL_SHOWS'
DECLARE @query_indicator nvarchar(100) -- & [query_indicator=] -- TOTAL_SHOWS Количество показов. / TOTAL_CLICKS Количество кликов. / AVG_SHOW_POSITION Средняя позиция показа. / AVG_CLICK_POSITION Средняя позиция клика.
SET @query_indicator = N'TOTAL_SHOWS'
-- ! ВСЕ_ПАРАМЕТРЫ - можно получить одним запросом !
DECLARE @query_indicator2 nvarchar(100) = NULL
SET @query_indicator2 = N'TOTAL_CLICKS'
DECLARE @query_indicator3 nvarchar(100) = NULL
SET @query_indicator3 = N'AVG_SHOW_POSITION'
DECLARE @query_indicator4 nvarchar(100) = NULL
SET @query_indicator4 = N'AVG_CLICK_POSITION'
DECLARE @date_from nvarchar(10) -- & [date_from=] -- 2020-01-01 -- ГГГГ-ММ-ЧЧ -- 23 ISO8601 гггг-мм-дд
SET @date_from = CONVERT ( nvarchar(10) , GETDATE() - 30 , 23 ) -- минус 1 месяц от текущей даты
DECLARE @date_to nvarchar(10) -- & [date_to=] -- 2020-12-31 -- ГГГГ-ММ-ЧЧ -- 23 ISO8601 гггг-мм-дд
SET @date_to = CONVERT ( nvarchar(10) , GETDATE() , 23 )
DECLARE @apiUrl nvarchar(max) = '' -- Финальная строка для отправки -- @apiStr -- ФАКТИЧЕСКИ ЭТО Url
-- SET @apiUrl = 'https://api.webmaster.yandex.net/v4/user/79579838/hosts/https:falconspace.ru:443/search-queries/popular?order_by=TOTAL_SHOWS&query_indicator=TOTAL_SHOWS&date_from=2020-01-01&date_to=2020-12-31&query_indicator=TOTAL_CLICKS&query_indicator=AVG_SHOW_POSITION&query_indicator=AVG_CLICK_POSITION'
SET @apiUrl = 'https://api.webmaster.yandex.net/v4/user/'+@user_id
+'/hosts/'+ @host_id
+'/search-queries/popular?order_by='+@order_by
+'&query_indicator='+@query_indicator
+'&date_from='+@date_from
+'&date_to='+@date_to
+ IIF ( @query_indicator2 IS NOT NULL, +'&query_indicator='+@query_indicator2, '' )
+ IIF ( @query_indicator2 IS NOT NULL, +'&query_indicator='+@query_indicator3, '' )
+ IIF ( @query_indicator2 IS NOT NULL, +'&query_indicator='+@query_indicator4, '' )
-- ОТЛАДКА
insert into as_trace ( header, text, username, code , created ) values( '@apiUrl', @apiUrl , @username, 'api_yaWebmasterQueriesPopularCounters_request' , GETDATE() )
-- Постоянные табблицы - 1 - dbo.api_yaWebmasterSessions - Журнал Запусков (дата + параметры) - 2 - api_yaWebmasterSessionsData - результат
insert into dbo.api_yaWebmasterSessions ( created , userСreator , requestPROCEDURE
, apiCommonName -- убрать из измени проц. начало api_ ... и конец ... _request
, date_from , date_to
, apiUrl )
values( GETDATE() , @username , 'api_yaWebmasterQueriesPopularCounters_request'
, 'yaWebmasterQueriesPopularCounters' -- убрать из измени проц. начало api_ ... и конец ... _request
, @date_from , @date_to
, @apiUrl )
-- SELECT 1 Msg, Result, Url (адрес, куда будет идти запрос)
select '' Msg, 1 Result
, @apiUrl Url
-- SELECT 2 PARAMETERS - параметры, которые будут передаваться во внешний источник
select 'Authorization' name
, 'OAuth AgAAAAAEvkq-_____________________________' value -- @token
, 'header' AS [type] -- form (в форме передается), header (в http headers), get запросы передавайте прямо в URL
END
CREATE PROCEDURE [dbo].[api_yaWebmasterQueriesPopularCounters_response]
@response nvarchar(max),
@parameters ExtendedDictionaryParameter READONLY, -- входящие параметры для внутренней обработки (используйте Key, Value2 - те же что и на request)
@username nvarchar(32)
AS
BEGIN
-- ОТЛАДКА
insert into as_trace ( header, text, username, code , created ) values( 'LEN @response ', LEN ( @response ) , @username, 'api_yaWebmasterQueriesPopularCounters_response' , GETDATE() )
insert into as_trace ( header, text, username, code , created ) values( '@response - 1 , 1024 ', SUBSTRING ( @response , 1 , 1024 ) , @username, 'api_yaWebmasterQueriesPopularCounters_response' , GETDATE() )
-- ! Преобразование - заменить одиночную кавычку на двойную ! - иначе это будет обрыв строки (конец стркои) в середине текста !
-- "eckmar's marketplace script v2.0",
-- !
DECLARE @json1 nvarchar(max)
SET @json1 = REPLACE ( @response , '''' , '''''' )
-----------------------------------------------------------------------------------------------------------------
-- Постоянные табблицы - 1 - dbo.api_yaWebmasterSessions - Журнал Запусков (дата + параметры) - 2 - api_yaWebmasterSessionsData - результат
-- Определение номера сесии, считаем, что это последняя запись в журнале запусков для текущего пользователя
DECLARE @maxSessionID int = 0
SELECT @maxSessionID = ISNULL( MAX( id ), 0) FROM dbo.api_yaWebmasterSessions WHERE userСreator = @username AND apiCommonName = 'yaWebmasterQueriesPopularCounters'
-- Основной запрос
-- ВСТАВКА ДАННЫХ
INSERT INTO dbo.api_yaWebmasterSessionsData ( sessionID, countResult , date_from, date_to
, query_id , query_text, TOTAL_SHOWS, TOTAL_CLICKS , AVG_SHOW_POSITION, AVG_CLICK_POSITION )
SELECT @maxSessionID AS sessionID
--
, TRY_CAST ( JSON_VALUE(@json1, '$.count') AS INT ) AS countResult
, JSON_VALUE(@json1, '$.date_from') AS date_from -- "date_from": "2020-01-01",
, JSON_VALUE(@json1, '$.date_to') AS date_to -- "date_to": "2020-06-14"
--
, Query.query_id, Query.query_text
, ISNULL( Query.TOTAL_SHOWS, 0) , ISNULL( Query.TOTAL_CLICKS, 0) , ISNULL( Query.AVG_SHOW_POSITION, 0) , ISNULL( Query.AVG_CLICK_POSITION, 0)
FROM OPENJSON(@json1, N'$.queries') -- Зашли в массив queries , далее в WITH считаем , что адреса уже внути массива queries
WITH (
query_id VARCHAR(200) N'$.query_id'
, query_text VARCHAR(200) N'$.query_text'
, TOTAL_SHOWS decimal(18, 2) N'$.indicators.TOTAL_SHOWS' -- VARCHAR(200)
, TOTAL_CLICKS decimal(18, 2) N'$.indicators.TOTAL_CLICKS'
, AVG_SHOW_POSITION decimal(18, 2) N'$.indicators.AVG_SHOW_POSITION'
, AVG_CLICK_POSITION decimal(18, 2) N'$.indicators.AVG_CLICK_POSITION'
) AS Query
-----------------------------------------------------------------------------------------------------------------
-- табл. с данными - dbo.api_yaWebmasterSessionsData / строк - ***
DECLARE @isExistTable int = 0
DECLARE @countTableRecords int = 0
SELECT @isExistTable = ISNULL( object_id('api_yaWebmasterSessionsData') , 0 )
IF @isExistTable > 0 SELECT @countTableRecords = ISNULL( count(*) , 0 ) FROM dbo.api_yaWebmasterSessionsData WHERE sessionID = @maxSessionID
-- SELECT 1
select 'Табл. с данными - dbo.api_yaWebmasterSessionsData '
+ IIF ( @isExistTable = 0
, 'не заполнена!'
, 'заполнена, записей - '+ TRY_CAST ( @countTableRecords AS nvarchar) +'. Сесиия - '+ TRY_CAST ( @maxSessionID AS nvarchar)
) AS Msg
, 1 Result
, @response Response
-- SELECT 2 Внешние действия
END
Приведенные ниже запросы API работают по тому же принципу.
Код исходящего запроса |
Название |
yaWebmasterHosts |
ya Webmaster - Список сайтов |
yaWebmasterHostInfo |
ya Webmaster - Информация о сайте |
yaWebmasterHostDiagnostics |
(20)ya Webmaster - Диагностика сайта |
yaWebmasterQueriesPopularTOTAL_SHOWS |
(16)ya Webmaster - Популярные запросы - TOTAL_SHOWS |
yaWebmasterQueriesPopularTOTAL_CLICKS |
(16)ya Webmaster - Популярные запросы - TOTAL_CLICKS |
yaWebmasterQueriesPopularAVG_SHOW |
(16)ya Webmaster - Популярные запросы - AVG_SHOW_POSITION |
yaWebmasterQueriesPopularAVG_CLICK |
(16)ya Webmaster - Популярные запросы - AVG_CLICK_POSITION |
Google поиск по нашей документации
- Руководства
- Основа Falcon Space
- Основные компоненты
- Возможности
- Коммуникация с пользователем
- Дизайн, стилизация, юзабилити
- Лендинги
- Универсальный API
- Примеры интеграций
- Каталоги
- Навигация
- Документы
- Дополнительные компоненты
- Продвижение, SEO Возможности поисковой оптимизации сайта (SEO) Генерация RSS в SQL процедуре Интеграция с Яндекс XML API Интеграция API Яндекс.Вебмастер SEO - Как создать виртуальные страницы с одним шаблоном, но под разные ключи Оптимизация по загрузке картинок Как сделать карту сайта Яндекс Турбо - как включить Яндекс Турбо страницы для контента на сайте Интеграция с Тургенев API для проверки качества контента Создание AMP страниц для улучшения позиций в Google Внедрение рекламных блоков в контент Улучшение Pagespeed за счет отключения лишних счетчиков (как убрать некоторые скрипты для пауков, ботов)
- Системные моменты
- Системное администрирование
- HOWTO
- Таблицы
- Формы
- Загрузка файлов, картинок
- Работа с SQL
- HOWTO JS
- HOWTO Верстка
- Решение проблем
Выгода от использования Falcon Space
В 2-3 раза экономнее и быстрее, чем заказная разработка
Более гибкая, чем коробочные решения и облачные сервисы
Используйте готовые решения и изменяйте под свои потребности
- Шаг 1. Создать концепт проекта
- Шаг 2. Получить оценку бюджета (КП)
- Шаг 3. Заключить договор
- Шаг 4. Создать совместно техническое задание
- Шаг 5. Поэтапная реализация проекта