$npx -y skills add balabalabalading/huuuuuuho-skills --skill article2ticktick将技术周报中的文章整理为滴答清单(TickTick)待办事项,同时支持单篇文章直接添加。当用户提供周报 markdown 文档、要求将周报文章添加到滴答清单,或提及"技术周报"、"文章汇总"、"添加到滴答"等关键词时,使用此技能;当用户分享单篇文章链接并希望添加到滴答清单时,同样使用此技能。
| 1 | # 技术文章 → 滴答清单工作流 |
| 2 | |
| 3 | ## 概述 |
| 4 | |
| 5 | 将技术周报(肘子 Swift 周刊、老司机 iOS 周报等)中推荐的文章,批量转换为 滴答清单(TickTick) 待办事项,自动完成分类标签。也支持单篇文章直接添加。 |
| 6 | |
| 7 | ## 相关脚本 |
| 8 | |
| 9 | 脚本随 Skill 一同安装,位于 `${CLAUDE_SKILL_DIR}/scripts/` 目录: |
| 10 | |
| 11 | | 脚本 | 说明 | |
| 12 | |------|------| |
| 13 | | `add_articles.py` | 主脚本:批量或单篇添加文章到 滴答清单(TickTick) | |
| 14 | |
| 15 | ## 字段映射规则 |
| 16 | |
| 17 | | 滴答清单(TickTick)字段 | 来源 | 处理方式 | |
| 18 | |---|---|---| |
| 19 | | `title` | `**[文章标题](链接)**` | 去除两侧 `**`,保留 `[文章标题](链接)` | |
| 20 | | `content` | 所有 `- ` bullet 行 | 拼接执行日期(`yyyy-MM-dd,`)+ 各行去掉 `- ` 前缀、去掉 `[[]]`,以 `,` 合并 | |
| 21 | | `list` | 当前 `## 二级标题` | 直接使用;**必须与滴答清单中已有列表名完全一致** | |
| 22 | | `tags` | 当前 `### 三级标题` | 直接使用 | |
| 23 | |
| 24 | ## 标准文章格式(必须遵守) |
| 25 | |
| 26 | 收到新周报后,AI 整理输出须严格遵循以下格式: |
| 27 | |
| 28 | ```markdown |
| 29 | ## 二级分类(如:SwiftUI、Swift 语言、AI 辅助开发) |
| 30 | |
| 31 | ### 三级子分类(如:状态管理与观察、并发与异步) |
| 32 | |
| 33 | **[文章标题](文章链接)** |
| 34 | |
| 35 | - 使用周报原文中对于该篇文章的推荐语句 |
| 36 | - 出自:来源名称(去掉双方括号,只写名称) |
| 37 | |
| 38 | **[下一篇文章标题](链接)** |
| 39 | |
| 40 | - 使用周报原文中对于该篇文章的推荐语句 |
| 41 | - 出自:来源名称 |
| 42 | ``` |
| 43 | |
| 44 | **注意事项:** |
| 45 | - 二级标题用于 滴答清单(TickTick)的 `list`(清单名),**必须严格使用下方「已有分类体系」表格中的现有名称**,不得创建新的二级标题 |
| 46 | - 如果某篇文章明显不属于任何已有分类,**停止整理,询问用户**,等用户在 滴答清单(TickTick) 中手动新增列表后再继续 |
| 47 | - 三级标题用于 滴答清单(TickTick)的 `tags`(标签) |
| 48 | - 每篇文章必须有「出自」行,注明来源周报名 |
| 49 | - 不要在文章块之间插入 `---` 分隔线 |
| 50 | |
| 51 | ## 工作流步骤 |
| 52 | |
| 53 | 本 Skill 有两个工作流分支,根据用户需求选择: |
| 54 | |
| 55 | - **分支 A(批量周报)**:用户提供一整期周报,AI 整理后批量添加 |
| 56 | - **分支 B(单篇文章)**:用户分享单篇文章链接,AI 判断分类后直接添加 |
| 57 | |
| 58 | --- |
| 59 | |
| 60 | ## 工作流分支 A:批量周报 |
| 61 | |
| 62 | ``` |
| 63 | - [ ] 步骤 A1:接收周报内容 |
| 64 | - [ ] 步骤 A2:AI 整理为标准格式(遇到未知分类则暂停询问) |
| 65 | - [ ] 步骤 A3:运行脚本添加到 滴答清单(TickTick) |
| 66 | - [ ] 步骤 A4:更新新的分类(如有) |
| 67 | ``` |
| 68 | |
| 69 | --- |
| 70 | |
| 71 | ### 步骤 A1:接收周报内容 |
| 72 | |
| 73 | 用户提供以下任意一种形式: |
| 74 | - 直接粘贴周报原文(markdown 或富文本) |
| 75 | - 提供周报文件路径 |
| 76 | |
| 77 | --- |
| 78 | |
| 79 | ### 步骤 A2:AI 整理为标准格式 |
| 80 | |
| 81 | 使用以下 Prompt 将周报内容整理为标准格式: |
| 82 | |
| 83 | ``` |
| 84 | 请将以下周报内容整理为标准 markdown 格式,直接输出内容不要解释。 |
| 85 | |
| 86 | 约束: |
| 87 | - 二级标题(##)必须从以下列表中选择,不得自行创建新标题: |
| 88 | SwiftUI、Swift 语言、数据与持久化、iOS 与 macOS 工程实践、开发工具与工作流、AI 辅助开发、行业思考与视野 |
| 89 | - 如果某篇文章不属于以上任何二级分类,停止并告知我,等我说明后再继续 |
| 90 | - 三级标题(###)优先从下方已有分类体系列表中选择,若无适合分类可自行命名,三级标题自行命名无需用户确认 |
| 91 | - 每篇文章格式: |
| 92 | **[文章标题](文章链接)** |
| 93 | - 使用周报原文中对于该篇文章的推荐语句 |
| 94 | - 出自:来源周报名称(不加双方括号) |
| 95 | - 不要在文章之间添加分隔线 |
| 96 | |
| 97 | --- 以下是周报内容 --- |
| 98 | [粘贴周报原文] |
| 99 | ``` |
| 100 | |
| 101 | **遇到未知分类时的处理流程:** |
| 102 | 1. 停止整理,列出无法归类的文章及其建议分类名 |
| 103 | 2. 用户在 滴答清单(TickTick) 中手动新建对应列表,并告知新分类名 |
| 104 | 3. 将新分类名加入本次二级标题可用列表,继续完成整理 |
| 105 | |
| 106 | --- |
| 107 | |
| 108 | ### 步骤 A3:运行脚本添加到 滴答清单(TickTick) |
| 109 | |
| 110 | 将步骤A2整理好的标准格式markdown通过管道直接传递给脚本: |
| 111 | |
| 112 | ```bash |
| 113 | SKILL_SCRIPTS="${CLAUDE_SKILL_DIR}/scripts" |
| 114 | |
| 115 | # 先 dry-run 预览,确认解析正确 |
| 116 | echo "[步骤A2输出的markdown内容]" | python3 "$SKILL_SCRIPTS/add_articles.py" --dry-run |
| 117 | |
| 118 | # 确认无误后正式执行 |
| 119 | echo "[步骤A2输出的markdown内容]" | python3 "$SKILL_SCRIPTS/add_articles.py" --delay 0.8 |
| 120 | ``` |
| 121 | |
| 122 | **可选参数:** |
| 123 | - `--dry-run`:仅预览解析结果,不实际打开 TickTick |
| 124 | - `--delay 0.8`:调整每条任务间隔秒数(默认 0.5,若 TickTick 响应慢可适当增大) |
| 125 | |
| 126 | --- |
| 127 | |
| 128 | ### 步骤 A4:更新新的分类 |
| 129 | |
| 130 | 如果本次执行过程中创建了新的二级和三级分类,**务必将新分类名称添加到下方「已有分类体系」表格中**,以供后续 AI 整理使用。 |
| 131 | |
| 132 | --- |
| 133 | |
| 134 | ## 工作流分支 B:单篇文章直接添加 |
| 135 | |
| 136 | ### 适用场景 |
| 137 | |
| 138 | 用户分享单篇文章链接,希望直接添加到滴答清单(TickTick),不走周报批量流程。 |
| 139 | |
| 140 | ``` |
| 141 | - [ ] 步骤 B1:用户提供文章 URL 和标题 |
| 142 | - [ ] 步骤 B2:推断分类(list + tags)并生成推荐语 |
| 143 | - [ ] 步骤 B3:运行单任务命令添加到 滴答清单(TickTick) |
| 144 | ``` |
| 145 | |
| 146 | --- |
| 147 | |
| 148 | ### 步骤 B1:接收文章信息 |
| 149 | |
| 150 | 用户提供: |
| 151 | - **文章 URL**(必须) |
| 152 | - **文章标题**(必须,若未提供则从 URL 或页面标题推断) |
| 153 | - 分类建议(可选,不提供则根据内容判断) |
| 154 | |
| 155 | --- |
| 156 | |
| 157 | ### 步骤 B2:推断分类并生成推荐语 |
| 158 | |
| 159 | 1. 根据文章标题/URL/主题,从「已有分类体系」中判断合适的 `list`(二级分类)和 `tags`(三级分类) |
| 160 | 2. 若不确定二级分类,先告知用户判断结果,确认后再继续 |
| 161 | 3. 写一句简洁的推荐语(参考周报风格,20~50 字) |
| 162 | 4. 出自行写:`出自:{文章URL}` |
| 163 | |
| 164 | --- |
| 165 | |
| 166 | ### 步骤 B3:运行单任务命令 |
| 167 | |
| 168 | ```bash |
| 169 | SKILL_SCRIPTS="${CLAUDE_SKILL_DIR}/scripts" |
| 170 | |
| 171 | # 先 dry-run 预览 |
| 172 | python3 "$SKILL_SCRIPTS/add_articles.py" \ |
| 173 | --task \ |
| 174 | --title "[文章标题](https://example.com/article)" \ |
| 175 | --list "SwiftUI" \ |
| 176 | --tags "状态管理与观察" \ |
| 177 | --desc "Claude 生成的推荐语句" \ |
| 178 | --desc "出自:https://example.com/article" \ |
| 179 | --dry-run |
| 180 | |
| 181 | # 确认无误后执行(去掉 --dry-run) |
| 182 | python3 "$SKILL_SCRIPTS/add_articles.py" \ |
| 183 | --task \ |
| 184 | --title "[文章标题](https://example.com/article)" \ |
| 185 | --list "SwiftUI" \ |
| 186 | --tags "状态管理与观察" \ |
| 187 | --desc "Claude 生成的推荐语句" \ |
| 188 | --desc "出自:https://example.com/article" |
| 189 | ``` |
| 190 | |
| 191 | **说明:** |
| 192 | - `--title` 须为 `[文章标题](URL)` 格式,保留方括号和圆括号 |
| 193 | - `--desc` 可多次传入,每次对应一条描述 bullet,用 `,` 拼接后写入 content |
| 194 | - `--list` 必须与滴答清单现有列表名完全一致(参见下方分类表) |
| 195 | |
| 196 | --- |
| 197 | |
| 198 | ## 快速参考:已有分类体系 |
| 199 | |
| 200 | 保持与滴答清单现有列表一致,**整理时二级分类只能使用这些名称**: |
| 201 | |
| 202 | | 二级分类(list,= TickTick 列表名) | 常见三级分类(tags) | |
| 203 | |---|---| |
| 204 | | SwiftUI | 基础组件与 API、布局视觉与动画、状态管理与观察、导航与交互、系统集成与实战、性能与调试、应用架构 | |
| 205 | | Swift 语言 | 并发与异步、语言特性与底层原理、跨平台与嵌入式 | |
| 206 | | 数据与持久化 | SwiftData、CloudKit 与数据同步、数据库 | |
| 207 | | iOS 与 macOS 工程实践 | 系统能力与平台集成、App Store 与发布、资源管理、应用架构 | |
| 208 | | 开发工具与工作流 | 包管理器与依赖、Xcode 与项目工程、测试与调试、命令行与服务端、框架与库 | |
| 209 | | AI 辅助开发 | Agent 编码实践、工具与配置、端侧 AI | |
| 210 | | 行业思考与视野 | 硬件产品、就业市场 | |
| 211 | |
| 212 | 如果周报内容不属于以上分类,**停止并询问用户**,待用户在 TickTick 手动新增列表后再继续。 |