uva.xyz: a personal landing page grown from Markdown
uva.xyz is the site you are looking at right now: a personal landing page grown from Markdown, fully open source. Drop a .md file into the repository, push, and a new link appears on the homepage together with a page of its own.

Publishing takes one file
Write every post as two Markdown files with the same name and only a language suffix that differs:
my-post.zh.md: the Chinese version, at/p/my-post/;my-post.en.md: the English version, at/en/p/my-post/.
After you push to GitHub, Cloudflare builds and deploys automatically, and a new row shows up on the homepage. The folder a file lives in decides its section: projects, writing or links.
Every post is its own SEO page
At build time the site generates a static page for every post in every language and fills in:
- a unique title and description, plus a canonical URL;
- hreflang links between the Chinese and English versions;
- Open Graph and Twitter share cards;
- structured data for the article and its breadcrumbs;
- a sitemap, RSS feeds, robots.txt, an
llms.txtfor AI crawlers, and a 404 page.
Each build also ends with an audit: duplicate URLs, malformed dates, broken internal links and images, missing titles and descriptions, and more. Any error fails the build, and the live site keeps serving the last good version.
Let an AI write and publish for you
The repository root contains a SKILL.md written for large language models (plus AGENTS.md and CLAUDE.md). It spells out the file naming, the front matter, the SEO and polishing rules, and the publishing workflow. Let a tool such as ChatGPT or Claude read it, and it can polish an article, write it in both languages, and commit it to GitHub following the same rules.
Small details
- A single-column layout with light and dark themes;
- a grape-bunch mark that leans toward your cursor and scatters when you click it;
- a small dot in front of each entry that slowly turns from green to purple, fully ripe after about 45 days;
- a preview card with the cover and summary when you hover over a list item;
- type
wineon the keyboard and the page turns wine-red.
Tech and deployment
There is no front-end framework: the whole site is generated by one Node build script and marked, hosted on Cloudflare, and updated automatically every time you push to GitHub. It is released under the MIT license.
Source code
The repository is at github.com/ashfog/uva-site. After forking it you only need three steps: edit site.config.json, edit about.zh.md and about.en.md, then put your own posts into content/.