feat(seo): add an English and Chinese page for people searching for ONLYOFFICE - #203
Merged
Conversation
… AGPL Section 7 requires The vendor's AGPL-3.0 headers carry two additional terms under Section 7: 7(b) requires a derivative work to retain the original product logo, and 7(e) declines to grant any rights under trademark law. This build honoured neither. guards/chrome.ts hid `#header-logo` and the DocEditor config set `customization.about: false`, which between them left no product mark anywhere in the interface, and no trademark notice existed in the repository or on the site. Both removals were deliberate UI tidy-ups, so a comment would not have held: - guards/chrome.ts keeps hiding the current-user and co-users widgets (a collaboration session a serverless build cannot have) and nothing else. - `customization.about` goes back to its default. The vendor's own `canBrandingExt` check exists to force it back on; this offline build just does not enforce it. - New guard 12 (guards/about-source.ts) appends this build's own two facts to the About pane -- that it is a modified version and not an official ONLYOFFICE product, and where its source is (Section 13). The pane is populated lazily, so it watches for the content rather than writing once. - NOTICE quotes the terms verbatim, pins the vendor version, and lists every change made to the vendor tree (Section 5(a)). - The eight readmes point at it; all seven site languages carry a trademark line in both footers. Pinned by test/unit/branding-notice.test.ts and test/e2e/vendor-branding.spec.ts. Reverse-verified twice: restoring the two suppressions turns the three editor cases red, and dropping the footer notice turns the three page cases red. Also in passing: /zh/ used to 404 (the real prefix is the BCP-47 /zh-CN/), and the embed docs never said prominently that `document:open-url` and `?src=` need CORS on the file's own host. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…NLYOFFICE Every existing title and description is already at its display budget (English titles median 57 characters against a ~60 limit, Chinese descriptions median 91 against ~78), so working the word "ONLYOFFICE" into all 154 of them would push an existing keyword out or land in the truncated tail. And none of the queries those pages target contain it. A page of its own does not have that problem. It answers what someone searching "onlyoffice online free" or "onlyoffice 在线版" actually wants to know -- that the editors here are the real ones, that there is no Document Server to install, and, in its own section, everything ONLYOFFICE Docs does that this build deliberately does not (no collaboration, no connectors, your own memory does the work). English and Chinese only, on purpose: the shell derives hreflang, the Open Graph alternates and the language switch from the sources a page actually has, so a page in two languages stays correct in two languages. Both state plainly that this is not an official ONLYOFFICE product, which the footer trademark line already says on every page. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Every generated page's footer gained a trademark line today, so every generated route's lastmod moves with it. Two routes are new. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
chaxus
enabled auto-merge (rebase)
August 23, 2026 15:41
Deploying document with
|
| Latest commit: |
eb7fba8
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://60cc9d54.document-7hm.pages.dev |
| Branch Preview URL: | https://onlyoffice-landing-page.document-7hm.pages.dev |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why a page rather than editing the existing titles
The idea on the table was to work "ONLYOFFICE" into the titles and descriptions the site already has. Measured against what search results actually display, that does not work:
Both fields are already at or past the point where they get truncated, so adding ten characters either pushes an existing keyword out or lands in the part nobody sees. And the queries those pages target ("edit docx in browser", "纯前端 在线编辑 word") do not contain the word at all — 7 of 154 descriptions mention ONLYOFFICE today, 0 titles.
A dedicated page has neither problem, and it can answer what that searcher actually wants to know.
What the page says
x2tconverter are the real ones, compiled to WebAssembly; there is no Document Server to install.English and Chinese only, deliberately. The shell derives hreflang, the OG alternates and the language switch from
page.sources, so a two-language page stays correct in two languages — no hreflang pointing at a 404.Wiring
LANDING_SLUGS+ the two markdown sources, plus everything a new landing page has to touch orlanding-pages.test.tsgoes red: sitemap, llms.txt (and the regenerated llms-full.txt), both homepage footers, both generated-page footers, and the two ignore lists for the generated HTML.The second commit is
bin/sitemap-lastmod.mjsdoing its job: every generated page's footer gained a trademark line today, so every route's lastmod moves.Unit suite: 2697 passing.