Rzemiosło · The Craft
What is The CraftLevelsGet startedChapters Search Download PLEN
Level 3 · Codex ~4 min read

In one sentence: Visibility and multilingualism done properly: hreflang, structured data, language parity as a test.

This chapter in plain terms

The chapter’s motto: an app nobody can find doesn’t exist. SEO (visibility in search) and translations aren’t marketing glued on at the end — they’re a contract with Google and with the user that the page is understandable to the search engine and complete in their language.

The basics every page has: its own title and description (not one global pair), a canonical (one “true” address for the content, so it doesn’t count as a duplicate), a sitemap and structured data (JSON-LD — Structured data: a description of the page invisible to humans that the search engine reads (e.g. FAQ, author, breadcrumbs). Opens “rich snippets” in Google — richer results, higher CTR. — a description of the page for the search engine, invisible to humans). With multiple languages there’s also hreflang — A tag that tells the search engine what language a page is in and where its versions in other languages are. Without it a multilingual site confuses Google — the language versions “fight” over the same phrase. — a tag telling Google this is the same page in another language (without it the versions “fight” over the same phrase).

A separate thread is YMYL (“Your Money or Your Life”) — topics of health, money and safety that Google judges strictly. Here credibility counts (E-E-A-T): clear authorship, sources, no medical or legal advice without disclaimers.

With translations the rule is hard: completeness is a test that fails — a single missing string in any language breaks the build. And a translation has to be not just correct, but warm — a cold, literal “we’re here to help” is a mistake.

Example of canonical: the same page at /product?id=42&ref=fb and /product/bike is two different addresses to Google; the canonical points to the right one, so the ranking doesn’t split across duplicates.

Read more: SEO basics (Google) · hreflang — language versions (Google) · Core Web Vitals.

10 — SEO and translations

Commandment III extended to visibility: verify, don’t declare — including that the site is indexable, complete across all languages and measured, not “it probably looks OK”.

An application nobody can find does not exist. SEO and i18n are not a marketing layer tacked on at the end — they are a contract with the search engine and with the user that the site is understandable to the crawler and complete in its language. Just as AI_README is the interface for the agent, so metadata and translations are the interface for the world.

SEO fundamentals (every page)

  • <title> + meta description unique per page (not one global one).
  • Canonical — one URL of truth for each piece of content (protects against duplicates from parameters).
  • hreflang — A tag that tells the search engine what language a page is in and where its versions in other languages are. Without it a multilingual site confuses Google — the language versions “fight” over the same phrase. — mandatory once you go multilingual: each language version points to the others (e.g. 16 languages → 16 reciprocal hreflang + x-default).
  • JSON-LD — Structured data: a description of the page invisible to humans that the search engine reads (e.g. FAQ, author, breadcrumbs). Opens “rich snippets” in Google — richer results, higher CTR.Organization (home), Article (blog/posts), ItemList (rankings).
  • sitemap.xml (with priorities) + robots.txt (what to Index (database) — A lookup in the database that makes searching instant instead of scanning everything in order. The first move for slow queries — like an index at the back of a book instead of reading 400 pages., where the sitemap is).
  • Semantic headings (one h1, an h2/h3 hierarchy), OG/Twitter cards (e.g. OG share cards — but no price on the public card when the domain requires it, → 09).
  • Clean Slug — A readable, short part of a page address that describes its content in words instead of a mysterious number. Better for humans and SEO; a stable slug doesn’t break links when things change. (/ranking/produkty-do-200-zl, not ?id=42) and internal linking (nav-drawer + footer + contextual links between pages).

Programmatic and editorial SEO

  • Programmatic — curated landing pages targeting transactional queries. In the reference project: several /ranking/:slug pages (“products under 100/200/300 PLN”, “best in category X”, “for a gift”) — each a hand-written intro PL/EN + a numbered TOP-N + a full filterable table + ItemList JSON-LD. Quality guards are part of SEO: qualifying filters, requireRating, minShops — so the page is not a thin shell.
  • Editorial — content hubs/blog targeting informational queries (e.g. topical guides about products). Content that genuinely answers the question, not keyword-stuffing.

E-E-A-T and YMYL

Google rates YMYL (Your Money or Your Life) pages rigorously — health, finance, religion, safety. A price comparison site falls into this, for instance (spending, age-restricted content), as does any health, finance or support application. What counts is E-E-A-T: Experience, Expertise, Authoritativeness, Trust.

  • Reliability and sources (where the price comes from, where the rating comes from — the reference project links the external data source/shop).
  • Authorship and a clearly named operator (→ 09) build Trust.
  • Zero medical advice in health/support products — a disclaimer + a crisis path, not a diagnosis.

Core Web Vitals as a ranking factor

Speed is not only UX — it is a ranking signal. LCP/CLS/INP feed into the page’s assessment. Measure and fix (→ 13); not “it feels fast”, but numbers.

Translations / i18n

  • Completeness = a test that fails. A missing key or a page in any language → the test fails (in practice: EN↔PL parity + dead links). No language “half done”.
  • hreflang ties the versions together (see above).
  • A warm register in EVERY language — this is not literalness, it is tone. A translation that is grammatically correct but cold is a bug (e.g. “we’re here to help” must sound warm in Arabic just as it does in Polish).
  • MT + human review for sensitive content — Gemini translates the skeleton, a human reviews the disclaimers, the crisis messages, the legal copy (→ 09).
  • RTL (Arabic) — the whole layout must mirror, not just the text.
  • GA4 + Search Console (anonymized) — which queries convert, in which language traffic is growing. The data steers where to write the next landing.

Anti-patterns

  • 🚫 SEO spam / keyword-stuffing — Google penalizes it, does not reward it.
  • 🚫 Thin programmatic pages with no value (TOP-N without quality guards, 2-shop shells).
  • 🚫 No hreflang in a multilingual application → the search engine serves the wrong language.
  • 🚫 Cold / wrong MT in a sensitive product without human review.
  • 🚫 English UI or legal pages in a 16-language application (→ 09).
  • 🚫 Ignoring Core Web Vitals — Google’s measures: how fast a page appears, how stably it lays out and how fast it reacts. They affect your Google ranking and whether the user stays. Measurable, so you can improve them. — a slow page loses ranking and the user (→ 13).

In practice

i18n from day one in a global application (e.g. 16 languages, next-intl): hreflang for every pair, a parity test as a CI gate, RTL for right-to-left languages, a warm register in every language. YMYL content (health/support/finance) — zero regulated advice, clear authorship and operator, crisis resources per region. Search Console from the start, so you know which languages and topics drive traffic. → 09, 13

The canonical doctrine is written in English.