用机器重建我的博客,为机器服务·

Lobsters Hottest 工具

摘要

作者重建了博客,加入了完整的结构化数据标记(JSON-LD、微格式),并配备了一个由提示词引导的AI协作写作助手,该提示词避免了常见的LLM模式,同时通过CI验证防止数据损坏。

<p><a href="https://lobste.rs/s/1mhgan/rebuilding_my_blog_with_machines_for">评论</a></p>
查看原文
查看缓存全文

缓存时间: 2026/06/10 21:50

# 用机器为机器重建我的博客 · Ata Kuyumcu的博客 来源:https://blog.lvmbdv.dev/posts/rebuilding-my-blog-with-machines-for-machines/ 我最近重建了这个博客。不是重新设计。旧文章还在,同样的 URL,同样的标记。改变的是,每个页面现在都带有一个完整的结构化数据图谱,每个元素都标注了微格式(microformats)。新文章大多是与一个 AI 合作完成的——这个 AI 有一份它不允许听起来像什么的清单,外加一套语气规则。AI 起草,我编辑。结构化数据处理另一边:帮助机器理解内容。 ## 发挥作用的结构化数据 每个面页在 `<head>` 里都有一个 JSON-LD 块。不是插件。而是一段 120 行的 Hugo 部分模板,根据页面类型构建一个 `@graph`。对于博客文章,这个图谱包含四个 Schema.org 节点:一个 WebSite,一个 Person(我),一个对应 URL 的 WebPage,以及一个 BlogPosting——带有标题、日期、字数、标签作为关键词、以及封面图。面包屑导航会生成一个 BreadcrumbList,位置序号从页面的祖先遍历而来。标签页变成带有 ItemList 的 CollectionPage。首页只有 WebSite 和 Person。 有趣的部分不是标记本身,而是在每次推送时于 CI 中运行的验证脚本: ``` dangling = refs - ids_defined if dangling: errors.append(f"{rel}: dangling @id refs: {sorted(dangling)}") if "/posts/" in str(rel) and rel.name == "index.html": if "BlogPosting" not in types_seen: errors.append(f"{rel}: post missing BlogPosting node") ``` 这个脚本存在是因为当 AI 编辑模板部分时,它可能会悄无声息地破坏 `@id` 链。一个节点引用了 `#author`,但 Person 节点在重构中被丢掉了。图谱在浏览器中优雅降级,所以如果没有这道门,你永远注意不到,直到 Google 开始显示赤裸裸的 URL 而不是文章卡片。 同样的页面也承载着 IndieWeb 微格式。每篇文章都是一个 `h-entry`,包含 `dt-published`、`p-category`、`p-name`、`u-url`。首页有一个隐藏的 `h-card`,上面有我的名字,以及 `rel="me"` 链接到 GitHub、GitLab、Codeberg 和 Mastodon。一个 IndieAuth 解析器可以验证 github.com/lvmbdv 和 blog.lvmbdv.dev 属于同一个人。Webmention 端点已连接但被注释掉了。我还没设置接收端。标记已经在那里,等待着。 如果你正常阅读,这些什么都看不见。这正是关键。结构化数据是基础设施。它待在 `<head>` 和隐藏的 `<span>` 里。你只有在它坏掉的时候才会想起它,而验证脚本确保你在部署之前就能发现。 ## 给 AI 一个声音 原始的大语言模型(LLM)输出有一种气味。你读到它的时候就知道。维基百科的“AI 写作迹象”指南记录了 29 个总会出现的模式:重要性膨胀、避免系动词、优雅变体、滥用破折号、三段式填充、预告性表述。我把它们变成了一个提示。去掉这一切,你就会得到干净的文本。但干净并不等同于有声音。无菌的散文仍然明显不是人类写的:每个句子长度相同,没有观点,没有第一人称,没有幽默。读起来像新闻稿。 这个提示有一个“个性与灵魂”部分:变化你的节奏。要有观点。承认复杂性。在合适的时候用“我”。让一些混乱进来。表达具体感受,而不是使用泛泛的形容词。 除了模式,这个提示还有关于我如何写作的规则。没有预告:不要宣布你即将做什么,直接去做。以事物本身开始,而不是背景。短句没问题。片段也没问题。如果一个句子听起来像维基百科,就重写。有些规则是硬性的(绝不使用破折号)。其他规则更软,会在编辑中被抓住。 工作流程是:AI 起草,我阅读并指出听起来不对的地方,它重写。我再指出。通常两个或三个回合。有时 AI 写了一个技术上很干净但节奏死板的句子,解决办法是把它拆成两句或加一个片段。它并不总是明白为什么这个修改有效,但一旦我命名了那个模式,它就能应用。 声音校准也帮了忙。我给了 AI 一些我的写作样本,这样它就知道我喜欢用简短陈述句开头,我不加修饰地用“我”,我的段落不会累积到论点陈述。它并不完美。初稿永远不能发布。但从草稿到完成之间的距离在缩小。 ## 这带来了什么 那篇 SSD 尸检文章始于 AI 草稿。我给了它 dmesg 输出、照片、背景故事。它写了初稿。我删掉了铺垫,让笑话更尖锐,加了为什么我不只是阅读故障报告而是想亲眼看到它的段落。AI 重新组织了文字,并检查了结构化数据图谱。那篇关于阿尔比恩地下市场的文章也类似。我有了想法和机制。AI 起草了说明,我收紧语气,AI 清理了格式并验证了构建。 由此产生的分工:我来思考。AI 做其余的事情。它负责结构、研究、初稿、格式、验证。我的工作是产生想法,把草稿引向我的声音,以及知道一个句子在哪里出了问题。AI 从不自己掌握正确的声音。但它越来越接近,而它产出的东西与我发布的内容之间的距离每一次都在缩小。我只希望我的大脑不要也跟上这一步。

相似文章

我决定回归手写代码

Hacker News Top

作者在重构一个 Kubernetes 仪表盘工具时反思道,虽然借助 AI 进行“氛围编程”(vibe-coding)能加速功能开发,但在缺乏人工监督的情况下,往往会导致架构臃肿和技术债务。

关于构建论坛软件的思考

Hacker News Top

作者反思使用AI编码工具构建论坛软件bsBB的经历。作为一名非专业程序员,他们分享了利用LLM处理底层细节同时专注于系统设计的经验。