Web 应该是机器可读的。这里有一个简单的方法。

发布: (2026年2月17日 GMT+8 21:23)
6 分钟阅读
原文: Dev.to

Source: Dev.to

问题很简单

每个互联网上的 AI 代理都在做同一件事:获取 HTML,猜测内容是什么,却常常猜错。

当 AI 工具尝试使用你的网站时,它看到的内容是:

![](/avatars/sarah.jpg)
Sarah Chen

AI Agents Need Structure

The web was built for...

BUY NOW

“Sarah Chen” 是作者还是评论者?文章在哪里结束,广告从哪里开始?机器必须进行猜测,而它经常猜错。

我们有 robots.txt 来告诉机器哪些内容要避开。我们却没有任何东西告诉它们我们 拥有 的内容。


我的信念

  • 网络应该被机器读取——不仅仅是人类。
    AI 代理正成为人们获取信息的方式。如果你的内容没有为它们结构化,就会越来越不可见。

  • 结构化数据不应需要自定义 API。
    如今每一次集成都需要定制,每一个爬虫都是临时方案。应该有一种简单的约定,适用于所有场景。

  • 署名不应是可选的。
    如果机器读取你的内容,它应该知道内容的作者以及如何给出信用。这应当是协议的一部分,而不是事后补充。

  • 开放优于专有。
    如果我们不为此建立开放标准,每家 AI 公司都会构建自己的封闭管道。这对所有人都更糟。

所以我构建了一个东西

FlyWeb 是位于 /.well-known/flyweb.json 的 JSON 文件。它让任何网站以机器可理解的方式描述其内容。

{
  "flyweb": "1.0",
  "entity": "My Tech Blog",
  "type": "blog",
  "attribution": {
    "required": true,
    "must_link": true
  },
  "resources": {
    "posts": {
      "path": "/.flyweb/posts",
      "format": "jsonl",
      "fields": ["title", "author", "date", "tags", "content", "url"],
      "access": "free",
      "query": "?tag={tag}&limit={n}"
    }
  }
}

单个文件。一个能够找到它的 AI 代理就能知道你拥有何种内容、在哪里可以获取干净的数据、如何查询以及如何给你署名。无需 SDK、无需 API 密钥、无需 OAuth——只需要一个文件和一个约定。

工作原理

发现 – AI 代理检查 /.well-known/flyweb.json,类似爬虫检查 robots.txt

结构 – 内容以干净的 JSON 或 JSONL 形式在您定义的路径上提供。

GET /.flyweb/posts
{"title": "Why AI Needs Structure", "author": "Sarah Chen", "date": "2026-02-15", "content": "..."}
{"title": "The Future of Web Protocols", "author": "Sarah Chen", "date": "2026-02-10", "content": "..."}

查询 – 标准 URL 参数。没有花哨的东西。

GET /.flyweb/posts?tag=ai&limit=5

前后对比

没有 FlyWeb – AI 进行猜测。它解析你的 Tailwind 类,希望找到正确的元素,却只能给你零分。

使用 FlyWeb – AI 得到以下内容:

{
  "title": "AI Agents Need Structure",
  "author": "Sarah Chen",
  "date": "2026-02-15",
  "tags": ["ai", "web"],
  "content": "The web was built for...",
  "url": "https://example.com/posts/42"
}

没有猜测。没有抓取。没有幻觉式的元数据。

署名不是可选的

这是我最关心的部分。

{
  "attribution": {
    "required": true,
    "license": "CC-BY-4.0",
    "must_link": true
  }
}

你可以免费提供你的内容。你不应该失去署名权。在 FlyWeb 中,署名是协议的一部分——不是建议,也不是“最佳实践”,而是规范要求。


添加仅需几分钟

CLI

npx flyweb init

框架插件

npm i next-flyweb      # Next.js
npm i astro-flyweb     # Astro
npm i sveltekit-flyweb # SvelteKit
npm i nuxt-flyweb      # Nuxt
npm i express-flyweb   # Express

WordPress

有一个 plugin 可以自动从你的文章和页面生成配置。

验证

npx flyweb check https://your-site.com

面向 AI 开发者

用于消费 FlyWeb 数据的客户端 SDK

import { discover, fetchResource } from 'flyweb/client';

const site = await discover('https://techcrunch.com');
const articles = await fetchResource(
  'https://techcrunch.com',
  site.config.resources.articles,
  { params: { tag: 'ai' }, limit: 10 }
);
// Clean JSON. No scraping.

用于 Claude Code、Cursor 等工具的 MCP 服务器

{
  "mcpServers": {
    "flyweb": {
      "command": "npx",
      "args": ["-y", "flyweb-mcp"]
    }
  }
}

我不知道这是否会成功

我不会假装这一定会成功。协议很难。采纳更难。

但问题是真实存在的。AI 代理正在盲目抓取网页,内容创作者却没有得到适当的归属或结构。FlyWeb 旨在为双方提供一个清晰、开放且易于实现的解决方案。

获得零信用

每过去一个没有开放标准的月份,专有流程就会更加根深蒂固。

FlyWeb 是一个小小的尝试,认为简单的开放约定可以在为时已晚之前解决这个问题。


协议是开放的

  • GitHub
  • Spec
  • Website
  • Docs
  • npm
  • MCP Server

MIT 许可证。没有供应商锁定。无需付费。如果你认为网络应该可被机器读取,欢迎尝试。如果你有想法,欢迎提交 PR。

网络是为人类的眼睛而建的。它不应止步于此。

0 浏览
Back to Blog

相关文章

阅读更多 »