@anyul/koishi-plugin-rss 4.8.16 → 5.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/README.md +711 -0
  2. package/lib/commands/error-handler.d.ts +53 -0
  3. package/lib/commands/error-handler.js +111 -0
  4. package/lib/commands/index.d.ts +1 -0
  5. package/lib/commands/index.js +4 -0
  6. package/lib/commands/rss-subscribe.d.ts +11 -0
  7. package/lib/commands/rss-subscribe.js +323 -0
  8. package/lib/commands/utils.d.ts +50 -0
  9. package/lib/commands/utils.js +70 -0
  10. package/lib/config.d.ts +5 -0
  11. package/lib/config.js +111 -0
  12. package/lib/constants.d.ts +8 -0
  13. package/lib/constants.js +100 -0
  14. package/lib/core/ai.d.ts +77 -0
  15. package/lib/core/ai.js +407 -0
  16. package/lib/core/feeder.d.ts +15 -0
  17. package/lib/core/feeder.js +362 -0
  18. package/lib/core/item-processor.d.ts +18 -0
  19. package/lib/core/item-processor.js +457 -0
  20. package/lib/core/parser.d.ts +3 -0
  21. package/lib/core/parser.js +240 -0
  22. package/lib/core/renderer.d.ts +4 -0
  23. package/lib/core/renderer.js +231 -0
  24. package/lib/database.d.ts +2 -0
  25. package/lib/database.js +36 -0
  26. package/lib/index.d.ts +5 -322
  27. package/lib/index.js +584 -2311
  28. package/lib/services/message-cache-service.d.ts +108 -0
  29. package/lib/services/message-cache-service.js +330 -0
  30. package/lib/tsconfig.tsbuildinfo +1 -0
  31. package/lib/types.d.ts +155 -0
  32. package/lib/types.js +4 -0
  33. package/lib/utils/common.d.ts +8 -0
  34. package/lib/utils/common.js +130 -0
  35. package/lib/utils/error-handler.d.ts +82 -0
  36. package/lib/utils/error-handler.js +251 -0
  37. package/lib/utils/error-tracker.d.ts +127 -0
  38. package/lib/utils/error-tracker.js +336 -0
  39. package/lib/utils/fetcher.d.ts +16 -0
  40. package/lib/utils/fetcher.js +151 -0
  41. package/lib/utils/logger.d.ts +35 -0
  42. package/lib/utils/logger.js +140 -0
  43. package/lib/utils/media.d.ts +8 -0
  44. package/lib/utils/media.js +242 -0
  45. package/lib/utils/message-cache.d.ts +116 -0
  46. package/lib/utils/message-cache.js +240 -0
  47. package/lib/utils/metrics.d.ts +184 -0
  48. package/lib/utils/metrics.js +401 -0
  49. package/lib/utils/structured-logger.d.ts +131 -0
  50. package/lib/utils/structured-logger.js +258 -0
  51. package/lib/utils/template.d.ts +3 -0
  52. package/lib/utils/template.js +180 -0
  53. package/package.json +13 -2
  54. package/readme.md +0 -256
package/README.md ADDED
@@ -0,0 +1,711 @@
1
+ # koishi-plugin-rss-owl
2
+
3
+ [![npm](https://img.shields.io/npm/v/@anyul/koishi-plugin-rss?style=flat-square)](https://www.npmjs.com/package/@anyul/koishi-plugin-rss)
4
+ ![version](https://img.shields.io/badge/version-5.0.0--beta-orange)
5
+
6
+ > 功能强大的 Koishi RSS 订阅插件,支持多种订阅源、图片渲染、AI 摘要等高级功能
7
+
8
+ ## ✨ 功能特性
9
+
10
+ ### 🚀 核心功能
11
+ - **多源订阅** - 支持 RSS/Atom 订阅、RSSHub 快速链接、网页监控
12
+ - **多种模板** - 提供多种消息模板,支持自定义 HTML 样式
13
+ - **图片渲染** - 使用 Puppeteer 将订阅内容渲染为精美图片
14
+ - **视频支持** - 支持视频下载和转发,多种处理模式
15
+ - **智能过滤** - 关键词过滤和屏蔽,内容自定义处理
16
+
17
+ ### 🎨 高级功能
18
+ - **AI 摘要** - 集成 OpenAI API,自动生成内容摘要并渲染到图片中
19
+ - **Markdown 渲染** - AI 摘要支持完整的 Markdown 语法
20
+ - **代理支持** - 全局/订阅级代理配置,支持 HTTP/HTTPS/SOCKS5
21
+ - **多群管理** - 支持多群订阅、关注机制、权限管理
22
+ - **定时更新** - 灵活的刷新策略,支持定时推送
23
+
24
+ ### 🔧 技术特性
25
+ - **队列管理** - 智能请求队列,避免被封禁
26
+ - **重试机制** - 自动重试失败请求
27
+ - **内容缓存** - 文件缓存管理,支持多种存储模式
28
+ - **调试模式** - 详细的调试日志,方便问题排查
29
+
30
+ ## 📁 项目结构
31
+
32
+ ```
33
+ koishi-plugin-rss-owl/
34
+ ├── src/
35
+ │ ├── commands/ # 命令定义
36
+ │ │ └── index.ts # RSS 订阅命令
37
+ │ ├── core/ # 核心功能模块
38
+ │ │ ├── ai.ts # AI 摘要功能
39
+ │ │ ├── feeder.ts # RSS 订阅调度
40
+ │ │ ├── item-processor.ts # RSS 条目处理
41
+ │ │ ├── parser.ts # RSS/HTML 解析
42
+ │ │ └── renderer.ts # 图片渲染
43
+ │ ├── utils/ # 工具函数
44
+ │ │ ├── common.ts # 通用工具
45
+ │ │ ├── fetcher.ts # HTTP 请求
46
+ │ │ ├── logger.ts # 日志系统
47
+ │ │ ├── media.ts # 媒体处理
48
+ │ │ └── template.ts # 模板定义
49
+ │ ├── config.ts # 配置定义
50
+ │ ├── constants.ts # 常量定义
51
+ │ ├── database.ts # 数据库模型
52
+ │ ├── types.ts # TypeScript 类型
53
+ │ └── index.ts # 插件入口
54
+ ├── lib/ # 编译输出
55
+ ├── package.json
56
+ └── README.md
57
+ ```
58
+
59
+ ### 配置插件
60
+
61
+ 在 Koishi 配置文件中添加:
62
+
63
+ ```yaml
64
+ plugins:
65
+ rss-owl:
66
+ # 基础配置
67
+ $type: config
68
+ authority: 1 # 使用权限
69
+ advancedAuthority: 4 # 高级功能权限
70
+
71
+ # 网络配置
72
+ net:
73
+ userAgent: "Mozilla/5.0 ..."
74
+ rssHubUrl: "https://hub.slarker.me"
75
+ proxyAgent:
76
+ enabled: true
77
+ protocol: "socks5"
78
+ host: "127.0.0.1"
79
+ port: 17890
80
+ auth:
81
+ enabled: false
82
+ username: ""
83
+ password: ""
84
+
85
+ # 消息处理
86
+ msg:
87
+ censor: false
88
+ keywordFilter: []
89
+ keywordBlock: []
90
+ blockString: "*"
91
+ rssHubUrl: "https://hub.slarker.me"
92
+
93
+ # 模板配置
94
+ template:
95
+ custom: ""
96
+ customRemark: ""
97
+ bodyWidth: 600
98
+ bodyPadding: 20
99
+ bodyFontSize: 16
100
+ deviceScaleFactor: 2
101
+ content: ""
102
+
103
+ # AI 配置
104
+ ai:
105
+ enabled: false
106
+ baseUrl: "https://api.openai.com/v1"
107
+ apiKey: ""
108
+ model: "gpt-3.5-turbo"
109
+ placement: "top"
110
+ separator: "────────"
111
+ prompt: "请为以下内容生成简短摘要:\n\n标题:{{title}}\n\n内容:{{content}}\n\n摘要:"
112
+ maxInputLength: 2000
113
+ timeout: 30000
114
+
115
+ # 调试配置
116
+ debug: "info" # disable | error | info | details
117
+ ```
118
+
119
+ ## 🚀 快速开始
120
+
121
+ ### 基础订阅
122
+
123
+ ```bash
124
+ # 订阅每日60秒早报(使用 default 模板)
125
+ rsso -i default rss:qqorw
126
+
127
+ # 订阅 Telegram 频道(使用 content 模板)
128
+ rsso -i content tg:woshadiao
129
+
130
+ # 订阅 GitHub 仓库
131
+ rsso -i content gh:issue/koishijs/koishi
132
+ ```
133
+
134
+ ### 使用 AI 摘要
135
+
136
+ 1. 首先在配置中启用 AI 功能并配置 API:
137
+ ```yaml
138
+ ai:
139
+ enabled: true
140
+ baseUrl: "https://api.openai.com/v1"
141
+ apiKey: "your-api-key"
142
+ model: "gpt-3.5-turbo"
143
+ ```
144
+
145
+ 2. 订阅时会自动生成 AI 摘要并渲染到图片中
146
+
147
+ ### 关注订阅
148
+
149
+ ```bash
150
+ # 关注订阅,更新时 @你
151
+ rsso -f 早报网
152
+
153
+ # 取消关注
154
+ rsso -f 早报网
155
+ ```
156
+
157
+ ### 立即拉取
158
+
159
+ ```bash
160
+ # 立即拉取订阅最新内容
161
+ rsso -p 早报网
162
+ ```
163
+
164
+ ## 📋 命令说明
165
+
166
+ ### 基础命令
167
+
168
+ | 命令 | 说明 | 示例 |
169
+ |------|------|------|
170
+ | `rsso <url>` | 订阅 RSS | `rsso rss:qqorw` |
171
+ | `rsso -l [keyword]` | 查看订阅列表 | `rsso -l`, `rsso -l 早报` |
172
+ | `rsso -r <id\|keyword>` | 取消订阅 | `rsso -r 早报网` |
173
+ | `rsso -p <id\|keyword>` | 立即拉取 | `rsso -p 早报网` |
174
+ | `rsso -f <id\|keyword>` | 关注/取消关注 | `rsso -f 早报网` |
175
+ | `rsso -T <url>` | 测试链接 | `rsso -T rss:qqorw` |
176
+
177
+ ### 高级选项
178
+
179
+ | 选项 | 说明 | 示例 |
180
+ |------|------|------|
181
+ | `-i <template>` | 指定模板 | `rsso -i default <url>` |
182
+ | `-t <title>` | 订阅名称 | `rsso -t 早报 <url>` |
183
+ | `-a <params>` | 局部参数 | `rsso -a merge:true <url>` |
184
+ | `-d <time/count>` | 定时推送 | `rsso -d 8:00/10 <url>` |
185
+ | `-q` | 查看快速链接 | `rsso -q` |
186
+
187
+ ### 局部参数(arg)
188
+
189
+ 支持在订阅时覆盖全局配置:
190
+
191
+ ```bash
192
+ # 强制合并消息
193
+ rsso -a merge:true <url>
194
+
195
+ # 使用代理
196
+ rsso -a proxyAgent:socks5//127.0.0.1/7890 <url>
197
+
198
+ # 定时刷新(每1440分钟推送10条)
199
+ rsso -a forceLength:10,refresh:1440 <url>
200
+
201
+ # 禁用代理
202
+ rsso -a proxyAgent:false <url>
203
+ ```
204
+
205
+ 支持的参数:
206
+ - `merge` - 消息合并模式
207
+ - `forceLength` - 强制返回条目数
208
+ - `reverse` - 反向排序
209
+ - `timeout` - 超时时间
210
+ - `refresh` - 刷新间隔(分钟)
211
+ - `maxRssItem` - 最大条目数
212
+ - `firstLoad` - 首次加载行为
213
+ - `bodyWidth` - 渲染宽度
214
+ - `bodyPadding` - 渲染内边距
215
+ - `proxyAgent` - 代理配置
216
+
217
+ ## 🎨 模板说明
218
+
219
+ ### 基础模板(直接发送)
220
+
221
+ | 模板 | 说明 | 内容 |
222
+ |------|------|------|
223
+ | `content` | 自定义基础模板 | 文字+图片+视频 |
224
+ | `text` | 纯文本 | 仅文字 |
225
+ | `media` | 媒体内容 | 图片+视频 |
226
+ | `image` | 仅图片 | 仅图片 |
227
+ | `video` | 仅视频 | 仅视频 |
228
+ | `proto` | 原始内容 | 未处理的 description |
229
+
230
+ ### Puppeteer 模板(图片渲染)
231
+
232
+ | 模板 | 说明 | 特点 |
233
+ |------|------|------|
234
+ | `default` | 基础渲染模板 | 完整样式,包含标题、时间等 |
235
+ | `description` | 纯内容渲染 | 仅包含 description 内容 |
236
+ | `custom` | 自定义模板 | 高度可定制,支持自定义 HTML |
237
+ | `link` | 链接访问渲染 | 访问 description 中的第一个链接并渲染 |
238
+
239
+ ### 模板切换
240
+
241
+ ```bash
242
+ # 使用 default 模板订阅
243
+ rsso -i default rss:qqorw
244
+
245
+ # 使用 content 模板订阅
246
+ rsso -i content tg:woshadiao
247
+
248
+ # 使用 custom 模板订阅
249
+ rsso -i custom <url>
250
+ ```
251
+
252
+ ### 自定义模板
253
+
254
+ 在配置文件的 `template.custom` 中编写 HTML:
255
+
256
+ ```html
257
+ <div style="background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); padding: 20px;">
258
+ <h1>{{title}}</h1>
259
+ <p>{{description}}</p>
260
+ <p>发布时间:{{pubDate}}</p>
261
+ </div>
262
+ ```
263
+
264
+ 支持的插值变量见下文「插值说明」。
265
+
266
+ ## 📝 插值说明
267
+
268
+ ### 基本语法
269
+
270
+ ```
271
+ {{变量1|变量2|变量3|'默认值'}}
272
+ ```
273
+
274
+ 如果变量1未找到,则尝试变量2,以此类推。可用单引号设置默认值。
275
+
276
+ ### 可用变量
277
+
278
+ #### Item 元素(直接使用)
279
+
280
+ | 变量 | 说明 | 示例 |
281
+ |------|------|------|
282
+ | `title` | 标题 | `10月29日,星期二,在这里每天60秒读懂世界!` |
283
+ | `description` | 内容 | RSS 条目内容 |
284
+ | `link` | 链接 | `https://www.qqorw.cn/mrzb/657.html` |
285
+ | `guid` | 唯一标识 | `https://www.qqorw.cn/mrzb/657.html` |
286
+ | `pubDate` | 更新时间 | `Tue, 29 Oct 2024 00:50:29 GMT` |
287
+ | `author` | 作者 | `早报网` |
288
+ | `category` | 类别 | `每日早报` |
289
+
290
+ #### Channel 元素(加前缀 `rss.channel.`)
291
+
292
+ | 变量 | 说明 | 示例 |
293
+ |------|------|------|
294
+ | `rss.channel.title` | 频道标题 | `早报网` |
295
+ | `rss.channel.link` | 频道链接 | `https://qqorw.cn/` |
296
+ | `rss.channel.description` | 频道描述 | `每天更新15条简语早报...` |
297
+ | `rss.channel.image.url` | 频道图像 | `https://qqorw.cn/static/...` |
298
+
299
+ #### Arg 元素(插件配置)
300
+
301
+ | 变量 | 说明 |
302
+ |------|------|
303
+ | `arg.title` | 订阅标题 |
304
+ | `arg.url` | 订阅链接 |
305
+ | `arg.author` | 订阅用户 ID |
306
+ | `arg.rssId` | 订阅 ID |
307
+ | `arg.template` | 订阅模板 |
308
+ | `arg.proxyAgent.host` | 代理地址 |
309
+
310
+ #### AI 元素
311
+
312
+ | 变量 | 说明 |
313
+ |------|------|
314
+ | `aiSummary` | AI 生成的内容摘要(Markdown 格式) |
315
+
316
+ ### 使用示例
317
+
318
+ ```html
319
+ <!-- 带默认值的插值 -->
320
+ <h1>{{title|'无标题'}}</h1>
321
+
322
+ <!-- AI 摘要(如果在模板中使用会自动渲染) -->
323
+ <div class="ai-summary">{{aiSummary}}</div>
324
+
325
+ <!-- 多层级联 -->
326
+ <p>{{rss.channel.description|arg.title|'未知来源'}}</p>
327
+ ```
328
+
329
+ ## 🔗 快速链接说明
330
+
331
+ 对于 RSSHub 订阅,可使用快速链接简化输入:
332
+
333
+ ```bash
334
+ # 完整链接
335
+ https://hub.slarker.me/telegram/channel/woshadiao
336
+
337
+ # 快速链接
338
+ tg:woshadiao
339
+ ```
340
+
341
+ ### 常用快速链接
342
+
343
+ ```bash
344
+ # Telegram 频道
345
+ tg:<频道名>
346
+
347
+ # GitHub
348
+ gh:issue/<用户>/<仓库>
349
+ gh:release/<用户>/<仓库>
350
+
351
+ # 豆瓣
352
+ douban/group/<ID>
353
+
354
+ # 微信公众号
355
+ mp-tag:<AppID>/<TagID>
356
+ ```
357
+
358
+ 查看所有快速链接:
359
+ ```bash
360
+ rsso -q
361
+ ```
362
+
363
+ 切换 RSSHub 实例(在配置中):
364
+ ```yaml
365
+ msg:
366
+ rssHubUrl: "https://hub.slarker.me"
367
+ ```
368
+
369
+ ## 🌐 代理配置
370
+
371
+ ### 全局代理
372
+
373
+ 在配置文件中设置:
374
+
375
+ ```yaml
376
+ net:
377
+ proxyAgent:
378
+ enabled: true
379
+ protocol: "socks5" # http, https, socks5
380
+ host: "127.0.0.1"
381
+ port: 17890
382
+ auth:
383
+ enabled: true
384
+ username: "user"
385
+ password: "pass"
386
+ ```
387
+
388
+ ### 订阅级代理
389
+
390
+ ```bash
391
+ # 使用代理订阅
392
+ rsso -a proxyAgent:socks5//127.0.0.1/7890 <url>
393
+
394
+ # 禁用代理(即使全局已启用)
395
+ rsso -a proxyAgent:false <url>
396
+
397
+ # 使用带认证的代理
398
+ rsso -a proxyAgent:http//user:pass@127.0.0.1/8080 <url>
399
+ ```
400
+
401
+ ### 代理优先级
402
+
403
+ 1. 订阅级代理(arg.proxyAgent)
404
+ 2. 全局代理(config.net.proxyAgent)
405
+ 3. 直连
406
+
407
+ ## 🤖 AI 摘要功能
408
+
409
+ ### 配置 AI
410
+
411
+ ```yaml
412
+ ai:
413
+ enabled: true
414
+ baseUrl: "https://api.openai.com/v1" # 或兼容的 API
415
+ apiKey: "sk-..."
416
+ model: "gpt-3.5-turbo"
417
+ placement: "top" # top | bottom
418
+ separator: "────────" # 分隔符
419
+ maxInputLength: 2000 # 最大输入长度
420
+ timeout: 30000 # 超时时间(毫秒)
421
+ ```
422
+
423
+ ### 自定义 Prompt
424
+
425
+ ```yaml
426
+ ai:
427
+ prompt: "请为以下内容生成简洁的要点摘要:\n\n标题:{{title}}\n\n内容:{{content}}\n\n摘要:"
428
+ ```
429
+
430
+ ### 效果
431
+
432
+ AI 摘要会:
433
+ - 自动渲染到图片中(使用图片渲染模板时)
434
+ - 支持 Markdown 格式(列表、粗体、链接等)
435
+ - 使用与模板一致的样式
436
+ - 可以通过 `{{aiSummary}}` 在自定义模板中使用
437
+
438
+ ## 📊 图片渲染配置
439
+
440
+ ### 渲染模式
441
+
442
+ | 模式 | 说明 | 配置 |
443
+ |------|------|------|
444
+ | `base64` | Base64 编码 | `imageMode: base64` |
445
+ | `File` | 本地文件 | `imageMode: File` |
446
+ | `assets` | Assets 服务 | `imageMode: assets` |
447
+
448
+ ### 渲染参数
449
+
450
+ ```yaml
451
+ template:
452
+ bodyWidth: 600 # 宽度(像素)
453
+ bodyPadding: 20 # 内边距(像素)
454
+ bodyFontSize: 16 # 字体大小(像素)
455
+ deviceScaleFactor: 2 # 清晰度倍数(0.5-3)
456
+ ```
457
+
458
+ ### 视频处理
459
+
460
+ ```yaml
461
+ basic:
462
+ videoMode: "filter" # filter | href | base64 | File | assets
463
+ usePoster: true # 使用视频封面
464
+ ```
465
+
466
+ ## 🔐 权限说明
467
+
468
+ ### 权限等级
469
+
470
+ | 权限 | 说明 | 默认配置 |
471
+ |------|------|----------|
472
+ | `authority` | 基础使用权限 | 1 |
473
+ | `advancedAuthority` | 高级功能权限 | 4 |
474
+
475
+ ### 提升权限
476
+
477
+ #### 方式一:使用 change-auth-callme 插件
478
+
479
+ ```bash
480
+ # 安装插件
481
+ plugin install change-auth-callme
482
+
483
+ # 提升权限到 5
484
+ changeauth 5
485
+ ```
486
+
487
+ #### 方式二:使用 auth 插件
488
+
489
+ ```bash
490
+ # 绑定账号
491
+ auth:bind
492
+
493
+ # 提升权限
494
+ auth:assign @user 5
495
+ ```
496
+
497
+ ### 功能权限要求
498
+
499
+ - **基础订阅**:需要 `authority` 权限
500
+ - **关注全体**:需要 `advancedAuthority` 权限
501
+ - **Bot 主人**:拥有所有权限
502
+
503
+ ## 🛠️ 配置项说明
504
+
505
+ ### 完整配置示例
506
+
507
+ ```yaml
508
+ plugins:
509
+ rss-owl:
510
+ # === 基础配置 ===
511
+ $type: config
512
+ authority: 1 # 基础权限等级
513
+ advancedAuthority: 4 # 高级功能权限等级
514
+
515
+ # === 网络配置 ===
516
+ net:
517
+ userAgent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
518
+ rssHubUrl: "https://hub.slarker.me"
519
+ proxyAgent:
520
+ enabled: false
521
+ protocol: "socks5"
522
+ host: "127.0.0.1"
523
+ port: 17890
524
+ auth:
525
+ enabled: false
526
+ username: ""
527
+ password: ""
528
+
529
+ # === 消息处理 ===
530
+ msg:
531
+ censor: false # 内容审查
532
+ keywordFilter: [] # 关键词过滤
533
+ keywordBlock: [] # 关键词屏蔽
534
+ blockString: "*" # 屏蔽替换字符
535
+ rssHubUrl: "https://hub.slarker.me"
536
+
537
+ # === 模板配置 ===
538
+ template:
539
+ custom: "" # 自定义模板 HTML
540
+ customRemark: "" # 自定义备注
541
+ bodyWidth: 600 # 渲染宽度
542
+ bodyPadding: 20 # 渲染内边距
543
+ bodyFontSize: 16 # 字体大小
544
+ deviceScaleFactor: 2 # 清晰度倍数
545
+ content: "" # content 模板内容
546
+
547
+ # === 基础配置 ===
548
+ basic:
549
+ usePoster: false # 使用视频封面
550
+ margeVideo: false # 合并视频
551
+ defaultTemplate: "auto" # 默认模板
552
+ timeout: 60 # 请求超时(秒)
553
+ refresh: 5 # 刷新间隔(分钟)
554
+ merge: "不合并" # 消息合并策略
555
+ maxRssItem: 10 # 最大条目数
556
+ firstLoad: true # 首次加载行为
557
+ urlDeduplication: false # URL 去重
558
+ resendUpdataContent: "disable" # 重发内容策略
559
+ imageMode: "base64" # 图片模式
560
+ videoMode: "filter" # 视频模式
561
+ autoSplitImage: false # 自动分割图片
562
+ cacheDir: "./data/cache" # 缓存目录
563
+ replaceDir: "./data/replace" # 替换目录
564
+
565
+ # === AI 配置 ===
566
+ ai:
567
+ enabled: false # 启用 AI
568
+ baseUrl: "https://api.openai.com/v1"
569
+ apiKey: ""
570
+ model: "gpt-3.5-turbo"
571
+ placement: "top" # top | bottom
572
+ separator: "────────"
573
+ prompt: "请为以下内容生成简短摘要:\n\n标题:{{title}}\n\n内容:{{content}}\n\n摘要:"
574
+ maxInputLength: 2000
575
+ timeout: 30000
576
+
577
+ # === 调试配置 ===
578
+ debug: "info" # disable | error | info | details
579
+ ```
580
+
581
+ ## 🐛 调试指南
582
+
583
+ ### 启用详细日志
584
+
585
+ ```yaml
586
+ debug: "details" # 显示所有调试信息
587
+ ```
588
+
589
+ ### 常见问题
590
+
591
+ **1. 订阅不更新**
592
+ - 检查刷新间隔设置
593
+ - 使用 `rsso -p <id>` 手动拉取测试
594
+ - 查看日志确认是否有错误
595
+
596
+ **2. 图片不显示**
597
+ - 检查是否安装了 `puppeteer` 插件
598
+ - 确认 `imageMode` 配置正确
599
+ - 查看日志中的渲染错误
600
+
601
+ **3. AI 摘要不生成**
602
+ - 确认 AI 功能已启用
603
+ - 检查 API 配置是否正确
604
+ - 查看日志中的 API 请求错误
605
+
606
+ **4. 代理不生效**
607
+ - 确认代理配置正确
608
+ - 检查代理服务器是否可用
609
+ - 使用 `debug: details` 查看代理日志
610
+
611
+ ## 📜 更新日志
612
+
613
+ ### 5.0.0-beta (2025-01-15)
614
+
615
+ #### 新增功能
616
+ - ✨ **AI 摘要功能** - 集成 OpenAI API,自动生成内容摘要
617
+ - 🎨 **AI 摘要渲染** - AI 摘要完美集成到图片渲染中
618
+ - 📝 **Markdown 支持** - AI 摘要支持完整的 Markdown 语法
619
+ - 🎯 **统一样式** - AI 摘要使用与模板一致的设计风格
620
+
621
+ #### 功能改进
622
+ - 🔧 **优化日志系统** - 调试信息分级管理,默认不显示技术细节
623
+ - 📊 **改进代理配置** - 更灵活的代理配置和优先级处理
624
+ - 🎨 **优化模板样式** - 使用 Tailwind CSS,提升视觉效果
625
+ - ⚡ **性能优化** - 图片预处理、并行下载等性能提升
626
+
627
+ #### 技术更新
628
+ - 📦 **添加依赖** - 引入 `marked` 库用于 Markdown 解析
629
+ - 🏗️ **代码重构** - 优化模块结构,提升可维护性
630
+ - 📚 **完善文档** - 更新 README,添加详细的功能说明
631
+
632
+ ### 4.8.16 及更早版本
633
+
634
+ 详见 [GitHub Releases](https://github.com/Anyuluo996/koishi-plugin-rss-owl/releases)
635
+
636
+ ## 🔜 TODO
637
+
638
+ - [ ] 网页监控功能增强
639
+ - [ ] 更多 AI 功能集成
640
+ - [ ] 自定义 AI 模型支持
641
+ - [ ] 内容过滤规则增强
642
+ - [ ] 订阅分组管理
643
+ - [ ] 数据统计面板
644
+
645
+ ## 🤝 贡献
646
+
647
+ 欢迎提交 Issue 和 Pull Request!
648
+
649
+ ### 开发
650
+
651
+ ```bash
652
+ # 克隆项目
653
+ git clone https://github.com/Anyuluo996/koishi-plugin-rss-owl.git
654
+
655
+ # 安装依赖
656
+ cd koishi-plugin-rss-owl
657
+ npm install --legacy-peer-deps
658
+
659
+ # 开发模式
660
+ npm run dev
661
+
662
+ # 构建
663
+ npm run build
664
+
665
+ # 运行测试
666
+ npm test
667
+
668
+ # 生成覆盖率报告
669
+ npm run test:coverage
670
+
671
+ # 监听模式(开发时使用)
672
+ npm run test:watch
673
+ ```
674
+
675
+ ### 测试
676
+
677
+ 本项目拥有完善的测试套件,包含 165+ 个测试用例,覆盖核心功能模块。
678
+
679
+ **测试覆盖率**:
680
+ - 语句覆盖率: 90.83%
681
+ - 分支覆盖率: 74.86%
682
+ - 函数覆盖率: 97.43%
683
+ - 行覆盖率: 90.21%
684
+
685
+ **测试范围**:
686
+ - ✅ 工具函数测试(日期解析、URL处理、内容清理)
687
+ - ✅ HTTP 请求测试(RequestManager、createHttpFunction)
688
+ - ✅ 错误处理测试(友好错误消息、错误类型识别)
689
+ - ✅ 日志系统测试(debug输出、级别过滤)
690
+ - ✅ 集成测试(真实HTTP请求、代理配置)
691
+
692
+ 详见 [TESTING.md](./TESTING.md) 了解更多测试信息。
693
+
694
+ ## 💬 致谢
695
+
696
+ 本项目基于以下优秀的开源项目:
697
+
698
+ - [koishi-plugin-rss](https://github.com/koishijs/koishi-plugin-rss) - Koishi 官方 RSS 插件
699
+ - [koishi-plugin-rss-discourse](https://github.com/MirrorCY/koishi-plugin-rss) - 功能完善的 RSS 插件
700
+ - [koishi-plugin-rss-cat](https://github.com/jexjws/koishi-plugin-rss-cat) - RSS 订阅管理插件
701
+ - [koishi-plugin-rss](https://github.com/borraken/koishi-plugin-rss-owl) - 原库
702
+
703
+ 感谢 Koishi 社区的支持和贡献!
704
+
705
+ ## 📄 许可证
706
+
707
+ [MIT License](LICENSE)
708
+
709
+ ---
710
+
711
+ **Made with ❤️ by Anyuluo**