← Product discovery and AI development · Chapter 5

Build a personal site as a maintainable content product

Design content, languages, evidence, and publication states for an original bilingual series, keeping sitemaps, feeds, versions, and recovery consistent and reviewable.

After this guide, you can

Verify bilingual publication gates, feed links, real update dates, and recoverable content versions.

A personal site can host knowledge, work, and tools, but readers usually visit to solve a specific problem. A maintainable content product needs accurate, sourced explanations and consistent languages, links, and publication states rather than simply more pages.

The case designs an original series with stable IDs, Chinese and English versions, topics, and update records. Fields are synthetic, with no invented experiences, users, or revenue. The code checks publication eligibility without deploying.

Organize around reader questions

An article should answer a concrete question, such as why task retries duplicate inventory effects. Explain mechanisms, conditions, independent cases, failures, and checks. Titles and descriptions support discovery without replacing the body.

Series define learning order, topics support finding material, and tools provide actions. Avoid duplicate content under different titles or splitting one fact into many thin pages. Each page needs a distinct purpose.

Originality comes from independent problem analysis and examples. Synonym replacement adds little value. Preserve primary-source conditions while creating your own structure and cases, without borrowing another author's experiences or media as evidence.

Separate content from presentation

Reviewable source files hold bodies; a catalog holds IDs, titles, descriptions, language routes, and topics. Stable IDs connect translations and updates even when titles change. Validate duplicates and missing files before building.

Static generation can render readable HTML. Scripts may enhance it, but essential reading should not depend entirely on transient hidden state. Confirm that the built page contains the body rather than an empty shell.

Templates manage navigation, layout, language links, and metadata. Review template and content changes separately. Check long and short pages, languages, and code blocks after shared component changes.

Make language versions complete counterparts

Each language needs a stable URL, and switching should reach the same article. Translate conditions, cases, limitations, and exercises rather than only navigation. Consistent meaning matters more than mechanical sentence matching.

Google's localized-page guidance requires hreflang sets to include each page itself and its alternatives, with full URLs and reciprocal links. Keep canonical URLs consistent with language relationships rather than incorrectly treating one language as the sole page for every translation.

Handle missing counterparts explicitly without broken invented links. Check statuses, internal links, and language relations after migration. Language suggestions should still allow users to choose direct paths.

Check publication state

Articles can move through draft, reviewed, and published stages. This model requires both languages and review. It assumes complete boolean fields; a real build must reject malformed records separately.

articles = [{"id": "A", "zh": True, "en": True, "reviewed": True},
            {"id": "B", "zh": True, "en": False, "reviewed": True}]
def publishable(article):
    return article["zh"] and article["en"] and article["reviewed"]
assert [a["id"] for a in articles if publishable(a)] == ["A"]
assert not publishable({"id": "C", "zh": True, "en": True, "reviewed": False})
print([a["id"] for a in articles if publishable(a)])

The actual output is ['A']. A meets the rules; B lacks English and C lacks review. The code does not verify quality, sources, or HTML, so flags need evidence in actual files and records.

Real gates can check metadata, bodies, code output, sources, translations, and privacy. Publication dates describe first release; update records describe substantive changes. Rebuilding should not falsely mark every article as newly checked today.

Provide search and subscription paths

Titles, descriptions, crawlable bodies, canonicals, and sitemaps help discovery and interpretation without guaranteeing indexing, ranking, or traffic. Helpful-content guidance emphasizes substantial value, not scaled production of thin pages.

List accessible canonical pages in sitemaps and use lastmod for actual significant updates. Migration redirects should reach equivalent content, with internal links updated rather than every old path redirected home.

RSS 2.0 organizes channel and item data. Keep identifiers stable, links usable, and dates compliant. Changing IDs unintentionally can duplicate items. Derive feeds and pages from consistent sources to reduce mismatches.

Review evidence and public material

Verify that sources support claims. Accessible pages may contain only navigation or unreadable compressed text. Read usable bodies or narrow conclusions, retaining dates and locations. Platform changes require explicit scope and update reasons.

Use synthetic IDs and omit account data, employers, privacy, and credentials. Unsupported first-person stories must not fill gaps. Identify teaching scenarios clearly.

Automation assists research but does not replace reading mechanisms, examples, and translations. Verify asset rights and quotations. Accessibility checks and word counts alone cannot establish factual quality.

Retain deployment and recovery evidence

Keep artifacts, content commits, and deployment identities. Hosting and Workers routing have platform-specific conditions. This lesson provides neither unexecuted commands nor claims of a published site.

After deployment, request articles, indexes, language counterparts, sitemaps, feeds, and missing routes. Verify body versions; a successful control panel may coexist with old cached content. Recovery needs the previous artifact and repeated checks.

Prioritize maintenance through source changes, reader questions, and defects. Usage metrics can reveal problems without proving that an SEO edit caused traffic growth. Keep executable maintenance records rather than invented success stories.

Exercise: deliver a complete content path

Design three independent articles with topics, questions, language routes, and gates. Include missing translations, review, sources, duplicate IDs, and old routes.

Accept the design when HTML contains the bodies, translations preserve meaning, feeds and sitemaps exclude drafts and broken links, and dates reflect real changes. Simulate recovery and verify the version. Local gates establish boolean rules; quality, indexing, and deployment need separate evidence.

Sources & further reading

Sources checked on 2026-11-10. Original engineering explanation; examples are teaching data, not production measurements.