Content Discovery Skill
自动化内容发现工作流:扫描数据源 → 智能分析 → 发布内容 → 优化关键词
输入配置
每个发现任务需要以下配置:
- 任务ID: {task_id}
- 任务配置文件: config/tasks/{task_id}.md
- 关键词文件: config/keywords/{task_id}.json
- 会话目录: temp/sessions/{task_id}/{session_id}/
- 输出目录: posts/{task_id}/
工作流程(5个阶段)
阶段 1: 数据源检测和选择
读取任务配置 (config/tasks/{task_id}.md)
- 提取已启用的数据源
- 读取过滤规则 (YAML 格式)
- 读取发布配置
检测可用工具
- 优先检测 MCP 服务 (mcp__hf-mcp-server__*)
- Fallback 到 WebSearch
- 记录选择的工具到会话日志
读取关键词 (config/keywords/{task_id}.json)
阶段 2: 内容搜索和过滤
执行搜索
- 使用选定的工具 (MCP 或 WebSearch)
- 应用关键词构建查询
应用过滤规则
- 根据task_type应用相应过滤规则
- GitHub: minimum_stars, has_readme, time_range
- ArXiv: time_range, categories, author_email_domains
- HuggingFace: min_downloads, min_likes, tags
AI 语义去重
- 列出已发布文件: posts/{task_id}/*.json
- 提取文件名中的语义信息
- 使用 AI 判断新内容与已有内容的语义相似度
- 如果相似度 > 90%,判定为重复,跳过
阶段 3: 内容分析和评估
提取元数据
- 标题、作者/创建者、发布日期、摘要等
- 相关 URL(github_url, official_url, demo_url)
数据来源追踪(重要)
必须添加 metadata 字段用于数据溯源和二次更新:
{
"metadata": {
"source_url": "<数据采集的原始URL>",
"source_type": "<自动检测: github/huggingface/arxiv/web>",
"collected_at": "<当前时间 ISO 8601>",
"updated_at": "<当前时间 ISO 8601>",
"task_id": "<当前任务ID>",
"source_details": {
// 根据 source_type 添加特定信息
// GitHub: {"repo": "...", "branch": "main"}
// HuggingFace: {"repo_type": "model", "repo_id": "..."}
// ArXiv: {"arxiv_id": "...", "version": "v1"}
}
}
}
自动类型检测规则:
- URL 包含
github.com → source_type: "github"
- URL 包含
huggingface.co → source_type: "huggingface"
- URL 包含
arxiv.org → source_type: "arxiv"
- 其他 → source_type: "web"
生成内容摘要与观点提炼
- 风格要求: 高质量公众号/小红书/Twitter文章风格
- 信息密度: 高密度,无废话,直击要点
- 内容结构:
- 核心观点:提炼1-2句精华观点(独特见解)
- 技术亮点:3-5个关键技术点(带数据支撑)
- 实用价值:实际应用场景和价值分析
- 写作原则:
- 有态度:明确的技术判断和评价
- 有深度:不仅介绍"是什么",更分析"为什么"和"意味着什么"
- 有对比:与同类方案对比,突出差异和优势
- 有洞察:提供超越论文本身的思考
- 语言风格: 专业但不枯燥,准确但不晦涩
- 长度控制: 800-1500字(不是字符),信息密度优先
- 必须包含: 原文链接(arXiv/GitHub/官网)
- 重要: 所有内容必须为中文
质量标准检查(根据任务类型)
Foundation Models:
- ✅ 提取技术报告链接(优先 arxiv.org)
- ✅ 确保 release_date 使用实际发布日期(非采集日期)
- ✅ 内容长度 ≥ 1500 字符
- ✅ 全部中文翻译
- ✅ 保留 source_url
MCP Servers:
- ✅ 提取所有工具列表(tools_resources.tools)
- ✅ 每个工具必须包含: name, description, parameters
- ✅ 如果无法获取工具文档,直接跳过该内容(不发布)
- ✅ 提供配置示例(config_example)
- ✅ 内容长度 ≥ 1500 字符
- ✅ 全部中文翻译
Prompt Papers:
- ✅ 确保包含 arxiv_url
- ✅ 内容长度 ≥ 1000 字符
- ✅ 全部中文翻译
评分与过滤
- 根据配置的 scoring_weights 评估
- 过滤低于 minimum_score 的内容
- 如果不符合质量标准,直接跳过
注意:详见 docs/DATA_SOURCE_TRACKING.md 和 docs/CONTENT_QUALITY_STANDARDS.md
阶段 3.5: 图片提取和下载(AI Agent 主导)
由 AI Agent 直接处理,无需独立脚本
图片发现(AI 分析)
- 使用 WebFetch/Read 工具获取内容页面(GitHub README、HF Model Card)
- AI 分析页面内容,提取所有图片 URL
- AI 智能识别图片类型:
- Cover: 宽高比 16:9,尺寸较大,位于顶部,包含 "cover/banner/hero" 关键词
- Screenshot: 包含 "screenshot/demo/preview" 关键词或上下文
- Diagram: 包含 "arch/diagram/flow/structure" 关键词
- Badge/Icon: 自动排除(尺寸 < 50x50px 或包含 badge/shield 关键词)
智能选择(AI 决策)
- Cover: 选择 1 张最合适的(优先 16:9,尺寸 ≥ 800px)
- Screenshots: 最多 3 张最重要的
- Diagrams: 最多 3 张架构图/流程图
- AI 评估图片的内容价值和相关性
下载到本地(Bash 工具)
# Agent 调用 Bash 工具
source .claude-plugin/scripts/discover/image_utils.sh
# 创建目录
IMAGE_DIR=$(create_image_dir "{task_id}" "{slug}")
# 下载封面
download_image "https://example.com/cover.png" \
"$IMAGE_DIR/cover.png"
# 下载截图
download_image "https://example.com/screenshot-1.png" \
"$IMAGE_DIR/screenshot-1.png"
# 下载架构图
download_image "https://example.com/architecture.svg" \
"$IMAGE_DIR/diagram-1.svg"
# 获取图片尺寸
SIZE=$(get_image_size "$IMAGE_DIR/cover.png")
更新 JSON 数据(AI Agent)
- Agent 使用 Write 工具更新 JSON 文件
- 添加完整的图片信息:
{
"images": {
"cover": {
"original_url": "https://...",
"local_path": "images/{task_id}/{slug}/cover.png",
"alt": "AI生成的描述性文本",
"width": 1200,
"height": 630,
"downloaded": true
},
"screenshots": [
{
"original_url": "https://...",
"local_path": "images/{task_id}/{slug}/screenshot-1.png",
"alt": "...",
"caption": "AI生成的说明",
"downloaded": true
}
],
"diagrams": [...]
},
"featured_image": "images/{task_id}/{slug}/cover.png"
}
错误处理
- 下载失败: 标记
downloaded: false,保留原始 URL
- 超大文件(>5MB): curl 自动拒绝
- 网络超时: Agent 可选择重试
- 图片无效: 使用 validate_image 检查,清理失败文件
工具集:
.claude-plugin/scripts/discover/image_utils.sh - Bash 辅助函数
- Agent 的 WebFetch/Read - 页面内容获取
- Agent 的 Bash - 执行下载命令
- Agent 的 Write - 更新 JSON
注意: 详见 docs/IMAGE_MANAGEMENT.md
阶段 4: 发布
保存原始数据
- 保存为 JSON 格式到 posts/{task_id}/
- 文件命名: {date}{topic}{title-slug}.json
- 必须包含 metadata 字段(用于数据追溯和二次更新)
- 确保 metadata.source_url 指向原始数据页面
读取发布配置
- 从任务配置文件读取 hexo, telegram, discord 配置
- 检查 enabled 字段
发布到启用的渠道
Hexo博客 (如果 hexo.enabled: true):
- 读取 hexo.template 模板
- 使用AI将JSON数据转换为高质量markdown
- 理解并处理模板中的条件逻辑 ({{#if}})
- 填充所有变量 ({{variable}})
- 处理图片引用:
- 使用
featured_image 作为文章头图
- 在正文中插入 screenshots 和 diagrams
- 图片路径使用相对路径:
/images/{task_id}/{slug}/xxx.png
- 为所有图片添加 alt 文本
- 保存到 ${HEXO_PATH}/{post_dir}/
- 文件名: {actual_date}-{slug}.md
- 重要: 使用模型的实际发布日期作为文章日期,不是采集日期
- ⚠️ 强制规则: categories 字段必须使用小写(如 models, papers, engineering)
- 原因:SEO最佳实践,避免大小写URL重复内容惩罚
- 错误示例:categories: ["Models"] ❌
- 正确示例:categories: ["models"] ✅
Telegram频道 (如果 telegram.enabled: true):
- 使用 telegram.format 格式化内容
- 发送到 telegram.channel_id
Discord频道 (如果 discord.enabled: true):
- 使用 discord webhook 发送
- 格式化为 Discord embed
验证发布
- 确认所有启用的渠道都发布成功
- 记录发布结果到会话日志
阶段 4.5: 质量验证(发布后检查)
内容完整性检查
- JSON 文件包含所有必需字段
- Markdown 文件格式正确
- 图片文件成功下载
质量标准验证(根据任务类型)
Foundation Models:
# 检查必需字段
- metadata.source_url 存在
- release_date 不等于 collected_at
- technical_report 字段(如果适用)
- 内容为中文且 ≥ 1500 字符
MCP Servers:
# 检查工具文档
- tools_resources.tools 非空数组
- 每个 tool 包含 name, description
- config_example 存在
- 内容为中文且 ≥ 1500 字符
Prompt Papers:
# 检查论文链接
- arxiv_url 存在且有效
- 内容为中文且 ≥ 1000 字符
失败处理
- 如果验证失败,删除已发布的 JSON 和 Markdown
- 记录失败原因到会话日志
- 不计入发布统计
归档不合格内容
- 移动到 config/.archived/quality-failed-{date}/
- 保留删除记录用于后续改进
阶段 5: 关键词优化
分析新内容
关键词发现
- 计算新词的出现频率和置信度
- 过滤置信度低于 0.85 的词
更新关键词文件
- 更新 config/keywords/{task_id}.json
输出要求
每个任务完成后输出执行摘要:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📊 任务执行完成: {task_id}
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
数据源: {使用的工具}
搜索结果: {总数}
过滤后: {数量}
去重后: {数量}
质量检查: {通过/失败}
发布成功: {数量}
质量统计:
• 中文内容: {数量}/{总数} (100% required)
• 符合长度要求: {数量}/{总数}
• 包含必需字段: {数量}/{总数}
任务特定指标:
• [Foundation Models] 有技术报告: {数量}/{总数}
• [MCP Servers] 有工具文档: {数量}/{总数}
• [Prompt Papers] 有arxiv链接: {数量}/{总数}
发布渠道:
• JSON原始数据: {数量}个文件(含 metadata.source_url)
• Hexo博客: {已发布/跳过/失败} (如果enabled)
• Telegram: {已发送/跳过/失败} (如果enabled)
• Discord: {已发送/跳过/失败} (如果enabled)
图片下载:
• 封面: {数量}
• 截图: {数量}
• 架构图: {数量}
新发现关键词: {数量}
质量不合格(已跳过):
• 无工具文档: {数量}
• 内容过短: {数量}
• 非中文内容: {数量}
• 缺少必需字段: {数量}
保存位置:
• JSON: posts/{task_id}/
• 图片: blog/source/images/{task_id}/
• Hexo: {HEXO_PATH}/{post_dir}/ (如果enabled)
• 归档: config/.archived/ (如果有不合格内容)
会话日志: temp/sessions/{task_id}/{session_id}/
💡 二次更新: 所有 JSON 包含 metadata.source_url,可用于未来更新
⚠️ 质量优先: 不符合标准的内容已被跳过或归档
错误处理
如果执行失败:
- 记录详细错误到 logs/{task_id}_{session_id}.log
- 保存中间结果到会话目录
- 返回错误摘要
工具和脚本
可用的辅助脚本:
.claude-plugin/scripts/discover/image_utils.sh - 图片下载和处理
.claude-plugin/scripts/discover/update_index.sh - 更新任务索引
.claude-plugin/scripts/discover/check.sh - 前置环境检查
.claude-plugin/scripts/discover/parse_tasks.sh - 任务解析
并行执行支持
此 Skill 支持并行处理多个任务。当同时执行多个任务时:
- 每个任务创建独立的会话目录
- 任务之间相互隔离,互不影响
- 所有任务完成后汇总统计信息
1---2name: content-discovery3description: Automated content discovery workflow for scanning multiple data sources (ArXiv, GitHub, HuggingFace), applying AI-powered semantic filtering and deduplication, analyzing content quality, downloading images, and publishing to multiple channels (Hexo blog, Telegram, Discord). Use this skill when: - Executing /discover command with task configurations - Scanning academic papers from ArXiv (via MCP or WebSearch) - Finding GitHub repositories or HuggingFace models - Applying semantic AI filtering to avoid duplicate content - Generating high-quality Chinese summaries and insights - Publishing structured content with metadata tracking This skill handles the complete end-to-end discovery pipeline including data source detection, content filtering, quality validation, image extraction, and multi-channel publishing.4---5
6# Content Discovery Skill
7
8自动化内容发现工作流:扫描数据源 → 智能分析 → 发布内容 → 优化关键词
9
10## 输入配置
11
12每个发现任务需要以下配置:
13
141. **任务ID**: {task_id}
152. **任务配置文件**: config/tasks/{task_id}.md
163. **关键词文件**: config/keywords/{task_id}.json
174. **会话目录**: temp/sessions/{task_id}/{session_id}/
185. **输出目录**: posts/{task_id}/
19
20## 工作流程(5个阶段)
21
22### 阶段 1: 数据源检测和选择
23
241. **读取任务配置** (config/tasks/{task_id}.md)
25 - 提取已启用的数据源
26 - 读取过滤规则 (YAML 格式)
27 - 读取发布配置
28
292. **检测可用工具**
30 - 优先检测 MCP 服务 (mcp__hf-mcp-server__*)
31 - Fallback 到 WebSearch
32 - 记录选择的工具到会话日志
33
343. **读取关键词** (config/keywords/{task_id}.json)
35 - 提取所有类别的关键词
36 - 用于构建搜索查询
37
38### 阶段 2: 内容搜索和过滤
39
401. **执行搜索**
41 - 使用选定的工具 (MCP 或 WebSearch)
42 - 应用关键词构建查询
43
442. **应用过滤规则**
45 - 根据task_type应用相应过滤规则
46 - GitHub: minimum_stars, has_readme, time_range
47 - ArXiv: time_range, categories, author_email_domains
48 - HuggingFace: min_downloads, min_likes, tags
49
503. **AI 语义去重**
51 - 列出已发布文件: posts/{task_id}/*.json
52 - 提取文件名中的语义信息
53 - 使用 AI 判断新内容与已有内容的语义相似度
54 - 如果相似度 > 90%,判定为重复,跳过
55
56### 阶段 3: 内容分析和评估
57
581. **提取元数据**
59 - 标题、作者/创建者、发布日期、摘要等
60 - 相关 URL(github_url, official_url, demo_url)
61
622. **数据来源追踪(重要)**
63 必须添加 `metadata` 字段用于数据溯源和二次更新:
64 ```json
65 {
66 "metadata": {
67 "source_url": "<数据采集的原始URL>",
68 "source_type": "<自动检测: github/huggingface/arxiv/web>",
69 "collected_at": "<当前时间 ISO 8601>",
70 "updated_at": "<当前时间 ISO 8601>",
71 "task_id": "<当前任务ID>",
72 "source_details": {
73 // 根据 source_type 添加特定信息
74 // GitHub: {"repo": "...", "branch": "main"}
75 // HuggingFace: {"repo_type": "model", "repo_id": "..."}
76 // ArXiv: {"arxiv_id": "...", "version": "v1"}
77 }
78 }
79 }
80 ```
81
82 **自动类型检测规则**:
83 - URL 包含 `github.com` → source_type: "github"
84 - URL 包含 `huggingface.co` → source_type: "huggingface"
85 - URL 包含 `arxiv.org` → source_type: "arxiv"
86 - 其他 → source_type: "web"
87
883. **生成内容摘要与观点提炼**
89 - **风格要求**: 高质量公众号/小红书/Twitter文章风格
90 - **信息密度**: 高密度,无废话,直击要点
91 - **内容结构**:
92 * 核心观点:提炼1-2句精华观点(独特见解)
93 * 技术亮点:3-5个关键技术点(带数据支撑)
94 * 实用价值:实际应用场景和价值分析
95 - **写作原则**:
96 * 有态度:明确的技术判断和评价
97 * 有深度:不仅介绍"是什么",更分析"为什么"和"意味着什么"
98 * 有对比:与同类方案对比,突出差异和优势
99 * 有洞察:提供超越论文本身的思考
100 - **语言风格**: 专业但不枯燥,准确但不晦涩
101 - **长度控制**: 800-1500字(不是字符),信息密度优先
102 - **必须包含**: 原文链接(arXiv/GitHub/官网)
103 - **重要**: 所有内容必须为中文
104
1054. **质量标准检查**(根据任务类型)
106
107 **Foundation Models**:
108 - ✅ 提取技术报告链接(优先 arxiv.org)
109 - ✅ 确保 release_date 使用实际发布日期(非采集日期)
110 - ✅ 内容长度 ≥ 1500 字符
111 - ✅ 全部中文翻译
112 - ✅ 保留 source_url
113
114 **MCP Servers**:
115 - ✅ 提取所有工具列表(tools_resources.tools)
116 - ✅ 每个工具必须包含: name, description, parameters
117 - ✅ **如果无法获取工具文档,直接跳过该内容**(不发布)
118 - ✅ 提供配置示例(config_example)
119 - ✅ 内容长度 ≥ 1500 字符
120 - ✅ 全部中文翻译
121
122 **Prompt Papers**:
123 - ✅ 确保包含 arxiv_url
124 - ✅ 内容长度 ≥ 1000 字符
125 - ✅ 全部中文翻译
126
1275. **评分与过滤**
128 - 根据配置的 scoring_weights 评估
129 - 过滤低于 minimum_score 的内容
130 - **如果不符合质量标准,直接跳过**
131
132**注意**:详见 `docs/DATA_SOURCE_TRACKING.md` 和 `docs/CONTENT_QUALITY_STANDARDS.md`
133
134### 阶段 3.5: 图片提取和下载(AI Agent 主导)
135
136**由 AI Agent 直接处理,无需独立脚本**
137
1381. **图片发现(AI 分析)**
139 - 使用 WebFetch/Read 工具获取内容页面(GitHub README、HF Model Card)
140 - AI 分析页面内容,提取所有图片 URL
141 - AI 智能识别图片类型:
142 * Cover: 宽高比 16:9,尺寸较大,位于顶部,包含 "cover/banner/hero" 关键词
143 * Screenshot: 包含 "screenshot/demo/preview" 关键词或上下文
144 * Diagram: 包含 "arch/diagram/flow/structure" 关键词
145 * Badge/Icon: 自动排除(尺寸 < 50x50px 或包含 badge/shield 关键词)
146
1472. **智能选择(AI 决策)**
148 - Cover: 选择 1 张最合适的(优先 16:9,尺寸 ≥ 800px)
149 - Screenshots: 最多 3 张最重要的
150 - Diagrams: 最多 3 张架构图/流程图
151 - AI 评估图片的内容价值和相关性
152
1533. **下载到本地(Bash 工具)**
154 ```bash
155 # Agent 调用 Bash 工具
156 source .claude-plugin/scripts/discover/image_utils.sh
157
158 # 创建目录
159 IMAGE_DIR=$(create_image_dir "{task_id}" "{slug}")
160
161 # 下载封面
162 download_image "https://example.com/cover.png" \
163 "$IMAGE_DIR/cover.png"
164
165 # 下载截图
166 download_image "https://example.com/screenshot-1.png" \
167 "$IMAGE_DIR/screenshot-1.png"
168
169 # 下载架构图
170 download_image "https://example.com/architecture.svg" \
171 "$IMAGE_DIR/diagram-1.svg"
172
173 # 获取图片尺寸
174 SIZE=$(get_image_size "$IMAGE_DIR/cover.png")
175 ```
176
1774. **更新 JSON 数据(AI Agent)**
178 - Agent 使用 Write 工具更新 JSON 文件
179 - 添加完整的图片信息:
180 ```json
181 {
182 "images": {
183 "cover": {
184 "original_url": "https://...",
185 "local_path": "images/{task_id}/{slug}/cover.png",
186 "alt": "AI生成的描述性文本",
187 "width": 1200,
188 "height": 630,
189 "downloaded": true
190 },
191 "screenshots": [
192 {
193 "original_url": "https://...",
194 "local_path": "images/{task_id}/{slug}/screenshot-1.png",
195 "alt": "...",
196 "caption": "AI生成的说明",
197 "downloaded": true
198 }
199 ],
200 "diagrams": [...]
201 },
202 "featured_image": "images/{task_id}/{slug}/cover.png"
203 }
204 ```
205
2065. **错误处理**
207 - 下载失败: 标记 `downloaded: false`,保留原始 URL
208 - 超大文件(>5MB): curl 自动拒绝
209 - 网络超时: Agent 可选择重试
210 - 图片无效: 使用 validate_image 检查,清理失败文件
211
212**工具集**:
213- `.claude-plugin/scripts/discover/image_utils.sh` - Bash 辅助函数
214- Agent 的 WebFetch/Read - 页面内容获取
215- Agent 的 Bash - 执行下载命令
216- Agent 的 Write - 更新 JSON
217
218**注意**: 详见 `docs/IMAGE_MANAGEMENT.md`
219
220### 阶段 4: 发布
221
2221. **保存原始数据**
223 - 保存为 JSON 格式到 posts/{task_id}/
224 - 文件命名: {date}_{topic}_{title-slug}.json
225 - **必须包含 metadata 字段**(用于数据追溯和二次更新)
226 - 确保 metadata.source_url 指向原始数据页面
227
2282. **读取发布配置**
229 - 从任务配置文件读取 hexo, telegram, discord 配置
230 - 检查 enabled 字段
231
2323. **发布到启用的渠道**
233
234 **Hexo博客** (如果 hexo.enabled: true):
235 - 读取 hexo.template 模板
236 - 使用AI将JSON数据转换为高质量markdown
237 - 理解并处理模板中的条件逻辑 ({{#if}})
238 - 填充所有变量 ({{variable}})
239 - **处理图片引用**:
240 - 使用 `featured_image` 作为文章头图
241 - 在正文中插入 screenshots 和 diagrams
242 - 图片路径使用相对路径: `/images/{task_id}/{slug}/xxx.png`
243 - 为所有图片添加 alt 文本
244 - 保存到 ${HEXO_PATH}/{post_dir}/
245 - 文件名: {actual_date}-{slug}.md
246 - **重要**: 使用模型的实际发布日期作为文章日期,不是采集日期
247 - **⚠️ 强制规则**: categories 字段必须使用小写(如 models, papers, engineering)
248 - 原因:SEO最佳实践,避免大小写URL重复内容惩罚
249 - 错误示例:categories: ["Models"] ❌
250 - 正确示例:categories: ["models"] ✅
251
252 **Telegram频道** (如果 telegram.enabled: true):
253 - 使用 telegram.format 格式化内容
254 - 发送到 telegram.channel_id
255
256 **Discord频道** (如果 discord.enabled: true):
257 - 使用 discord webhook 发送
258 - 格式化为 Discord embed
259
2604. **验证发布**
261 - 确认所有启用的渠道都发布成功
262 - 记录发布结果到会话日志
263
264### 阶段 4.5: 质量验证(发布后检查)
265
2661. **内容完整性检查**
267 - JSON 文件包含所有必需字段
268 - Markdown 文件格式正确
269 - 图片文件成功下载
270
2712. **质量标准验证**(根据任务类型)
272
273 **Foundation Models**:
274 ```bash
275 # 检查必需字段
276 - metadata.source_url 存在
277 - release_date 不等于 collected_at
278 - technical_report 字段(如果适用)
279 - 内容为中文且 ≥ 1500 字符
280 ```
281
282 **MCP Servers**:
283 ```bash
284 # 检查工具文档
285 - tools_resources.tools 非空数组
286 - 每个 tool 包含 name, description
287 - config_example 存在
288 - 内容为中文且 ≥ 1500 字符
289 ```
290
291 **Prompt Papers**:
292 ```bash
293 # 检查论文链接
294 - arxiv_url 存在且有效
295 - 内容为中文且 ≥ 1000 字符
296 ```
297
2983. **失败处理**
299 - 如果验证失败,删除已发布的 JSON 和 Markdown
300 - 记录失败原因到会话日志
301 - 不计入发布统计
302
3034. **归档不合格内容**
304 - 移动到 config/.archived/quality-failed-{date}/
305 - 保留删除记录用于后续改进
306
307### 阶段 5: 关键词优化
308
3091. **分析新内容**
310 - 从摘要和标题中提取技术术语
311
3122. **关键词发现**
313 - 计算新词的出现频率和置信度
314 - 过滤置信度低于 0.85 的词
315
3163. **更新关键词文件**
317 - 更新 config/keywords/{task_id}.json
318
319## 输出要求
320
321每个任务完成后输出执行摘要:
322
323```
324━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
325📊 任务执行完成: {task_id}
326━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
327
328数据源: {使用的工具}
329搜索结果: {总数}
330过滤后: {数量}
331去重后: {数量}
332质量检查: {通过/失败}
333发布成功: {数量}
334
335质量统计:
336 • 中文内容: {数量}/{总数} (100% required)
337 • 符合长度要求: {数量}/{总数}
338 • 包含必需字段: {数量}/{总数}
339
340任务特定指标:
341 • [Foundation Models] 有技术报告: {数量}/{总数}
342 • [MCP Servers] 有工具文档: {数量}/{总数}
343 • [Prompt Papers] 有arxiv链接: {数量}/{总数}
344
345发布渠道:
346 • JSON原始数据: {数量}个文件(含 metadata.source_url)
347 • Hexo博客: {已发布/跳过/失败} (如果enabled)
348 • Telegram: {已发送/跳过/失败} (如果enabled)
349 • Discord: {已发送/跳过/失败} (如果enabled)
350
351图片下载:
352 • 封面: {数量}
353 • 截图: {数量}
354 • 架构图: {数量}
355
356新发现关键词: {数量}
357
358质量不合格(已跳过):
359 • 无工具文档: {数量}
360 • 内容过短: {数量}
361 • 非中文内容: {数量}
362 • 缺少必需字段: {数量}
363
364保存位置:
365 • JSON: posts/{task_id}/
366 • 图片: blog/source/images/{task_id}/
367 • Hexo: {HEXO_PATH}/{post_dir}/ (如果enabled)
368 • 归档: config/.archived/ (如果有不合格内容)
369会话日志: temp/sessions/{task_id}/{session_id}/
370
371💡 二次更新: 所有 JSON 包含 metadata.source_url,可用于未来更新
372⚠️ 质量优先: 不符合标准的内容已被跳过或归档
373```
374
375## 错误处理
376
377如果执行失败:
378- 记录详细错误到 logs/{task_id}_{session_id}.log
379- 保存中间结果到会话目录
380- 返回错误摘要
381
382## 工具和脚本
383
384可用的辅助脚本:
385- `.claude-plugin/scripts/discover/image_utils.sh` - 图片下载和处理
386- `.claude-plugin/scripts/discover/update_index.sh` - 更新任务索引
387- `.claude-plugin/scripts/discover/check.sh` - 前置环境检查
388- `.claude-plugin/scripts/discover/parse_tasks.sh` - 任务解析
389
390## 并行执行支持
391
392此 Skill 支持并行处理多个任务。当同时执行多个任务时:
393- 每个任务创建独立的会话目录
394- 任务之间相互隔离,互不影响
395- 所有任务完成后汇总统计信息