schulzefelix / laravel-search-console
A Laravel package to retrieve data from Google Search Console
Installs: 35 144
Dependents: 1
Suggesters: 0
Security: 0
Stars: 47
Watchers: 6
Forks: 24
Open Issues: 1
Requires
- php: ^8.0.2
- google/apiclient: ^2.0
- illuminate/support: ^9.0
- symfony/cache: ^6.0
Requires (Dev)
- mockery/mockery: ^1.4
- orchestra/testbench: ^7.0
- phpunit/phpunit: ^9.4
README
Using this package you can easily retrieve data from Google Search Console API.
Here are a few examples of the provided methods:
use SearchConsole; //list all available sites for that token SearchConsole::setAccessToken($token)->listSites(); //get site details (permissionLevel) for specific site SearchConsole::setAccessToken($token)->getSite('http://blog.example.com/');
Install
This package can be installed through Composer.
$ composer require schulzefelix/laravel-search-console
Optionally, you can publish the config file of this package with this command:
php artisan vendor:publish --provider="SchulzeFelix\SearchConsole\SearchConsoleServiceProvider"
The following config file will be published in config/search-console.php
return [ /* |-------------------------------------------------------------------------- | Authentication |-------------------------------------------------------------------------- | Google offers access via OAuth client IDs or service accounts. | For more information see: https://developers.google.com/identity/protocols/OAuth2 | | Supported: "oauth", "oauth_json", "service_account", */ 'auth_type' => env('GOOGLE_AUTH_TYPE', 'oauth'), /* |-------------------------------------------------------------------------- | Application Credentials |-------------------------------------------------------------------------- | | https://developers.google.com/api-client-library/php/auth/service-accounts#creatinganaccount */ 'connections' => [ 'oauth' => [ 'client_id' => env('GOOGLE_CLIENT_ID'), 'client_secret' => env('GOOGLE_CLIENT_SECRET'), ], 'oauth_json' => [ 'auth_config' => storage_path('app/searchconsole/oauth-account-credentials.json'), ], 'service_account' => [ 'application_credentials' => storage_path('app/searchconsole/service-account-credentials.json'), ], ], /* |-------------------------------------------------------------------------- | Cache Settings |-------------------------------------------------------------------------- | Here you may configure the "store" that the underlying Google_Client will | use to store it's data. You may also add extra parameters that will | be passed on setCacheConfig (see docs for google-api-php-client). | | Optional parameters: "lifetime", "prefix" */ 'cache' => [ 'store' => 'file', ], /* |-------------------------------------------------------------------------- | Application Name |-------------------------------------------------------------------------- */ 'application_name' => env('SEARCH_CONSOLE_APPLICATION_NAME', 'GSC Agent'), ];
Usage
Here are two basic example to retrieve all sites and an export for search analytics data.
List Sites
$sites = SearchConsole::setAccessToken($token)->listSites();
Search Analytics
use SearchConsole; use SchulzeFelix\SearchConsole\Period; $data = SearchConsole::setAccessToken($token)->setQuotaUser('uniqueQuotaUserString') ->searchAnalyticsQuery( 'https://www.example.com/', Period::create(Carbon::now()->subDays(30), Carbon::now()->subDays(2)), ['query', 'page', 'country', 'device', 'date'], [['dimension' => 'query', 'operator' => 'notContains', 'expression' => 'cheesecake']], 1000, 'web', 'all', 'auto' );
Provided methos
Retrieve One Site
public function public function getSite(string $siteUrl): array
Retrieve All Sites
public function public function listSites(): Collection
Retrieve Search Analytics Data
public function searchAnalyticsQuery(string $siteUrl, Period $period, array $dimensions = [], array $filters = [], int $rows = 1000, string $searchType = 'web', string $dataState = 'final', string $aggregationType = 'auto'): Collection
Check Access Token
public function public function isAccessTokenExpired(): Bool
Provided fluent configuration
Set Access Token (Required)
$sites = SearchConsole::setAccessToken($token)->listSites();
Set Quota User
To avoid to the API limits, you can provide a unique string for the authenticated account.
More information: https://developers.google.com/webmaster-tools/search-console-api-original/v3/limits
$sites = SearchConsole::setAccessToken($token)->setQuotaUser('uniqueQuotaUserString')->listSites();
Get Underlying Service
You can get access to the underlying Google_Service_Webmasters
object:
SearchConsole::getWebmastersService();
Change log
Please see CHANGELOG for more information what has changed recently.
Testing
$ vendor/bin/phpunit
Contributing
Please see CONTRIBUTING and CONDUCT for details.
Security
If you discover any security related issues, please email github@schulze.co instead of using the issue tracker.
Credits
License
The MIT License (MIT). Please see License File for more information.