Seo google guidelines
Skill PIXARTSeu/Synapse/packages/codegraph/data/skill/seo-google-guidelines
Self-improving AI brain for Claude Code & Desktop — 28 MCP tools, 253 skills, collective memory, project tracking, work logs. One server, all your sessions share the same knowledge. Deploy on Coolify in 2 minutes.
npx -y skills add PIXARTSeu/Synapse --skill seo-google-guidelinesAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 8 stars8 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Ground-truth reference for what Google Search actually says — Search Essentials, spam policies, E-E-A-T/YMYL, Core Web Vitals thresholds, structured-data eligibility, algorithm-update awareness (core/helpful-content/spam) and how to react, plus a falsifiability methodology for SEO claims. Use when verifying an SEO claim against primary sources, diagnosing a ranking drop after an update, or deciding whether a practice is allowed. Triggers on: "is this allowed by Google", "Google guidelines", "Search Essentials", "spam policy", "E-E-A-T", "YMYL", "helpful content", "core update", "ranking drop", "manual action", "penalty recovery", "Core Web Vitals", "LCP INP CLS", "structured data eligibility", "rich results retired", "what does Google say".
SKILL.md
14.4 KB, ~3.3k tokens by cl100k_base, as published. Nobody here has run it
Google Search Guidelines (Ground Truth)
The canonical reference our other SEO skills cite. When a claim about "what works for Google" is contested, this skill is the arbiter: it distills what Google publicly states, separates confirmed facts from third-party speculation, and gives a method for testing any SEO claim instead of trusting folklore.
Primary-source rule. Only Google-owned domains count as ground truth:
developers.google.com,web.dev,chrome.com,blog.google,support.google.com,status.search.google.com. Anything reported only by third-party trackers is a hypothesis, not a fact — label it as such and never encode it into an audit as if confirmed.
How Google Search Works
Three stages. A page must clear all three to rank:
- Crawling — Googlebot discovers URLs via links and sitemaps. Blocked by
robots.txtDisallow, network errors, ornofollow-only discovery. - Indexing — Google processes content, signals, and canonicals, then stores the page. Blocked by
noindex, soft-404s, duplicate-canonical selection, or content Google can't render. - Serving — At query time, algorithms rank indexed pages by relevance, quality, and usability.
Mobile-first indexing is 100% complete (since 2024). Google crawls and indexes exclusively with the mobile Googlebot user-agent. If content/links/structured-data exist only in the desktop render, Google does not see them.
Search Essentials (the only hard requirements)
Formerly "Webmaster Guidelines." Three buckets:
Technical requirements — the floor to be eligible at all:
- Reachable by Googlebot (not blocked by
robots.txt/noindex). - Returns HTTP 200 for indexable content.
- Content in a processable format (HTML preferred; JS-rendered content is supported but slower and riskier — verify the rendered DOM, not just source).
- Served over HTTPS.
Spam policies — violating any of these risks demotion or a manual action: cloaking (different content to Googlebot vs users) · doorway pages · hidden text/links · keyword stuffing · link spam (buying/selling links, excessive exchanges) · scraped or scaled auto-generated content without added value · sneaky redirects · thin affiliate pages · site reputation abuse (third-party content riding a host's authority — "parasite SEO") · expired-domain abuse.
Key best practices (signals, not pass/fail rules): write for users not engines · clear
crawlable hierarchy · unique descriptive <title> + meta description per page · logical
H1–H6 structure · alt text + right-sized images · responsive mobile design · fast pages
(Core Web Vitals) · submit an XML sitemap · use JSON-LD structured data for content Google should understand.
E-E-A-T and YMYL
E-E-A-T is not a direct ranking factor — it is the lens the Quality Rater Guidelines (QRG) use to describe what "high quality" means; the algorithm approximates it via many signals.
| Signal | What Google looks for | How to show it (Next.js) |
|---|---|---|
| Experience | First-hand use of the topic | Original photos, named author who used the product, dated changelog |
| Expertise | Relevant knowledge/credentials | Author bio + Person schema, accurate sourcing, technical depth |
| Authoritativeness | Recognized go-to source | Citations, brand mentions, Organization/sameAs links |
| Trustworthiness | Reliable, transparent (the most important of the four) | Contact page, HTTPS, editorial policy, accurate claims, visible publish/update dates |
- YMYL ("Your Money or Your Life": health, finance, safety, legal, and — per the Sept 2025 QRG — major political/social topics) is held to the strictest quality bar; inaccurate YMYL content can cause real harm.
- Per the Dec 2025 core update, E-E-A-T-style assessment now applies to all competitive queries, not only YMYL. Treat trust signals as table stakes everywhere.
Practical: surface a real author entity and dates in the page graph.
// app/[locale]/blog/[slug]/page.tsx — author + dates as E-E-A-T signals
import type { Article, WithContext } from "schema-dts";
export default async function Post({ params }: { params: Promise<{ slug: string }> }) {
const { slug } = await params;
const post = await getPost(slug); // your Payload CMS query
const jsonLd: WithContext<Article> = {
"@context": "https://schema.org",
"@type": "Article",
headline: post.title,
datePublished: post.publishedAt, // ISO 8601 — keep accurate, do not fake freshness
dateModified: post.updatedAt,
author: {
"@type": "Person",
name: post.author.name,
url: post.author.profileUrl, // links the entity (Authoritativeness)
},
};
return (
<article>
{/* visible byline + dates must match the schema — never mark up hidden content */}
<p>By {post.author.name} · Updated {new Date(post.updatedAt).toLocaleDateString()}</p>
<script type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }} />
</article>
);
}
Core Web Vitals (confirmed ranking signal since 2021)
Assessed at the 75th percentile of field data (real Chrome users via CrUX), not lab data.
| Metric | Good | Needs Improvement | Poor |
|---|---|---|---|
| LCP (Largest Contentful Paint) | ≤ 2.5s | 2.5s–4.0s | > 4.0s |
| INP (Interaction to Next Paint) | ≤ 200ms | 200ms–500ms | > 500ms |
| CLS (Cumulative Layout Shift) | ≤ 0.1 | 0.1–0.25 | > 0.25 |
- INP replaced FID (March 2024); FID was removed from all Chrome tooling (CrUX, PageSpeed Insights, Lighthouse) in September 2024. Never reference FID.
- Field data (CrUX) beats lab data (Lighthouse). A green Lighthouse score with red CrUX means real users are still suffering — believe the field.
- Target = all three at "Good." A single "Poor" fails the page in Search Console's CWV report.
- Sources of measurement: PageSpeed Insights (field + lab), CrUX (field), Lighthouse (lab only), Search Console CWV report (field). Use your own crawler/tooling to collect lab data at scale.
For the Next.js implementation playbook (RSC, next/image, font strategy, dynamic imports), defer to seo-technical / seo-performance. This skill owns only the thresholds and the field-vs-lab rule.
Structured Data: eligibility, not decoration
- JSON-LD is Google's preferred format (over Microdata/RDFa). Place in
<script type="application/ld+json">. - Always include
@contextand@type. Required properties gate rich-result eligibility; recommended ones improve quality. - Only mark up content visible on the page. Marking up hidden/misleading content is a spam-policy violation and can trigger a manual action.
- Keep schema in sync with content; validate with a rich-results validator before deploy.
Retired / restricted types — do not promise rich results for these:
| Type | Status |
|---|---|
HowTo | Rich results removed (2023) |
FAQPage | Rich results fully retired (2026) for all sites. Still useful as an entity/AI-citation signal; use QAPage for genuine single-question pages. |
SpecialAnnouncement | Deprecated (2025) |
Course Info, EstimatedSalary, LearningVideo, ClaimReview, VehicleListing | Retired (2025) |
When in doubt about a type's current support, check developers.google.com/search/docs/appearance/structured-data rather than assuming. Deep schema patterns live in seo-schema.
Algorithm-update awareness
Two failure modes when rankings drop, and they have different remedies:
Manual actions (you get a notification)
Reported in Search Console → Manual actions. Fix the root cause, then submit a reconsideration request. Common triggers and fixes:
| Trigger | Fix |
|---|---|
| Unnatural links | Remove/disavow the bad links, then reconsider |
| Thin content | Add substantial unique value |
| Cloaking / sneaky redirects | Remove deceptive serving |
| User-generated spam | Moderate UGC, nofollow/ugc user links |
| Structured-data spam | Remove misleading markup |
| Site reputation abuse | Remove/noindex the parasitic third-party section (Google has done section-level removals within hours) |
Algorithmic demotions (no notification — you infer it from a timeline)
Detected by correlating a traffic drop with a confirmed rollout window. No reconsideration exists; you fix quality and wait for the next core update to reassess.
- Helpful Content System was merged into core ranking in March 2024 — it is no longer a standalone update. Helpfulness is now judged inside every core update. Low-value, unhelpful, or scaled AI content still gets demoted, just via core.
- Core updates = broad quality reassessment across all signals.
- Spam updates = automated detection of spam patterns.
- Link spam updates = devaluation of manipulative links.
Reacting to a suspected update hit — protocol
- Confirm a rollout actually happened. Check
status.search.google.comand the Search Central blog for an official window. No confirmed update = look for a technical or seasonal cause first. - Align the timeline. Overlay your Search Console / analytics drop on the rollout dates. A drop outside the window is probably not the update.
- Segment the damage. Which URL groups, query clusters, or page types lost? A site-wide drop vs a section-specific drop point to different causes (quality-wide vs parasite/section).
- Classify the cause against the buckets above (manual vs algorithmic; quality vs links vs spam).
- Fix the root cause, not the symptom. Improving the specific weak pages beats sitewide cosmetic edits.
- Set expectations. Algorithmic recovery is gated on the next core update — often weeks to months. Do not promise a date.
Maintaining update awareness: keep a small, dated, source-cited log of confirmed updates (date, name, kind ∈ core / spam / policy / QRG / schema / CWV / product, Google-owned source URL, one-line impact). Promote a third-party-reported update into your confirmed log only after a Google-owned source verifies it. Recent confirmed rollouts illustrate the cadence: roughly three core updates per year (e.g., core updates landed in Mar, Jun, Dec 2025 and Mar, May 2026), interleaved with spam updates and periodic QRG revisions.
Falsifiability methodology (claude-seo's core value)
SEO is saturated with untestable folklore. Before acting on any claim — yours, a client's, or a blog's — run it through this filter.
1. Source tier. Is the claim backed by a Google-owned URL (fact), an experiment with data (evidence), or an assertion (folklore)? Downgrade folklore to "hypothesis."
2. State the falsifier. A claim you can't disprove is worthless. For every recommendation, answer:
"How would we know this failed?" Name the concrete observation that would prove the claim wrong.
3. Define the leading indicator. Rankings are a lagging, noisy signal. Pick something that moves first so you learn before months pass.
| Claim | Falsifier ("how would we know it failed?") | Leading indicator (moves first) |
|---|---|---|
| "Adding FAQ schema brings rich results" | No FAQ rich result appears (it can't — retired in 2026) | Rich-results validator shows eligible:false |
| "Fixing LCP will lift rankings" | LCP improves to Good but CTR/position flat after a full reassessment | CrUX p75 LCP crosses 2.5s in field data |
| "This page is thin, so it's demoted" | Page recovers after a core update without content changes | Avg position / impressions for its query cluster in Search Console |
| "Our drop was the May 2026 core update" | The drop started outside the confirmed rollout window | Date-aligned overlay of GSC clicks vs the official window |
| "More pages = more traffic" | New pages get crawled but stay unindexed or get zero impressions | Indexed-count and impressions per new URL group (vs crawl-only) |
4. Prefer the smallest reversible test. Change one variable on a representative URL set, define the metric and the window before shipping, then measure. If you can't define the metric, you can't claim success.
5. Attribute honestly. Correlation with a rollout is not proof of causation. State confidence ("consistent with", not "caused by") unless a Google-owned source or a controlled test backs it.
When other skills should cite this one
seo-audit/seo-technical/seo-performance→ CWV thresholds, field-vs-lab rule, mobile-first fact.seo-schema→ structured-data eligibility and retired types.seo-content/ai-seo/seo-geo→ E-E-A-T/YMYL framing, helpful-content-is-now-core, AI-content spam stance.- Any "we got hit by an update" investigation → the reacting-to-an-update protocol and falsifiability filter.
Verification links (Google-owned only)
- Search Essentials —
developers.google.com/search/docs/essentials - How Search works —
developers.google.com/search/docs/fundamentals/how-search-works - Spam policies —
developers.google.com/search/docs/essentials/spam-policies - Creating helpful content (E-E-A-T) —
developers.google.com/search/docs/fundamentals/creating-helpful-content - Structured data overview —
developers.google.com/search/docs/appearance/structured-data/intro-structured-data - Ranking update history —
developers.google.com/search/updates/ranking-update-history - Search status dashboard (live incidents) —
status.search.google.com - Search Central blog —
developers.google.com/search/blog - Manual actions report help —
support.google.com/webmasters/answer/9044175 - Core Web Vitals (web.dev) —
web.dev/articles/vitals
Parts adapted from claude-seo (MIT, © 2026 agricidaniel).