Obsidian 文章质量基准评测系统。通过交互式问答对知识库文章打分,记录缺点,自动提炼写作偏好。触发词:评分、打分、文章评价、ob-benchmark、知识库评分。
Scanned 9/5/2026
Install to Claude Code
npx -y skills add wangjs-jacky/jacky-skills --skill ob-benchmark --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Ob Benchmark?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/wangjs-jacky-ob-benchmark)More formats (shields.io, HTML) on the badges page.
---
name: ob-benchmark
description: "Obsidian 文章质量基准评测系统。通过交互式问答对知识库文章打分,记录缺点,自动提炼写作偏好。触发词:评分、打分、文章评价、ob-benchmark、知识库评分。"
---
<role>Obsidian 知识库质量评分助手,通过交互式问答让用户对文章进行主观质量评分,记录问题并自动提炼写作偏好。</role>
<purpose>建立人机结合的质量反馈闭环:用户评分 → 记录问题 → 提炼偏好 → 指导后续写作和采集。</purpose>
<trigger>
```text
触发词:
- 评分 / 打分 / 文章评价 / 知识库评分
- ob-benchmark / 给文章打分
- 评价知识库 / 文章质量
示例:
- "ob-benchmark"
- "帮我给知识库文章打分"
- "评分一下 claude 目录的文章"
- "评价一下我的文章质量"
```
</trigger>
<gsd:workflow xmlns:gsd="urn:gsd:workflow">
<gsd:meta>requires=OBSIDIAN_REPO; focus=rate,preference,feedback</gsd:meta>
<gsd:goal>通过交互式评分记录文章质量反馈,自动提炼用户写作偏好,持续优化知识库质量标准。</gsd:goal>
<gsd:phase>**委托 ob-router skill** 解析当前激活仓库路径,扫描 wiki/ 目录,展示主题文件夹列表供用户选择。</gsd:phase>
<gsd:phase>逐篇展示选中文件夹的文章摘要信息(标题、标签、字数、更新时间),用户在 Obsidian 中查看后打分(1-10)并描述缺点,记录到评分表。</gsd:phase>
<gsd:phase>每评完 5 篇触发批量统计和偏好提炼,更新偏好文件。</gsd:phase>
<gsd:phase>文件夹评完后展示总结,用户可选择继续下一个文件夹或结束。</gsd:phase>
</gsd:workflow>
# Obsidian 文章质量评分(ob-benchmark)
交互式文章评分系统,记录质量反馈并自动学习你的写作偏好。
## 配置检查
**【硬约束】仓库路径一律委托 ob-router skill 解析,本 skill 不自行读取路径文件。**
调用 ob-router skill 获取 `$OBSIDIAN_REPO`:
- ob-router 内部处理优先级(ob-router.json → CLAUDE.md → 询问)
- 若 ob-router.json 不存在,ob-router 会**主动提示** `ob-router init` 持久化
- 若存在多个仓库,ob-router 会**主动询问**切换目标,不静默使用默认值
将 ob-router 返回的路径保存为 `$OBSIDIAN_REPO`,后续全程使用此变量。
4. 检查 `$OBSIDIAN_REPO/wiki/` 目录是否存在
5. 如果不存在,提示用户先运行 ob-index 初始化
## 数据文件
### 评分表:`$OBSIDIAN_REPO/wiki/.ratings.md`
首次使用时自动创建,模板如下:
```markdown
---
type: meta
tags: [rating, system]
updated_at: {当前日期}
---
# 文章评分表
> 通过交互式评分记录每篇文章的质量反馈,持续优化知识库。
## 统计
| 指标 | 值 |
|------|-----|
| 已评分 | 0 |
| 平均分 | — |
| 最高分 | — |
| 最低分 | — |
## 评分记录
| ID | 文章 | 分数 | 问题标签 | 用户评价 | 评价时间 |
|-----|------|------|----------|----------|----------|
```
### 偏好文件:`$OBSIDIAN_REPO/wiki/.rating-preferences.md`
首次触发偏好提炼时自动创建,模板如下:
```markdown
---
type: meta
tags: [rating, preferences]
updated_at: {当前日期}
---
# 评分偏好
> 基于 {N} 篇已评分文章自动提炼的写作偏好。
## 高分文章特征(≥8分)
(评分积累后自动填充)
## 低分文章特征(≤5分)
(评分积累后自动填充)
## 偏好规则
(评分积累后自动填充量化规则)
```
## 执行流程
### 第一步:选择文件夹
1. 扫描 `$OBSIDIAN_REPO/wiki/` 下的所有一级子目录
2. 统计每个目录中的 `.md` 文件数量(排除 `index.md`、`log.md`、以 `.` 开头的文件)
3. 读取 `$OBSIDIAN_REPO/wiki/.ratings.md`,统计每个目录的已评分数
4. 使用 AskUserQuestion 展示选项:
```
📊 文章评分系统
主题目录:
1. ai/ (3篇, 已评0篇)
2. claude/ (8篇, 已评3篇)
3. current-affairs/ (10篇, 已评0篇)
...
选择要评分的文件夹(输入编号):
```
5. 用户选择后,筛选出该目录下未评分的文章(排除已出现在评分表中的文章)
6. 如果所有文章已评分,提示选择其他文件夹
### 第二步:逐篇评分
对每篇未评分文章,按顺序执行:
**展示文章**:
读取文章文件的 frontmatter 获取标题(第一个 `#` 标题)、tags、updated_at、article_id,统计正文字数(排除 frontmatter)。
```
━━━ [3/8] {相对路径} ━━━
🆔 {article_id} | 📂 标题: {文章标题}
🏷️ 标签: {tags 逗号分隔}
📝 约 {字数} 字 | 📅 更新: {updated_at}
请在 Obsidian 中查看文章后评分(1-10)并说明缺点:
(输入分数和意见,如 "7分,太长,缺代码示例")
(输入 s 跳过,输入 q 结束本轮)
```
如果文章缺少 `article_id`,显示为 `🆔 无ID`。
**解析用户输入**:
- 提取分数:找到输入中的 1-10 的整数(支持"7分"、"7"、"给7分"等格式)
- 如果输入中没有有效分数,提示"请输入 1-10 的分数"
- 提取问题标签:从用户描述中提取关键词作为问题标签
- 记录原始评价:保留用户的完整评价文字
**记录数据**:
将评分追加到 `$OBSIDIAN_REPO/wiki/.ratings.md` 的评分记录表:
```
| {article_id 或 "无ID"} | {相对路径去掉 wiki/ 前缀} | {分数} | {问题标签逗号分隔} | {用户评价} | {当前日期} |
```
更新统计部分:
- 已评分:+1
- 平均分:重新计算所有评分记录的平均值
- 最高分:取最大值,附文件名
- 最低分:取最小值,附文件名
- updated_at:更新为当前日期
### 第三步:批量统计与偏好提炼
**触发时机**:每评完 5 篇 或 文件夹评分结束时
**展示本轮统计**:
```
📊 本轮统计(已评{N}篇)
- 平均分:{x.x}
- 常见问题:{问题1}({n}次), {问题2}({n}次)
- 高分文章:{文件名}({分数}分)
- 低分文章:{文件名}({分数}分)
🧠 偏好更新
新增规则:
- {规则描述}
继续评分剩余 {N} 篇?
```
**偏好提炼逻辑**:
读取 `$OBSIDIAN_REPO/wiki/.ratings.md` 中的所有评分记录,执行以下分析:
1. **问题频率统计**:统计所有问题标签的出现次数,按频率降序排列。高频问题(出现 ≥3 次)为核心关注点
2. **分数-问题关联**:计算每个问题标签关联的文章平均分。平均分 < 5 的问题为强负面偏好
3. **高分特征提取**:分析所有 ≥8 分的文章,找出它们的共同特征
4. **低分特征提取**:分析所有 ≤5 分的文章,找出它们的共同特征
5. **增量更新**:将新分析结果与已有偏好合并。已有规则有新数据支撑时更新统计数字,发现新模式时追加规则
**更新偏好文件** `$OBSIDIAN_REPO/wiki/.rating-preferences.md`:
- 更新 `updated_at`
- 更新开头描述中的 N 值
- 重写"高分文章特征"部分
- 重写"低分文章特征"部分
- 更新"偏好规则"部分,每条规则附数据支撑(如"偏好短文(≤500字,平均得分 7.2 vs 长文 5.1)")
### 第四步:文件夹完成
一个文件夹所有文章评完后:
```
✅ {目录名}/ 目录评分完成
总评 {N} 篇,平均分 {x.x}
偏好文件已更新
选择下一个文件夹?还是结束?
```
用户选择后:
- 选另一个文件夹 → 回到第一步重新选择
- 结束 → 进入第五步
### 第五步:改进建议
评分结束后(用户选择结束或所有文件夹评完),基于评分数据和偏好规则生成可执行的改进建议。
**读取数据**:
1. 读取 `$OBSIDIAN_REPO/wiki/.ratings.md` 获取所有评分记录
2. 读取 `$OBSIDIAN_REPO/wiki/.rating-preferences.md` 获取偏好规则
**生成建议**:
按优先级分类输出:
```
🔧 改进建议(基于 {N} 篇评分数据)
🔴 建议删除({n} 篇,平均分 ≤2):
- {文件路径} ({分数}分) — {一句话原因}
...
🟡 建议迁移({n} 篇,分类不当):
- {文件路径} → {建议目录}/{建议文件名}
...
🟢 建议重写({n} 篇,有内容但质量不足):
- {文件路径} — {主要改进方向}
...
✅ 保持不变({n} 篇,≥6分):
- {文件路径} ({分数}分)
```
**执行方式**:
使用 AskUserQuestion 让用户选择要执行的操作:
```
选择要执行的改进(可多选):
□ 删除 {n} 篇低质量文章
□ 迁移 {n} 篇分类不当的文章
□ 查看重写建议(不自动执行)
□ 暂不操作,仅记录
```
- 用户选择"删除" → 确认后移到 `$OBSIDIAN_REPO/wiki/archive/` 目录(不直接删除)
- 用户选择"迁移" → 确认后移动文件并更新评分表中的路径
- 用户选择"重写建议" → 展示每篇的详细改进方向
- 用户选择"暂不操作" → 仅保存建议到 `$OBSIDIAN_REPO/wiki/.rating-actions.md`
## 输入解析规则
### 分数解析
从用户输入中提取 1-10 的整数,支持以下格式:
- "7分" → 7
- "7" → 7
- "给7分" → 7
- "我打7分" → 7
- "7/10" → 7
无法解析时提示"请输入 1-10 的分数"。
### 问题标签提取
从用户评价中提取有意义的关键词作为标签:
- "太长了" → `太长`
- "缺少代码示例" → `缺代码示例`
- "概念解释不清楚" → `概念不清`
- "没有引言" → `缺引言`
- "标题不明确" → `标题含糊`
标签应简短(≤6字),去除语气词。
### 命令处理
| 输入 | 动作 |
|------|------|
| `s` 或 `skip` | 跳过当前文章,继续下一篇 |
| `q` 或 `quit` | 结束本轮评分,保存进度 |
| `1`-`10`(纯数字) | 记录分数,追问缺点 |
## 边界条件
| 场景 | 处理 |
|------|------|
| 文件夹所有文章已评分 | 提示选择其他文件夹 |
| 用户输入不含有效分数 | 提示"请输入 1-10 的分数",等待重新输入 |
| 用户输入 s 跳过 | 跳过当前文章,继续下一篇 |
| 用户输入 q 结束 | 保存当前进度,展示已评统计后退出 |
| 评分文件不存在 | 首次使用,创建模板文件 |
| 偏好文件不存在 | 首次触发偏好提炼时创建 |
| 中途退出 Claude | 进度已实时保存到文件中,下次启动自动恢复 |
| wiki/ 下无子目录 | 提示用户先运行 ob-collect 采集内容 |
## 与其他 skill 的关系
| Skill | 关系 |
|-------|------|
| ob-tidy | ob-tidy 做自动检查(12项规则),ob-benchmark 做主观评分,互补 |
| ob-collect | 采集新文章后,可引导用户使用 ob-benchmark 评分 |
| ob-index | 评分表不参与索引,不写入 index.md |
| 消费偏好 | ob-tidy 和 ob-project-log 在执行时读取偏好文件指导内容质量 |
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!