schulzefelix / laravel-search-console by schulzefelix

A Laravel package to retrieve data from Google Search Console
35,280
47
6
Package Data
Maintainer Username: schulzefelix
Maintainer Contact: github@schulze.co (Felix Schulze)
Package Create Date: 2017-07-19
Package Last Update: 2023-10-05
Language: PHP
License: MIT
Last Refreshed: 2024-12-16 15:00:42
Package Statistics
Total Downloads: 35,280
Monthly Downloads: 171
Daily Downloads: 16
Total Stars: 47
Total Watchers: 6
Total Forks: 24
Total Open Issues: 1

Laravel Search Console

Latest Version Software License Build Status Quality Score StyleCI Latest Version on Packagist Total Downloads

Using this package you can easily retrieve data from Google Search Console API.

Install

This package can be installed through Composer.

$ composer require schulzefelix/laravel-search-console

In Laravel 5.5 or higher the package will autoregister the service provider. In Laravel 5.4 you must install this service provider.

// config/app.php
'providers' => [
    ...
    SchulzeFelix\SearchConsole\SearchConsoleServiceProvider::class,
    ...
];

In Laravel 5.5 or higher the package will autoregister the facade. In Laravel 5.4 you must install the facade manually.

// config/app.php
'aliases' => [
    ...
    'SearchConsole' => SchulzeFelix\SearchConsole\SearchConsoleFacade::class,
    ...
];

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' => env('GOOGLE_AUTH_CONFIG'),
        ],
 
        'service_account' => [
            'application_credentials' => env('GOOGLE_APPLICATION_CREDENTIALS'),
        ],
 
    ],
 
    /*
     |--------------------------------------------------------------------------
     | 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

    $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'
        );

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'): 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 githubissues@schulze.co instead of using the issue tracker.

Credits

License

The MIT License (MIT). Please see License File for more information.