Skip to content

Author SEO titles for the 42 English pages whose title tag is a single word #167

Description

@hotlong

Blocked-by: #171

Why

#166 added the mechanism — an optional seoTitle frontmatter field that feeds the title tag while the H1 and sidebar keep the short noun. It merged as 23a976b. This card fills it in.

The field is named seoTitle. #166 specified the mechanism but not the name; the implementing dev chose it and it is now the contract. It is schema-tightened with .trim().min(1), so an empty or whitespace-only value fails the build rather than silently producing a bare | ObjectOS.

42 of 79 English pages currently emit a one-word title tag (Views, Actions, Pages, Forms, Agents, Storage, Email, Permissions, Positions, Records, …). Rendered through the %s | ObjectOS template these match no query anyone types. Nobody searches "views"; people search "kanban view low code", "salesforce-style list views self hosted", "internal tool record layout".

The raw material already exists

Every one of those 42 pages carries a written, specific description. Two examples from main:

  • content/docs/build/interface/views.mdx — title Views, description "List, Form, Kanban, Calendar, Gantt and more — how every object surface is declared."
  • content/docs/build/data/relationships.mdx — title Relationships, description "Connect objects with lookups and master-detail — cascade rules, filtered pickers, hierarchies, junction objects, and roll-ups."

The terms a searcher would use are in the description. The task is largely to lift them into the title field, not to invent new copy. Read each page's description and body before writing its title — a title that promises something the page does not deliver costs more than a weak title, because it converts into a bounce.

What to change

  • For each English page whose effective title tag is two words or fewer, declare a seoTitle. Keep it under roughly 60 characters so it is not truncated in the result page, and account for the | ObjectOS suffix the template appends.
  • Lead with the specific term, not the brand — the template already supplies the brand.
  • Do not change the title field itself. The sidebar, breadcrumbs and H1 read better as short nouns and that is why generateMetadata returns four fields: docs pages ship no SEO title, no Open Graph, and no structured data #166 separated the two.
  • Propagate to the six translated locales only for pages that already have a translation file for that locale. Do not create new translation files here. Translated SEO titles must be written in the target language against local search vocabulary, not transliterated from English.

Verification

  • After the change, no English page emits a title tag of two words or fewer except where a one-word title is genuinely the strongest choice — list any such page and its reason in the PR body.
  • Every locale file touched still parses and its title tag renders in its own language.
  • No content/docs/** file gains or loses a title, description, or body line.

Card corrections, made when the blocker was re-pointed:

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions