a6f05ab2d5
- Phase 0: AGENTS.md cleanup (dedup quotes, renumber sections, merge qmd) - Phase 1: typed relations (manage-relations.py, graph-search.py, check-staleness.py, detect-conflicts.py) - Phase 2: frontmatter validator, weekly lint, knowledge promotion, git hooks - Fix .gitignore to track tools/ and .githooks/ - Fix git remote URL (remove plaintext token) - New wiki pages: 504 pages, 34 raw sources
412 lines
11 KiB
Markdown
412 lines
11 KiB
Markdown
---
|
||
categories:
|
||
- "[[LLM Wiki]]"
|
||
- "[[Documentation]]"
|
||
type: reference
|
||
tags:
|
||
- wiki
|
||
- documentation
|
||
created: 2026-04-14
|
||
source: "[[人物Wiki文件生成规范]]"
|
||
---
|
||
|
||
# 人物Wiki文件生成规范
|
||
|
||
> 本规范定义人物类Wiki笔记的创建标准,包括模板选择、frontmatter规范、Wikipedia URL生成规则、Base集成等。
|
||
|
||
## 一、模板选择规则
|
||
|
||
说明4个人物模板的适用场景:
|
||
|
||
| 模板 | 适用场景 | 典型人物 |
|
||
|------|----------|----------|
|
||
| **Author Template** | 以文字创作为主的人物 | 作家、学者、记者、评论家、编剧 |
|
||
| **People Template** | 通用人物(未特定为作者/演员/导演) | 历史人物、政治人物、军事人物、普通公众人物 |
|
||
| **Actors Template** | 以表演为职业的人物 | 电影演员、电视剧演员、话剧演员、艺人 |
|
||
| **Director Template** | 以导演/制片为职业的人物 | 电影导演、电视剧导演、制片人、编剧(侧重导演身份时) |
|
||
|
||
**选择原则**:
|
||
- 一个人物可能符合多个模板,选择其**最知名的身份**
|
||
- 例如:张艺谋既是导演也是摄影师,优先使用Director Template
|
||
- 例如:鲁迅既是作家也是思想家,优先使用Author Template
|
||
|
||
---
|
||
|
||
## 二、Frontmatter规范
|
||
|
||
### 2.1 统一格式
|
||
|
||
所有人物模板categories统一:
|
||
|
||
```yaml
|
||
categories:
|
||
- "[[LLM Wiki]]"
|
||
- "[[People]]"
|
||
```
|
||
|
||
### 2.2 Type字段设计
|
||
|
||
| 模板 | Type值 | 说明 |
|
||
|------|---------|------|
|
||
| Author Template | `type:\n - "People"\n - "Author"` | 主类型+作者角色 |
|
||
| People Template | `type:\n - "People"` | 通用人物(可扩展) |
|
||
| Actors Template | `type:\n - "People"\n - "Actors"` | 主类型+演员角色 |
|
||
| Director Template | `type:\n - "People"\n - "Director"` | 主类型+导演角色 |
|
||
|
||
⚠️ **格式规则**:
|
||
|
||
- type值使用双引号:`"People"`, `"Author"`
|
||
- type使用YAML列表格式,每行一个值
|
||
- type值**不能**使用wikilink格式(即不能用`[[People]]`)
|
||
|
||
### 2.3 Tags规范
|
||
|
||
使用`person/`前缀的层级标签:
|
||
|
||
| Tag前缀 | 说明 | 示例 |
|
||
|---------|------|------|
|
||
| `person/author` | 作者、作家 | person/author |
|
||
| `person/actor` | 演员、艺人 | person/actor |
|
||
| `person/director` | 导演 | person/director |
|
||
| `person/historical` | 历史人物 | person/historical |
|
||
| `person/politics` | 政治人物 | person/politics |
|
||
| `person/scholar` | 学者 | person/scholar |
|
||
| `person/military` | 军事人物 | person/military |
|
||
| `person/education` | 教育界人士 | person/education |
|
||
|
||
**使用规则**:
|
||
- 至少包含一个`person/xxx`标签
|
||
- 可同时使用多个标签(如`person/author` + `person/historical`)
|
||
|
||
---
|
||
|
||
## 三、Wikipedia URL生成规则
|
||
|
||
### 3.1 基础信息
|
||
|
||
- **Kiwix服务器URL**:`https://kiwix.haiguang.xyz:14004/viewer#wikipedia_zh_all_maxi_2025-09/`
|
||
- **本地数据文件**:`D:\BaiduNetdiskDownload\wikipedia_zh_all_maxi_2025-09.zim`
|
||
- **编码要求**:中文需进行URL编码(UTF-8 percent encoding)
|
||
|
||
### 3.2 URL编码示例
|
||
|
||
| 人物名 | URL编码 | 说明 |
|
||
|--------|----------|------|
|
||
| 李白 | `%E6%9D%8E%E7%99%BD` | 逐字符编码 |
|
||
| 张浩 | `%E5%BC%A0%E6%B5%A9` | 逐字符编码 |
|
||
| 王志纲 | `%E7%8E%8B%E5%BF%97%E7%BA%B2` | 逐字符编码 |
|
||
| Andrej Karpathy | `Andrej%20Karpathy` | 空格编码为`%20` |
|
||
|
||
### 3.3 完整URL示例
|
||
|
||
```
|
||
# 李白
|
||
https://kiwix.haiguang.xyz:14004/viewer#wikipedia_zh_all_maxi_2025-09/%E6%9D%8E%E7%99%BD
|
||
|
||
# 张浩
|
||
https://kiwix.haiguang.xyz:14004/viewer#wikipedia_zh_all_maxi_2025-09/%E5%BC%A0%E6%B5%A9
|
||
|
||
# 王志纲
|
||
https://kiwix.haiguang.xyz:14004/viewer#wikipedia_zh_all_maxi_2025-09/%E7%8E%8B%E5%BF%97%E7%BA%B2
|
||
|
||
# Andrej Karpathy
|
||
https://kiwix.haiguang.xyz:14004/viewer#wikipedia_zh_all_maxi_2025-09/Andrej%20Karpathy
|
||
```
|
||
|
||
### 3.4 URL编码方法
|
||
|
||
**方法1:在线工具**
|
||
- 使用<https://www.urlencoder.org/>
|
||
- 输入中文,自动生成编码
|
||
|
||
**方法2:Python脚本**
|
||
```python
|
||
from urllib.parse import quote
|
||
quote("李白") # 输出: %E6%9D%8E%E7%99%BD
|
||
quote("张浩") # 输出: %E5%BC%A0%E6%B5%A9
|
||
```
|
||
|
||
**方法3:浏览器**
|
||
- 在地址栏输入中文,复制自动编码的URL
|
||
|
||
**方法4:JavaScript**
|
||
```javascript
|
||
encodeURIComponent("李白") // 输出: %E6%9D%8E%E7%99%BD
|
||
```
|
||
|
||
---
|
||
|
||
## 四、Base Embed规则
|
||
|
||
| 模板 | Embed代码 | 显示内容 |
|
||
|------|-----------|----------|
|
||
| Author Template | `![[Books.base#Author]]` | 显示该作者的书籍列表 |
|
||
| Actors Template | `![[Movies.base#Actor]]` | 显示该演员参演的电影列表 |
|
||
| Director Template | `![[Movies.base#Director]]` | 显示该导演执导的电影列表 |
|
||
| People Template | 根据角色添加 | 如果是作者则添加Books embed,如果是演员/导演则添加Movies embed |
|
||
|
||
**Embed位置**:放在文档底部,"## 相关作品"或"## 作品列表"章节下。
|
||
|
||
---
|
||
|
||
## 五、照片嵌入规则
|
||
|
||
- **照片路径**:`Attachments/people/人物名.jpg`
|
||
- **嵌入语法**:`![[Attachments/people/人物名.jpg]]`
|
||
- **验证建议**:使用多模态大模型验证照片与人物的匹配性
|
||
|
||
### 5.1 照片自动获取方案
|
||
|
||
**可复用脚本**:`scripts/fetch_wikipedia_photo.py`
|
||
|
||
```bash
|
||
# 获取单个人物照片
|
||
python scripts/fetch_wikipedia_photo.py 张艺谋
|
||
|
||
# 指定语言
|
||
python scripts/fetch_wikipedia_photo.py "Alan Turing" --lang en
|
||
|
||
# 指定缩略图宽度
|
||
python scripts/fetch_wikipedia_photo.py 张艺谋 --width 600
|
||
|
||
# 批量获取
|
||
python scripts/fetch_wikipedia_photo.py 张艺谋 巩俐 章子怡 --batch
|
||
|
||
# 从文件读取人物列表
|
||
python scripts/fetch_wikipedia_photo.py --from-file people_list.txt
|
||
```
|
||
|
||
**原理:Wikipedia PageImages API**
|
||
|
||
```
|
||
https://{lang}.wikipedia.org/w/api.php?action=query&prop=pageimages&format=json&piprop=original&titles={人物名}
|
||
```
|
||
|
||
**手动获取流程**(网络受限时):
|
||
1. 通过 Exa 爬取 Wikipedia API JSON
|
||
2. 从返回 JSON 中提取 `original.source` 字段(图片URL)
|
||
3. 使用 Wikimedia 缩略图 URL 获取合适尺寸:在文件名前加 `/400px-`
|
||
4. 下载到 `Attachments/people/人物名.jpg`
|
||
|
||
---
|
||
|
||
## 六、信息自动填充工作流
|
||
|
||
### 6.1 从 Wikipedia 自动提取 Frontmatter 字段
|
||
|
||
**数据源**:通过 Exa 爬取中文 Wikipedia 页面(`https://zh.wikipedia.org/wiki/{人物名}`)
|
||
|
||
**提取规则**(从 Wikipedia infobox 提取):
|
||
|
||
| Frontmatter 字段 | Wikipedia infobox 字段 | 提取说明 |
|
||
|------------------|----------------------|----------|
|
||
| `birthday` | 出生 | 提取 YYYY-MM-DD 格式日期 |
|
||
| `death` | 逝世 | 提取日期,无则留空 |
|
||
| `nationality` | 国籍 | 默认"中国" |
|
||
| `origin` | 出生/籍贯 | 提取省市区 |
|
||
| `aliases` | 本名/别名 | 列表格式,加英文名 |
|
||
| `source` | — | 设为 `"[[Wikipedia]]"` |
|
||
|
||
**工作流**:
|
||
1. 使用 Exa 爬取 Wikipedia 页面内容
|
||
2. 提取 infobox 中的结构化数据
|
||
3. 按模板格式填充 frontmatter
|
||
4. 提取生平、作品、荣誉等章节内容
|
||
5. 生成完整的 wiki 笔记
|
||
|
||
**示例**:张艺谋的 Wikipedia infobox 提取结果:
|
||
```yaml
|
||
birthday: 1950-04-02
|
||
nationality: 中国
|
||
origin: 陕西省西安市
|
||
aliases:
|
||
- 张诒谋
|
||
- 老谋
|
||
- Yimou Zhang
|
||
```
|
||
|
||
---
|
||
|
||
## 七、Base 视图别名匹配
|
||
|
||
### 7.1 问题说明
|
||
|
||
当 Base 视图嵌入人物笔记时,`this` 指向嵌入文件(File 对象)。电影/书籍笔记的 `director`/`author` 字段可能是以下任一格式:
|
||
|
||
| 字段格式 | 示例 | 匹配难度 |
|
||
|----------|------|----------|
|
||
| 纯文本 | `director: 张艺谋` | `list.contains(this)` 可匹配 |
|
||
| 扩展名称 | `director: "张艺谋 Yimou Zhang"` | 需要子串匹配 |
|
||
| Wikilink | `director: "[[张艺谋]]"` | 需要 `file.hasLink()` 匹配 |
|
||
| 列表 | `director: ["张艺谋", "其他"]` | `list.contains(this)` 可匹配 |
|
||
|
||
`list.contains(this)` 只匹配精确值,`string.containsAny(this.aliases)` 可能无法正确展开 List 参数。
|
||
|
||
### 7.2 解决方案
|
||
|
||
所有涉及人物匹配的 Base 视图统一使用三重 `or` 条件:
|
||
|
||
```yaml
|
||
# Director 视图
|
||
filters:
|
||
or:
|
||
- list(director).contains(this) # 精确匹配(纯文本/列表)
|
||
- director.contains(this.file.name) # 子串匹配(扩展名称)
|
||
- file.hasLink(this.file) # Wikilink 匹配
|
||
|
||
# Actor 视图
|
||
filters:
|
||
or:
|
||
- list(cast).contains(this)
|
||
- cast.contains(this.file.name)
|
||
- file.hasLink(this.file)
|
||
|
||
# Author 视图
|
||
filters:
|
||
or:
|
||
- list(author).contains(this)
|
||
- author.contains(this.file.file.name)
|
||
- file.hasLink(this.file)
|
||
```
|
||
|
||
**三个条件各自覆盖**:
|
||
|
||
| 条件 | 覆盖场景 | 原理 |
|
||
|------|----------|------|
|
||
| `list(x).contains(this)` | `director: 张艺谋`、`director: ["张艺谋"]` | File 对象与列表元素匹配 |
|
||
| `x.contains(this.file.name)` | `director: "张艺谋 Yimou Zhang"` | 文件名作为子串在字段值中查找 |
|
||
| `file.hasLink(this.file)` | `director: "[[张艺谋]]"` | 检查笔记是否包含指向人物文件的链接 |
|
||
|
||
---
|
||
|
||
## 八、验证清单
|
||
|
||
创建人物笔记后,请逐项检查:
|
||
|
||
- [ ] frontmatter包含`[[LLM Wiki]]`和`[[People]]`categories
|
||
- [ ] type字段格式正确(字符串、引号包裹、列表格式)
|
||
- [ ] type值不使用wikilink格式
|
||
- [ ] tags包含至少一个`person/xxx`前缀标签
|
||
- [ ] source字段指向raw来源(单行字符串、wikilink格式)
|
||
- [ ] 文档底部包含相应的Base embed(Books/Movies)
|
||
- [ ] 照片路径正确:`Attachments/people/人物名.jpg`
|
||
- [ ] Wikipedia URL编码正确(如使用)
|
||
|
||
---
|
||
|
||
## 九、参考实例
|
||
|
||
| 文件 | 模板类型 | 特点 |
|
||
|------|----------|------|
|
||
| `wiki/张艺谋.md` | Director Template | ✅ 完整示例(Wikipedia数据填充、照片、Base embed) |
|
||
| `wiki/王志纲.md` | Author Template | 现代学者、作家 |
|
||
| `wiki/张浩.md` | People Template | 历史人物 |
|
||
| `wiki/李白.md` | People Template | 历史人物(诗人) |
|
||
|
||
---
|
||
|
||
## 十、快速参考
|
||
|
||
### 完整frontmatter示例
|
||
|
||
---
|
||
|
||
## 规范文档
|
||
|
||
详见 [[人物Wiki文件生成规范]]
|
||
|
||
**Author Template**:
|
||
```yaml
|
||
---
|
||
categories:
|
||
- "[[LLM Wiki]]"
|
||
- "[[People]]"
|
||
tags:
|
||
- wiki
|
||
- people
|
||
- person/author
|
||
type: entity
|
||
- "People"
|
||
- "Author"
|
||
source: "[[来源]]"
|
||
created: 2026-04-14
|
||
last: 2026-04-14
|
||
birthday:
|
||
death:
|
||
nationality: 中国
|
||
origin:
|
||
aliases: []
|
||
---
|
||
```
|
||
|
||
**Actors Template**:
|
||
```yaml
|
||
---
|
||
categories:
|
||
- "[[LLM Wiki]]"
|
||
- "[[People]]"
|
||
tags:
|
||
- wiki
|
||
- people
|
||
- person/actor
|
||
type: entity
|
||
- "People"
|
||
- "Actors"
|
||
source: "[[来源]]"
|
||
created: 2026-04-14
|
||
last: 2026-04-14
|
||
birthday:
|
||
death:
|
||
nationality: 中国
|
||
origin:
|
||
aliases: []
|
||
---
|
||
```
|
||
|
||
**Director Template**:
|
||
```yaml
|
||
---
|
||
categories:
|
||
- "[[LLM Wiki]]"
|
||
- "[[People]]"
|
||
tags:
|
||
- wiki
|
||
- people
|
||
- person/director
|
||
type: entity
|
||
- "People"
|
||
- "Director"
|
||
source: "[[来源]]"
|
||
created: 2026-04-14
|
||
last: 2026-04-14
|
||
birthday:
|
||
death:
|
||
nationality: 中国
|
||
origin:
|
||
aliases: []
|
||
---
|
||
```
|
||
|
||
**People Template**:
|
||
```yaml
|
||
---
|
||
categories:
|
||
- "[[LLM Wiki]]"
|
||
- "[[People]]"
|
||
tags:
|
||
- wiki
|
||
- people
|
||
- person/historical
|
||
type: entity
|
||
- "People"
|
||
source: "[[来源]]"
|
||
created: 2026-04-14
|
||
last: 2026-04-14
|
||
birthday:
|
||
death:
|
||
nationality: 中国
|
||
origin:
|
||
aliases: []
|
||
---
|
||
```
|