◆ refract seo

Ships inside the extension and works offline. Privacy policy

Refract SEO: help guide

Refract SEO is a Chrome extension. It audits the page you are on and connects your Search Console and other data. It then tells you what to fix first, why traffic moved, and what is worth doing this week. Two things are true by default: nothing leaves your computer, and an audit makes zero network requests.

This guide covers installing, setting up, configuring and using every part of it. The screenshots come from the real extension, captured during the automated end-to-end test run. The test data is a small sample site with simulated Google data, so the numbers you see will be your own.

Contents

  1. Install
  2. First run: audit a page
  3. Connect Search Console and track a site
  4. The side panel
  5. The Workspace
  6. Settings and configuration
  7. AI models: bring your own key, local models, gateways
  8. Agency setup
  9. Everyday workflows
  10. Privacy, local-only mode and admin policy
  11. Troubleshooting
  12. What this build cannot do yet

1. Install

From the Chrome Web Store (once published): press Add to Chrome.

Requirements:

Opening Refract. The side panel belongs to the tab you open it on. Switching tabs never carries one page's panel to another. To open it:

2. First run: audit a page

On install, Refract opens a small sample page that has deliberate problems, so you can see a real result before granting anything. Open the panel on it, or on any page, and press Audit this page.

What's new in Refract v4, then "Audit this page"

The audit reads the page already loaded in your tab. It makes no network requests: you can open DevTools → Network and check. The result opens on Fixes:

Top fixes before Search Console is connected

What you see:

Crawler checks (what GPTBot or Googlebot receives, per-bot robots.txt) need access to the site. The panel asks the first time, and you can decline without losing anything else.

3. Connect Search Console and track a site

Search Console turns "this is wrong" into "this costs you N clicks a month".

  1. In the panel, open In Google → Connect Search Console.
  2. Read the consent sheet. It lists exactly what leaves your computer, where it goes and when. Press Connect, then choose your Google account in Chrome's window.

    Connect Search Console: what leaves this machine

  1. In Google now shows this page's clicks, impressions, CTR, average position, top queries and index state:

    This page in Google

  1. Press Track this site in the panel's header. This creates a project for the site, maps its Search Console property, and starts the background jobs: Fixes are now ranked by real traffic:
    • a daily sync of up to 16 months of history;
    • drop detection;
    • index watch;
    • Core Web Vitals checks.

    Top fixes ranked by Search Console traffic

This build: Search Console needs a verified Google OAuth client ID. A build without one shows "Not available in this build". See §12.

4. The side panel

The panel works on the page in front of you. Its tabs:

TabWhat it is for
FixesTop fixes with impact, confidence and effort; Fix it opens the guided fix
FindingsEvery rule result, by severity or by impact. Each has a copy-ready snippet where a safe fix exists, and Why? links to the source
In GoogleThis page's Search Console numbers, top queries and index state (after connecting)
BotsWhat each crawler receives, raw HTML vs rendered: Googlebot, GPTBot, ClaudeBot, Perplexity and others
CompareThis audit against a saved baseline
MoreSite checks, crawl summary, N-grams, AI citations capture, Ask about this page

Guided fix. Fix it walks you through five steps, plus a sixth when a CMS is connected:

  1. Understand
  2. Preview on the page
  3. Copy code
  4. Verify: re-audits and confirms the fix
  5. Hand off to a ticket
  6. Apply via CMS
Guided fix: copy the code

Findings. Toggles highlight issues on the page itself: heading levels, missing alt text, nofollow links and uncrawlable links.

Findings, by severity

Local business markup. When a page's LocalBusiness markup disagrees with what the page shows, it is flagged:

LocalBusiness phone does not match the page

N-grams. Under More → N-grams: the 1-, 2- and 3-word phrases in the page's main text, shown as "9 of 103 words". Phrases also used in the title or H1 are highlighted. Copy CSV exports the list. This also makes no network requests.

N-grams of the main text

SERP Lens. Open the panel on a Google results page and press Read this results page. Refract reads the results already in your tab, makes no requests of its own, and saves them to a project. Briefs, content gap, quality checks, outreach mentions and intent labels all start from these captures.

SERP Lens on a Google results page

5. The Workspace

Open Workspace in the panel opens a full tab:

Screens that need data you have not connected say so and tell you how to get it. Unknown values are shown as unknown, never as zero.

Today

Your daily list, in this order:

Create tasks for N quick wins pushes them to Jira, Linear or GitHub once one is connected.

Today

Ask Refract

Ask a question in plain words. Common questions are routed to fixed, tested queries over your data, for example "Why did traffic drop?" or "Find keywords we rank 4–15 for". When you switch on a remote or local model (§7), Ask anything answers free-form. Every number in an AI answer is checked against your data, and the price is shown first.

Ask Refract

Overview, Performance and Seasonality

Overview
Seasonality

Investigations

Fixed playbooks: traffic drop, ranking drop, low CTR, cannibalisation, content decay, and "Why isn't this page ranking?". Each lists candidate causes ranked by evidence (never asserted as certain), what to do, and every step it ran or could not run. Drops are investigated automatically. Write a plain-language summary drafts a readable summary, using a remote or on-device model.

Investigations

Opportunities

From Search Console, the last 28 days, with an estimated impact for each row:

Each row has one-click actions: Rewrite title (on-device) and Create task.

Opportunities

Index watch, Core Web Vitals, Rankings

Index watch
Core Web Vitals with CrUX History
Rankings: daily positions (paid)

Site audit

Crawl your site, up to 25,000 pages. The crawl obeys robots.txt and Retry-After, runs at 1 request a second (up to 5 when Search Console confirms you own the site), and survives a browser restart. Results show:

Tabs:

Site audit
Rendered sample
E-commerce checks
Internal link flow
Local SEO

Logs

Drop an access log (Apache/nginx combined or common, IIS W3C, or JSON lines; plain or .gz, any size). It is parsed on your computer and only counts are kept. You get hits by bot, status mix, templates, top URLs, and crawl vs Search Console clicks. Press Fetch crawler IP lists to verify Googlebot and Bingbot against their published IP ranges. Until then, bot hits show as "not checked", and a fake Googlebot never counts as Google.

Logs

GA4 and UX signals (Clarity)

GA4 landing pages
UX signals from Microsoft Clarity

Monitor and jobs, Reports, Apply via CMS

Monitor and jobs
Reports
Apply via CMS

Content: Keywords, Briefs, Migration, Competitors, AI citations

Keywords
Keyword clusters
Briefs
Migration
Competitors
AI citations (GEO)
Links
Backlink gap
Broken links
Disavow
Outreach pipeline
Find unlinked mentions

All projects: Projects, Priorities, Fix ledger

Projects in client folders
Project settings
Priorities across clients
Fix ledger

6. Settings and configuration

Open Settings from the panel's gear or the Workspace's Settings button. Every connector is off until you connect it, and each card lists exactly what leaves your computer, where it goes and when.

Connectors

CardWhat it unlocksWhat you needWhere it is set
Google Search ConsoleClicks, queries, impact ranking, index state, all GSC screensA Google account with access to the propertyConnect in the card, or In Google in the panel
Google Analytics 4Landing-page sessions, key events and revenueGA4 access on the same Google accountConnect GA4, then choose the property
PageSpeed InsightsField and lab Core Web VitalsNothing; an optional Cloud API key raises the shared quotaKey field
Slack / Microsoft TeamsAlerts, a daily Today digest, a weekly summaryAn incoming-webhook URLPaste the URL → Save → Send a test
Google Sheets and DocsExport any table to Sheets; briefs to Google DocsNothing; Refract only sees the files it createsConnects on first export
Google Search Status / SEO news feedsGoogle incident news on Today; your own RSS/Atom feedsNothing / feed URLsPaste feed URLs
DataForSEOVolume, difficulty, intent, daily positions, SERP features, backlinksA DataForSEO login, or Refract CreditsLogin + API password → Save and test; monthly stop limit
Bing Webmaster ToolsBing queries and pages; free inbound linksBing API keyKey → Save key → Test
Jira / Linear / GitHubPush fixes as tickets; the link is stored in the fix ledgerAPI token + project/team/repoToken fields → Test
CMS write-backApply titles, meta descriptions and alt textWordPress application password, Shopify Admin token, or Webflow tokenPer project: CMS, site, credentials → Save
AI answer engines (GEO)Scheduled AI citation trackingPerplexity / OpenAI / Gemini keys (Anthropic comes from §7)Key per engine
Chrome UX Report History25-period field trend and regression alertsGoogle Cloud API keyKey field
Microsoft ClarityUX signals per pageClarity → Settings → Data Export → API tokenPer project token
Connectors: Search Console connected
DataForSEO
CMS write-back
Microsoft Clarity

When you save a key, Chrome may ask for permission to reach that service's address. Refract asks only for the exact address, at the moment you press the button.

Projects

Settings → Projects maps each project to its Search Console property and sets brand terms, which are used to split brand from non-brand queries. The rest of a project's settings live in the Workspace: Projects → Settings on a project card. That covers segments (regex page groups), market (country and language), key pages, crawl cap and rate, and client folder.

Settings: projects

Spend and budget

Every paid service (Anthropic, Credits, DataForSEO, Perplexity, OpenAI, Gemini, OpenRouter and any other model provider you add) shows this month's estimated spend and takes a monthly stop. When the next call could pass the stop, Refract refuses to make it. It cannot cap your provider's own billing, so set limits there too.

Spend and budget

Background jobs, notifications, privacy

Background jobs
Privacy and data

7. AI models: bring your own key, local models, gateways

Refract never needs AI to work: audits, investigations, opportunities, briefs and reports are all deterministic. AI only words things: summaries, email drafts, section drafts, free-form answers. For those, you choose the model, task by task.

Where models can come from

ProviderExamplesLeaves your computer?Cost
Chrome built-in modelGemini Nano in ChromeNoFree
Local model serverOllama, LM Studio, llama.cpp, vLLM on localhostNoFree
Anthropic / OpenAI / Google GeminiClaude, GPT, Gemini with your own keyYesYour provider's price
OpenRouter300+ models behind one keyYesOpenRouter's listed price
PortkeyYour Portkey gateway (provider slug or saved config)YesYour provider's price
Any OpenAI-compatible endpointAzure OpenAI, Groq, Together… (https only)YesYou enter the price
Refract CreditsNo key neededYesYour Credits balance

Set up a provider

  1. Go to Settings → Model providers → Add a provider. Pick the kind, give it a label, and enter the base URL (for local, Portkey and custom) and the key. Keys stay on this computer and are never exported, logged or shown again.

    Add a provider

  1. Press Test connection. Refract lists the provider's models with prices (from the provider, Refract's checked price list, or a price you enter), context size, JSON support and a quality class you can change. A paid model with no price cannot be used until you enter one.

    Model providers

    A provider's models and prices

  1. Tick Use for AI tasks on the providers Auto may pick from. Reorder them with the arrows; ties go to the higher one.

Local models. Start your server first:

A "local" address must be localhost, 127.0.0.1 or [::1]; anything else is refused. If the server answers with an error mentioning origin or CORS, allow Chrome extensions to call it: for Ollama, start it with OLLAMA_ORIGINS="chrome-extension://*"; for LM Studio, enable CORS in its server settings.

Choose which model runs each task

In Which model runs each task, set each task to Auto or to a specific model, with an optional fallback.

Which model runs each task

Number check. Every number in an AI answer must appear in the data Refract gave the model. An answer that invents a number is discarded, whichever model wrote it.

Spend. Each provider has a monthly stop in Spend and budget. OpenRouter's reported cost is used when available; otherwise Refract records its estimate.

8. Agency setup: many clients on one computer

  1. Projects: Track this site on each client site.
  2. Client folders: in Workspace → Projects, type a folder name on each project card. Projects groups by folder; Priorities filters by it.
  3. More Google accounts:
    • Add each client's Google account in Settings → Google accounts → Add Google account.
    • Bind each project to its account under Project accounts. Each project's jobs then use its own account.
    • An account that needs signing in again shows Re-authorise, and its jobs pause rather than fail.
    • Connect Analytics adds GA4 access for that account.

    Google accounts

  1. White-label reports: in Reports → Template, pick and order the sections, add your agency name, logo (PNG/JPEG/GIF/WebP, up to 200 KB) and accent colour, and set a weekly (Wednesday) or monthly (the 3rd) schedule. Scheduled reports arrive on Today as "ready to review".
  2. Tickets: connect Jira, Linear or GitHub once; Create task and Create tasks for N quick wins work everywhere.
  3. Moving or sharing a project: Export project writes one file, with history optional. Import project file brings it in as a copy or replaces an existing one. Secrets, machine-wide settings and paid schedules never travel in the file.

9. Everyday workflows

"Traffic dropped. Why?"

  1. Open Today. A finished drop investigation is pinned at the top.
  2. Open investigation to see the candidate causes ranked by evidence, the steps it ran, and what to do.
  3. Or ask: Ask Refract → "Why did traffic drop?"

"What should I do this week?"

  1. Today → Top recommendations, sorted by impact × confidence ÷ effort.
  2. Create tasks for N quick wins.
  3. Fix → Verify. The fix ledger records it, and measures the traffic change once enough days have passed.

"Write content that can rank."

  1. Search the query on Google, then panel → SERP Lens → Read this results page.
  2. Workspace → Briefs → Build brief, then Content gap and Quality check against your page.
  3. Optionally draft sections with AI, priced first.
  4. Export Markdown or Export to Google Docs.

"We're migrating the site."

  1. Migration: paste the old and new URL lists, or use crawls.
  2. Approve the mappings, then Validate the redirects against the live site.
  3. Export the redirect file.
  4. Launch to start the 90-day watch.

"Monthly client report."

  1. Reports → Generate report.
  2. Draft with AI or write the summary yourself, then Approve summary.
  3. Print / Save as PDF or Download HTML.

"Fix a title through WordPress."

  1. Connect WordPress in Settings → CMS write-back.
  2. Apply via CMS (or the panel's Fix it → Apply via CMS): enter the new text and preview the change.
  3. Approve. It is written, then Verify re-reads the live page.

"Find link opportunities."

  1. Import competitors' backlink CSVs (tagged with each competitor) in Links.
  2. Backlink gap and Broken links list the opportunities. Add to outreach on any row.
  3. Outreach: draft, send it yourself, mark it sent. Refract confirms the win once the page links to you.

10. Privacy, local-only mode and admin policy

The full list of every request, its destination and its retention is in PRIVACY.md.

11. Troubleshooting

What you seeWhyWhat to do
"Not available in this build" on Search Console or Google accountsThe build has no verified Google OAuth clientUse a build with a verified client ID (§12)
"Local-only mode is on"Connectors are switched off, by you or by policySettings → Privacy and data, or ask your admin
The Chrome built-in model shows "unavailable"Not enough disk space, or the model is not downloadedFree about 22 GB, or use a local or remote model (§7)
A local model returns 403 or a CORS errorThe server rejects requests from the extension's originOllama: OLLAMA_ORIGINS="chrome-extension://*"; LM Studio: enable CORS
"Cannot be used until you enter a price"A paid model has no known priceEnter its price in the provider's model list
"This call could take spend past your monthly stop"The monthly stop would be passedRaise the stop in Spend and budget, or pick a cheaper model
Crawler checks or a feature say "no access to this site"Chrome has not granted Refract access to that sitePress the button again and accept Chrome's prompt
Jobs show "late"Chrome was closed when they were dueNothing; they catch up when Chrome is open
Investigation steps say "not evaluated"The data that step needs does not exist yetFollow the step's hint, e.g. capture the query with SERP Lens
Weekly report missing a weekendSearch Console data trails by about 2 daysWeekly reports run on Wednesday for that reason

12. What this build cannot do yet

These need accounts or approvals, not code: