What is the GSC Integration?
The Google Search Console integration connects your real search performance data directly into Publish Owl. It works in two ways: as a research tool on the Research page and as a workflow step that feeds live search data into your content generation pipeline.
Unlike third-party keyword tools, GSC data comes from Google itself — actual clicks, impressions, CTR, and ranking positions for your site. This means your AI-generated content can be informed by exactly what queries your site is already appearing for.
- Content updates: Find declining queries and refresh articles to recover traffic
- Quick wins: Identify keywords ranking on pages 2–3 with high impressions
- Cannibalization: Detect queries where multiple pages on your site compete against each other
- Data-driven writing: Give your LLM steps real search data so articles target queries people actually search
- CTR optimization: Find top-ranking queries where your CTR is below the expected average
Setup
Connecting Google Search Console requires a one-time OAuth setup:
Go to Google Cloud Console → Search Console API and click Enable. Use the same Google Cloud project that has your existing Publish Owl OAuth credentials.
In APIs & Services → Credentials,
edit your OAuth 2.0 Client ID. Under Authorized redirect URIs, add your Convex
deployment's GSC callback URL (it follows
the pattern https://your-deployment.convex.site/api/google/gsc-callback).
Go to Settings → API Keys and scroll to the Integrations section. Click Connect Google Search Console, select your Google account, and authorize access.
Research Report
Once connected, a Search Console tab appears on the Research page. Click Fetch Report to pull your search performance data. The report includes an overview dashboard, opportunity analysis tabs, and a full sortable/filterable data table.
Overview Dashboard
Four stat cards at the top show your totals for the selected period, each with a percentage change compared to the previous period of equal length:
- Clicks — total clicks from search results
- Impressions — how many times your pages appeared in search
- Avg CTR — overall click-through rate
- Avg Position — average ranking position across all queries
Analysis Tabs
Below the overview, a tab bar lets you view the same data through different lenses. Each tab pre-filters the table to a specific category. The count badge on each tab shows how many queries match.
Every query, sorted by impressions by default. This is the full dataset.
Queries ranking 4–10. These are close to top 3 positions — small improvements here yield the biggest traffic gains. Sorted by traffic potential.
Queries ranking 1–3 where your click-through rate is significantly below the expected average for that position. Usually fixable by improving title tags and meta descriptions without needing to change the content itself.
Queries ranking 11–20 with 50+ impressions. These need more content depth, internal links, or backlinks to break onto page 1.
Queries with 200+ impressions but fewer than 5 clicks. Google shows your site for these searches but users aren't clicking — possible intent mismatch or poor SERP snippet.
Queries where clicks dropped 30%+ or position worsened by 3+ spots compared to the previous period. These indicate content that may need refreshing.
Queries where 2 or more pages on your site rank in search results. These pages compete against each other, splitting clicks and confusing Google about which page to rank. The table groups competing pages together so you can see exactly which URLs overlap. The fix is usually to consolidate content into one definitive page or to differentiate each page's focus so they target distinct intents.
Computed Columns
Beyond the standard GSC metrics (clicks, impressions, CTR, position), the report adds computed columns to help you prioritize:
- Page — the URL ranking for each query (shown as pathname)
- Expected CTR — the average CTR for your ranking position based on industry studies. When your actual CTR is significantly below this, the cell highlights in red.
- Traffic Potential — estimated additional clicks if the query ranked #1, calculated as (impressions × 28%) minus current clicks. High values highlight in green.
- Trend — click change vs. the previous period, shown as an up/down arrow with the number of clicks gained or lost.
Filters & Tools
- Filters — filter by query text, page URL, clicks range, impressions range, and position range
- Unique pages only — deduplicates to show only the top query per page (by impressions), giving a page-level view
- Sortable columns — click any column header to sort ascending/descending
- Pagination — 100 rows per page with First/Prev/Next/Last navigation
- Export CSV — download results with all metrics, named after the selected property and tab
- Copy Queries — copy selected query strings to clipboard
- Rewrite Page — select a single query and click Rewrite Page to create a rewrite workflow pre-filled with the ranking URL
Workflow Step
Add a Google Search Console step to your workflow pipeline to feed real search data into subsequent LLM steps. The GSC step fetches data from the API, formats it as structured Markdown with opportunity analysis and traffic potential estimates, and passes it as context to the next step.
The step queries the Search Console API for your selected property. The job's keyword is automatically used as a query filter, so each article gets relevant search data.
Results are formatted as structured Markdown including a performance summary, opportunity sections (quick wins, CTR optimization, page 2 queries, content gaps), and a data table with expected CTR and traffic potential for each query.
The next LLM step receives the GSC data alongside previous step outputs. You can instruct it to incorporate the search data into the article — targeting specific queries, addressing search intent, or optimizing for opportunities.
Configuration Options
| Setting | Description | Default |
|---|---|---|
siteUrl | GSC property URL to pull data from | Required |
dateRange | Time period: 7d, 28d, 90d, or 180d | 28d |
analysisType | Full Data + Opportunities: complete data table plus opportunity sections. Opportunities Only: just the categorized opportunities. | Full Data |
sortBy | How to sort the LLM output: impressions, clicks, CTR, or position | Impressions |
rowLimit | Maximum query rows in the LLM output | 100 |
filters | Optional: query contains, page URL contains, device type, country, min impressions | None (keyword auto-filter only) |
Example: Data-Driven Content Update Workflow
A practical 2-step workflow that uses GSC data to write better content:
Caching
GSC API responses are cached for 24 hours to avoid redundant API calls. Since GSC data is inherently 2–3 days stale, caching doesn't reduce freshness. If you run the same query parameters within 24 hours (same site, date range, and filters), the cached result is returned instantly.
External API
You can add a GSC workflow step via the External API by including gscConfig in
a workflow agent object:
{
"provider": "gsc",
"model": "",
"prompt": "",
"enabled": true,
"gscConfig": {
"siteUrl": "https://yoursite.com/",
"dateRange": "28d",
"sortBy": "impressions",
"rowLimit": 100,
"analysisType": "raw",
"filters": {
"queryContains": "best",
"device": "MOBILE",
"minImpressions": 50
}
}
}