Integrations
Bring in data from Google, AI providers and backlink tools, and crawl pages behind a login. All optional: set each up once in Settings, then switch it on per crawl.
Google account
One Google connection covers Google Analytics 4, Search Console and Google Sheets. Connect the Google account that can see your GA4 property and Search Console property.
- Open
Settingsand choose Connect Google. - Sign in to Google and approve the access listed below. You can untick any of it; features that need it will say so.
- You return to Settings, which shows the connected email and the access Google granted.
What Siteoseo asks for
- Sign-in identity
- Email address
- Google Analytics (read only)
- Search Console (read only)
- Google Sheets
- Drive: only files Siteoseo creates
Analytics and Search Console access is read only. Drive access is limited to files Siteoseo creates, such as Looker Studio exports; it cannot see your other files.
Google Analytics 4
Switch on integrations.googleAnalytics.enabled and enter the numeric integrations.googleAnalytics.propertyId (GA4 Admin → Property details). Sessions, users, views, engagement rate and key events for the last integrations.googleAnalytics.days days are joined to each crawled URL. Included in the crawl rate.
Search Console
Switch on integrations.searchConsole.enabled and set integrations.searchConsole.siteUrl exactly as Search Console shows it: sc-domain:example.com for a domain property or https://www.example.com/ for a URL prefix. Clicks, impressions, CTR and average position per URL are included in the crawl rate.
integrations.searchConsole.urlInspection also asks Google for each URL's index status and chosen canonical, at $0.25 per 1,000 URLs inspected, up to integrations.searchConsole.maxInspections per crawl. Google limits inspections per property per day, so large sites are best inspected in batches.
Disconnecting
Disconnect in Settings revokes Siteoseo's access at Google and deletes the stored token. You can also remove access from your Google Account under Security → Third-party apps; crawls that need Google then skip those steps.
Running your own instance
Self-hosted deployments need their own OAuth client. In Google Cloud Console, create an OAuth client of type Web application and enable the Google Analytics Data API, Google Analytics Admin API, Search Console API, Google Sheets API and Google Drive API. Register the redirect URI ${APP_URL}/api/oauth/google/callback on the client, then paste its ID and secret in Admin › Settings (or set GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET on the server, which take precedence). APP_URL must be set either way.
Google Sheets and Looker Studio
From any completed crawl, Export to Google Sheets for Looker Studio creates a spreadsheet in your Drive with these tabs, each a flat table that Looker Studio reads directly:
- Overview: one row per issue category and severity with the number of issues, plus the crawl's start URL, dates and URL counts on every row.
- Issues: every issue found, with URL, code, label, severity and category.
- URLs: status, indexability, titles, headings, word count, response time, links and segment for every crawled URL (first 100,000 rows).
- One tab per add-on with results in the crawl (Google Analytics, Search Console, extraction, Lighthouse and so on): one row per URL, the same columns as its CSV (first 25,000 rows).
The spreadsheet is remembered for the site. Exporting a later crawl of the same site offers Update the sheet with this crawl, which rewrites those tabs in place, so a Looker Studio report built on it shows the new data without being rebuilt.
After an export, Open in Looker Studio makes a report on the sheet: a ready-made one with overview, issue and URL pages, or, where none is set up, Looker Studio's starter report on the Overview tab. Click Edit and share in Looker Studio to save it to your account. To build one by hand instead:
- Open Looker Studio and choose Create → Report.
- Pick the Google Sheets connector, select the exported spreadsheet and its Overview tab, and click Add.
- Add the other tabs as further data sources (Resource → Add a data source) and build charts.
Exports have no charge. Choose Export to a new sheet instead to keep an earlier export as it was.
API keys
Some add-ons call another company's API with your own key. Save keys in Settings → API keys; there is one key per provider. You then pay twice, for different things: Siteoseo charges the add-on rate for running the work in your crawl, and the provider bills your account for its API usage at its own prices. We do not resell or mark up provider usage.
| Provider | Used for | What it costs you |
|---|---|---|
| OpenAIKey required | AI prompts that use an OpenAI model, run on each crawled page. Get a key for OpenAI (opens in a new tab) | AI prompts: $0.25 per 1,000 prompt runsOpenAI bills your account per token for every prompt run. |
| Google GeminiKey required | AI prompts that use a Gemini model, run on each crawled page. Get a key for Google Gemini (opens in a new tab) | AI prompts: $0.25 per 1,000 prompt runsGoogle bills your Gemini API project per token, beyond any free tier. |
| AnthropicKey required | AI prompts that use a Claude model, run on each crawled page. Get a key for Anthropic (opens in a new tab) | AI prompts: $0.25 per 1,000 prompt runsAnthropic bills your account per token for every prompt run. |
| AhrefsKey required | Backlink metrics (referring domains, backlinks, rating) for crawled URLs. Get a key for Ahrefs (opens in a new tab) | Link metrics: $0.25 per 1,000 URLsEach lookup uses API units from your Ahrefs subscription. |
| MajesticKey required | Backlink metrics (Trust Flow, Citation Flow, referring domains) for crawled URLs. Get a key for Majestic (opens in a new tab) | Link metrics: $0.25 per 1,000 URLsEach lookup uses analysis resources from your Majestic API plan. |
| PageSpeed InsightsKey optional | Core Web Vitals and lab scores from Google's PageSpeed Insights API. Get a key for PageSpeed Insights (opens in a new tab) | PageSpeed Insights: $1.00 per 1,000 pagesThe API is free within Google's daily quota; a key gives you your own quota instead of a shared one. |
AI prompts
Add up to five prompts under integrations.ai. Each runs on up to its own page limit, with the page's text, HTML or title and description sent along. Answers are stored per URL with the crawl. Each prompt on each page is one run. Use any model id the provider offers; these are low-cost starting points:
- OpenAI:
gpt-6-luna - Google Gemini:
gemini-3.5-flash-lite - Anthropic:
claude-haiku-5-5
Long pages are trimmed before they are sent, but token costs still grow with page length. Try a prompt on a small page limit first and check the provider's usage page.
Link metrics
integrations.linkMetrics.provider chooses Ahrefs or Majestic. Lookups are batched, so a crawl uses few API calls, but each URL still counts against your provider plan's units or resources.
PageSpeed Insights
Works without a key on Google's shared, low quota. With your own key from Google Cloud the quota is yours, which matters above a few dozen pages. The API itself is free.
Forms login
For staging sites and members areas behind a login form. The crawler opens the login page in headless Chromium, fills in the form, submits it and then crawls with the resulting session cookies.
- In
Settings → Saved logins, add a login with a name, username and password. The password is encrypted and never shown again. - In the crawl settings, switch on
formsAuth.enabled, enter theformsAuth.loginUrland choose the saved login. - If the form is unusual, adjust the CSS selectors for the username field, password field and submit button. The defaults match most email and password forms.
Before you crawl logged in
- Use a dedicated account with the least access needed, never a personal or admin login.
- Add
excludePatternsfor logout, delete, unsubscribe and similar links, for example/logoutand/delete. A crawler follows every link, and some sites act on a plain link click. - Logins that need a one-time code, CAPTCHA or single sign-on through another site are not supported.
- Start with a small URL cap to confirm the crawl stays logged in, then raise it.
Spelling and grammar server
Spelling and grammar checks ($1.00 per 1,000 pages) use LanguageTool, the open-source checker, running on a server operated alongside Siteoseo. Page text is sent only to that server, not to a third party.
Self-hosted deployments run their own LanguageTool HTTP server (Java), for example java -cp languagetool-server.jar org.languagetool.server.HTTPServer --port 8081, and point the worker at it with LANGUAGETOOL_URL (for example http://localhost:8081). Without it, crawls with spelling switched on skip the check and are not charged for it.
How credentials are kept
- API keys, saved passwords and Google refresh tokens are encrypted at rest with AES-256-GCM.
- They are decrypted on our servers only when needed, for crawls and exports you set up, and sent only to the service they belong to.
- The browser never receives a stored key or password back; Settings shows the last four characters of a key at most.
- Deleting a key or login, or disconnecting Google, takes effect immediately.
Which providers receive data, and when, is listed in the privacy policy.