"生成可配置的全领域热点聚合网站,支持30数据源(覆盖科技/AI/时事/财经/科学/教育/生活方式)、智能评分、全量视角评论+行动引导、中文小结、RSS输出、JSON API、sitemap、OPML、数据快照、趋势分析、多站点并行、暗色模式、收藏、搜索、链接复制、邮件订阅、多源去重、快速模式。全流程进度条显示。自带运维自检工具。可部署到 GitHub Pages/Vercel/Cloudflare。当用户说热点网站、热点聚合、news aggregator、生成网站时触发。"
Resources
43Install
npx skillscat add afuxh/fuqing-profile Install via the SkillsCat registry.
通用热点聚合网站生成器 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) │
└─────────────────────────────────────────────────────────────┘同步流程:
- 修改技能/决策 → 本地文件更新
git add -A && git commit && git push→ Git仓库同步- WorkBuddy刷新技能列表 → TRAE SOLO同步
- 复制SKILL.md到~/.qoderworkcn/skills/ → Qoder同步
- 调用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)
自定义源扩展指南:
- 在
generate_v3.7.py中添加async def fetch_xxx(client, config) -> list函数 - 返回格式:
[{"title", "hot_score", "summary", "url", "source", "source_name"}] - 在
fetch_all()的source_map中注册:"xxx": ("名称", fetch_xxx) - 在
config.yaml的sources下添加配置块: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秒)
- 数据抓取(~5-10秒,全源并行)
- 内容翻译(~20-60秒,取决于英文条目数)
- 智能评分(~1秒)
- 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(默认,已配置)
- 推送代码到 GitHub main 分支
- GitHub Actions 自动触发 →
auto-generate.yml完成生成+注入+部署 - 网站地址:
https://USERNAME.github.io/REPO/hot-news.html - 若 Pages 源未自动配置:Settings → Pages → Source 选 "Deploy from a branch" →
gh-pages分支
方案 B — Vercel
- 在 Vercel 导入 GitHub 仓库
- Framework Preset 选
Other - Build Command:
pip install httpx pyyaml && python generate_v3.7.py --no-translate - Output Directory:
site - 设置环境变量
SILICONFLOW_API_KEY - 可选:开启 Vercel Cron Job 替代 GitHub Actions 定时任务
方案 C — Cloudflare Pages
- 在 Cloudflare Pages 连接 GitHub 仓库
- Build Command:
pip install httpx pyyaml && python generate_v3.7.py --no-translate - Output Directory:
site - 环境变量同上
方案 D — Netlify
- 在 Netlify 连接 GitHub 仓库
- Build Command:
pip install httpx pyyaml -q && python generate_v3.7.py --no-translate - Publish Directory:
site - 环境变量同上
方案 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 新增):
- AI 对话中生成全部卡片的
{zh, persp, action}三元组 - 写入
ai_content.json(JSON 格式,避免 Python 字符串中文引号冲突) - 运行
python inject_ai_from_json.py按标题关键词部分匹配注入 - 运行
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 天的旧快照
- 为未来趋势分析模块(评分变化曲线、热点生命周期追踪)提供数据基础
五个前端功能
- 暗色模式切换:CSS变量切换,偏好存入 localStorage
- NEW 角标:记录上次访问,新条目显示红色角标
- ⭐收藏:localStorage 持久化,顶部「收藏」标签筛选
- 关键词搜索:实时过滤标题+摘要+中文小结
- 一键复制链接:复制"标题 + 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 表达式中调用复杂函数
解决策略:
- 所有
\U0001xxxx改为实际 emoji 字符(📝🔥📋☀️🌙🌐) - 预计算 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_repo或read: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)扩展指南
添加新数据源
- 在
generate_v3.7.py中创建async def fetch_xxx(client, config) -> list - 返回格式:
[{"title", "hot_score", "summary", "url", "source", "source_name"}] - 在
fetch_all()中注册 - 在
config.yaml的sources中添加配置块
示例(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.yaml 的 ai_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 部分。
用户反馈收集
在实际使用中,请关注以下维度的反馈:
- 关键词准确度:在非AI领域(设计、产品、金融)使用时,关键词推荐是否足够准确?
- 评分档位偏好:三档制(精选/推荐/参考)还是四档制(S/A/B/C)更顺手?
- 数据源需求:有没有想聚合但没有接入的数据源?
- AI评论质量:视角评论和行动引导是否提供了实际价值?
- 运维工具实用性: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秒完成。
如需在对话中快速创建:
- 确认用户关注领域
- 自动填充默认 config.yaml
- 运行
--quick模式 - 交付 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.yaml、team.yaml、lifestyle.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.py和ops_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.bak、inject_ai_content.py、inject_all_ai.py、generate_v2.py、src/、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秒出站)