highsolutions/google-keywords
| Install | |
|---|---|
composer require highsolutions/google-keywords |
|
| Latest Version: | 1.2.0 |
| PHP: | >=5.6.4 |
| Laravel: | 5 – 8 |
| License: | MIT |
| Last Updated: | Sep 9, 2020 |
| Links: | GitHub · Packagist |
Laravel Google Keywords
A Laravel package for synchronizing with Google Search Console to get visitors' search keywords.

Installation
Add the following line to the require section of your Laravel webapp's composer.json file:
"require": {
"HighSolutions/GoogleKeywords": "1.*"
}
Run composer update to install the package.
This package uses Laravel 5.5 Package Auto-Discovery.
For previous versions of Laravel, you need to update config/app.php by adding an entry for the service provider:
'providers' => [
// ...
HighSolutions\GoogleKeywords\GoogleKeywordsServiceProvider::class,
];
Next, publish all package resources:
php artisan vendor:publish --provider="HighSolutions\GoogleKeywords\GoogleKeywordsServiceProvider"
This will add to your project:
- migration - database table for storing keywords
- configuration - package configurations
Remember to launch migration:
php artisan migrate
Next step is to add cron task via Scheduler (app\Console\Kernel.php):
protected function schedule(Schedule $schedule)
{
// ...
$schedule->command('keywords:fetch')->daily();
}
Configuration
| Setting name | Description | Default value |
|---|---|---|
| websites.*.url | URL of website (with protocol) | '' |
| websites.*.credentials | JSON credentials file on server | storage_path('app/google-search-credentials.json') |
Websites are defined in configuration as:
<?php
return [
'websites' => [
[
'url' => 'http://highsolutions.pl',
'credentials' => storage_path('app/HS-Credentials.json'),
],
// ...
],
];
Invalid configuration will return information about error.
Google Search Console and Google Cloud Platform integration
In order to get access to keywords from Google Search you need to complete 2 steps:
- Google Search Console (https://www.google.com/webmasters/tools/home)
- Add your website
- Verify your ownership of website
- Google Cloud Platform (https://console.cloud.google.com/apis/credentials)
- Add new project
- Generate server-side API key
- Download JSON credentials (name-of-project-id.json) and store them into
storage/appfolder - Copy e-mail address of API key (e.g. name-of-key@name-of-package-id.iam.gserviceaccount.com) - available here: https://console.cloud.google.com/iam-admin/serviceaccounts/project?project=PROJECT_NAME-ID
- Assign it as owner of website in Google Search Console
Model structure
Model consists of fields:
id- primary keyurl- URL of websitekeyword- full keyworddate- date of resultclicks- number of clicks on link in search view with particular keywordimpressions- number of views of link in search view with particular keywordctr- click through rate (clicks / impressions)avg_position- average position of link on list of results in search view with particular keyword
Model API
To make usage of gathered data easier, there is a simple API for most common use cases:
url('http://example.com')- adds where clause for limiting results to only one website (not necessary when you fetch only one website)grouped()- prepares sum of clicks and impressions of each keyword gathered for the websitebyDay()- prepares sum of clicks and impressions of each dayorderByDate($dir = 'asc')- sorts results by dateorderBySum($param = 'clicks')- sorts results by sum of clicks/impressions (works withgroupedscope)orderByAlpha($dir = 'asc')- sorts results alphabetically
Usage
- Get most popular keywords of your website:
<?php
use HighSolutions\GoogleKeywords\Models\GoogleKeyword;
$results = GoogleKeyword::url('http://highsolutions.pl')->grouped()->orderBySum('clicks')->take(10)->get();
- Get all keywords stored day by day:
<?php
use HighSolutions\GoogleKeywords\Models\GoogleKeyword;
$results = GoogleKeyword::url('http://highsolutions.pl')->orderByDate()->get();
- Get number of clicks/impressions in the last month:
<?php
use Carbon\Carbon;
use HighSolutions\GoogleKeywords\Models\GoogleKeyword;
$results = GoogleKeyword::url('http://highsolutions.pl')->byDate()->where('date', '>=', Carbon::now()->subMonth(1))->orderByDate()->get();
Changelog
1.2.0
- Laravel 7.x and 8.x support
1.1.0
- Laravel 6.0 support
1.0.3
- Support Package Auto-Discovery
1.0.2
- Fix error with checking config
1.0.0
- Create package
- Model API
Roadmap
- Gather info about subsites also
- Examples of usage as controllers and views
- Comments
- Unit tests!
Credits
This package is developed by HighSolutions, software house from Poland in love in Laravel.
Related Packages
Laravel package to get Google Custom Search results from Google Custom Search En...
Filament plugin for Gemini API search with Google Search Grounding
Version History
| Version | Released | PHP | Laravel | License |
|---|---|---|---|---|
| 1.2.0 | >=5.6.4 | 5.*| | MIT | |
| 1.1.0 | >=5.6.4 | 5.*| | MIT | |
| 1.0.3 | >=5.6.4 | ~5.1 | MIT | |
| 1.0.2 | >=5.6.4 | ~5.1 | MIT | |
| 1.0.1 | >=5.6.4 | ~5.1 | MIT | |
| 1.0.0 | >=5.6.4 | ~5.1 | MIT |