Przejdź do treści

Concepts

Identifiers

Every resource in URLs, request bodies, JSON responses, CSV exports and webhook payloads is addressed by an opaque public id: a type prefix plus 16 random base32 characters (80 bits), e.g. rep_3iysz2mrrf63fq3z.

Resource Prefix Resource Prefix
organization org_ job job_
project prj_ API key (record id, not the secret) key_
report rep_ feedback fb_
audit aud_ invite inv_

Ids are not sequential and say nothing about volume. Treat them as opaque strings (max 24 characters). Old integer ids (/v1/reports/49, X-Project-ID: 1) return 404 since #142.

Rules

A rule is one observable practice turned into one yes/no question, e.g. "Is the same keyword repeated unnaturally?". Rules come from Google spam policies (layer spam), the SQRG Lowest/Low criteria (layer quality) or describe context (layer context). Each rule has an id, a version ver (bumped when its wording changes) and sources.

Categories

Every rule also has a category, which decides the report section and its own risk level:

Category What it covers In the report
spam Google spam policies Spam risk stamp
quality SQRG Lowest/Low criteria (and the context labels) Quality risk, beside the stamp
helpful Google's "helpful, reliable, people-first content" self-assessment (QR-HC-*, C4-PURPOSE) Helpful content risk, beside the stamp

Only spam sets the stamp; quality and helpful content are not spam-policy violations. Site audits accept categories (default: all) to check only some of them - fewer rules per page, lower cost and less time. Context labels (YMYL, transactions, UGC, utility page) always run. Presets preset:spam, preset:quality, preset:helpful (whole category) and preset:spam-quick are available wherever rules is accepted. Older stored reports get their category from the rule id when rendered. Browse them in the Rules catalog.

Rating scales (multiple choice)

Some rules (answer_type: choice) ask for one lettered option instead of 0/1, e.g. Page Quality on the SQRG scale Lowest, Lowest+, Low, Low+, Medium, Medium+, High, High+, Highest (letters A-I). Each option has an anchor from the SQRG with its section and page. The model still answers with one token; code computes the distribution (normalised over the option letters, coverage = their raw sum), the most likely level (modal), the expected position on the scale (expected) and the uncertainty (entropy, 0 = certain, 1 = flat). The model never outputs numbers.

Rule Scale Category
QR-PQ Page Quality, 9 levels quality
QR-MCQ Main content quality, Lowest-Highest quality
QR-EEAT-EXPERIENCE, QR-EEAT-EXPERTISE, QR-EEAT-TRUST E-E-A-T, separate scales Lowest-Very high (Authoritativeness needs reputation research, not assessed) quality
C6-YMYL-LEVEL YMYL degree: not / possibly / clearly (label; supersedes the 0/1 C1-YMYL, which stays for compatibility) quality
C7-PAGE-PURPOSE Page purpose, a list (label) quality

Reports show a distribution bar per scale under choices in the JSON. The default findings view shows the labels and a scale only when P(Lowest/Low) ≥ 0.5; site audits show the mean Page Quality distribution, Page Quality per URL pattern, the pages likely Lowest/Low and the E-E-A-T profile (weakest page per scale). Scales are not part of the risk levels and are uncalibrated (a separate calibration is planned). Each choice rule costs like one rule. Every rule also has plain-language texts for people (English and Polish): a short title, a one-to-two sentence summary of what we check, why it matters for Google and for your business, and how to fix it. Reports, the panel, CSV exports and the catalog show the title and summary first; the rule id is secondary. These texts are never sent to the model, so editing them does not change ver or scores.

Kinds

kind says what an answer 1 means:

kind 1 means Report section
violation the problem is present on the page violations, quality_signals
info a neutral label applies (YMYL, payments, UGC) labels
positive a good signal is present (clear page purpose) positives

Scores: raw, not calibrated

The model answers only 0 or 1. From the first-token log-probabilities the service computes score_raw = P(1) / (P(0) + P(1)), plus z (log-odds) and coverage (P(0) + P(1); below 0.9 the model wanted to say something else). score_raw is a ranking, not a probability. probability is filled only when the scoring has been calibrated against labelled pages. The verdict and thresholds are computed in code.

Evidence ✓/✗

For violation rules with a high score_raw the service asks for verbatim quotes from the page and checks each quote against the page text in code. Verified quotes are shown with ✓, unverified with ✗. A high score with no verified quote is flagged unsupported ("No evidence") and deserves extra scepticism.

Not assessed

Some practices (cloaking, link schemes across sites, expired-domain history…) cannot be judged from the content of a single page. They are listed in every report under not_assessed with a reason, so absence of a score is explicit.

Method version

The service picks the inference setup itself; it is not selectable and not shown in reports. Scores are comparable within one method version: every report records profile.prompt_ver, and rules carry their own ver.