[Примеры] Google Search Console/Google Webmasters Tools API PHP
Документация по API: https://developers.google.com/webmaster-tools/search-console-api-original/v3/parameters
- Подготовительный этап
- Работа с API Google Search Console на PHP
- Добавление и верификация сайтов в Google Search Console (Google Webmaster)
Подготовительный этап
1. Создаём сервисный аккаунт и получаем .json файл с ключом для доступа к API.
2. Открываем полный доступ к сайту для email адреса сервисного аккаунта:
Email адрес сервисного аккаунта можно узнать на странице вашего проекта в Google Developers Console:
3. Устанавливаем библиотеку для работы с Google APIs: Google APIs Client Library for PHP.
Для установки с помощью Composer выполните в консоли следующие команды:
1 2 |
cd /path/my/project/ composer require google/apiclient:^2.0 |
После установки подключаем файл autoload.php:
1 |
require_once '/path/to/your-project/vendor/autoload.php'; |
4. Файл-ключ сервисного аккаунта, созданный на первом шаге, кладём в папку с нашим проектом:
Работа с API Google Search Console на PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
/** * Подключаемся к API *******************************************************/ require_once __DIR__ . '/vendor/autoload.php'; // Путь к файлу ключа сервисного аккаунта $googleAccountKeyFilePath = __DIR__ . '/google-key.json'; putenv( 'GOOGLE_APPLICATION_CREDENTIALS=' . $googleAccountKeyFilePath ); // Документация https://developers.google.com/sheets/api/ $client = new Google_Client(); $client->useApplicationDefaultCredentials(); // Области, к которым будет доступ // https://developers.google.com/identity/protocols/googlescopes $client->addScope( 'https://www.googleapis.com/auth/webmasters' ); $serviceWebmasters = new Google_Service_Webmasters( $client ); |
Получение списка доступных сайтов и информации о них
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
// Получаем список сайтов, к которым есть доступ // https://developers.google.com/webmaster-tools/search-console-api-original/v3/sites/list $listSites = $serviceWebmasters->sites->listSites(); /* Содержимое $listSites Google_Service_Webmasters_SitesListResponse::__set_state(array( 'collection_key' => 'siteEntry', 'siteEntryType' => 'Google_Service_Webmasters_WmxSite', 'siteEntryDataType' => 'array', 'internal_gapi_mappings' => array ( ), 'modelData' => array ( ), 'processed' => array ( ), 'siteEntry' => array ( 0 => Google_Service_Webmasters_WmxSite::__set_state(array( 'permissionLevel' => 'siteFullUser', 'siteUrl' => 'https://codd-wd.ru/', 'internal_gapi_mappings' => array ( ), 'modelData' => array ( ), 'processed' => array ( ), )), ), )) */ |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
// Получаем информацию о сайте // https://developers.google.com/webmaster-tools/search-console-api-original/v3/sites/get // https://developers.google.com/webmaster-tools/search-console-api-original/v3/sites#resource $site = $serviceWebmasters->sites->get( 'https://codd-wd.ru/' // Адрес сайта ); /* Содержимое $site Google_Service_Webmasters_WmxSite::__set_state(array( 'permissionLevel' => 'siteFullUser', 'siteUrl' => 'https://codd-wd.ru/', 'internal_gapi_mappings' => array ( ), 'modelData' => array ( ), 'processed' => array ( ), )) */ |
Получение информации о файлах sitemap
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
// Получаем список добавленных файлов Sitemap // https://developers.google.com/webmaster-tools/search-console-api-original/v3/sitemaps/list $listSitemaps = $serviceWebmasters->sitemaps->listSitemaps( 'https://codd-wd.ru/' // Адрес сайта ); /* Содержимое $listSitemaps Google_Service_Webmasters_SitemapsListResponse::__set_state(array( 'collection_key' => 'sitemap', 'sitemapType' => 'Google_Service_Webmasters_WmxSitemap', 'sitemapDataType' => 'array', 'internal_gapi_mappings' => array ( ), 'modelData' => array ( ), 'processed' => array ( ), 'sitemap' => array ( 0 => Google_Service_Webmasters_WmxSitemap::__set_state(array( 'collection_key' => 'contents', 'contentsType' => 'Google_Service_Webmasters_WmxSitemapContent', 'contentsDataType' => 'array', 'errors' => '0', 'isPending' => false, 'isSitemapsIndex' => true, 'lastDownloaded' => '2019-02-04T07:51:29.680Z', 'lastSubmitted' => '2019-01-24T07:47:51.929Z', 'path' => 'https://codd-wd.ru/sitemap.xml', 'type' => NULL, 'warnings' => '0', 'internal_gapi_mappings' => array ( ), 'modelData' => array ( ), 'processed' => array ( ), 'contents' => array ( 0 => Google_Service_Webmasters_WmxSitemapContent::__set_state(array( 'indexed' => '19', 'submitted' => '20', 'type' => 'web', 'internal_gapi_mappings' => array ( ), 'modelData' => array ( ), 'processed' => array ( ), )), ), )), ), )) */ |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
// Получаем информацию о файле sitemap // https://developers.google.com/webmaster-tools/search-console-api-original/v3/sitemaps/get $sitemap = $serviceWebmasters->sitemaps->get( 'https://codd-wd.ru/', // Адрес сайта 'https://codd-wd.ru/sitemap.xml' // Путь до карты сайта ); /* Содержимое $sitemap Google_Service_Webmasters_WmxSitemap::__set_state(array( 'collection_key' => 'contents', 'contentsType' => 'Google_Service_Webmasters_WmxSitemapContent', 'contentsDataType' => 'array', 'errors' => '0', 'isPending' => false, 'isSitemapsIndex' => true, 'lastDownloaded' => '2019-02-04T07:51:29.680Z', 'lastSubmitted' => '2019-01-24T07:47:51.929Z', 'path' => 'https://codd-wd.ru/sitemap.xml', 'type' => NULL, 'warnings' => '0', 'internal_gapi_mappings' => array ( ), 'modelData' => array ( ), 'processed' => array ( ), 'contents' => array ( 0 => Google_Service_Webmasters_WmxSitemapContent::__set_state(array( 'indexed' => '19', 'submitted' => '20', 'type' => 'web', 'internal_gapi_mappings' => array ( ), 'modelData' => array ( ), 'processed' => array ( ), )), ), )) */ |
Получение информации о трафике (клики, показы, ctr, средние позиции)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 |
// Получаем информацию о поисковых запросах // https://developers.google.com/webmaster-tools/search-console-api-original/v3/searchanalytics/query $postBody = new Google_Service_Webmasters_SearchAnalyticsQueryRequest( [ 'startDate' => '2019-01-01', 'endDate' => '2019-02-01', 'dimensions' => [ 'query', //'device', //'date' ], 'rowLimit' => 5, 'startRow' => 0 ] ); $searchAnalyticsResponse = $serviceWebmasters->searchanalytics->query( 'https://codd-wd.ru/', $postBody ); /* Содержимое $searchAnalyticsResponse Google_Service_Webmasters_SearchAnalyticsQueryResponse::__set_state(array( 'collection_key' => 'rows', 'responseAggregationType' => 'byProperty', 'rowsType' => 'Google_Service_Webmasters_ApiDataRow', 'rowsDataType' => 'array', 'internal_gapi_mappings' => array ( ), 'modelData' => array ( ), 'processed' => array ( ), 'rows' => array ( 0 => Google_Service_Webmasters_ApiDataRow::__set_state(array( 'collection_key' => 'keys', 'clicks' => 31.0, 'ctr' => 0.2672413793103448, 'impressions' => 116.0, 'keys' => array ( 0 => 'google script примеры', ), 'position' => 1.1724137931034484, 'internal_gapi_mappings' => array ( ), 'modelData' => array ( ), 'processed' => array ( ), )), 1 => Google_Service_Webmasters_ApiDataRow::__set_state(array( 'collection_key' => 'keys', 'clicks' => 8.0, 'ctr' => 0.36363636363636365, 'impressions' => 22.0, 'keys' => array ( 0 => 'google apps script примеры', ), 'position' => 1.1363636363636362, 'internal_gapi_mappings' => array ( ), 'modelData' => array ( ), 'processed' => array ( ), )), 2 => Google_Service_Webmasters_ApiDataRow::__set_state(array( 'collection_key' => 'keys', 'clicks' => 8.0, 'ctr' => 0.08421052631578947, 'impressions' => 95.0, 'keys' => array ( 0 => 'google sheets api php', ), 'position' => 6.6947368421052635, 'internal_gapi_mappings' => array ( ), 'modelData' => array ( ), 'processed' => array ( ), )), 3 => Google_Service_Webmasters_ApiDataRow::__set_state(array( 'collection_key' => 'keys', 'clicks' => 6.0, 'ctr' => 0.42857142857142855, 'impressions' => 14.0, 'keys' => array ( 0 => 'ajax загрузка изображений с превью', ), 'position' => 1.0, 'internal_gapi_mappings' => array ( ), 'modelData' => array ( ), 'processed' => array ( ), )), 4 => Google_Service_Webmasters_ApiDataRow::__set_state(array( 'collection_key' => 'keys', 'clicks' => 6.0, 'ctr' => 0.1935483870967742, 'impressions' => 31.0, 'keys' => array ( 0 => 'php google sheets', ), 'position' => 7.870967741935484, 'internal_gapi_mappings' => array ( ), 'modelData' => array ( ), 'processed' => array ( ), )), ), )) */ |
Добавление и верификация сайтов в Google Search Console (Google Webmaster)
1. Реализуем систему авторизации через OAuth 2.0 по этой инструкции. При создании приложения в Google Developers Console (пункт 3) обязательно включаем поддержку «Site Verification API» и «Google Search Console API». При получении токена (раздел 2) в массиве SCOPES обязательно указываем «Google_Service_Webmasters::WEBMASTERS» и «https://www.googleapis.com/auth/siteverification»:
1 2 3 4 5 6 7 8 |
// Области, к которым будет запрошен доступ // Подробнее https://developers.google.com/identity/protocols/googlescopes define( 'SCOPES', implode( ' ', [ // ... Google_Service_Webmasters::WEBMASTERS, 'https://www.googleapis.com/auth/siteverification' // ... ] ) ); |
2. Добавляем сайт в Search Console:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
// Подключаем библиотеку для работы с API Google require_once 'vendor/autoload.php'; // ... define( 'SCOPES', implode( ' ', [ // ... Google_Service_Webmasters::WEBMASTERS, 'https://www.googleapis.com/auth/siteverification' // ... ] ) ); // Инициализация Google Client $client = new Google_Client(); $client->setScopes( SCOPES ); // ... /** * Добавляем сайт в гугл вебмастер */ $serviceWebmasters = new Google_Service_Webmasters( $client ); $serviceWebmasters->sites->add('http://test.codd-wd.ru'); // Адрес сайта |
3. Получаем токен для верификации сайта. Верифицировать будем путём загрузки файла в корневую директорию сайта:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
/** * Верифицируем сайт * Документация * https://developers.google.com/site-verification/v1/ */ $site = new Google_Service_SiteVerification_SiteVerificationWebResourceGettokenRequestSite(); $site->setIdentifier('http://test.codd-wd.ru'); // Адрес сайта $site->setType('SITE'); $request = new Google_Service_SiteVerification_SiteVerificationWebResourceGettokenRequest(); $request->setSite($site); $request->setVerificationMethod('FILE'); $serviceSiteVerification = new Google_Service_SiteVerification($client); $webResource = $serviceSiteVerification->webResource; $result = $webResource->getToken($request); $token = $result->getToken(); |
В переменной $token
будет строка вида googled3b03099276a7eb3.html
.
Создаём файл с названием googled3b03099276a7eb3.html
и содержимым google-site-verification: googled3b03099276a7eb3.html
и загружаем этот файл в корневую директорию сайта.
4. Подтверждаем права собственности:
1 2 3 4 5 6 7 8 9 10 11 |
//... $site = new Google_Service_SiteVerification_SiteVerificationWebResourceResourceSite(); $site->setIdentifier('http://test.codd-wd.ru'); $site->setType('SITE'); $request = new Google_Service_SiteVerification_SiteVerificationWebResourceResource(); $request->setSite($site); $service = new Google_Service_SiteVerification($client); $webResource = $service->webResource; $webResource->insert('FILE',$request); |