Content and search metadata
Product public pages are static Astro HTML with React islands for interactions. Titles, descriptions, main text and article contents are available before client JavaScript. The private workspace is a separate SPA and is not intended as indexable marketing content.
Publish a product article
Put English Markdown in apps/web/content/blog/*.md. Put Chinese translations under zh/ with the same filename. Required frontmatter: title, description, date, author, category. Optional fields: updated, known tool, and draft.
Use valid YYYY-MM-DD dates; an update cannot precede publication. Translate the title, description, category and complete body. Preserve code, field names and original sample data. Update internal links to actual localized tools/articles.
Draft English sources suppress their translations. Draft or missing Chinese versions do not create translated details, feed items or language alternates. Chinese lists show actual Chinese content instead of silently inserting English articles. Invalid dates, unknown tool IDs, empty bodies and orphan translations fail validation.
Indexing outputs
Canonical URLs use PUBLIC_SITE_URL. Supported complete language pairs expose reciprocal alternates and an English default. The sitemap lists real published pages, not private routes, drafts or nonexistent translations. Privacy/terms drafts remain noindex.
English RSS is /rss.xml; Chinese RSS is /zh/rss.xml. Each contains only published articles in that language, with matching URLs and GUIDs. Disabling the blog removes localized article/feed routes and excludes them from the sitemap; rebuild and replace all assets to avoid stale files.
Search filters use titles, descriptions and categories. Article reading estimates account for Chinese text rather than treating a paragraph without spaces as one word. Content and table-of-contents links remain readable without JavaScript.
Separate official content
The official website has its own content collections in apps/website/content/; it never reads product posts. Use locale and a stable translationKey to pair official translations. An independent showcase case is a real standalone site built from the template, not a tool embedded in the template demo.
Write useful, reproducible guides tied to actual output. Template samples do not establish market demand, search volume, revenue or search-engine trust. Real published crawling/indexing remains an external acceptance step.