a golang client to optimize hugo seo by Google Search Console. read gseo spec for more information.
- source
go install github.com/xiexianbin/gseo
- bin
curl -Lfs -o gseo https://github.com/xiexianbin/gseo/releases/latest/download/gseo-{linux|darwin|windows}
chmod +x gseo
./gseo
- root help
$ gseo -h
golang client to optimize [hugo](https://www.xiexianbin.cn/tags/hugo/) seo by Google Search Console.
Usage:
gseo [flags]
gseo [command]
Available Commands:
completion Generate the autocompletion script for the specified shell
help Help about any command
init init gseo configure
keyword show site keywords
render render hugo post markdown files
sites site list
version Print the version number of gseo.
Flags:
-h, --help help for gseo
-v, --verbose debug info.
Use "gseo [command] --help" for more information about a command.
- keywords help
$ gseo help keyword
download hugo post keywords from Google Search Console API, and cache it in `./.gseo/` dir
Usage:
gseo keyword [flags]
Flags:
-h, --help help for keyword
-l, --last int last days (default 90)
-s, --site string site url
- render help
$ gseo help render
render hugo post markdown files.
default args is:
gseo render --content PATH_OF_HUGO_CONTENT --position 10 --ctr 0 --impressions 100 --clicks 0.3 --max 8 --dryrun
Usage:
gseo render [flags]
Flags:
-k, --clicks float >=clicks to render seo.
--content string hugo content path
-c, --ctr float ctr = clicks / impressions to render seo, and 0 <= ctr <= 1. (default 0.3)
-r, --dryrun dry run mode.
-h, --help help for render
-i, --impressions float >=impressions to render seo. (default 100)
-m, --max int max seo items, -1 is un-limit. (default 8)
-p, --position float >=position to render seo. (default 10)
-s, --skip-err skip error. (default true)
- step-1: config google auth secret in file
~/.gseo/client_secret.json
(can i build it as constant in go pkg?)
$ cat ~/.gseo/client_secret.json
{"installed":{"client_id":"1017408311257-hq3j99vk9ludpoff862mnp52v36nv4gc.apps.googleusercontent.com","project_id":"adept-button-344010","auth_uri":"https://accounts.google.com/o/oauth2/auth","token_uri":"https://oauth2.googleapis.com/token","auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs","client_secret":"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","redirect_uris":["urn:ietf:wg:oauth:2.0:oob","http://localhost"]}}
- step-2: init google token
$ gseo init
Please enter Google API client_secret.json path (default is /Users/xiexianbin/.gseo/client_secret.json):
init config success!
Go to the following link in your browser then type the authorization code:
https://accounts.google.com/o/oauth2/auth?access_type=offline&client_id=1017408311257-hq3j99vk9ludpoff862mnp52v36nv4gc.apps.googleusercontent.com&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&response_type=code&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fwebmasters.readonly&state=state-token
---> <Visit the URL above, and paste the (authorization code/授权代码) over here> <---
Saving credential file to: /Users/xiexianbin/.gseo/token.json
init Google API OAuth2.0 token success!
- list sites
$ gseo sites
PermissionLevel SiteUrl
siteOwner sc-domain:xiexianbin.cn
siteOwner https://docs.xiexianbin.cn/
siteOwner https://www.xiexianbin.cn/
- show special site keywords, while write keywords to cache file
~/.gseo/cache-<date>.json
$ gseo keyword -s "https://www.xiexianbin.cn/"
==> get 1000 lines Results
==> get 1000 lines Results
Write to file /Users/xiexianbin/.gseo/cache-2022-06-03.json success, bytes 276427
- render demo, read keywords from cache file
~/.gseo/cache-<date>.json
$ export HUGO_CONTENT="/Users/xiexianbin/workspace/code/github.com/xiexianbin/note.seo/content"
# default args
$ gseo render --content ${HUGO_CONTENT} --position 10 --ctr 0 --impressions 10 --clicks 0.1 --max 8 --dryrun true
# my args 1 **
$ gseo render --content ${HUGO_CONTENT} --position 10 --ctr 0 --impressions 100 --clicks 0.3 --max 8
# my args 2 *****
$ gseo render --content ${HUGO_CONTENT} --position 0 --ctr 0 --impressions 1 --clicks 0 --max 8 --dryrun true
now, you can find seo keywords has auto update/render to ${HUGO_CONTENT}
.
- keyword can not contain
:
, occur golang yaml parse err
Hugo 博客 SEO 优化 - 自动调用 Google Search Console API
# run some TestCase
go test -v -run TestClient google/client_test.go
# build
$ make all