{
  "format": "letterpress-content-manifest",
  "version": 2,
  "site": {
    "name": "此间札记",
    "language": "zh-CN",
    "home": "https://xiaoxusop.github.io/letterpress/"
  },
  "documentCount": 11,
  "edgeCount": 23,
  "documents": [
    {
      "id": "post:cjk-web-typography",
      "kind": "post",
      "slug": "cjk-web-typography",
      "title": "中文网页排版，多数主题都做错了",
      "summary": "行高、字重、行宽、中西文间距——这四个参数直接套西文的值，中文读者看到的是一份「能读但别扭」的页面。2026 年有三个原生 CSS 属性可以修好其中一半。",
      "urls": {
        "html": "https://xiaoxusop.github.io/letterpress/cjk-web-typography/",
        "markdown": "https://xiaoxusop.github.io/letterpress/cjk-web-typography.md"
      },
      "publishedAt": "2026-09-12T00:00:00.000Z",
      "updatedAt": "2026-09-24T00:00:00.000Z",
      "tags": [
        "排版",
        "css",
        "中文"
      ],
      "relations": {
        "outgoing": [
          "wiki:cjk-typography",
          "wiki:content-negotiation"
        ],
        "backlinks": [
          "wiki:cjk-typography"
        ]
      },
      "provenance": {
        "sources": [
          {
            "sourceId": "css-values-4",
            "revision": "WD-20240312",
            "locator": "§5.1.1 长度单位 · ch"
          },
          {
            "sourceId": "css-values-4",
            "revision": "WD-20240312",
            "locator": "§5.1.1 长度单位 · ic"
          },
          {
            "sourceId": "css-fonts-4",
            "revision": "WD-20260913",
            "locator": "§2.2.2 Missing weights"
          },
          {
            "sourceId": "css-fonts-4",
            "revision": "WD-20260913",
            "locator": "§5 Font Matching Algorithm · 字重匹配"
          },
          {
            "sourceId": "css-fonts-4",
            "revision": "WD-20260913",
            "locator": "§2.8.1 Controlling synthesized bold"
          },
          {
            "sourceId": "apple-system-fonts",
            "revision": "online-2026-09-24",
            "locator": "System Fonts 表格 · PingFang SC 条目"
          }
        ]
      },
      "markdown": {
        "mediaType": "text/markdown",
        "bytes": 13939,
        "sha256": "81327d682025e91c5affe8397280544c5f0e93be96907fdfa080e44d621df2db"
      }
    },
    {
      "id": "post:how-this-works",
      "kind": "post",
      "slug": "how-this-works",
      "title": "这个博客是怎么搭的",
      "summary": "改一个配置文件就能上线，文章放在一个目录里，知识层会自动长出链接图。这一篇解释目录结构、写作流程，以及怎么把它换成你自己的。",
      "urls": {
        "html": "https://xiaoxusop.github.io/letterpress/how-this-works/",
        "markdown": "https://xiaoxusop.github.io/letterpress/how-this-works.md"
      },
      "publishedAt": "2026-09-12T00:00:00.000Z",
      "tags": [
        "使用说明"
      ],
      "relations": {
        "outgoing": [
          "wiki:cjk-typography",
          "wiki:content-negotiation",
          "wiki:design-tokens",
          "wiki:llm-wiki"
        ],
        "backlinks": []
      },
      "markdown": {
        "mediaType": "text/markdown",
        "bytes": 5738,
        "sha256": "982f1cbfc6a36e377d0a75d56d45d8c064f6e0f1e2cb2f65e185b2c0f74ce57f"
      }
    },
    {
      "id": "post:markdown-for-agents",
      "kind": "post",
      "slug": "markdown-for-agents",
      "title": "你的博客该不该给 AI 一份 markdown",
      "summary": "内容协商是 HTTP 自带的能力，但博客圈几乎没人用。三个 agent 会主动要 markdown，四个不会——而现有工具都跳过了最难的那一步。",
      "urls": {
        "html": "https://xiaoxusop.github.io/letterpress/markdown-for-agents/",
        "markdown": "https://xiaoxusop.github.io/letterpress/markdown-for-agents.md"
      },
      "publishedAt": "2026-09-12T00:00:00.000Z",
      "updatedAt": "2026-09-24T00:00:00.000Z",
      "tags": [
        "web",
        "agent",
        "http"
      ],
      "relations": {
        "outgoing": [
          "wiki:content-negotiation"
        ],
        "backlinks": [
          "wiki:content-negotiation"
        ]
      },
      "provenance": {
        "sources": [
          {
            "sourceId": "rfc9110-accept",
            "revision": "rfc9110",
            "locator": "§12.5.1 Accept"
          },
          {
            "sourceId": "rfc7763-markdown",
            "revision": "rfc7763",
            "locator": "全文"
          },
          {
            "sourceId": "google-ai-features",
            "revision": "online-2026-09-23",
            "locator": "You don't need to create new machine readable files"
          },
          {
            "sourceId": "ahrefs-llmstxt-study",
            "revision": "online-2026-06-15",
            "locator": "Methodology / Top findings"
          },
          {
            "sourceId": "cloudflare-markdown-for-agents",
            "revision": "online-2026-09-24",
            "locator": "token 对比一节"
          }
        ]
      },
      "markdown": {
        "mediaType": "text/markdown",
        "bytes": 10151,
        "sha256": "7b21a9b309cd4796b31172016ccfe5530bc6fb47667e8d99e415c6867872702d"
      }
    },
    {
      "id": "post:reproducible-builds",
      "kind": "post",
      "slug": "reproducible-builds",
      "title": "构建可复现比你想的难，而且它值得",
      "summary": "同一份源码在两台机器上构建出不同的产物——这件事的代价不是洁癖，是你没法用 diff 判断\"这次改动干了什么\"。",
      "urls": {
        "html": "https://xiaoxusop.github.io/letterpress/reproducible-builds/",
        "markdown": "https://xiaoxusop.github.io/letterpress/reproducible-builds.md"
      },
      "publishedAt": "2025-11-20T00:00:00.000Z",
      "updatedAt": "2026-09-19T00:00:00.000Z",
      "tags": [
        "构建",
        "可复现",
        "ci"
      ],
      "relations": {
        "outgoing": [
          "wiki:build-probe"
        ],
        "backlinks": [
          "wiki:build-probe"
        ]
      },
      "markdown": {
        "mediaType": "text/markdown",
        "bytes": 5275,
        "sha256": "634f629fc24b489d7ba3f0baac9850ced04666f409b333c51249d2995ccfe83d"
      }
    },
    {
      "id": "post:static-site-search",
      "kind": "post",
      "slug": "static-site-search",
      "title": "静态站搜索的三种做法，以及它们各自真实的上限",
      "summary": "前端过滤、构建期索引、外挂服务——三种方案的取舍不在功能多少，在「索引存在哪」这一件事上。",
      "urls": {
        "html": "https://xiaoxusop.github.io/letterpress/static-site-search/",
        "markdown": "https://xiaoxusop.github.io/letterpress/static-site-search.md"
      },
      "publishedAt": "2026-08-14T00:00:00.000Z",
      "tags": [
        "搜索",
        "静态站",
        "索引"
      ],
      "relations": {
        "outgoing": [
          "wiki:content-negotiation"
        ],
        "backlinks": []
      },
      "markdown": {
        "mediaType": "text/markdown",
        "bytes": 4830,
        "sha256": "ba6735e2ae16602acb58364c95a19f77bf4a57234b5334ff0ea1d5f92e439015"
      }
    },
    {
      "id": "wiki:build-probe",
      "kind": "wiki",
      "wikiKind": "concept",
      "slug": "build-probe",
      "title": "构建探针",
      "summary": "对「构建产物」本身做的断言——问的不是「代码写对没有」，而是「生成出来的东西对不对」。",
      "urls": {
        "html": "https://xiaoxusop.github.io/letterpress/wiki/build-probe/",
        "markdown": "https://xiaoxusop.github.io/letterpress/wiki/build-probe.md"
      },
      "tags": [],
      "relations": {
        "outgoing": [
          "post:reproducible-builds",
          "wiki:letterpress"
        ],
        "backlinks": [
          "post:reproducible-builds"
        ]
      },
      "provenance": {
        "original": {
          "reason": "方法论与本站实践，没有可引用的外部条款"
        },
        "review": {
          "status": "reviewed",
          "checkedAt": "2026-09-24T00:00:00.000Z",
          "contentDigest": "5456e0ac44763538e2579fe16babcc1d8870af08678c5afe22509c5a86a3fc2a"
        }
      },
      "markdown": {
        "mediaType": "text/markdown",
        "bytes": 4059,
        "sha256": "5c7c388280630cfe88e84ed2896e0b2d817d3a5ebc7bbf62ae86947416bd9eb3"
      }
    },
    {
      "id": "wiki:cjk-typography",
      "kind": "wiki",
      "wikiKind": "concept",
      "slug": "cjk-typography",
      "title": "中文排版",
      "summary": "行高、字重、行宽、中西文间距——四个参数直接套西文的值，中文读者看到的是「能读但别扭」的页面。",
      "urls": {
        "html": "https://xiaoxusop.github.io/letterpress/wiki/cjk-typography/",
        "markdown": "https://xiaoxusop.github.io/letterpress/wiki/cjk-typography.md"
      },
      "updatedAt": "2026-09-24T00:00:00.000Z",
      "tags": [],
      "relations": {
        "outgoing": [
          "post:cjk-web-typography",
          "wiki:design-tokens"
        ],
        "backlinks": [
          "post:cjk-web-typography",
          "post:how-this-works",
          "wiki:design-tokens",
          "wiki:letterpress"
        ]
      },
      "provenance": {
        "sources": [
          {
            "sourceId": "css-values-4",
            "revision": "WD-20240312",
            "locator": "§5.1.1 长度单位 · ch"
          },
          {
            "sourceId": "css-values-4",
            "revision": "WD-20240312",
            "locator": "§5.1.1 长度单位 · ic"
          },
          {
            "sourceId": "css-fonts-4",
            "revision": "WD-20260913",
            "locator": "§2.2.2 Missing weights"
          },
          {
            "sourceId": "css-fonts-4",
            "revision": "WD-20260913",
            "locator": "§5 Font Matching Algorithm · 字重匹配"
          },
          {
            "sourceId": "apple-system-fonts",
            "revision": "online-2026-09-24",
            "locator": "System Fonts 表格 · PingFang SC 条目"
          }
        ],
        "review": {
          "status": "reviewed",
          "checkedAt": "2026-09-24T00:00:00.000Z",
          "contentDigest": "222eb0aa7269f9ffa0bac97da9ec149e54b2f81211b3be0f810cb15e24b9134d"
        }
      },
      "markdown": {
        "mediaType": "text/markdown",
        "bytes": 5581,
        "sha256": "b08201aa15d527958d5584478bec492148271b1d95dcb2d50617846a6a6d2ed4"
      }
    },
    {
      "id": "wiki:content-negotiation",
      "kind": "wiki",
      "wikiKind": "concept",
      "slug": "content-negotiation",
      "title": "内容协商",
      "summary": "用 HTTP 的 Accept 头决定返回 HTML 还是 markdown。算法只有四十行，难的是静态托管不解析请求头。",
      "urls": {
        "html": "https://xiaoxusop.github.io/letterpress/wiki/content-negotiation/",
        "markdown": "https://xiaoxusop.github.io/letterpress/wiki/content-negotiation.md"
      },
      "tags": [],
      "relations": {
        "outgoing": [
          "post:markdown-for-agents",
          "wiki:llm-wiki"
        ],
        "backlinks": [
          "post:cjk-web-typography",
          "post:how-this-works",
          "post:markdown-for-agents",
          "post:static-site-search",
          "wiki:letterpress",
          "wiki:llm-wiki"
        ]
      },
      "provenance": {
        "sources": [
          {
            "sourceId": "rfc9110-accept",
            "revision": "rfc9110",
            "locator": "§12.5.1 Accept"
          }
        ],
        "review": {
          "status": "reviewed",
          "checkedAt": "2026-09-23T00:00:00.000Z",
          "contentDigest": "6104e8408171d1ccf8f2fc49b622c35bab4be29a39101ccb6bdc4a3c3b4dde0c"
        }
      },
      "markdown": {
        "mediaType": "text/markdown",
        "bytes": 3946,
        "sha256": "dde207eb2ab35d8c40dae6799b0cd33691894384fa0111e3a441f47d31830875"
      }
    },
    {
      "id": "wiki:design-tokens",
      "kind": "wiki",
      "wikiKind": "concept",
      "slug": "design-tokens",
      "title": "设计令牌",
      "summary": "三层 token 结构，命名描述用途而非外观。换配色时只动原始值，换暗色模式时只动语义映射。",
      "urls": {
        "html": "https://xiaoxusop.github.io/letterpress/wiki/design-tokens/",
        "markdown": "https://xiaoxusop.github.io/letterpress/wiki/design-tokens.md"
      },
      "tags": [],
      "relations": {
        "outgoing": [
          "wiki:cjk-typography",
          "wiki:letterpress"
        ],
        "backlinks": [
          "post:how-this-works",
          "wiki:cjk-typography",
          "wiki:letterpress"
        ]
      },
      "provenance": {
        "original": {
          "reason": "本站的设计选择与内部约定，外部规范没有对应条款"
        },
        "review": {
          "status": "reviewed",
          "checkedAt": "2026-09-24T00:00:00.000Z",
          "contentDigest": "422a50ea234de50cc6e0052e2d7cc817ef5c77f548f5e64e05e9d7dfcaf08edc"
        }
      },
      "markdown": {
        "mediaType": "text/markdown",
        "bytes": 2821,
        "sha256": "968531566511bd76efd4b7700406de88126c7275f59284dac8896ecef10125d8"
      }
    },
    {
      "id": "wiki:letterpress",
      "kind": "wiki",
      "wikiKind": "entity",
      "slug": "letterpress",
      "title": "letterpress",
      "summary": "本站所属的开源项目。一个把中文排版做对、同时写给人和 AI 读的静态博客主题。",
      "urls": {
        "html": "https://xiaoxusop.github.io/letterpress/wiki/letterpress/",
        "markdown": "https://xiaoxusop.github.io/letterpress/wiki/letterpress.md"
      },
      "tags": [],
      "relations": {
        "outgoing": [
          "wiki:cjk-typography",
          "wiki:content-negotiation",
          "wiki:design-tokens",
          "wiki:llm-wiki"
        ],
        "backlinks": [
          "wiki:build-probe",
          "wiki:design-tokens",
          "wiki:llm-wiki"
        ]
      },
      "provenance": {
        "original": {
          "reason": "本站自身的实现事实，外部无对应来源"
        },
        "review": {
          "status": "reviewed",
          "checkedAt": "2026-09-24T00:00:00.000Z",
          "contentDigest": "e72f97a238d046c186fa8f1fefadff7ab8cbe2f4f1bf3a8591c27e4b37df765d"
        }
      },
      "markdown": {
        "mediaType": "text/markdown",
        "bytes": 2698,
        "sha256": "cecace902c50949c996746e8ab6c3179cefe5d81605ca3d96d2897a7b31d9874"
      }
    },
    {
      "id": "wiki:llm-wiki",
      "kind": "wiki",
      "wikiKind": "concept",
      "slug": "llm-wiki",
      "title": "LLM 知识库",
      "summary": "Karpathy 2026 年 4 月提出的模式——让 agent 主动读写并维护一层知识库，新素材进来时做的是「重构」而不是「追加」。",
      "urls": {
        "html": "https://xiaoxusop.github.io/letterpress/wiki/llm-wiki/",
        "markdown": "https://xiaoxusop.github.io/letterpress/wiki/llm-wiki.md"
      },
      "updatedAt": "2026-09-24T00:00:00.000Z",
      "tags": [],
      "relations": {
        "outgoing": [
          "wiki:content-negotiation",
          "wiki:letterpress"
        ],
        "backlinks": [
          "post:how-this-works",
          "wiki:content-negotiation",
          "wiki:letterpress"
        ]
      },
      "provenance": {
        "sources": [
          {
            "sourceId": "llm-wiki-gist",
            "revision": "gist-2026-04",
            "locator": "全文（三层结构与三个操作的出处）"
          },
          {
            "sourceId": "llm-wiki-gist",
            "revision": "gist-2026-04-ingest",
            "locator": "Ingest 段落（10–15 页那句的逐字出处）"
          }
        ],
        "review": {
          "status": "reviewed",
          "checkedAt": "2026-09-24T00:00:00.000Z",
          "contentDigest": "f37e57db6c45490157be396281f507633ac5109d605ea7f155ad50bc5c53e6dc"
        }
      },
      "markdown": {
        "mediaType": "text/markdown",
        "bytes": 6726,
        "sha256": "398ee5b5f34b7626f8365bb78f5b08b0c4f76db60648ebcadf5efd38fdb88f42"
      }
    }
  ]
}
