rssany 0.1.0

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 (84) hide show
  1. package/.env.example +52 -0
  2. package/README.md +196 -0
  3. package/bin/rssany.js +6 -0
  4. package/config.examples.json +11 -0
  5. package/dist/index.js +4037 -0
  6. package/dist/index.js.map +1 -0
  7. package/package.json +98 -0
  8. package/plugins/sources/email.rssany.js +96 -0
  9. package/plugins/sources/rss.rssany.js +83 -0
  10. package/plugins/templates/site.rssany.js +26 -0
  11. package/scripts/reset.mjs +136 -0
  12. package/sources.example.json +562 -0
  13. package/statics/401.html +56 -0
  14. package/statics/404.html +12 -0
  15. package/statics/README.md +7 -0
  16. package/statics/image.png +0 -0
  17. package/webui/build/200.html +51 -0
  18. package/webui/build/_app/env.js +1 -0
  19. package/webui/build/_app/immutable/assets/0.BUAXpTm6.css +1 -0
  20. package/webui/build/_app/immutable/assets/10.I1OuCLrU.css +1 -0
  21. package/webui/build/_app/immutable/assets/11.CrO9xaki.css +1 -0
  22. package/webui/build/_app/immutable/assets/12.BEi6fInA.css +1 -0
  23. package/webui/build/_app/immutable/assets/14.Ctlgn1LZ.css +1 -0
  24. package/webui/build/_app/immutable/assets/2.eJ80XOGm.css +1 -0
  25. package/webui/build/_app/immutable/assets/4.B8-jYAVj.css +1 -0
  26. package/webui/build/_app/immutable/assets/5.ClehBQ0g.css +1 -0
  27. package/webui/build/_app/immutable/assets/6.Drn-0DON.css +1 -0
  28. package/webui/build/_app/immutable/assets/7.ms2diq_q.css +1 -0
  29. package/webui/build/_app/immutable/assets/8.DKymkjjs.css +1 -0
  30. package/webui/build/_app/immutable/assets/9.BZheTlzZ.css +1 -0
  31. package/webui/build/_app/immutable/assets/SourcesList.BhtYlRsQ.css +1 -0
  32. package/webui/build/_app/immutable/chunks/BUApaBEI.js +1 -0
  33. package/webui/build/_app/immutable/chunks/BUngiKFg.js +1 -0
  34. package/webui/build/_app/immutable/chunks/Bfc47y5P.js +1 -0
  35. package/webui/build/_app/immutable/chunks/Bt0fzibd.js +1 -0
  36. package/webui/build/_app/immutable/chunks/BxHqDcpw.js +1 -0
  37. package/webui/build/_app/immutable/chunks/ByQRbEUX.js +1 -0
  38. package/webui/build/_app/immutable/chunks/C12mHcUp.js +6 -0
  39. package/webui/build/_app/immutable/chunks/C1kQ4pHy.js +1 -0
  40. package/webui/build/_app/immutable/chunks/C74gbb4Q.js +1 -0
  41. package/webui/build/_app/immutable/chunks/CAtemnMo.js +1 -0
  42. package/webui/build/_app/immutable/chunks/CBY2biv-.js +1 -0
  43. package/webui/build/_app/immutable/chunks/CVjCNJia.js +1 -0
  44. package/webui/build/_app/immutable/chunks/Cg3zih_x.js +1 -0
  45. package/webui/build/_app/immutable/chunks/CjQQ9_Q2.js +2 -0
  46. package/webui/build/_app/immutable/chunks/CkS2JMkE.js +1 -0
  47. package/webui/build/_app/immutable/chunks/CtHRh_pJ.js +1 -0
  48. package/webui/build/_app/immutable/chunks/D-6mYMI1.js +1 -0
  49. package/webui/build/_app/immutable/chunks/D1Gs8-g3.js +1 -0
  50. package/webui/build/_app/immutable/chunks/D9dRVKgL.js +1 -0
  51. package/webui/build/_app/immutable/chunks/DCEY1XiC.js +1 -0
  52. package/webui/build/_app/immutable/chunks/DI-t-G_K.js +2 -0
  53. package/webui/build/_app/immutable/chunks/DTUxjyWL.js +1 -0
  54. package/webui/build/_app/immutable/chunks/DWJZOHke.js +1 -0
  55. package/webui/build/_app/immutable/chunks/Dgs6d7X5.js +1 -0
  56. package/webui/build/_app/immutable/chunks/DjpPK99f.js +71 -0
  57. package/webui/build/_app/immutable/chunks/DjzVVxpy.js +1 -0
  58. package/webui/build/_app/immutable/chunks/LQVMBmDN.js +1 -0
  59. package/webui/build/_app/immutable/chunks/Qw0Qgx6J.js +1 -0
  60. package/webui/build/_app/immutable/chunks/V2-VOe88.js +1 -0
  61. package/webui/build/_app/immutable/chunks/bohabpgg.js +1 -0
  62. package/webui/build/_app/immutable/chunks/c-YfbAB_.js +8 -0
  63. package/webui/build/_app/immutable/chunks/hp4PFHFv.js +1 -0
  64. package/webui/build/_app/immutable/chunks/tpTQfoNn.js +1 -0
  65. package/webui/build/_app/immutable/entry/app.4I2fqDIL.js +2 -0
  66. package/webui/build/_app/immutable/entry/start.CrgdT2Qb.js +1 -0
  67. package/webui/build/_app/immutable/nodes/0.gA9sQtoM.js +11 -0
  68. package/webui/build/_app/immutable/nodes/1.Bybh7btp.js +1 -0
  69. package/webui/build/_app/immutable/nodes/10.DEkJCZ6X.js +1 -0
  70. package/webui/build/_app/immutable/nodes/11.CDNNJqlQ.js +1 -0
  71. package/webui/build/_app/immutable/nodes/12.D9g8GCjm.js +24 -0
  72. package/webui/build/_app/immutable/nodes/13.DRpZV72T.js +1 -0
  73. package/webui/build/_app/immutable/nodes/14.DVeJW6bd.js +1 -0
  74. package/webui/build/_app/immutable/nodes/15.BtYZF6FM.js +1 -0
  75. package/webui/build/_app/immutable/nodes/16.Ba_qJjp6.js +1 -0
  76. package/webui/build/_app/immutable/nodes/2.DIZ4IPNm.js +1 -0
  77. package/webui/build/_app/immutable/nodes/3.BFSNf0FK.js +1 -0
  78. package/webui/build/_app/immutable/nodes/4.BSsIjejE.js +2 -0
  79. package/webui/build/_app/immutable/nodes/5.COxRT9Oe.js +1 -0
  80. package/webui/build/_app/immutable/nodes/6.CBgQ4YzB.js +1 -0
  81. package/webui/build/_app/immutable/nodes/7.BbzWOL0V.js +6 -0
  82. package/webui/build/_app/immutable/nodes/8.C8120200.js +1 -0
  83. package/webui/build/_app/immutable/nodes/9.BH_BGQQ4.js +1 -0
  84. package/webui/build/_app/version.json +1 -0
@@ -0,0 +1,562 @@
1
+ {
2
+ "sources": [
3
+ {
4
+ "ref": "https://www.theinformation.com/",
5
+ "label": "The Information",
6
+ "description": "科技商业深度报道",
7
+ "refresh": "1h"
8
+ },
9
+ {
10
+ "ref": "https://techcrunch.com/category/artificial-intelligence/",
11
+ "label": "TechCrunch AI",
12
+ "description": "AI 创业与产品资讯",
13
+ "refresh": "1h"
14
+ },
15
+ {
16
+ "ref": "https://www.technologyreview.com/",
17
+ "label": "MIT Technology Review",
18
+ "description": "MIT 科技评论",
19
+ "refresh": "1h"
20
+ },
21
+ {
22
+ "ref": "https://venturebeat.com/",
23
+ "label": "VentureBeat",
24
+ "description": "科技与创投新闻",
25
+ "refresh": "1h"
26
+ },
27
+ {
28
+ "ref": "https://slashdot.org/",
29
+ "label": "Slashdot",
30
+ "description": "科技新闻聚合",
31
+ "refresh": "1h"
32
+ },
33
+ {
34
+ "ref": "https://news.ycombinator.com/newest",
35
+ "label": "HN newest",
36
+ "description": "Hacker News 最新",
37
+ "refresh": "30min"
38
+ },
39
+ {
40
+ "ref": "https://x.com/elonmusk",
41
+ "label": "elonmusk",
42
+ "description": "Elon Musk 推文",
43
+ "refresh": "1h"
44
+ },
45
+ {
46
+ "ref": "https://x.com/AIatMeta",
47
+ "label": "Meta AI",
48
+ "description": "Meta AI 官方",
49
+ "refresh": "1h"
50
+ },
51
+ {
52
+ "ref": "https://x.com/OpenAI",
53
+ "label": "OpenAI",
54
+ "description": "OpenAI 官方",
55
+ "refresh": "1h"
56
+ },
57
+ {
58
+ "ref": "https://x.com/GoogleAI",
59
+ "label": "Google",
60
+ "description": "Google AI 官方",
61
+ "refresh": "1h"
62
+ },
63
+ {
64
+ "ref": "https://x.com/Anthropic",
65
+ "label": "Anthropic",
66
+ "description": "Anthropic 官方",
67
+ "refresh": "1h"
68
+ },
69
+ {
70
+ "ref": "https://x.com/Tesla",
71
+ "label": "Tesla",
72
+ "description": "特斯拉官方",
73
+ "refresh": "1h"
74
+ },
75
+ {
76
+ "ref": "https://x.com/Microsoft",
77
+ "label": "Microsoft",
78
+ "description": "微软官方",
79
+ "refresh": "1h"
80
+ },
81
+ {
82
+ "ref": "https://x.com/NVIDIA",
83
+ "label": "NVIDIA",
84
+ "description": "英伟达官方",
85
+ "refresh": "1h"
86
+ },
87
+ {
88
+ "ref": "https://x.com/NVIDIARobotics",
89
+ "label": "NVIDIA Robotics",
90
+ "description": "NVIDIA 机器人",
91
+ "refresh": "1h"
92
+ },
93
+ {
94
+ "ref": "https://x.com/BostonDynamics",
95
+ "label": "Boston Dynamics",
96
+ "description": "波士顿动力",
97
+ "refresh": "1h"
98
+ },
99
+ {
100
+ "ref": "https://x.com/xai",
101
+ "label": "xAI",
102
+ "description": "xAI 官方",
103
+ "refresh": "1h"
104
+ },
105
+ {
106
+ "ref": "https://x.com/Figure_robot",
107
+ "label": "Figure AI",
108
+ "description": "Figure 人形机器人",
109
+ "refresh": "1h"
110
+ },
111
+ {
112
+ "ref": "https://rss.arxiv.org/rss/cs.CL",
113
+ "label": "arxiv cs.CL (NLP/LLM)",
114
+ "description": "NLP/大模型论文",
115
+ "refresh": "1day"
116
+ },
117
+ {
118
+ "ref": "https://rss.arxiv.org/rss/cs.LG",
119
+ "label": "arxiv cs.LG (Machine Learning)",
120
+ "description": "机器学习论文",
121
+ "refresh": "1day"
122
+ },
123
+ {
124
+ "ref": "https://x.com/turingcom",
125
+ "label": "Turing",
126
+ "description": "Turing 数据标注",
127
+ "refresh": "1h"
128
+ },
129
+ {
130
+ "ref": "https://x.com/scale_ai",
131
+ "label": "Scale AI",
132
+ "description": "Scale AI 数据标注",
133
+ "refresh": "1h"
134
+ },
135
+ {
136
+ "ref": "https://x.com/HelloSurgeAI",
137
+ "label": "Surge AI",
138
+ "description": "Surge AI 数据标注",
139
+ "refresh": "1h"
140
+ },
141
+ {
142
+ "ref": "https://x.com/labelbox",
143
+ "label": "Labelbox",
144
+ "description": "Labelbox 数据标注平台",
145
+ "refresh": "1h"
146
+ },
147
+ {
148
+ "ref": "https://x.com/V7Labs",
149
+ "label": "V7Labs",
150
+ "description": "V7 数据标注",
151
+ "refresh": "1h"
152
+ },
153
+ {
154
+ "ref": "https://supervisely.com/blog/",
155
+ "label": "Supervisely",
156
+ "description": "计算机视觉标注平台",
157
+ "refresh": "1h"
158
+ },
159
+ {
160
+ "ref": "https://x.com/crowdgenbyappen",
161
+ "label": "Appen",
162
+ "description": "Appen 数据标注",
163
+ "refresh": "1h"
164
+ },
165
+ {
166
+ "ref": "https://x.com/SegmentsAI",
167
+ "label": "Segments.ai",
168
+ "description": "Segments 数据标注",
169
+ "refresh": "1h"
170
+ },
171
+ {
172
+ "ref": "https://www.kognic.com/articles",
173
+ "label": "Kognic",
174
+ "description": "自动驾驶数据标注",
175
+ "refresh": "1h"
176
+ },
177
+ {
178
+ "ref": "https://x.com/yoshuabengio",
179
+ "label": "Yoshua Bengio",
180
+ "description": "图灵奖得主,深度学习先驱",
181
+ "refresh": "1h"
182
+ },
183
+ {
184
+ "ref": "https://x.com/ylecun",
185
+ "label": "Yann LeCun",
186
+ "description": "图灵奖得主,卷积网络发明者",
187
+ "refresh": "1h"
188
+ },
189
+ {
190
+ "ref": "https://x.com/geoffreyhinton",
191
+ "label": "Geoffrey Hinton",
192
+ "description": "图灵奖得主,深度学习教父",
193
+ "refresh": "1h"
194
+ },
195
+ {
196
+ "ref": "https://x.com/AndrewYNg",
197
+ "label": "Andrew Ng",
198
+ "description": "Coursera 创始人,AI 教育",
199
+ "refresh": "1h"
200
+ },
201
+ {
202
+ "ref": "https://x.com/drfeifei",
203
+ "label": "李飞飞",
204
+ "description": "斯坦福 AI 实验室主任",
205
+ "refresh": "1h"
206
+ },
207
+ {
208
+ "ref": "https://x.com/percyliang",
209
+ "label": "Percy Liang",
210
+ "description": "斯坦福 CRFM 主任",
211
+ "refresh": "1h"
212
+ },
213
+ {
214
+ "ref": "https://x.com/ilyasut",
215
+ "label": "Ilya Sutskever",
216
+ "description": "OpenAI 联合创始人",
217
+ "refresh": "1h"
218
+ },
219
+ {
220
+ "ref": "https://x.com/timbrooks",
221
+ "label": "Tim Brooks",
222
+ "description": "OpenAI 研究员",
223
+ "refresh": "1h"
224
+ },
225
+ {
226
+ "ref": "https://x.com/stuartj_russell",
227
+ "label": "Stuart Russell",
228
+ "description": "《人工智能》教材作者",
229
+ "refresh": "1h"
230
+ },
231
+ {
232
+ "ref": "https://x.com/songhan_mit",
233
+ "label": "Song Han",
234
+ "description": "MIT 高效深度学习",
235
+ "refresh": "1h"
236
+ },
237
+ {
238
+ "ref": "https://x.com/lm_zheng",
239
+ "label": "郑海涛",
240
+ "description": "AI 研究者",
241
+ "refresh": "1h"
242
+ },
243
+ {
244
+ "ref": "https://x.com/chenkaidev",
245
+ "label": "陈恺",
246
+ "description": "AI 开发者",
247
+ "refresh": "1h"
248
+ },
249
+ {
250
+ "ref": "https://www.zhipuai.cn/zh/research",
251
+ "label": "智谱研究",
252
+ "description": "智谱 AI 研究院",
253
+ "refresh": "1day"
254
+ },
255
+ {
256
+ "ref": "https://www.worldlabs.ai/blog",
257
+ "label": "World Labs",
258
+ "description": "World Labs 博客",
259
+ "refresh": "1day"
260
+ },
261
+ {
262
+ "ref": "https://www.tesla.com/AI",
263
+ "label": "Tesla AI",
264
+ "description": "特斯拉 AI 与 FSD",
265
+ "refresh": "1day"
266
+ },
267
+ {
268
+ "ref": "https://www.sensetime.com/cn/technology-achievements",
269
+ "label": "商汤研究院",
270
+ "description": "商汤技术成果",
271
+ "refresh": "1day"
272
+ },
273
+ {
274
+ "ref": "https://www.selectdataset.com/",
275
+ "label": "Select Dataset",
276
+ "description": "数据集检索平台",
277
+ "refresh": "1day"
278
+ },
279
+ {
280
+ "ref": "https://www.moonshot.ai/",
281
+ "label": "Moonshot",
282
+ "description": "月之暗面",
283
+ "refresh": "1day"
284
+ },
285
+ {
286
+ "ref": "https://www.microsoft.com/en-us/research/blog/",
287
+ "label": "Microsoft Research",
288
+ "description": "微软研究院博客",
289
+ "refresh": "1day"
290
+ },
291
+ {
292
+ "ref": "https://www.csail.mit.edu/research",
293
+ "label": "MIT CSAIL",
294
+ "description": "MIT 计算机与 AI 实验室",
295
+ "refresh": "1day"
296
+ },
297
+ {
298
+ "ref": "https://www.appen.com/resources",
299
+ "label": "Appen Resources",
300
+ "description": "Appen 资源与白皮书",
301
+ "refresh": "1day"
302
+ },
303
+ {
304
+ "ref": "https://www.anthropic.com/research",
305
+ "label": "Anthropic Research",
306
+ "description": "Anthropic 研究论文",
307
+ "refresh": "1day"
308
+ },
309
+ {
310
+ "ref": "https://www.amii.ca/research-talent",
311
+ "label": "AMII",
312
+ "description": "加拿大 AI 研究所",
313
+ "refresh": "1day"
314
+ },
315
+ {
316
+ "ref": "https://www.5radar.com",
317
+ "label": "5radar",
318
+ "description": "AI 资讯聚合",
319
+ "refresh": "1h"
320
+ },
321
+ {
322
+ "ref": "https://trendshift.io/",
323
+ "label": "Trendshift",
324
+ "description": "AI 趋势追踪",
325
+ "refresh": "1h"
326
+ },
327
+ {
328
+ "ref": "https://tech.meituan.com/",
329
+ "label": "美团技术",
330
+ "description": "美团技术博客",
331
+ "refresh": "1day"
332
+ },
333
+ {
334
+ "ref": "https://research.google/",
335
+ "label": "Google Research",
336
+ "description": "Google 研究院",
337
+ "refresh": "1day"
338
+ },
339
+ {
340
+ "ref": "https://research.google/resources/datasets/",
341
+ "label": "Google Datasets",
342
+ "description": "Google 公开数据集",
343
+ "refresh": "1day"
344
+ },
345
+ {
346
+ "ref": "https://research.baidu.com/",
347
+ "label": "百度研究院",
348
+ "description": "百度 AI 研究院",
349
+ "refresh": "1day"
350
+ },
351
+ {
352
+ "ref": "https://pjlab-adg.github.io/publications/",
353
+ "label": "PJLab",
354
+ "description": "浦江实验室自动驾驶",
355
+ "refresh": "1day"
356
+ },
357
+ {
358
+ "ref": "https://paperswithcode.co/",
359
+ "label": "Papers with Code",
360
+ "description": "论文与代码检索",
361
+ "refresh": "1day"
362
+ },
363
+ {
364
+ "ref": "https://opendrivelab.com/EmbodiedAI",
365
+ "label": "OpenDriveLab Embodied",
366
+ "description": "具身智能与自动驾驶",
367
+ "refresh": "1day"
368
+ },
369
+ {
370
+ "ref": "https://opendrivelab.com/",
371
+ "label": "OpenDriveLab",
372
+ "description": "上海 AI 实验室自动驾驶",
373
+ "refresh": "1day"
374
+ },
375
+ {
376
+ "ref": "https://opendatalab.org.cn",
377
+ "label": "OpenDataLab",
378
+ "description": "开放数据平台",
379
+ "refresh": "1day"
380
+ },
381
+ {
382
+ "ref": "https://opencompass.org.cn/home",
383
+ "label": "OpenCompass",
384
+ "description": "大模型评测平台",
385
+ "refresh": "1day"
386
+ },
387
+ {
388
+ "ref": "https://openai.com/research/index/",
389
+ "label": "OpenAI Research",
390
+ "description": "OpenAI 研究论文",
391
+ "refresh": "1day"
392
+ },
393
+ {
394
+ "ref": "https://mlcommons.org/research/",
395
+ "label": "MLCommons",
396
+ "description": "MLCommons 基准与研究",
397
+ "refresh": "1day"
398
+ },
399
+ {
400
+ "ref": "https://mila.quebec/en",
401
+ "label": "Mila Quebec",
402
+ "description": "蒙特利尔 AI 研究所",
403
+ "refresh": "1day"
404
+ },
405
+ {
406
+ "ref": "https://lmsys.org/projects/",
407
+ "label": "LMSys",
408
+ "description": "大模型排行榜",
409
+ "refresh": "1day"
410
+ },
411
+ {
412
+ "ref": "https://intl.cloud.tencent.com/zh/dynamic/blogs/",
413
+ "label": "腾讯云博客",
414
+ "description": "腾讯云技术博客",
415
+ "refresh": "1day"
416
+ },
417
+ {
418
+ "ref": "https://huggingface.co/blog",
419
+ "label": "Hugging Face Blog",
420
+ "description": "Hugging Face 官方博客",
421
+ "refresh": "1day"
422
+ },
423
+ {
424
+ "ref": "https://github.com/deepseek-ai",
425
+ "label": "DeepSeek",
426
+ "description": "DeepSeek 开源项目",
427
+ "refresh": "1day"
428
+ },
429
+ {
430
+ "ref": "https://github.com/BAAI-WuDao/Paper-Article",
431
+ "label": "BAAI WuDao",
432
+ "description": "智源悟道论文",
433
+ "refresh": "1day"
434
+ },
435
+ {
436
+ "ref": "https://flageval.baai.ac.cn/#/news",
437
+ "label": "FlagEval",
438
+ "description": "智源大模型评测",
439
+ "refresh": "1day"
440
+ },
441
+ {
442
+ "ref": "https://deepmind.google/research/",
443
+ "label": "DeepMind Research",
444
+ "description": "DeepMind 研究",
445
+ "refresh": "1day"
446
+ },
447
+ {
448
+ "ref": "https://dataverse.harvard.edu",
449
+ "label": "Harvard Dataverse",
450
+ "description": "哈佛学术数据集",
451
+ "refresh": "1day"
452
+ },
453
+ {
454
+ "ref": "https://datahub.com/blog/",
455
+ "label": "DataHub",
456
+ "description": "数据工程博客",
457
+ "refresh": "1day"
458
+ },
459
+ {
460
+ "ref": "https://damo.alibaba.com/research-areas?language=en",
461
+ "label": "阿里达摩院",
462
+ "description": "阿里巴巴达摩院",
463
+ "refresh": "1day"
464
+ },
465
+ {
466
+ "ref": "https://crfm.stanford.edu",
467
+ "label": "Stanford CRFM",
468
+ "description": "斯坦福基础模型中心",
469
+ "refresh": "1day"
470
+ },
471
+ {
472
+ "ref": "https://brightdata.com/blog",
473
+ "label": "Bright Data",
474
+ "description": "数据采集与代理",
475
+ "refresh": "1day"
476
+ },
477
+ {
478
+ "ref": "https://bbs.huaweicloud.com/blogs",
479
+ "label": "华为云博客",
480
+ "description": "华为云技术博客",
481
+ "refresh": "1day"
482
+ },
483
+ {
484
+ "ref": "https://bair.berkeley.edu/blog/",
485
+ "label": "Berkeley BAIR",
486
+ "description": "伯克利 AI 研究院",
487
+ "refresh": "1day"
488
+ },
489
+ {
490
+ "ref": "https://arena.ai/blog/leaderboard-changelog/",
491
+ "label": "Arena.ai",
492
+ "description": "大模型竞技场更新",
493
+ "refresh": "1day"
494
+ },
495
+ {
496
+ "ref": "https://archive.ics.uci.edu",
497
+ "label": "UCI ML Repository",
498
+ "description": "UCI 机器学习数据集",
499
+ "refresh": "1day"
500
+ },
501
+ {
502
+ "ref": "https://amilabs.ai/research",
503
+ "label": "AMI Labs",
504
+ "description": "AMI 研究院",
505
+ "refresh": "1day"
506
+ },
507
+ {
508
+ "ref": "https://allenai.org",
509
+ "label": "Allen AI",
510
+ "description": "艾伦 AI 研究所",
511
+ "refresh": "1day"
512
+ },
513
+ {
514
+ "ref": "https://aizstar.com/",
515
+ "label": "AIzstar",
516
+ "description": "AI 资讯",
517
+ "refresh": "1h"
518
+ },
519
+ {
520
+ "ref": "https://ailab.tencent.com/ailab/en/paper/",
521
+ "label": "腾讯 AI Lab",
522
+ "description": "腾讯 AI Lab 论文",
523
+ "refresh": "1day"
524
+ },
525
+ {
526
+ "ref": "https://ai.meta.com/results/?content_types%5B0%5D=publication",
527
+ "label": "Meta AI Publications",
528
+ "description": "Meta AI 论文",
529
+ "refresh": "1day"
530
+ },
531
+ {
532
+ "ref": "https://agi-eval.org/evaluation/home",
533
+ "label": "AGI Eval",
534
+ "description": "AGI 评测",
535
+ "refresh": "1day"
536
+ },
537
+ {
538
+ "ref": "http://dev3.noahlab.com.hk/research.html",
539
+ "label": "Noah Lab",
540
+ "description": "香港 Noah 实验室",
541
+ "refresh": "1day"
542
+ },
543
+ {
544
+ "ref": "https://seed.bytedance.com/zh/research",
545
+ "label": "字节种子实验室",
546
+ "description": "字节跳动 AI 研究",
547
+ "refresh": "1day"
548
+ },
549
+ {
550
+ "ref": "lingowhale://articles?app_id=app_91458c33f7ecc4f666edd52fb8333806&app_secret=secret_81f1b8b073298fd7b49f737521be8dbfef93ae86b173b1a34f5e9e810ef927f7",
551
+ "label": "语鲸推荐文章",
552
+ "description": "语鲸推荐文章流",
553
+ "refresh": "1h"
554
+ },
555
+ {
556
+ "ref": "lingowhale://today?app_id=app_91458c33f7ecc4f666edd52fb8333806&app_secret=secret_81f1b8b073298fd7b49f737521be8dbfef93ae86b173b1a34f5e9e810ef927f7",
557
+ "label": "语鲸今日文章",
558
+ "description": "语鲸今日精选",
559
+ "refresh": "1h"
560
+ }
561
+ ]
562
+ }
@@ -0,0 +1,56 @@
1
+ <!DOCTYPE html>
2
+ <html lang="zh-CN">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1">
6
+ <title>401 需要登录</title>
7
+ <style>
8
+ body { font-family: system-ui, sans-serif; max-width: 560px; margin: 2rem auto; padding: 0 1rem; }
9
+ h1 { font-size: 1.25rem; margin-bottom: 1rem; }
10
+ .url { word-break: break-all; background: #f5f5f5; padding: 0.5rem 0.75rem; border-radius: 4px; margin: 0.5rem 0 1rem; font-size: 0.875rem; }
11
+ .btn { padding: 0.5rem 1rem; background: #333; color: #fff; border: none; border-radius: 4px; cursor: pointer; font-size: 1rem; }
12
+ .btn:hover { background: #555; }
13
+ .btn:disabled { opacity: 0.6; cursor: not-allowed; }
14
+ .msg { margin-top: 1rem; font-size: 0.875rem; color: #666; }
15
+ .links { margin-top: 1.5rem; font-size: 0.875rem; }
16
+ .links a { color: #0969da; text-decoration: none; }
17
+ .links a:hover { text-decoration: underline; }
18
+ </style>
19
+ </head>
20
+ <body>
21
+ <h1>401 需要登录</h1>
22
+ <p>当前请求的订阅地址需要登录后才能拉取:</p>
23
+ <div class="url" id="failed-url">{{listUrl}}</div>
24
+ <p>请点击下方按钮,在<strong>弹出的有头浏览器窗口</strong>中完成该站点的登录,完成后关闭窗口并刷新本页或 RSS 地址即可。</p>
25
+ <button type="button" class="btn" id="btn-login" data-list-url="{{listUrl}}">打开有头登录页</button>
26
+ <p class="msg" id="api-msg"></p>
27
+ <p class="links"><a href="/">首页</a> · <a href="/admin/plugins">已生效插件</a>(可对需登录站点批量打开登录页)</p>
28
+ <script>
29
+ (function(){
30
+ var btn = document.getElementById('btn-login');
31
+ var urlEl = document.getElementById('failed-url');
32
+ var msgEl = document.getElementById('api-msg');
33
+ var listUrl = btn.getAttribute('data-list-url');
34
+ if (!listUrl) {
35
+ urlEl.textContent = '(未知地址)';
36
+ btn.disabled = true;
37
+ return;
38
+ }
39
+ btn.onclick = function(){
40
+ btn.disabled = true;
41
+ msgEl.textContent = '正在打开登录窗口…';
42
+ fetch('/auth/ensure?url=' + encodeURIComponent(listUrl), { method: 'POST' })
43
+ .then(function(r){ return r.json(); })
44
+ .then(function(d){
45
+ msgEl.textContent = d.message || (d.ok ? '已打开登录窗口。' : '请求失败');
46
+ if (!d.ok) btn.disabled = false;
47
+ })
48
+ .catch(function(){
49
+ msgEl.textContent = '请求失败,请重试';
50
+ btn.disabled = false;
51
+ });
52
+ };
53
+ })();
54
+ </script>
55
+ </body>
56
+ </html>
@@ -0,0 +1,12 @@
1
+ <!DOCTYPE html>
2
+ <html lang="zh-CN">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1">
6
+ <title>404 未找到</title>
7
+ </head>
8
+ <body>
9
+ <h1>404 未找到</h1>
10
+ <p>请求的 URL 无匹配的站点规则,请检查 URL 或添加对应插件。</p>
11
+ </body>
12
+ </html>
@@ -0,0 +1,7 @@
1
+ # statics
2
+
3
+ 静态 HTML 页面:home(首页)、401、404。
4
+
5
+ - **home.html**:首页,含 Try This 示例链接;下方「需登录的站点」从 `/admin/plugins` 拉取,每个站点可点击「打开登录页」调用 `POST /auth/ensure?siteId=...` 批量做登录。
6
+ - **401.html**:需登录时返回;占位符 `{{listUrl}}` 由 router 注入为失败请求的订阅地址;页内「打开有头登录页」按钮调用 `POST /auth/ensure?url=...` 弹出有头浏览器完成登录。
7
+ - **404.html**:无匹配站点时返回。
Binary file