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:

ParamDescription
start_dateISO date, default 28 days ago
end_dateISO date, default today
dimensionsComma-separated: query, page, country, device
row_limitMax 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

ToolPurpose
pressroom_gsc_statusCheck GSC connection status
pressroom_gsc_propertiesList available GSC properties
pressroom_gsc_analyticsQuery search performance data
pressroom_gsc_inspectInspect a URL’s index status
pressroom_gsc_sitemapsList submitted sitemaps
pressroom_gsc_summaryGet high-level search summary
pressroom_gsc_blog_performanceBlog-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")