Analytics & GSC
Close the feedback loop: use real traffic data to optimize your pSEO content engine.
Overview
Contento pSEO is not a "generate and forget" tool. The analytics system creates a feedback loop between your generated content and real search performance data from Google Search Console (GSC). This loop lets you identify which niches and subtopics are driving traffic, which pages are underperforming, and where to focus your next generation batch.
Connecting Google Search Console
Connect your GSC property directly from the CLI — the CLI runs the OAuth flow in your default browser, then stores the refresh token locally next to your AI provider config.
$ contento analytics connect proj_8f3a... Opening browser for Google OAuth... ? Select Search Console property: https://example.com/ ✓ GSC connected. Token saved to ~/.contento/gsc.json Run "contento analytics sync proj_8f3a..." to pull the last 28 days.
OAuth uses Google's standard read-only Search Console scope. Contento never sees your token — everything stays on your machine.
Pulling Data
Run contento analytics sync to pull the latest GSC data into a local SQLite cache. Schedule it via cron (or your CI) for a daily refresh:
- Clicks — Number of times users clicked through to your page from search results
- Impressions — Number of times your page appeared in search results
- CTR — Click-through rate (clicks / impressions)
- Position — Average ranking position in search results
- Indexed status — Whether the page is in Google's index
- Queries — Top search queries driving traffic to each page
Data is pulled for the last 28 days (GSC's default reporting window) and stored locally in ~/.contento/analytics.db — a plain SQLite file you can query directly if you want.
Summary Metrics
View the analytics summary from the CLI:
$ contento analytics summary proj_8f3a... Project: DevTools Resources Period: Last 28 days ────────────────────────────────────── Total Clicks 12,450 Total Impressions 285,000 Average CTR 4.37% Average Position 16.3 Indexed Pages 980 / 1,024 (96%)
| Metric | Description |
|---|---|
| Total Clicks | Sum of all clicks across all pages in the project |
| Total Impressions | Sum of all impressions across all pages |
| Average CTR | Weighted average click-through rate |
| Average Position | Weighted average ranking position |
| Indexed Pages | Number of pages confirmed in Google's index |
| Pending Indexing | Pages published but not yet indexed |
Top Pages Leaderboard
The leaderboard ranks all pages in a project by performance:
$ contento analytics top-pages proj_8f3a... --limit 5 # Title Clicks Impr CTR Pos 1 100 Remote Work Ideas 2,340 55,714 4.2% 14.2 2 50 CI/CD Pipeline Tips 1,890 42,100 4.5% 12.8 3 Best API Testing Tools 2026 1,650 38,900 4.2% 15.1 4 DevOps Automation Checklist 1,420 31,200 4.6% 11.9 5 Freelance Developer Tools Guide 1,100 28,500 3.9% 18.4
You can sort by clicks, impressions, CTR, or position. Use --json for machine-readable output.
Niche Performance Ranking
Contento aggregates page-level data up to the niche level, letting you compare how different niches perform:
| Niche | Pages | Total Clicks | Avg. Position | Indexed % |
|---|---|---|---|---|
| Developer Tools | 120 | 4,280 | 14.2 | 98% |
| DevOps | 80 | 2,150 | 18.7 | 95% |
| Freelancing | 60 | 890 | 24.1 | 88% |
Use niche rankings to decide where to invest your next generation batch. Expand high-performing niches with additional subtopics and schemas.
Zero-Traffic Page Detection
Pages that receive zero clicks for 60 consecutive days after publishing are flagged as underperformers:
$ contento analytics zero-traffic proj_8f3a... 12 pages with zero traffic (60+ days) ────────────────────────────────────── page_4f2a /niche-marketing-tips-2026 Published 2026-01-05 page_7b1c /obscure-devops-patterns Published 2026-01-08 ...
Options for zero-traffic pages:
- Regenerate — Re-run AI generation with an updated prompt to produce better content
- Merge — Combine the subtopic into a related, better-performing page
- Remove — Delete the page and its URL to reduce crawl budget waste
- Ignore — Mark as reviewed if the page targets a long-tail query that needs more time
CSV Export
Export analytics data as CSV for use in spreadsheets or BI tools:
$ contento analytics export proj_8f3a... --format csv > analytics.csv ✓ Exported 1,024 pages to analytics.csv
Export levels:
- Page-level export — All pages with clicks, impressions, CTR, position, and indexed status
- Niche-level export — Aggregated niche performance data
- Query-level export — Top queries per page with click and impression counts
CLI Commands
| Command | Description |
|---|---|
contento analytics summary | Project-level summary (clicks, impressions, CTR, position) |
contento analytics top-pages | Top pages ranked by performance |
contento analytics zero-traffic | Pages with zero clicks in 60+ days |
contento analytics export | CSV export of analytics data |
Optimizing Based on Data
The analytics feedback loop enables a continuous optimization cycle:
- Identify winners — Find niches and schemas with the highest clicks and best CTR.
- Expand winners — Add new subtopics to performing niches. Run additional schemas (e.g., add "FAQ" pages for a niche that performs well with "Best-Of" pages).
- Diagnose underperformers — Check if low-performing pages are indexed. If indexed but low CTR, the title may need adjustment. If not indexed, the content may be too thin.
- Regenerate underperformers — Use the "Regenerate" action on zero-traffic pages to produce improved content with a new AI prompt.
- Prune dead weight — Remove pages that consistently get zero traffic after regeneration to improve overall domain quality.
- Repeat — Run this cycle weekly or monthly to continuously improve your pSEO performance.