Afuxh

hot-news-aggregator

"生成可配置的全领域热点聚合网站,支持30数据源(覆盖科技/AI/时事/财经/科学/教育/生活方式)、智能评分、全量视角评论+行动引导、中文小结、RSS输出、JSON API、sitemap、OPML、数据快照、趋势分析、多站点并行、暗色模式、收藏、搜索、链接复制、邮件订阅、多源去重、快速模式。全流程进度条显示。自带运维自检工具。可部署到 GitHub Pages/Vercel/Cloudflare。当用户说热点网站、热点聚合、news aggregator、生成网站时触发。"

Afuxh 0 Updated 1d ago

Resources

43
GitHub

Install

npx skillscat add afuxh/fuqing-profile

Install via the SkillsCat registry.

SKILL.md

通用热点聚合网站生成器 v3.7

以个人成长视角追踪时代脉搏——AI、科技、时事、财经、科学、教育、生活方式,全领域热点一站聚合。支持30个数据源、智能评分、AI视角评论+行动引导(全量覆盖)、多种输出格式、趋势分析、多站点并行。网站内置五大用户功能:暗色模式切换、NEW角标、⭐收藏、关键词搜索、一键复制链接。

项目结构

hot-news-site/
├── generate_v3.7.py         # 主生成器(含全流程进度条)
├── version.py               # ⭐ 单一版本数据源
├── decision_manager.py      # ⭐ 决策管理器(双层决策体系)
├── auto_engine.py            # ⭐ 自动化执行引擎 v2.0
├── ops_tool.py              # 运维自检工具(11项检查)
├── git_helper.py            # Windows Git辅助工具
├── dev_setup.py             # 开发者环境初始化
├── ai_content_validator.py  # AI内容质量保障工具
├── inject_ai_v2.py          # AI内容注入工具 v6
├── content_cleaner.py       # 广告内容清洗
├── auto_fix_ai_coverage.py  # AI覆盖率自动修复
├── config.yaml              # 配置文件
├── ai_content.json          # AI评论内容存储
├── requirements.txt         # 依赖
├── .github/workflows/
│   └── auto-generate.yml    # GitHub Actions 自动更新
└── site/                    # 生成的网站(自动创建)
    └── hot-news.html

开发者工具矩阵

双层决策体系

┌─────────────────────────────────────────────────────────────┐
│                    决策管理器 (decision_manager.py)            │
├──────────────────────┬──────────────────────────────────────┤
│  🔴 短期决策          │  🔵 长期决策                          │
│  异常必须立即修复      │  根本性解决问题                        │
│  不允许留到下次        │  写入工具/流程防止复发                  │
├──────────────────────┼──────────────────────────────────────┤
│  ST-001 emoji重复     │  LT-001 版本单一数据源                 │
│  ST-002 模板化内容     │  LT-002 Windows Git稳定性              │
│  ST-003 JSON中文引号   │  LT-003 前端修改写入生成脚本           │
│  ST-004 内容截断       │  LT-004 禁止auto-commit               │
│  ST-005 广告残留       │  LT-005 emoji统一CSS渲染              │
│  ST-006 覆盖率不足     │  LT-006 卡片布局规范                   │
│  ST-007 模板卡片       │  LT-007 AI内容质量保障                 │
│  ST-008 i18n残留       │  LT-008 决策持久化                     │
│                      │  LT-009 运维工具持续更新                 │
│                      │  LT-010 开发/运维工具分离               │
│                      │  LT-011 双层决策体系                     │
│                      │  LT-012 后执行验证                      │
└──────────────────────┴──────────────────────────────────────┘

工具分工

LT-013 核心决策:开发者工具服务于开发者,用户产物服务于用户,两者必须明确界限。

视角 工具 职责 面向
用户产物 site/hot-news.html 热点聚合网站 🌐 用户
用户产物 site/feed.xml RSS订阅源 🌐 用户
用户产物 site/api.json JSON API 🌐 用户
用户产物 site/sitemap.xml 站点地图 🌐 用户
用户产物 site/sources.opml OPML订阅列表 🌐 用户
用户产物 config.yaml 用户可配置项 🌐 用户
--- --- --- ---
开发者工具 ops_tool.py 网站质量检查 🔧 开发者
开发者工具 decision_manager.py 决策管理 🔧 开发者
开发者工具 auto_engine.py 自动化引擎 🔧 开发者
开发者工具 git_helper.py Git安全操作 🔧 开发者
开发者工具 dev_setup.py 环境初始化 🔧 开发者
开发者工具 ai_content_validator.py AI内容保障 🔧 开发者
开发者工具 content_cleaner.py 广告清洗 🔧 开发者
开发者工具 inject_ai_v2.py AI注入 🔧 开发者
开发者工具 auto_fix_ai_coverage.py 覆盖率修复 🔧 开发者
开发者工具 version.py 版本管理 🔧 开发者
开发者工具 generate_v3.7.py 生成引擎 🔧 开发者
开发者工具 auto-generate.yml CI/CD流水线 🔧 开发者

界限规则:

  • 开发者工具放项目根目录,不暴露给用户
  • 用户产物仅输出到 site/ 目录
  • 用户产物不包含开发调试信息、版本号、决策规则
  • config.yaml 是唯一面向用户的配置文件

命令速查

# 运维自检(用户视角)
python ops_tool.py check       # 11项完整性检查
python ops_tool.py quick       # 快速运维
python ops_tool.py git         # Git健康检查
python ops_tool.py version     # 版本信息

# 决策管理(开发者视角)
python decision_manager.py list       # 列出所有决策
python decision_manager.py short-term # 短期待修复项
python decision_manager.py long-term  # 长期进行中
python decision_manager.py sync       # 同步状态检查
python decision_manager.py add        # 添加新决策

# 自动化引擎
python auto_engine.py status   # 检查状态
python auto_engine.py 'python generate_v3.7.py --no-translate'  # 执行+自检

# 质量保障
python ai_content_validator.py check  # 检查AI内容
python ai_content_validator.py fix    # 修复AI内容

# Git辅助
python git_helper.py check    # 健康检查
python git_helper.py setup     # Windows配置优化
python git_helper.py repair    # 修复损坏仓库

# 五端同步(LT-014)
python four_way_sync.py status  # 查看同步状态
python four_way_sync.py sync    # 执行五端同步

五端同步(LT-014)

技能/决策变更后必须同步到五个端点

┌─────────────────────────────────────────────────────────────┐
│                    五端同步架构                              │
├─────────────────────────────────────────────────────────────┤
│  1. 本地文件 ──────→ 项目根目录(SKILL.md/decision_manager.py)│
│  2. Git仓库 ───────→ GitHub(git push)                      │
│  3. TRAE SOLO ─────→ WorkBuddy技能平台(自动加载SKILL.md)    │
│  4. Qoder ─────────→ QoderWork技能平台(~/.qoderworkcn/skills/)│
│  5. 虾评平台 ───────→ TRAE SOLO社区(需XIAPING_KEY)          │
└─────────────────────────────────────────────────────────────┘

同步流程:

  1. 修改技能/决策 → 本地文件更新
  2. git add -A && git commit && git push → Git仓库同步
  3. WorkBuddy刷新技能列表 → TRAE SOLO同步
  4. 复制SKILL.md到~/.qoderworkcn/skills/ → Qoder同步
  5. 调用xiaping-upload技能 → 虾评平台同步(需配置XIAPING_KEY)

使用场景

场景一:个人创作者选题信息流

痛点:创作者每天需要追踪多个平台的热点,手动筛选耗时费力。扩展至30个数据源后,信息覆盖面大幅提升,但非技术创作者面对30个源开关可能感到无从下手。

当前支持

  • config.yaml 支持按源开关(enabled: true/false),评分关键词可自定义(core + extended 共41词)
  • 多领域覆盖(科技/时事/财经/科学/教育/生活方式),创作者可根据定位只启用相关源
  • 智能评分自动筛选高价值内容,三档制一目了然
  • 快速模式(--quick)8-15秒出站,适合每日快速浏览

待改进

  • 缺少"领域预设"一键切换(如"科技创作者"一键启用15个科技源,"财经创作者"一键启用财经相关源),当前需逐个手动配置
  • 前端缺少按领域/分类标签过滤(如只看"时事"或"科学"类内容)

场景二:团队知识共享看板

痛点:团队成员各自追踪不同来源,信息分散在不同渠道,无法高效共享和讨论。

当前支持

  • 网站内置搜索功能(实时过滤标题+摘要+中文小结)
  • 收藏功能(localStorage 持久化,支持按收藏筛选)
  • 一键复制链接(方便分享到团队群聊)
  • RSS Feed 输出(可接入团队共用的 Feedly/Inoreader)
  • 邮件订阅(定时推送 S/A 级摘要给团队邮箱列表)

待改进

  • 收藏数据仅存在浏览器 localStorage,无法跨设备/跨成员共享或导出
  • 缺少置顶/高亮功能,无法标记团队重点关注条目
  • 缺少协作功能(如团队标注、评论、共享书签列表)

场景三:零代码建站

痛点:非技术用户想快速搭建自己的热点聚合站,但可能不熟悉命令行和配置文件。

当前支持

  • 配置文件 config.yaml 结构清晰,有详细中文注释
  • 快速模式一键生成(python generate_v3.7.py --quick
  • 多部署方案(GitHub Pages / Vercel / Cloudflare / Netlify / 静态托管)
  • 运维自检工具自动诊断和修复常见问题(ops_tool.py quick
  • GitHub Actions 自动更新,配置一次后无需手动操作

待改进

  • 初始搭建仍需:安装 Python、pip install 依赖、编辑 YAML 配置、运行命令——对完全零代码用户有门槛
  • 缺少 Web 配置界面(如可视化勾选数据源、拖拽调整评分权重)
  • 缺少"一键初始化"脚本(自动检测环境、安装依赖、生成默认配置)

触发方式

当用户说以下任意一句时,Skill 自动触发:

  • "热点网站" / "帮我更新热点网站"
  • "生成热点聚合" / "创建热点聚合网站"
  • "news aggregator" / "帮我生成新闻聚合"

Skill 对话体验(用户视角)

安装本 Skill 后,用户只需一句话即可触发全流程。以下是典型对话:

👤 用户:热点网站

🤖 Skill:正在为您生成热点聚合网站...

  [████████████████████] 100% 完成(17秒)
  
  ✅ 抓取完成:30个数据源,216条原始内容
  ✅ 智能去重:216条 → 37篇精选
  ✅ 评分分布:精选 10篇 | 推荐 10篇 | 参考 17篇
  
  📄 网站已生成:site/hot-news.html
  📡 RSS Feed:site/feed.xml
  📊 JSON API:site/api.json
  
  💡 提示:直接打开 hot-news.html 即可预览

快速模式(默认):跳过翻译和 AI 评论,约 17 秒完成
标准模式:包含翻译 + AI 评论生成,约 30-90 秒

用户也可以指定偏好:

👤 用户:帮我生成一个热点聚合网站,关注AI和科技领域

🤖 Skill:好的!为您配置 AI/科技 领向的热点聚合站。
  
  配置确认:
  📰 数据源:Hacker News、GitHub、AI热点、机器之心、量子位...(共15个)
  🎯 评分:精选(80+) / 推荐(70+) / 参考(60+)
  🤖 AI评论:启用(中文小结 + 视角评论 + 行动引导)
  🎨 主题:暖色书卷风(亮色/暗色可切换)
  
  开始生成...

预设配置(一键切换领域):

👤 用户:用创作者预设生成热点网站
🤖 Skill:已加载 configs/creator.yaml,全领域30源...

👤 用户:用技术团队预设
🤖 Skill:已加载 configs/team.yaml,AI/科技聚焦...

执行流程

第一步:确认最终产物类型(必须首先确认)

这是最关键的决策,直接影响后续所有功能配置。

询问用户:你需要的最终产物是什么?

选项:

  • 在线网页(部署到 GitHub Pages,支持跳转和翻译)
  • 本地 HTML 文件(直接打开,无法跳转外部链接)

如果用户选择"本地 HTML 文件",必须提醒 file:// 协议限制。

第二步:确认用户定位和基本信息

引导用户确认:

  • 网站标题、副标题
  • 关注领域(AI/科技/金融/设计等)
  • 描述信息

第三步:确认数据源

根据用户定位推荐数据源组合:

英文源(默认开启):

  • Hacker News:科技/创业热榜 ✅ 稳定
  • GitHub:开源项目搜索 ✅ 稳定
  • Product Hunt:新产品发布 ⚠️ 不稳定(返回200但解析常为0条,页面结构可能已变)

中文源(默认开启):

  • 36氪 RSS:中文科技资讯(_36kr.enabled: true
  • 机器之心:AI/机器学习前沿(jiqizhixin.enabled: true
  • 量子位:AI行业动态(qbitai.enabled: true
  • 少数派:效率工具与数字生活(sspai.enabled: true
  • IT之家:数码/硬件/科技快讯(ithome.enabled: true
  • 虎嗅:互联网商业深度(huxiu.enabled: true
  • 钛媒体:科技商业分析(tmtpost.enabled: true
  • 极客公园:科技产品/创业(geekpark.enabled: true
  • 爱范儿:数码/生活方式(ifanr.enabled: true
  • 品玩:科技/出海(pingwest.enabled: true
  • cnBeta:科技新闻(cnbeta.enabled: true
  • 月光博客:科技/互联网(williamlong.enabled: true
  • V2EX 热门:技术社区热榜(v2ex.enabled: true,⚠️ 需要特定网络环境,直连超时)
  • 微博热搜:综合热点(weibo.enabled: true,需配置API地址)

AI 热点源(v3.4 新增):

  • 卡兹克AI热点:https://aihot.virxact.com/aihot.enabled: true
    • SSR 渲染的 HTML 页面,通过解析 HTML 提取卡片数据
    • 支持分页抓取(pages: 1),每页约20条
    • 支持按分类过滤(ai-models, ai-products, industry, paper, tip)

国际源(默认开启):

  • TechCrunch:美国科技创投(techcrunch.enabled: true
  • Slashdot:技术社区(slashdot.enabled: true
  • ZDNet:企业科技(zdnet.enabled: true
  • 日经亚洲:日本/亚太科技商业(nikkei.enabled: true

自定义源扩展指南:

  1. generate_v3.7.py 中添加 async def fetch_xxx(client, config) -> list 函数
  2. 返回格式:[{"title", "hot_score", "summary", "url", "source", "source_name"}]
  3. fetch_all()source_map 中注册:"xxx": ("名称", fetch_xxx)
  4. config.yamlsources 下添加配置块:
    xxx:
      enabled: true
      rss_url: "https://example.com/feed"  # RSS源
      limit: 20

第四步:确认评分模式

预设方案:

  • 三档制:精选(80+) / 推荐(70+) / 参考(60+),适合通用场景
  • 四档制:S级(90+) / A级(80+) / B级(70+) / C级(60+),适合内容量大
  • 两档制:必读(75+) / 其他,适合轻量浏览
  • 自定义:用户指定档位数量、名称、阈值、颜色

每个档位可配置:name, threshold, color, description。

第五步:确认 AI 评论功能

询问用户是否需要视角评论和行动引导:

  • 不启用:仅显示原文+中文小结
  • Skill 模式:在对话中由 AI 为 S/A 级内容生成评论,手动嵌入 HTML
  • API 模式:脚本调用 LLM API 自动生成(需 API key)
  • 双模式:两者都支持

第六步:确认其他功能

  • 邮件订阅:是否开启?SMTP配置信息?
  • 主题风格:深色/浅色/自定义
  • 翻译:是否启用自动翻译?
  • 动画效果:哪些动画需要开启?

第七步:准备项目文件

确保项目目录包含所有必要文件。依赖安装:

pip install httpx pyyaml deep-translator

第八步:按需求生成配置

根据前几步确认生成 config.yaml(参考 config.yaml 模板)。

第九步:生成并验证

全流程进度条(v3.4 新增): 生成脚本 generate_v3.7.py 和运维工具 ops_tool.py 的所有阶段均内置 ProgressBar 终端进度条,支持:

  • 百分比进度 + 进度条图形([████████░░] 80%
  • 实时用时显示和 ETA 预估
  • 每阶段完成后打印用时统计

生成脚本 5 阶段进度:

  1. 环境检查(~1秒)
  2. 数据抓取(~5-10秒,全源并行)
  3. 内容翻译(~20-60秒,取决于英文条目数)
  4. 智能评分(~1秒)
  5. HTML 生成(~1秒)
    预计总耗时:快速模式 ~8-15秒,标准模式 ~30-90秒,CI/CD模式 ~20-30秒
# 标准模式(带进度条)
python generate_v3.7.py -m web

# 快速模式(跳过翻译+AI评论,约10秒)
python generate_v3.7.py --quick

# 跳过翻译
python generate_v3.7.py --no-translate

# 仅更新内容
python generate_v3.7.py --update-only

# 本地HTML(无跳转无翻译)
python generate_v3.7.py -m local

完整参数:

参数 说明 默认值
-c / --config 配置文件路径 config.yaml
-o / --output 输出目录 site
-m / --mode web / local web
--no-translate 跳过翻译 false
--quick 快速模式(约8-15秒) false
--update-only 仅刷新内容 false

验证清单:

  • 主题颜色
  • 档位标签
  • 卡片内容:标题、摘要、中文小结、视角评论、行动引导
  • 在线网页:跳转链接、翻译按钮
  • 本地HTML:无跳转链接
  • 搜索/收藏/暗色模式
  • 移动端响应式

第十步:运维自检

生成后建议运行:

python ops_tool.py quick     # 快速运维(推荐)
python ops_tool.py check     # 完整性检查
python ops_tool.py diagnose  # 环境诊断
python ops_tool.py fix       # 自动修复
python ops_tool.py history   # 历史分析

第十一步:交付与部署

方案 A — GitHub Pages(默认,已配置)

  1. 推送代码到 GitHub main 分支
  2. GitHub Actions 自动触发 → auto-generate.yml 完成生成+注入+部署
  3. 网站地址:https://USERNAME.github.io/REPO/hot-news.html
  4. 若 Pages 源未自动配置:Settings → Pages → Source 选 "Deploy from a branch" → gh-pages 分支

方案 B — Vercel

  1. 在 Vercel 导入 GitHub 仓库
  2. Framework Preset 选 Other
  3. Build Command:pip install httpx pyyaml && python generate_v3.7.py --no-translate
  4. Output Directory:site
  5. 设置环境变量 SILICONFLOW_API_KEY
  6. 可选:开启 Vercel Cron Job 替代 GitHub Actions 定时任务

方案 C — Cloudflare Pages

  1. 在 Cloudflare Pages 连接 GitHub 仓库
  2. Build Command:pip install httpx pyyaml && python generate_v3.7.py --no-translate
  3. Output Directory:site
  4. 环境变量同上

方案 D — Netlify

  1. 在 Netlify 连接 GitHub 仓库
  2. Build Command:pip install httpx pyyaml -q && python generate_v3.7.py --no-translate
  3. Publish Directory:site
  4. 环境变量同上

方案 E — 本地/任意静态托管

python generate_v3.7.py --no-translate  # 生成到 site/ 目录
# 将 site/ 目录上传到任意静态托管服务(阿里云OSS、腾讯云COS、AWS S3等)

所有方案共享同一份 site/ 输出,无需修改生成逻辑。

页面结构

效果截图

亮色模式(暖米纸底)
亮色模式

暗色模式(暖暗紫底)
暗色模式

在线网页模式

┌─────────────────────────────────────┐
│  ☀️ 主题切换    🌐 翻译网页          │  ← 固定悬浮工具栏
├─────────────────────────────────────┤
│         标题 + 副标题                │
│         更新时间 + 统计              │
├─────────────────────────────────────┤
│  🔍 搜索框                          │
├─────────────────────────────────────┤
│  [全部] [精选] [推荐] [参考] [⭐收藏] │  ← 档位标签
├─────────────────────────────────────┤
│  ┌─────────────────────────────┐    │
│  │ NEW  85分·精选  HN  ☆      │    │
│  │ 标题(可点击跳转)           │    │
│  │ 原文摘要(前200字)          │    │
│  │ 📝 中文小结                 │    │
│  │ 💡 视角评论:行业意义点评    │    │
│  │ 🎯 行动引导:具体行动建议    │    │
│  │ 🔥 热度  ·  📋 复制链接    │    │
│  └─────────────────────────────┘    │
├─────────────────────────────────────┤
│  数据来源 · 版权信息                 │
└─────────────────────────────────────┘

核心功能详情

数据源(30个)

数据源 类型 字段
Hacker News 英文 title, hot_score, summary, url
GitHub 英文 title, hot_score(stars), summary(desc), url
Product Hunt 英文 title, hot_score(votes), summary, url
TechCrunch 英文 title, hot_score(0), summary, url
Slashdot 英文 title, hot_score(0), summary, url
ZDNet 英文 title, hot_score(0), summary, url
Ars Technica 英文 title, hot_score(0), summary, url
The Verge 英文 title, hot_score(0), summary, url
NPR新闻 英文 title, hot_score(0), summary, url
日经亚洲 日/英 title, hot_score(0), summary, url
卡兹克AI热点 中文 title, hot_score, summary, url
36氪 中文 title, hot_score(0), summary, url
机器之心 中文 title, hot_score(0), summary, url
量子位 中文 title, hot_score(0), summary, url
少数派 中文 title, hot_score(0), summary, url
IT之家 中文 title, hot_score(0), summary, url
虎嗅 中文 title, hot_score(0), summary, url
钛媒体 中文 title, hot_score(0), summary, url
极客公园 中文 title, hot_score(0), summary, url
爱范儿 中文 title, hot_score(0), summary, url
品玩 中文 title, hot_score(0), summary, url
cnBeta 中文 title, hot_score(0), summary, url
月光博客 中文 title, hot_score(0), summary, url
V2EX 中文 title, hot_score(replies), summary, url
微博热搜 中文 title, hot_score, summary, url
澎湃新闻 中文 title, hot_score(0), summary, url
知乎热榜 中文 title, hot_score(0), summary, url
南方周末 中文 title, hot_score(0), summary, url
联合早报 中文 title, hot_score(0), summary, url
BBC中文 中文 title, hot_score(0), summary, url

多源智能去重

  • 完全匹配:标题归一化(小写、去标点、去空格)后相同
  • 模糊匹配:编辑距离相似度 >= 阈值(默认0.8)
  • 合并显示:重复内容标记多来源标签(如"36氪 + V2EX")

评分系统

  • 核心关键词:每个命中 +15 分,标题命中额外 +8
  • 扩展关键词:每个命中 +8 分
  • 排除关键词:每个命中 -15 分
  • 热度分数:0-35 分(根据 hot_score 动态计算)
  • 来源加分:5-12 分

AI 视角评论 + 行动引导

  • 中文小结(📝):英文内容的翻译摘要
  • 视角评论(💡):1-2句话点评内容价值和行业意义
  • 行动引导(🎯):具体的下一步建议

全量覆盖(v3.4 新增): 默认不再仅覆盖 S/A 级条目,而是为所有展示卡片(精选+推荐+参考,共约32条)生成三层 AI 内容,确保每张卡片都有完整的阅读引导。

支持三种生成模式:

  • Skill 模式(推荐默认):在 AI 对话中为全部卡片手工生成 AI 内容,存储到 ai_content.json,通过 inject_ai_from_json.py 注入 HTML。精准、个性化、无 API 依赖
  • API 模式:调用 LLM API 自动生成,适合 CI/CD 全自动化
  • 双模式:两者并存

JSON 驱动注入流程(v3.4 新增):

  1. AI 对话中生成全部卡片的 {zh, persp, action} 三元组
  2. 写入 ai_content.json(JSON 格式,避免 Python 字符串中文引号冲突)
  3. 运行 python inject_ai_from_json.py 按标题关键词部分匹配注入
  4. 运行 python ops_tool.py check 验证覆盖率(目标:100%)

注: 旧版 inject_ai_content.py 已于 v3.4 清理时移除,请统一使用 ai_content.json + inject_ai_from_json.py 方案。

邮件订阅

  • 定时推送 S/A 级内容摘要
  • 支持 SMTP 配置(QQ邮箱/Gmail/企业邮箱等)
  • 自动+手动双模式
  • 邮件包含:分数、来源、标题、中文小结、视角评论、行动引导

RSS Feed 输出(v3.5 新增)

  • 每次生成网站时自动输出 site/feed.xml(标准 RSS 2.0 格式)
  • 包含所有档位的热点条目,每条含标题、链接、中文小结、档位分类
  • 用户可将 feed.xml 接入 Feedly、Inoreader、Reeder 等阅读器
  • HTML 页面自动包含 <link rel="alternate" type="application/rss+xml"> 供浏览器发现

数据快照(v3.5 新增)

  • 每次运行自动保存评分后的数据快照到 data/ 目录
  • 文件格式:snapshot_YYYYMMDD_HHMM.json,同时更新 latest.json
  • 自动清理超过 30 天的旧快照
  • 为未来趋势分析模块(评分变化曲线、热点生命周期追踪)提供数据基础

五个前端功能

  1. 暗色模式切换:CSS变量切换,偏好存入 localStorage
  2. NEW 角标:记录上次访问,新条目显示红色角标
  3. ⭐收藏:localStorage 持久化,顶部「收藏」标签筛选
  4. 关键词搜索:实时过滤标题+摘要+中文小结
  5. 一键复制链接:复制"标题 + URL"到剪贴板

运维自检工具

所有子命令均带进度条显示,告知用户预估时间:

python ops_tool.py check      # 7项结构完整性检查(~3秒)
python ops_tool.py diagnose   # 7项环境诊断(~10秒,含网络检测)
python ops_tool.py fix        # 4项自动修复(~5秒)
python ops_tool.py history    # 运行历史分析
python ops_tool.py quick      # 综合诊断+检查+建议(~15秒,3阶段进度条)

检查项详情:

  • check:结构完整性、内容统计、翻译覆盖率、AI评论覆盖率、评分分布、前端功能、外部链接有效性
  • diagnose:Python版本、依赖包、网络可达性、Git状态、GitHub Actions配置、日志完整性
  • fix:创建 site 目录、修复 JSON 兼容性、安装缺失依赖、创建/更新 .gitignore

故障排除(来自实战经验)

问题1:GitHub Actions 0秒崩溃(模块级import失败)

症状:Actions 日志显示运行0秒后直接失败
原因from deep_translator import GoogleTranslator 在模块顶层,transitive dependency 安装失败导致整个脚本 import 即崩溃
解决:改用懒加载模式

_translator = None
def _get_translator():
    global _translator
    if _translator is None:
        from deep_translator import GoogleTranslator
        _translator = GoogleTranslator(source="auto", target="zh-CN")
    return _translator

问题2:Python 3.11 f-string 语法错误

症状SyntaxError: invalid syntax 在包含 \U\u 转义的 f-string 行
原因:Python 3.11 不允许 f-string 中包含 \U/\u 转义序列,也不允许在 f-string 表达式中调用复杂函数
解决策略

  1. 所有 \U0001xxxx 改为实际 emoji 字符(📝🔥📋☀️🌙🌐)
  2. 预计算 f-string 中需要的变量值到临时变量中
# 错误(Python 3.11 不兼容):
f'<span style="background: {color};">{t["score"]}分</span>'

# 正确:
bk_score = t["score"]
f'<span style="background: {color};">{bk_score}分</span>'

问题3:Git 推送认证失败

症状remote: Invalid username or password / 403 Resource not accessible by integration(GitHub MCP)/ could not read Username for 'https://github.com'

两种场景及解决

场景A — GitHub 连接器(MCP)推送失败
即使 WorkBuddy 中 GitHub 连接器已连接并认证为正确账户,MCP 工具(create_or_update_file / push_files)可能返回 403。原因是 OAuth 授权时未勾选 repo scope(写入权限)。读取操作正常,写入被拒。

解决方案:

  • 在 WorkBuddy 连接器设置中重新授权 GitHub,确保勾选 repo 权限(而非仅 public_reporead:user
  • 或在对话中提供 Personal Access Token(见场景B)

场景B — HTTPS git push 无凭据

# 1. 生成 PAT(GitHub Settings → Developer settings → Personal access tokens)
#    Fine-grained token: 选对应仓库,权限 Contents: Read and write

# 2. 临时在 remote URL 中嵌入 token(注意:token 会出现在 shell 历史中)
git remote set-url origin "https://USERNAME:TOKEN@github.com/USER/REPO.git"
git push origin main

# 3. 推送后立即恢复安全 URL
git remote set-url origin "https://github.com/USER/REPO.git"

⚠️ 安全提醒:PAT token 出现在 shell 命令中可能被日志记录。推送完成后务必恢复 remote URL。优先使用 SSH key 方式(git@github.com:USER/REPO.git)。

问题4:Actions 日志不完整

症状:日志截断,看不到具体错误信息
解决:在工作流中添加诊断步骤

- name: 环境诊断
  run: |
    python --version
    pip list | grep -E "httpx|yaml|deep"
    python -c "import sys; print(sys.path)"

以及使用 python -u 禁用输出缓冲。

问题5:全局异常未被捕获

症状:脚本静默失败,Actions 显示成功但无输出
解决:包裹 asyncio.run() 调用

import traceback
try:
    asyncio.run(main(...))
except Exception as e:
    traceback.print_exc()
    logger.error(f"运行失败: {e}")
    sys.exit(1)

扩展指南

添加新数据源

  1. generate_v3.7.py 中创建 async def fetch_xxx(client, config) -> list
  2. 返回格式:[{"title", "hot_score", "summary", "url", "source", "source_name"}]
  3. fetch_all() 中注册
  4. config.yamlsources 中添加配置块

示例(RSS源):

async def fetch_custom_rss(client, config) -> list:
    import xml.etree.ElementTree as ET
    topics = []
    resp = await client.get(config["rss_url"], timeout=15)
    root = ET.fromstring(resp.text)
    for item in root.iter("item"):
        topics.append({
            "title": item.find("title").text,
            "hot_score": 0,
            "summary": item.find("description").text[:200],
            "url": item.find("link").text,
            "source": "custom",
            "source_name": config.get("name", "Custom"),
        })
    return topics

自定义AI评论提示词

config.yamlai_insights.prompts 中修改:

prompts:
  perspective: "你是一位科技观察者。针对以下内容,用1-2句话点评它的价值和行业意义。内容:{title}。摘要:{summary}"
  action: "针对以下内容,给读者一个具体的行动建议,控制在1句话。内容:{title}"

自定义评分算法

修改 generate_v3.7.py 中的 score_topic() 函数。评分返回 0-100 的浮点数。

自定义邮件模板

修改 generate_v3.7.py 中的 send_email_digest() 函数的 html_body 部分。

用户反馈收集

在实际使用中,请关注以下维度的反馈:

  1. 关键词准确度:在非AI领域(设计、产品、金融)使用时,关键词推荐是否足够准确?
  2. 评分档位偏好:三档制(精选/推荐/参考)还是四档制(S/A/B/C)更顺手?
  3. 数据源需求:有没有想聚合但没有接入的数据源?
  4. AI评论质量:视角评论和行动引导是否提供了实际价值?
  5. 运维工具实用性:ops_tool.py 的诊断和修复功能是否解决了实际问题?

翻译源对比

翻译源 质量 速度 限额 网络要求
deep_translator (Google) 无硬限制 需访问 Google
不翻译 - - - -

Token / API Key 安全提醒

  • 永远不要在代码中硬编码 API key 或 token
  • 使用环境变量:${ENV_VAR_NAME} 格式
  • 推送前检查:git diff --cached 确认没有敏感信息
  • 如果意外提交了 token,立即在 GitHub 上 revoke 并重新生成

快速模式(8-15秒出站)

用户只说领域(如"AI工具"),其余全走默认推荐:

python generate_v3.7.py --quick

这会跳过翻译和AI评论,只执行抓取→评分→渲染,约8-15秒完成。

如需在对话中快速创建:

  1. 确认用户关注领域
  2. 自动填充默认 config.yaml
  3. 运行 --quick 模式
  4. 交付 HTML 或部署链接

验证测试记录

2026-05-31 v3.7 端到端验证

环境: Python 3.10.11, Windows, 北京时区

测试项 结果 详情
generate_v3.7.py --quick 17秒完成:30源并行抓取 216 条 → 去重 216 条 → 展示 37 篇(精选10/推荐10/参考17)。均分74.8
ops_tool.py diagnose 8/8 通过:Python ✅、依赖 ✅、HN ✅、GitHub API ✅、36氪 ✅、Git ✅、Actions ✅、新功能 ✅(trend_analyzer/sites.yaml/30源)
ops_tool.py check 37 卡片、RSS/JSON API/sitemap/OPML/数据快照全部生成。搜索框✅ 主题切换✅ 收藏按钮41 复制按钮41 NEW角标39
输出文件 hot-news.html + feed.xml(21KB) + api.json + sitemap.xml(19KB) + sources.opml(1.8KB) + data/snapshot_*.json

成功抓取的源(22/30):
Hacker News(30)、GitHub(30)、36氪(30)、TechCrunch(15)、爱范儿(15)、Ars Technica(15)、ZDNet(15)、AI热点(16)、量子位(10)、少数派(10)、NPR(10)、月光博客(10)、钛媒体(15)

失败/0条的源(8/30):

  • cnBeta:DNS 解析失败(网络限制)
  • IT之家:RSS URL 变更(301→404)
  • 品玩:返回 405(需更新URL)
  • 极客公园:服务器断连
  • 机器之心:RSS 格式变更(302→非标准XML)
  • 澎湃新闻:302 后页面非RSS
  • Product Hunt:403(已知问题)
  • V2EX:超时(已知问题)
  • 联合早报/南方周末/BBC中文/知乎热榜/日经亚洲/虎嗅:RSSHub 实例超时(需自建或换实例)

2026-05-28 端到端验证

环境: Python 3.13.12, Windows, 北京时区

测试项 结果 详情
ops_tool.py diagnose 7/7 通过:Python ✅、依赖 ✅、HN ✅、GitHub API ✅、36氪 ✅、Git ✅、Actions ✅。Product Hunt 403、V2EX 超时(已知网络限制)
ops_tool.py check 32 卡片、100% 翻译覆盖、100% AI 评论覆盖。评分分布正常(均分72.8)
ops_tool.py fix 自动补全 .gitignore 缺失项
ops_tool.py history 正常运行(当前无历史日志)
generate_v3.7.py --quick 8 秒完成:抓取 134 条 → 去重 112 条 → 31 篇。HN 49 条、GitHub 45 条、Product Hunt 0 条、AI热点 40 条

已知问题:

  • Product Hunt 页面结构已变更,返回 200 但解析结果为零(diagnose 也会返回 403),暂不影响核心功能
  • V2EX API 从中国大陆直连超时,需特定网络环境
  • ops_tool.py check 中评分分布统计存在轻微重复计数(如"参考"同时出现在档位标签和行动引导文本中),不影响功能

版本历史

v3.7(2026-05-31)

  • 定位升级:从AI垂直扩展为全领域聚合(科技/时事/财经/科学/教育/生活方式)
  • 数据源从22扩展到30个(+8多领域源:澎湃/知乎/南方周末/联合早报/BBC中文/Ars Technica/The Verge/NPR)
  • 评分关键词扩展至多领域(core 22词 + extended 19词)
  • 新增3套领域预设配置(configs/creator.yamlteam.yamllifestyle.yaml),一键切换数据源组合
  • 新增收藏导出功能(前端"导出收藏"按钮,导出为 txt 文件)
  • 新增一键初始化脚本(setup.bat,双击即可完成环境搭建)
  • 修复:时区比较bug、HTTP 301重定向未跟随、版本号不同步

v3.6(2026-05-31)

  • 数据源从7扩展到22个(+15个新源:12中文+4国际),覆盖中/英/日
  • 全源并行抓取(asyncio.gather),CI/CD 执行时间 ~20-30秒
  • 新增输出格式:RSS Feed、JSON API、sitemap.xml、OPML 订阅列表
  • 数据快照持久化(data/snapshot_*.json),自动清理30天旧数据
  • 趋势分析模块(trend_analyzer.py):评分变化曲线 + 热点生命周期追踪
  • 多站点并行(--multi 模式,sites.yaml 编排)
  • AI评论切换硅基流动 SiliconFlow(Qwen/Qwen3-8B),批量生成中文小结+评论+引导
  • 修复:收藏hash不稳定、CI/CD中文小结缺失

v3.4(2026-05-28)

  • 新增卡兹克AI热点数据源:接入 https://aihot.virxact.com/,SSR HTML 解析,支持分页和分类过滤
  • 全流程进度条generate_v3.7.pyops_tool.py 所有阶段均内置 ProgressBar,支持百分比、ETA、耗时统计
  • 全量 AI 评论覆盖:从仅 S/A 级扩展为全部展示卡片(精选+推荐+参考),约32条
  • JSON 驱动 AI 注入:新增 ai_content.json + inject_ai_from_json.py,解决 Python 字符串中文引号冲突
  • 暖色书卷风设计:深色基底搭配 parchment 暖色调(#c8a45c 古铜金主色),衬线体标题 + 无衬线正文,毛玻璃卡片背景
  • 更新数据源至7个(+卡兹克AI热点)
  • 更新配置文件模板至包含 aihot 源配置
  • 部署验证:成功部署至 https://afuxh.github.io/fuqing-profile/hot-news.html("AI时代观察"栏目,扶清闲话)
  • 部署方式修复:从 actions/deploy-pages@v4(workflow模式未实际触发)切换为 peaceiris/actions-gh-pages@v4 推送 gh-pages 分支
  • 清理旧版文件:移除 generate_v3.7.py.bakinject_ai_content.pyinject_all_ai.pygenerate_v2.pysrc/hugo-site/config/site/about.html 等过时文件
  • 更新 github_deploy.py:引用从 inject_ai_content.py 修正为 inject_ai_from_json.py + ai_content.json

v3.3(2026-05)

  • 多源智能去重(完全匹配+模糊匹配+合并显示)
  • 三档制评分系统(精选/推荐/参考)
  • GitHub Actions 自动更新
  • 五个前端功能:暗色模式/NEW角标/收藏/搜索/复制链接
  • 邮件订阅(SMTP配置)
  • 运维自检工具(check/diagnose/fix/history/quick)
  • 快速模式(约30秒出站)

Categories