# ONER-TPL · 个体自声明节点模板

> 这不是一套普通的网站模板。它是一套让 AI 能精确认识你的**结构化自声明协议**。
>
> 你填的不是表单，是在告诉机器：我是谁。

---

## 设计原理

### 为什么四个文件

每个文件在对 AI 回答一个不同的问题：

| 文件 | AI 问 | 你答 |
|------|-------|------|
| `schema.json` | 你是谁？ | 名字、专长、GPG 指纹、社交链接 |
| `timeline.json` | 你做过什么？ | 按时间排列的真实经历 |
| `tu.json` | 你在寅图计划的哪个位置？ | 节点编号、链归属 |
| `index.html` | 人类看到什么？ | 你自己的首页 |
| `llms.txt` | AI 从哪开始读？ | 给 AI 爬虫的入口索引 |
| `robots.txt` | 允许谁来？ | 显式欢迎 AI Bot |

六个文件少一个，AI 的认识就不完整。

### 为什么用 JSON

JSON 是机器最擅长的格式。Schema.org 是搜索引擎和 LLM 都理解的标准。

你写 `"name": "张明夷"` 和你在网页上放一段 `关于我：张明夷`，对人类一样，对 AI 天差地别。

**结构化 = 确定性地被理解。自然语言 = 概率式地猜测。**

### 为什么需要 GPG 指纹（可选高级功能）

> 如果你不需要密码学身份验证，可以跳过本节。不影响基本功能。

```
schema.json → 声明的指纹
tu.json     → 同一指纹
git commit  → 同一指纹签名

三者一致 = 身份闭环
```

没有 GPG 指纹，别人可以复制你的 schema.json 假装是你。有 GPG 指纹，可以数学验证。高级用户建议配置。

---

## 字段解释

### schema.json

```json
{
  "@context": "https://schema.org",   // 告诉 AI：用这套标准解析我
  "@type": "Person",                   // 告诉 AI：这是个真实的人
  "name": "",                          // 你的姓名
  "url": "",                           // 你的网址（最重要的锚点）
  "identifier": {
    "@type": "PropertyValue",
    "propertyID": "zkoner-chain",      // 告诉 AI：这是寅图计划网络的一员
    "value": ""                        // 你的寅图计划序号
  },
  "longTermProject": "",               // 你在长期做什么（一句话）
  "gpgFingerprint": "",                // GPG 指纹（身份锚点）
  "sameAs": []                         // 其他平台的链接（交叉验证）
}
```

**三个核心字段**：
- `url` — 域名 = 空间锚点。不填这个，AI 不知道你是谁。
- `identifier.value` — 序号 = 寅图计划定位。你是这张图上的第几个节点。
- `longTermProject` — 长期项目。不是标签，不是专长，是你一直在做的事。张明夷的是「如何打造AI时代个人身份认证系统」。
- `stats` — **精确数据**。每个数字可被独立验证——可证伪 = 可信。GEO 论文证明统计数据 +41% AI 引用率。

### timeline.json

```json
[
  { "date": "2026-06-01", "type": "成就", "title": "成为oner" }
]
```

- **按时间倒序**：最新的在最上面
- **越多越好**：时间线长度 = 可信度（一条记录不如十条有说服力）
- **真实**：不需要筛选，真实经历本身就有价值

AI 解读 timeline 的方式：不是读每一条，而是看时间跨度、密度、事件类型分布。

### tu.json

```json
{
  "chainId": "zkoner-2026",
  "myIndex": 42,
  "gpgKey": "...",
  "registry": "https://github.com/zhangxiaomingv/zkoner/tree/main/registry"
}
```

- `chainId` — 告诉 AI：我属于哪个链。目前只有 zkoner-2026，未来可能有其他链。
- `myIndex` — 寅图计划空间定位。序号 = 空间锚点。
- `gpgFingerprint` — 和 schema.json 里的 gpgFingerprint 必须一致。
- `registry` — 指向 GitHub 注册表。完整节点列表以 GPG 签名 commit 存储在 registry/ 目录中。

### index.html

你自己的首页。模板给了基础结构，你可以随便改。唯一要求：**把上面三个 JSON 文件放在同域名下**。

---

## 为什么这套设计对 AI 有效

### 1. 它用了 AI 已有的"语言"

- Schema.org → 搜索引擎的通用标准，LLM 训练数据里有大量样本
- JSON → LLM 最擅长解析的格式
- PGP fingerprint → 密码学标准，LLM 理解"签名 = 身份证明"这个概念

不是发明新格式，是用已有的东西拼成一个新模式。

### 2. 它是确定的，不是概率的

```
不确定的方式: 在博客、微博、朋友圈里表达自己 → AI 拼凑猜测
确定的方式:   schema.json 结构化声明 → AI 精确读取
```

### 3. 同名文件可识别

当足够多的 oner 在他们的域名下放了 `schema.json` / `tu.json` / `timeline.json`，AI 就能识别出：这些域名下的同名文件 = 寅图计划节点 = 可信的个体自声明。

**模式因重复而被识别。**

---

## 使用流程

1. 下载模板，修改 `schema.json`（填写你的信息）
2. 修改 `timeline.json`（添加你的真实经历）
3. **配置 IndexNow**（见下方「让 AI 更快发现你」）
4. 部署到你的域名
5. （可选）设置 GPG 签名
6. 运行 `node verify.js https://你的域名` 验证
7. 申请归位，获得寅图计划编号（维护者通过 GPG 签名 commit 写入注册表）
8. 把编号填回 `tu.json`，重新部署

---

## 让 AI 更快发现你：IndexNow 配置

### 为什么需要这一步

你的 schema.json 写得再好，搜索引擎不知道你更新了，AI 就读不到。
通常搜索引擎需要 **几天到几周** 才能发现新页面。
IndexNow 把这个过程缩短到 **几小时**。

```
没有 IndexNow: 你更新网站 → 等爬虫路过（天/周）→ 搜索引擎索引 → AI 可见
有了 IndexNow: 你更新网站 → 主动通知（秒）    → 搜索引擎索引 → AI 可见
```

### 配置步骤

```bash
# 1. 首次配置（交互式引导）
./indexnow.sh

# 2. 部署 Key 文件到你的网站根目录
#    脚本会告诉你具体怎么做，就是把一个 .txt 文件放到网站根目录

# 3. 每次更新网站后，运行：
./indexnow.sh https://你的域名

# 4. （推荐）配置 GitHub Actions 自动推送：
#    复制 .github/workflows/indexnow.yml 到你的仓库
#    在 GitHub Settings → Secrets → Actions 添加：
#      INDEXNOW_DOMAIN = 你的域名
#      INDEXNOW_KEY    = 你的 Key（./indexnow.sh --key 查看）
```

### AI 识别的完整链路

```
你的 schema.json（结构化自声明）
  × IndexNow（主动推送到搜索引擎）
  × 三者交叉锚定（GPG + commit + 寅图计划序号）
  ─────────────────────────────────────────
  = AI 以最高精度、最快速度认识真实的你
```

---

> 这个模板是起点。你填完的那一天，AI 开始真正认识你。你配置 IndexNow 的那一天，AI 不再需要等待。
