Google Search Console integration
Connect Google Search Console (GSC) to Pressroom for search analytics, URL inspection, and blog performance tracking.
Google Search Console integration
Connect Google Search Console (GSC) to Pressroom for search analytics, URL inspection, and blog performance tracking.
Why GSC matters
Google Search Console provides ground-truth data about how your content performs in Google Search:
- Clicks and impressions — How often your pages appear and get clicked
- Average position — Where you rank for specific queries
- CTR — Click-through rate from search results
- Index coverage — Which pages Google has indexed and any crawl issues
Combined with Pressroom’s content pipeline, GSC data closes the loop between content generation and search performance.
Connecting GSC
1. Create a Google service account
In the Google Cloud Console, create a service account with Search Console API access. Download the JSON credentials file.
2. Upload credentials
POST /api/gsc/service-account
{"credentials": {...}}
Upload the service account JSON credentials. Pressroom stores them securely and uses them for all GSC API calls.
3. Verify connection
GET /api/gsc/status
Returns whether GSC is connected and lists accessible properties.
Selecting a property
GSC organizes data by “property” — either a domain (e.g., sc-domain:example.com) or a URL prefix (e.g., https://example.com/).
List available properties
GET /api/gsc/properties
Set the active property
PUT /api/gsc/property
{"property_url": "sc-domain:example.com"}
The active property is used for all subsequent analytics queries.
Search analytics
Query search performance
GET /api/gsc/analytics?start_date=2025-01-01&end_date=2025-01-31&dimensions=query,page&row_limit=100
Parameters:
| Param | Description |
|---|---|
start_date | ISO date, default 28 days ago |
end_date | ISO date, default today |
dimensions | Comma-separated: query, page, country, device |
row_limit | Max rows returned, default 100 |
Returns rows with clicks, impressions, CTR, and average position for each dimension combination.
Summary
GET /api/gsc/summary
Returns a high-level overview: total clicks, total impressions, average CTR, and average position for the active property.
URL inspection
Check the index status of a specific URL:
POST /api/gsc/inspect
{"url": "https://example.com/blog/my-post"}
Returns:
- Index status — Whether the URL is indexed
- Crawl info — Last crawl date, crawl status
- Mobile usability — Mobile-friendly assessment
- Rich results — Structured data detection
Use URL inspection to verify that newly published content is being indexed.
Sitemaps
GET /api/gsc/sitemaps
Returns submitted sitemaps and their processing status (success, pending, errors).
Blog performance with GSC
The blog performance endpoint combines GSC search data with Pressroom’s blog content library:
GET /api/gsc/blog-performance?blog_url=https://blog.example.com&days=28
Returns:
- Per-post search performance (clicks, impressions, CTR, position)
- Top queries driving traffic to each blog post
- Posts with declining performance (candidates for refresh)
- Posts with high impressions but low CTR (candidates for title/meta optimization)
This is particularly useful for identifying which blog posts need SEO attention and which topics are performing well in search.
MCP tools
| Tool | Purpose |
|---|---|
pressroom_gsc_status | Check GSC connection status |
pressroom_gsc_properties | List available GSC properties |
pressroom_gsc_analytics | Query search performance data |
pressroom_gsc_inspect | Inspect a URL’s index status |
pressroom_gsc_sitemaps | List submitted sitemaps |
pressroom_gsc_summary | Get high-level search summary |
pressroom_gsc_blog_performance | Blog-specific search analytics |
Workflow example
1. Connect GSC:
POST /api/gsc/service-account with credentials
2. Select your property:
PUT /api/gsc/property {"property_url": "sc-domain:example.com"}
3. Check blog performance:
pressroom_gsc_blog_performance(org_id=1, blog_url="https://blog.example.com", days=28)
4. Identify underperforming posts and regenerate content:
pressroom_generate(org_id=1, channels=["blog"])
5. After publishing, verify indexing:
pressroom_gsc_inspect(url="https://blog.example.com/new-post")