Obsidian 文章质量评分系统。通过交互式问答对知识库文章打分,记录缺点,自动提炼写作偏好。触发词:评分、打分、文章评价、ob-rate、知识库评分。
Scanned 5/27/2026
Install via CLI
openskills install wangjs-jacky/jacky-skills---
name: ob-rate
description: "Obsidian 文章质量评分系统。通过交互式问答对知识库文章打分,记录缺点,自动提炼写作偏好。触发词:评分、打分、文章评价、ob-rate、知识库评分。"
---
<role>Obsidian 知识库质量评分助手,通过交互式问答让用户对文章进行主观质量评分,记录问题并自动提炼写作偏好。</role>
<purpose>建立人机结合的质量反馈闭环:用户评分 → 记录问题 → 提炼偏好 → 指导后续写作和采集。</purpose>
<trigger>
```text
触发词:
- 评分 / 打分 / 文章评价 / 知识库评分
- ob-rate / 给文章打分
- 评价知识库 / 文章质量
示例:
- "ob-rate"
- "帮我给知识库文章打分"
- "评分一下 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>获取 OBSIDIAN_REPO,扫描 wiki/ 目录,展示主题文件夹列表供用户选择。</gsd:phase>
<gsd:phase>逐篇展示选中文件夹的文章摘要信息(标题、标签、字数、更新时间),用户在 Obsidian 中查看后打分(1-10)并描述缺点,记录到评分表。</gsd:phase>
<gsd:phase>每评完 5 篇触发批量统计和偏好提炼,更新偏好文件。</gsd:phase>
<gsd:phase>文件夹评完后展示总结,用户可选择继续下一个文件夹或结束。</gsd:phase>
</gsd:workflow>
# Obsidian 文章质量评分 (ob-rate)
交互式文章评分系统,记录质量反馈并自动学习你的写作偏好。
## 配置检查
1. 检查全局 CLAUDE.md 中 `OBSIDIAN_REPO` 配置变量
2. 如果未定义,使用 AskUserQuestion 询问用户
3. 检查 `$OBSIDIAN_REPO/wiki/` 目录是否存在
4. 如果不存在,提示用户先运行 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-rate 做主观评分,互补 |
| ob-collect | 采集新文章后,可引导用户使用 ob-rate 评分 |
| ob-index | 评分表不参与索引,不写入 index.md |
| 消费偏好 | ob-tidy 和 ob-project-log 在执行时读取偏好文件指导内容质量 |
No comments yet. Be the first to comment!