gsc-cli 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/LICENSE +21 -0
- data/README.md +500 -0
- data/bin/gsc +8128 -0
- data/dist/gsc +8128 -0
- data/lib/gsc/api.rb +300 -0
- data/lib/gsc/auth.rb +92 -0
- data/lib/gsc/cli.rb +5435 -0
- data/lib/gsc/client.rb +79 -0
- data/lib/gsc/color.rb +22 -0
- data/lib/gsc/command_registry.rb +335 -0
- data/lib/gsc/config.rb +178 -0
- data/lib/gsc/google_trends.rb +187 -0
- data/lib/gsc/keyword_planner.rb +256 -0
- data/lib/gsc/keywords_everywhere.rb +144 -0
- data/lib/gsc/page_analyzer.rb +431 -0
- data/lib/gsc/prompts.rb +285 -0
- data/lib/gsc/site_crawler.rb +260 -0
- data/lib/gsc/sitemap_loader.rb +91 -0
- data/lib/gsc/version.rb +5 -0
- data/lib/gsc.rb +38 -0
- metadata +67 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 4e0189995ff86db46e177552d4f59c1818fb052ce8596771b007653d291e4e20
|
|
4
|
+
data.tar.gz: c460fc3df0a07d176777f662c729c11ae04ec2a31bac4b64c6e5480a11287317
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 6c79b81769a4aeb94d03b594c1a7ecbbe63fa41fa6898b9ad1ac7b2a1770cc9116f6881fded5fbe25dbb050d6d2bc3034d9e493003d2e22b9eb39ed4027b06d6
|
|
7
|
+
data.tar.gz: 6d51b70bb71d03e0ada49926a4fbad9b86a71f18ba73b9c96ae046bb9094bc8502ef6da5287ee44d51f27d4f8893703059a6e6f21f4528be6d793748acc98a59
|
data/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
data/README.md
ADDED
|
@@ -0,0 +1,500 @@
|
|
|
1
|
+
# π GSC CLI β The Zero-Dependency Google Search Console, Trends & Indexing Engine for High-Growth Operators
|
|
2
|
+
|
|
3
|
+
> **Zero Gem Dependencies.** Pure Ruby standard library (`Net::HTTP`, `OpenSSL`, `JSON`).
|
|
4
|
+
> Sub-50ms CLI & AI Agent engine for real-time Google search rankings, instant Googlebot indexing, Google Trends velocity, Keywords Everywhere volume, and 360Β° SEO health audits.
|
|
5
|
+
|
|
6
|
+
[](https://www.ruby-lang.org)
|
|
7
|
+
[](#)
|
|
8
|
+
[](LICENSE)
|
|
9
|
+
[](#-ai-agent-native-integration-antigravity-claude-cursor)
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
<p align="center">
|
|
14
|
+
<b>gsc-cli</b> is a free, open-source initiative built and maintained by
|
|
15
|
+
<a href="https://apolloswave.com"><b>AppollosWave LLC</b></a>.
|
|
16
|
+
</p>
|
|
17
|
+
|
|
18
|
+
<p align="center">
|
|
19
|
+
<sub>Explore other software built by our team:</sub><br>
|
|
20
|
+
β‘ <a href="https://superspeedapp.com"><b>Superspeed</b></a> β Lightning-fast macOS disk cleaner & RAM booster for Apple Silicon<br>
|
|
21
|
+
π <a href="https://supercart.app"><b>Supercart</b></a> β High-converting slide cart drawer & 1-click upsells for Shopify stores<br>
|
|
22
|
+
π¦ <a href="https://packinglog.com"><b>PackingLog</b></a> β Smart QR-code box inventory & photo catalog for residential & office moves
|
|
23
|
+
</p>
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## β‘ The Brutal Truth About Modern SEO (And Why We Built GSC CLI)
|
|
28
|
+
|
|
29
|
+
Every software company, indie hacker, and e-commerce founder faces the exact same painful reality:
|
|
30
|
+
|
|
31
|
+
1. **You're Paying $300/Month for Guesswork**: Third-party SEO suites (Ahrefs, Semrush, Moz) scrape search results and guess your rankings using outdated third-party databases. Meanwhile, **Google already has the exact, ground-truth data** for your site sitting inside Search Consoleβfor free.
|
|
32
|
+
2. **Official Google API Gems Are Bloated Monsters**: The official Google API Ruby gems (`google-apis-searchconsole_v1`, `google-apis-indexing_v3`, `googleauth`) drag in **40+ dependency gems**, take 3 to 5 seconds just to boot, trigger bundle conflicts, and introduce constant supply-chain security alerts.
|
|
33
|
+
3. **Google Search Console's Web UI is Painfully Slow**: Clicking through Google Search Console's web interface to inspect 50 URLs or spot keyword cannibalization takes hours of repetitive clicking, filtering, and tab-switching.
|
|
34
|
+
4. **AI Agents Need Clean, Fast, Machine-Readable Intelligence**: Modern AI coding agents (Google Antigravity, Claude Code, Cursor, Codex) cannot click web buttons. They need raw, fast, deterministic JSON over stdout.
|
|
35
|
+
|
|
36
|
+
### The Epiphany Bridge
|
|
37
|
+
At **[AppollosWave](https://apolloswave.com)**, we run multiple production software businessesβfrom macOS system utilities (**[Superspeed](https://superspeedapp.com)**) and Shopify e-commerce apps (**[Supercart](https://supercart.app)**) to physical moving inventory SaaS (**[PackingLog](https://packinglog.com)**).
|
|
38
|
+
|
|
39
|
+
We refused to bloat our repos with 40 gems or waste 10 hours a week clicking in Search Console. We needed a **single, standalone pure-Ruby CLI** that connects directly to Google APIs using native `OpenSSL` and `Net::HTTP` in **under 50 milliseconds**.
|
|
40
|
+
|
|
41
|
+
We built **`gsc-cli`** to run our own marketing. **We open-sourced it 100% free under the MIT License** so other builders and businesses can grow organic search traffic faster without the corporate SEO tax.
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## π Key Capabilities at a Glance
|
|
46
|
+
|
|
47
|
+
- π **Real-Time Google Trends Engine**: 5-year and 1-year search trajectory, growth velocity percentage, Unicode sparklines (` ββββ
βββ`), and regional demand breakdowns with zero authentication.
|
|
48
|
+
- π― **Zero-Auth Keyword Planner**: Instant seed expansion via Google Autocomplete with automated search intent classification (`Informational`, `Commercial`, `Transactional`).
|
|
49
|
+
- π° **Keywords Everywhere API Integration**: Fetch exact monthly search volume, CPC, competition index, and 12-month trends for up to 500 keywords in a single call.
|
|
50
|
+
- π **Google Ads Planner Ingestion**: Ingest CSV exports from Google Ads Keyword Planner, calculate composite Opportunity Scores (0β100), and cross-correlate with live GSC rankings.
|
|
51
|
+
- π **Instant Googlebot Re-Indexing**: Ping Google's Indexing API with `URL_UPDATED` or `URL_DELETED` for priority crawl queueing within seconds.
|
|
52
|
+
- π **Live Google URL Inspection**: Direct Search Console API check for indexing verdict, assigned canonical URL, crawl timestamps, and robots.txt state.
|
|
53
|
+
- π **90-Day Zombie Page Detection**: Automatically scan XML sitemaps to find zero-impression deadweight URLs draining your Google crawl budget.
|
|
54
|
+
- π‘οΈ **Cannibalization & Decay Detection**: Spot internal URLs fighting for the same queries, and compare 28-day period-over-period traffic trends.
|
|
55
|
+
- π **Google Analytics 4 (GA4) Behavioral Link**: Stream live active visitors (`gsc realtime --watch`) and correlate SERP rankings with landing page bounce rates.
|
|
56
|
+
- π **Off-Page & On-Page SEO Merger (`gsc page`)**: Combines Detailed SEO Extension DOM inspection (title pixel width & SERP truncation, meta description, H1βH6 tree, missing alt attributes, canonicals, JSON-LD schema, OG/Twitter cards) with real Google Search Console 90-day search queries, clicks, and rankings.
|
|
57
|
+
- π·οΈ **Autonomous Site Audit & Broken Link Repair (`gsc site-audit`)**: Crawls all sitemap URLs, checks HTTP response codes for dead internal links (404/500/timeouts), audits missing image alts and heading defects, and exports an AI-actionable Markdown fix sprint.
|
|
58
|
+
- π€ **AI Agent Native**: Every single command supports `--json` for instantaneous programmatic consumption by AI agents.
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## π¦ Quick Installation
|
|
63
|
+
|
|
64
|
+
### Option 1: One-Line Installer (Recommended for macOS & Linux)
|
|
65
|
+
```bash
|
|
66
|
+
curl -fsSL https://raw.githubusercontent.com/ApollosWave/gsc-cli/main/install.sh | bash
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### Option 2: Clone & Install Standalone
|
|
70
|
+
`gsc-cli` is a standalone pure-Ruby executable with zero gem runtime dependencies:
|
|
71
|
+
```bash
|
|
72
|
+
git clone https://github.com/ApollosWave/gsc-cli.git
|
|
73
|
+
cd gsc-cli
|
|
74
|
+
./install.sh
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### Option 3: RubyGem Installation
|
|
78
|
+
```bash
|
|
79
|
+
gem install gsc-cli
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Ensure `~/.local/bin` is in your shell `PATH`:
|
|
83
|
+
```bash
|
|
84
|
+
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
|
|
85
|
+
source ~/.zshrc
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
Verify your installation:
|
|
89
|
+
```bash
|
|
90
|
+
gsc version
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## β‘ 2-Minute Google Setup
|
|
96
|
+
|
|
97
|
+
### Step 1: Create a Google Cloud Service Account Key
|
|
98
|
+
1. Open [Google Cloud Console](https://console.cloud.google.com/).
|
|
99
|
+
2. In **APIs & Services > Library**, enable:
|
|
100
|
+
- **Web Search Indexing API**
|
|
101
|
+
- **Google Search Console API**
|
|
102
|
+
- *(Optional for GA4)*: **Google Analytics Data API**
|
|
103
|
+
3. In **IAM & Admin > Service Accounts**, click **Create Service Account** (e.g. `gsc-indexer`).
|
|
104
|
+
4. Click your new service account > **Keys** tab > **Add Key** > **Create new key** > **JSON**. Download the file.
|
|
105
|
+
|
|
106
|
+
### Step 2: Run 1-Click Interactive Connect
|
|
107
|
+
In your terminal, simply run:
|
|
108
|
+
```bash
|
|
109
|
+
gsc connect
|
|
110
|
+
```
|
|
111
|
+
`gsc` automatically searches your `~/Downloads` folder for recently created Google Cloud service account keys, lets you confirm with `Y`, and saves it securely to `~/.config/gsc/service-account.json`.
|
|
112
|
+
|
|
113
|
+
### Step 3: Add the Email to Google Search Console
|
|
114
|
+
1. Copy the service account email displayed in the terminal.
|
|
115
|
+
2. Go to [Google Search Console](https://search.google.com/search-console/) > Select your property > **Settings** > **Users and permissions**.
|
|
116
|
+
3. Click **Add User**, paste the email, and set permission to **Owner**.
|
|
117
|
+
|
|
118
|
+
Verify access immediately:
|
|
119
|
+
```bash
|
|
120
|
+
gsc domains
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## π§ In-Depth Guides: Keyword Demand & Search Intelligence
|
|
126
|
+
|
|
127
|
+
### 0. Detailed Off-Page + On-Page SEO Merger (`gsc page` & `gsc site-audit`)
|
|
128
|
+
|
|
129
|
+
#### The Problem
|
|
130
|
+
On-page SEO browser extensions (like Detailed SEO Extension) inspect your DOM (titles, meta, headings, schemas), but they are blind to whether your page actually ranks on Google. Conversely, Google Search Console shows search impressions and positions, but tells you nothing about missing H1s, broken links, or images missing alt tags.
|
|
131
|
+
|
|
132
|
+
#### The Magic
|
|
133
|
+
`gsc page` merges both worlds into a single, cohesive 360Β° audit:
|
|
134
|
+
```bash
|
|
135
|
+
# Audit any URL combining DOM inspection with GSC 90-day search performance
|
|
136
|
+
gsc page https://packinglog.com/
|
|
137
|
+
|
|
138
|
+
# Deep internal link verification: tests HTTP status codes (200, 404, 500)
|
|
139
|
+
gsc page https://packinglog.com/ --check-links
|
|
140
|
+
|
|
141
|
+
# Local template auditing before deploying
|
|
142
|
+
gsc page src/routes/+page.svelte
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
And `gsc site-audit` crawls entire XML sitemaps to generate prioritized AI fix sprints:
|
|
146
|
+
```bash
|
|
147
|
+
gsc site-audit https://packinglog.com/sitemap.xml --report docs/seo/site_audit_issues.md
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
### 1. Keywords Everywhere API Integration (`gsc ke`)
|
|
153
|
+
|
|
154
|
+
#### The Problem
|
|
155
|
+
Knowing *what* people search is only half the battle. You need to know **exact monthly search volume**, **Cost Per Click (CPC)**, and **commercial competition**. Manually logging into keyword tools, copying keyword tables, and checking spreadsheets breaks your flow and blocks autonomous AI agents.
|
|
156
|
+
|
|
157
|
+
#### The Magic
|
|
158
|
+
`gsc-cli` integrates directly with the official Keywords Everywhere API. In a single command, it expands any topic, pulls exact search volumes and CPCs, calculates an **Opportunity Score (0β100)**, and checks whether your domain already ranks for that keyword in Search Console:
|
|
159
|
+
|
|
160
|
+
```bash
|
|
161
|
+
gsc ke "mac cleaner" --limit 25
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
Terminal Output:
|
|
165
|
+
```text
|
|
166
|
+
π KEYWORDS EVERYWHERE SEARCH DEMAND (Seed: mac cleaner)
|
|
167
|
+
Country: US Β· Provider: Google Keyword Planner via Keywords Everywhere API
|
|
168
|
+
Correlated with GSC: superspeedapp.com
|
|
169
|
+
|
|
170
|
+
KEYWORD VOL/MO CPC COMP OPP SCORE INTENT GSC RANK STATUS
|
|
171
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
172
|
+
best mac cleaner 2025 18,100 $4.80 0.42 82/100 Commercial π― Striking Distance (Pos 8.4)
|
|
173
|
+
free mac disk cleaner 12,400 $3.10 0.28 88/100 Transactional π Untargeted
|
|
174
|
+
clean my mac alternative 6,600 $6.50 0.35 81/100 Commercial π₯ Page 1 (Pos 4.2)
|
|
175
|
+
how to clear system storage mac 9,900 $1.20 0.15 89/100 Informational π Untargeted
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
#### How to Connect Keywords Everywhere in 10 Seconds
|
|
179
|
+
1. Get an API key from [Keywords Everywhere](https://keywordseverywhere.com/) (credits start at just $1.25 for 100,000 keywords).
|
|
180
|
+
2. Connect it in `gsc`:
|
|
181
|
+
```bash
|
|
182
|
+
gsc connect ke YOUR_API_KEY
|
|
183
|
+
```
|
|
184
|
+
*Your key is securely saved to `~/.config/gsc/config.json` alongside your Google credentials.*
|
|
185
|
+
3. Check remaining account credits anytime:
|
|
186
|
+
```bash
|
|
187
|
+
gsc ke-credits
|
|
188
|
+
```
|
|
189
|
+
4. Bulk inspect an entire keyword file:
|
|
190
|
+
```bash
|
|
191
|
+
gsc ke keywords.txt --country us --limit 100 --json
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
### 2. Google Trends Real-Time Demand Engine (`gsc trends`)
|
|
197
|
+
|
|
198
|
+
#### The Problem
|
|
199
|
+
Standard search volume metrics are **12-month trailing averages**. When consumer behavior shifts, or a seasonal moving spike occurs, static tools keep showing last year's data while you miss the active breakout.
|
|
200
|
+
|
|
201
|
+
#### The Magic
|
|
202
|
+
`gsc trends` queries Google Trends explore and widget APIs directly in real time with **zero authentication and zero API keys**. It calculates:
|
|
203
|
+
- **Trajectory Velocity**: Compares recent interest vs historical baseline.
|
|
204
|
+
- **Velocity Badges**: `π (Explosive Breakout)`, `π₯ (Strong Surging)`, `π (Growing Demand)`, `βοΈ (Stable Demand)`, `π (Cooling)`.
|
|
205
|
+
- **Unicode Sparklines**: Visualizes interest curves right in your terminal (` ββββ
βββ`).
|
|
206
|
+
- **Geographic Heatmap**: Identifies top states and regions driving demand.
|
|
207
|
+
|
|
208
|
+
```bash
|
|
209
|
+
gsc trends "moving boxes" --geo US --time 12m
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
```bash
|
|
213
|
+
gsc trends "local llm" --geo US --time 5y --json
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
---
|
|
217
|
+
|
|
218
|
+
### 3. Autocomplete Keyword Intent Expander (`gsc planner`)
|
|
219
|
+
|
|
220
|
+
#### The Problem
|
|
221
|
+
You need fresh keyword ideas based on what Google users are actively searching *right now*, without setting up paid APIs or logging into Google Ads.
|
|
222
|
+
|
|
223
|
+
#### The Magic
|
|
224
|
+
`gsc planner` queries Google's autocomplete infrastructure with zero keys, extracts 20β50 qualified search phrases, and uses regex linguistic heuristics to classify **Search Intent**:
|
|
225
|
+
- **Informational**: *"how to pack dishes for moving"*, *"why is mac running slow"*
|
|
226
|
+
- **Commercial**: *"best moving apps"*, *"superspeed vs cleanmymac"*
|
|
227
|
+
- **Transactional**: *"buy wardrobe moving boxes cheap"*, *"hire movers near me"*
|
|
228
|
+
|
|
229
|
+
It then checks your active domain's GSC rankings so you instantly see untargeted opportunities:
|
|
230
|
+
```bash
|
|
231
|
+
gsc planner "moving boxes" --limit 20
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
---
|
|
235
|
+
|
|
236
|
+
### 4. Universal Keyword Ingestion: Google Ads & Keywords Everywhere (`gsc import`)
|
|
237
|
+
|
|
238
|
+
#### The Problem
|
|
239
|
+
Exporting search volume and CPC data from keyword tools usually results in messy spreadsheets that sit forgotten in your downloads folder. Merging those keywords with your live Google Search Console rankings requires complex VLOOKUPs and manual position checking.
|
|
240
|
+
|
|
241
|
+
#### The Magic
|
|
242
|
+
`gsc import` accepts raw exports from **both Google Ads Keyword Planner and Keywords Everywhere** (in `.csv`, `.tsv`, or markdown table format):
|
|
243
|
+
```bash
|
|
244
|
+
# Import Keywords Everywhere export
|
|
245
|
+
gsc import path/to/KW.md --limit 30
|
|
246
|
+
|
|
247
|
+
# Import Google Ads Keyword Planner CSV/TSV
|
|
248
|
+
gsc import path/to/google-ads-keywords.csv --limit 30
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
`gsc` automatically:
|
|
252
|
+
- **Deduplicates** redundant keyword rows across multiple concatenated batches.
|
|
253
|
+
- **Normalizes** search volumes, CPC bids, and competition tiers.
|
|
254
|
+
- **Extracts 12-Month Historical Demand**: Automatically identifies monthly columns and renders a live **Unicode Sparkline** (` ββββ
βββ`) for each keyword in your terminal.
|
|
255
|
+
- **Calculates Opportunity Scores (0β100)**:
|
|
256
|
+
$$\text{Opportunity} = \text{Search Volume (0β50)} + (1 - \text{Competition}) \times 50$$
|
|
257
|
+
- **Cross-References Live GSC Rankings**: Instantly flags whether your active domain is already ranking (`π Top 3`, `π₯ Page 1`, `π― Striking Distance`) or represents an untapped gap (`π Untargeted`).
|
|
258
|
+
- **Auto-Archives to Domain Storage**: Automatically persists the dataset to `~/.config/gsc/domains/<domain>/keywords/` for historical rank tracking.
|
|
259
|
+
|
|
260
|
+
Terminal Output:
|
|
261
|
+
```text
|
|
262
|
+
Opp Score | Volume/mo | CPC | Comp | Tier | Trend% [12m] | GSC Status | Intent | Keyword
|
|
263
|
+
--------------------------------------------------------------------------------------------------------------------------------
|
|
264
|
+
75 | 1,000 | $11.04 | 0.10 | Low | -69% ββ
β
ββ
β | π Untargeted | Navigational | moving from san francisco to new york
|
|
265
|
+
69 | 77 | $0.00 | 0.00 | Low | +0% ββββββ | π Untargeted | Navigational | moving from dallas to orlando
|
|
266
|
+
68 | 390 | $1.99 | 0.17 | Low | +25% ββββββ | π Untargeted | Navigational | storage unit size calculator
|
|
267
|
+
68 | 110 | $1.74 | 0.05 | Low | -65% ββββββ | π Untargeted | Navigational | moving checklist app
|
|
268
|
+
64 | 30 | $2.19 | 0.05 | Low | +83% ββββββ | π Untargeted | Navigational | moving volume calculator
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
---
|
|
272
|
+
|
|
273
|
+
### 5. Domain Keyword Archive & Rank Movement Tracker (`gsc saved`)
|
|
274
|
+
|
|
275
|
+
#### The Problem
|
|
276
|
+
Keyword research is only valuable if you track whether your content efforts actually move the needle over time. Without historical snapshots, you cannot tell if an unranked keyword from two months ago has entered striking distance.
|
|
277
|
+
|
|
278
|
+
#### The Magic
|
|
279
|
+
`gsc-cli` automatically stores all research and imported datasets in isolated domain directories under `~/.config/gsc/domains/<domain>/keywords/`.
|
|
280
|
+
|
|
281
|
+
```text
|
|
282
|
+
~/.config/gsc/
|
|
283
|
+
βββ config.json
|
|
284
|
+
βββ service-account.json
|
|
285
|
+
βββ domains/
|
|
286
|
+
βββ packinglog.com/
|
|
287
|
+
β βββ keywords/
|
|
288
|
+
β βββ 2026-09-10-kw-md.json
|
|
289
|
+
β βββ 2026-09-10-moving-boxes.json
|
|
290
|
+
βββ superspeedapp.com/
|
|
291
|
+
βββ keywords/
|
|
292
|
+
βββ 2026-09-10-mac-cleaner.json
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
#### List Saved Snapshots
|
|
296
|
+
```bash
|
|
297
|
+
gsc saved
|
|
298
|
+
```
|
|
299
|
+
```text
|
|
300
|
+
π SAVED KEYWORD RESEARCH ARCHIVES (packinglog.com)
|
|
301
|
+
Location: ~/.config/gsc/domains/packinglog.com/keywords
|
|
302
|
+
|
|
303
|
+
# | Date | Source | Keywords | Seed / File
|
|
304
|
+
--------------------------------------------------------------------------------
|
|
305
|
+
[1] | 2026-09-10 | Import | 209 | KW.md
|
|
306
|
+
[2] | 2026-09-10 | Google Autocomplete | 50 | moving boxes
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
#### Re-Check Live Search Console Rankings & Track Wins
|
|
310
|
+
Run `gsc saved check <id>` to re-query Search Console API in real-time and measure your rank progress:
|
|
311
|
+
```bash
|
|
312
|
+
gsc saved check 1
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
```text
|
|
316
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
317
|
+
π KEYWORD RANKING & OPPORTUNITY TRACKER (packinglog.com)
|
|
318
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
319
|
+
π Top 3 Rankings: 2 (+2 new)
|
|
320
|
+
π₯ Page 1 Rankings (4β10): 5 (+3 new)
|
|
321
|
+
π― Striking Distance (11β20): 14 (+6 new)
|
|
322
|
+
π Untargeted / Unranked: 188
|
|
323
|
+
π Total Tracked Keywords: 209
|
|
324
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
---
|
|
328
|
+
|
|
329
|
+
## π οΈ Complete CLI Command Reference
|
|
330
|
+
|
|
331
|
+
### 1. Setup, Configuration & Domain Switching
|
|
332
|
+
| Command | Description |
|
|
333
|
+
|---|---|
|
|
334
|
+
| `gsc connect` | 1-Click interactive setup wizard: auto-detects key in Downloads or drag & drop |
|
|
335
|
+
| `gsc connect ke [key]` | Connect Keywords Everywhere API key and save to `~/.config/gsc/config.json` |
|
|
336
|
+
| `gsc connect-ga4` | Interactive Google Analytics 4 linking wizard |
|
|
337
|
+
| `gsc domains` | List all verified Search Console properties and linked GA4 properties |
|
|
338
|
+
| `gsc use <domain or #>` | Switch active default domain (e.g. `gsc use 2` or `gsc use packinglog.com`) |
|
|
339
|
+
| `gsc open` | Open `~/.config/gsc` configuration directory in Finder |
|
|
340
|
+
| `gsc where` | Inspect CLI binary path, active credential file, and config path |
|
|
341
|
+
| `gsc update` | Self-update `gsc` to the latest version directly from GitHub |
|
|
342
|
+
| `gsc version` | Display CLI version and Ruby runtime environment |
|
|
343
|
+
|
|
344
|
+
### 2. Google Trends & Keyword Intelligence
|
|
345
|
+
| Command | Description |
|
|
346
|
+
|---|---|
|
|
347
|
+
| `gsc trends <query>` | Real-time Google Trends 5y/1y demand velocity, sparklines, and geo breakdown |
|
|
348
|
+
| `gsc planner <seed>` | Zero-auth Google Suggest intent expander with live GSC rank correlation |
|
|
349
|
+
| `gsc import <file>` | Ingest Google Ads or Keywords Everywhere export (.csv, .tsv, .md) with 12m sparklines |
|
|
350
|
+
| `gsc planner-import <file>` | Ingest Google Ads / Keywords Everywhere export (alias for `import`) |
|
|
351
|
+
| `gsc ke <seed or file>` | Keywords Everywhere: Exact monthly volume, CPC, competition & GSC correlation |
|
|
352
|
+
| `gsc ke-credits` | Check remaining Keywords Everywhere account API credits |
|
|
353
|
+
| `gsc saved` | List saved keyword research snapshots for the active domain |
|
|
354
|
+
| `gsc saved check [id]` | Re-check saved keyword snapshots against live GSC rankings to track wins |
|
|
355
|
+
| `gsc saved view [id]` | View stored keyword metrics and opportunity scores |
|
|
356
|
+
| `gsc saved delete [id]` | Delete a saved keyword research snapshot |
|
|
357
|
+
|
|
358
|
+
### 3. Search Performance & SEO Growth Intelligence
|
|
359
|
+
| Command | Description |
|
|
360
|
+
|---|---|
|
|
361
|
+
| `gsc top-queries` | Top search queries, impressions, CTR, and average position |
|
|
362
|
+
| `gsc top-pages` | Top indexed landing pages driving organic clicks & impressions |
|
|
363
|
+
| `gsc opportunities` | **Striking-distance queries (Pos 7β20)** to push to Page 1 and Top 3 |
|
|
364
|
+
| `gsc underperformers` | High-ranking queries (Top 10) with below-average CTR (title & meta tag wins) |
|
|
365
|
+
| `gsc cannibalization` | Detect multiple internal URLs competing for the same search queries |
|
|
366
|
+
| `gsc decay [--compare 28]` | Period-over-period decay detection (decaying vs surging queries) |
|
|
367
|
+
| `gsc devices` | Search traffic breakdown by device (Desktop, Mobile, Tablet) |
|
|
368
|
+
| `gsc countries` | Geographic search demand by country with flags and CTR |
|
|
369
|
+
| `gsc snippets` | Search appearance appearances (Reviews, Products, FAQs) |
|
|
370
|
+
| `gsc audit` | Comprehensive 4-step 360Β° SEO & Indexing Health Audit |
|
|
371
|
+
|
|
372
|
+
### 4. Detailed On-Page DOM & Autonomous Site Crawling
|
|
373
|
+
| Command | Description |
|
|
374
|
+
|---|---|
|
|
375
|
+
| `gsc page <url or file>` | 360Β° On-Page DOM audit (Title pixel width, meta, H1-H6, images, schema) + GSC rankings |
|
|
376
|
+
| `gsc page <url> --check-links` | Verify HTTP status codes (detects 404 broken links) across all page links |
|
|
377
|
+
| `gsc site-audit [sitemap]` | Crawl sitemap/site, test dead links, audit DOM flaws, and output summary |
|
|
378
|
+
| `gsc site-audit --report <file>` | Export comprehensive AI-actionable Markdown fix sprint (e.g. `site_issues.md`) |
|
|
379
|
+
|
|
380
|
+
### 4. Live Indexation & Googlebot Control
|
|
381
|
+
| Command | Description |
|
|
382
|
+
|---|---|
|
|
383
|
+
| `gsc inspect <url>` | Live Google Search Console URL inspection (coverage, canonical, crawl date) |
|
|
384
|
+
| `gsc index <url>` | Notify Googlebot to crawl/index a newly published URL immediately (`URL_UPDATED`) |
|
|
385
|
+
| `gsc remove <url>` | Notify Googlebot a URL has been permanently deleted (`URL_DELETED`) |
|
|
386
|
+
| `gsc status <url>` | Check Google Indexing API submission status and latest notification timestamp |
|
|
387
|
+
| `gsc inspect-sitemap <file/url>` | Bulk inspect indexation status for all URLs in an XML sitemap |
|
|
388
|
+
| `gsc index-sitemap <file/url>` | Batch submit all URLs in an XML sitemap to Google Indexing API |
|
|
389
|
+
| `gsc zombies <sitemap>` | Identify zero-impression deadweight URLs wasting crawl budget over 90 days |
|
|
390
|
+
| `gsc sitemaps-list` | List registered XML sitemaps in Search Console |
|
|
391
|
+
| `gsc sitemaps-submit <url>` | Submit or re-submit an XML sitemap to Search Console |
|
|
392
|
+
|
|
393
|
+
### 5. Google Analytics 4 (GA4) On-Site Behavior
|
|
394
|
+
| Command | Description |
|
|
395
|
+
|---|---|
|
|
396
|
+
| `gsc realtime [--watch]` | Stream active visitors, real-time page paths, and countries |
|
|
397
|
+
| `gsc ga4 [--organic]` | Landing page bounce rates, engagement rates, and average session duration |
|
|
398
|
+
| `gsc correlation` | Merge GSC keyword rankings with GA4 bounce rates per landing page |
|
|
399
|
+
| `gsc channels` | Traffic acquisition channels (Organic Search, Direct, Referral, Paid) |
|
|
400
|
+
| `gsc ads` | Google Ads campaign performance (Clicks, Cost, CPC, Conversions) |
|
|
401
|
+
|
|
402
|
+
---
|
|
403
|
+
|
|
404
|
+
## π€ AI Agent Native Integration (Antigravity, Claude, Cursor)
|
|
405
|
+
|
|
406
|
+
`gsc-cli` was built from the ground up for autonomous AI coding agents. Every single command supports the `--json` flag to return clean, deterministic, machine-readable JSON over stdout.
|
|
407
|
+
|
|
408
|
+
### Agent Workflow Examples
|
|
409
|
+
|
|
410
|
+
```bash
|
|
411
|
+
# 1. Ask your agent to inspect striking-distance keywords:
|
|
412
|
+
gsc opportunities --min-imp 20 --json
|
|
413
|
+
|
|
414
|
+
# 2. Ask your agent to audit indexation before shipping a release:
|
|
415
|
+
gsc audit --json
|
|
416
|
+
|
|
417
|
+
# 3. Ask your agent to discover keyword demand with volume and CPC:
|
|
418
|
+
gsc ke "moving boxes" --limit 50 --json
|
|
419
|
+
|
|
420
|
+
# 4. Ask your agent to notify Googlebot the second it publishes a new blog post:
|
|
421
|
+
gsc index https://example.com/blog/new-guide --json
|
|
422
|
+
```
|
|
423
|
+
|
|
424
|
+
Install the official AI Agent Skill:
|
|
425
|
+
```bash
|
|
426
|
+
gsc skills install
|
|
427
|
+
```
|
|
428
|
+
|
|
429
|
+
---
|
|
430
|
+
|
|
431
|
+
## π’ Proudly Backed by AppollosWave LLC
|
|
432
|
+
|
|
433
|
+
`gsc-cli` is free and open-source software under the [MIT License](LICENSE). It is actively developed and maintained by the engineering team at **[AppollosWave LLC](https://apolloswave.com)**.
|
|
434
|
+
|
|
435
|
+
We build tools for high-performance software, e-commerce, and everyday logistics. Check out our commercial products:
|
|
436
|
+
|
|
437
|
+
- β‘ **[Superspeed](https://superspeedapp.com)** β The native, lightning-fast macOS performance & storage cleaner designed for Apple Silicon. Purge multi-gigabyte Xcode caches, app leftovers, and reclaim RAM in one tap.
|
|
438
|
+
- π **[Supercart](https://supercart.app)** β The modern slide cart drawer for Shopify. Boost Average Order Value (AOV) with automated in-cart upsells, free shipping progress bars, and instant 1-click checkout.
|
|
439
|
+
- π¦ **[PackingLog](https://packinglog.com)** β The personal and business moving box inventory management app. Batch-photograph box items with your phone, print scannable QR stickers, and locate any item in seconds.
|
|
440
|
+
|
|
441
|
+
---
|
|
442
|
+
|
|
443
|
+
## ποΈ Architecture & Development
|
|
444
|
+
|
|
445
|
+
`gsc-cli` is engineered following a clean, modular Ruby architecture:
|
|
446
|
+
|
|
447
|
+
```text
|
|
448
|
+
gsc-cli/
|
|
449
|
+
βββ bin/
|
|
450
|
+
β βββ gsc # Lean executable runner (< 15 lines)
|
|
451
|
+
βββ lib/
|
|
452
|
+
β βββ gsc.rb # Central loader & stdlib requirements
|
|
453
|
+
β βββ gsc/
|
|
454
|
+
β βββ version.rb # Semantic versioning (2.0.0)
|
|
455
|
+
β βββ color.rb # Zero-dependency ANSI formatting
|
|
456
|
+
β βββ config.rb # ~/.config/gsc/config.json persistence
|
|
457
|
+
β βββ auth.rb # Pure OpenSSL JWT generator
|
|
458
|
+
β βββ client.rb # Net::HTTP client with JSON serialization
|
|
459
|
+
β βββ api.rb # GSC, Indexing & GA4 API endpoints
|
|
460
|
+
β βββ sitemap_loader.rb # XML crawler & sitemap index parser
|
|
461
|
+
β βββ google_trends.rb # Real-time search demand engine
|
|
462
|
+
β βββ keyword_planner.rb # Autocomplete expander & intent classifier
|
|
463
|
+
β βββ keywords_everywhere.rb # Keywords Everywhere API client
|
|
464
|
+
β βββ command_registry.rb # Command catalog (47 commands) & AI skills
|
|
465
|
+
β βββ cli.rb # Option parser, command router & wizards
|
|
466
|
+
βββ dist/
|
|
467
|
+
β βββ gsc # Standalone bundled binary (curl distribution)
|
|
468
|
+
βββ gsc.gemspec # Standard RubyGem specification
|
|
469
|
+
βββ Rakefile # Tasks for build, test, and install
|
|
470
|
+
βββ install.sh # Universal 1-click shell installer
|
|
471
|
+
```
|
|
472
|
+
|
|
473
|
+
### Development Tasks
|
|
474
|
+
```bash
|
|
475
|
+
# Run syntax verification across all modular files
|
|
476
|
+
rake test
|
|
477
|
+
|
|
478
|
+
# Build the standalone single-file binary into dist/gsc
|
|
479
|
+
rake build:standalone
|
|
480
|
+
|
|
481
|
+
# Install local development build to ~/.local/bin/gsc
|
|
482
|
+
rake install:standalone
|
|
483
|
+
|
|
484
|
+
# Build gem package
|
|
485
|
+
rake gem:build
|
|
486
|
+
```
|
|
487
|
+
|
|
488
|
+
---
|
|
489
|
+
|
|
490
|
+
## π Acknowledgments & Credits
|
|
491
|
+
|
|
492
|
+
- **[Ben Sheldon](https://github.com/bensheldon)**: Inspired by Ben Sheldon's backend Ruby Google Ads API implementation and the Rails performance community's passion for lean, zero-dependency, server-side tools.
|
|
493
|
+
- **[Corey Haines](https://github.com/coreyhaines31)**: The companion SEO & marketing skills (`ai-seo`, `seo-audit`, `schema`, `programmatic-seo`, `copywriting`, `cro`) are adapted from the open-source [marketingskills](https://github.com/coreyhaines31/marketingskills) repository by [Corey Haines](https://github.com/coreyhaines31) (MIT License).
|
|
494
|
+
- **[Basecamp & Kamal](https://github.com/basecamp/kamal)**: Modular CLI directory layout and standalone distribution patterns inspired by Basecamp's open-source tooling.
|
|
495
|
+
|
|
496
|
+
---
|
|
497
|
+
|
|
498
|
+
## π License
|
|
499
|
+
|
|
500
|
+
This project is open-source software licensed under the **MIT License**. See [LICENSE](LICENSE) for details.
|