零成本搭建全球科技热点情报站:12 个平台,6 小时,0 元
用 trend-pulse + Scrapling + GitHub Pages,搭一个覆盖 Hacker News、GitHub Trending、Stack Overflow、微信热文等 12 个平台的实时热点聚合站。
你每天打开多少个网站看热点
作为一个每天逛技术社区的开发者,我的浏览器标签栏常年挂着:
- Hacker News ------ 硅谷今天在聊什么
- GitHub Trending ------ 什么项目正在涨星
- Stack Overflow ------ 有什么能抄的代码
- Reddit ------ 程序员在吐槽什么
- 微信公众号 ------ 国内技术圈在讨论什么
五个网站,反复横跳。等你看完一圈,半小时没了。更致命的是------很多好项目在海外炸了两三天,中文社区才反应过来。
有没有一个地方,能把全球科技热点一页看完?
我找了一圈。国内的热榜聚合站(Tophub、DailyHot)只覆盖中文平台。国外的各玩各的。没有一个人把全球 + 中国平台放在同一个页面里。
所以我花了一个周末,用三个开源工具,自己搞了一个。
在线体验:mixuecoding.github.io/mihoc-hot/
架构总览
整个系统的核心思路:三个轮子,拼在一起。
scss
GitHub Actions (每小时)
│
├─ trend-pulse → 12 个全球源
└─ Scrapling → 微信 24h 热文
│
▼
data/trending.json (179 条,带中文翻译)
│
┌────┴────┐
▼ ▼
展示网站 公众号素材
(GitHub (Python 自动
Pages) 生成 HTML)
部署路径也简单到离谱:Python 采集 → JSON 存储 → GitHub Pages 展示 → Actions 定时更新。全程零服务器、零域名、零成本。
第一步:搭数据采集层(2 小时)
全球源:trend-pulse
trend-pulse 是一个开源的趋势情报聚合库,覆盖 37 个全球数据源。GitHub 66K Star,pip 安装即用。
bash
pip install trend-pulse
核心代码只有几行:
python
import asyncio
from trend_pulse.aggregator import TrendAggregator
async def main():
agg = TrendAggregator()
sources = ['hackernews', 'github', 'stackoverflow', 'google_trends',
'wikipedia', 'bluesky', 'devto', 'lobsters', 'dockerhub',
'npm', 'pypi', 'coingecko']
results = await agg.trending(sources=sources, count=15)
# results['sources'] 包含每个平台的数据
# results['merged'] 是跨平台混合评分后的结果
for name, items in results['sources'].items():
for item in items:
print(f"[{name}] {item['keyword']} (热度: {item['score']})")
asyncio.run(main())
每个热点包含:keyword(标题)、url(链接)、score(混合评分)、traffic(如 "717 points")、metadata(平台特有数据,如 HN 的评论数、GitHub 的 Star 数)。
坑点:Reddit 和 ProductHunt 在国内直连会 403,需要配代理。我暂时跳过了这两个源。
微信源:Scrapling
微信没有公开 API,但 Tophub.today 聚合了微信 24h 热文榜。用 Scrapling 抓它:
python
from scrapling.fetchers import Fetcher
page = Fetcher.get(
'https://tophub.today/n/wWmoO5Rd4E',
stealthy_headers=True,
timeout=20
)
links = page.css('a[href]')
articles = []
for link in links:
text = link.css('::text').get()
href = link.attrib.get('href', '')
if text and len(text.strip()) > 10:
articles.append({'keyword': text.strip(), 'url': href})
Scrapling 的 stealthy_headers=True 会模拟 Chrome 的 TLS 指纹,对反爬站点效果很好。
自动翻译英文标题
采回来的数据大部分是英文,公众号读者需要中文。接入 Google Translate 免费 API:
python
from deep_translator import GoogleTranslator
def translate(text):
# 跳过 GitHub 仓库名 (owner/repo) 和技术缩写
if re.match(r'^[\w.-]+/[\w.-]+$', text): # owner/repo
return text
if re.match(r'^[A-Z][A-Z0-9_-]{2,}$', text): # 纯缩写
return text
if is_chinese(text): # 已经是中文
return text
t = GoogleTranslator(source='auto', target='zh-CN')
return t.translate(text[:200])
# 翻译结果写入缓存文件,避免重复翻译
然后把三个来源合并成一个 data/trending.json,统一数据结构:
json
{
"updated": "2026-06-28T20:18:07+08:00",
"source_count": {"global": 12, "wechat": 1},
"total_items": 179,
"global": [
{
"keyword": "匿名 GitHub 帐户大量删除未公开的 0day",
"keyword_en": "Anonymous GitHub account mass-dropping undisclosed 0-days",
"source": "hackernews",
"url": "https://...",
"score": 100,
"traffic": "824 points"
}
],
"wechat": [...]
}
第二步:搭展示网站(2 小时)
前端不需要任何框架,一个纯静态 HTML 搞定。暗色主题,按平台分组,Ajax 读取 JSON 渲染。
html
<script>
async function loadData() {
const resp = await fetch('data/trending.json');
const json = await resp.json();
// 按平台分组渲染...
}
</script>
部署到 GitHub Pages:Settings → Pages → Source 选 master 分支。
结果:https://mixuecoding.github.io/mihoc-hot/,永久免费。
建了一个 GitHub 组织 mixuecoding 放仓库,网址显得专业一点。零成本。
第三步:定时自动化(1 小时)
GitHub Actions 写一个 workflow,每小时自动跑一次:
yaml
name: Hourly Collect Trending Data
on:
schedule:
- cron: '30 * * * *' # 每小时第30分钟
workflow_dispatch: # 支持手动触发
jobs:
collect:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
- run: pip install trend-pulse "scrapling[fetchers]"
- run: python collect_all.py
- uses: stefanzweifel/git-auto-commit-action@v5
with:
commit_message: "auto: update trending data"
踩过的坑:
[skip ci]导致 Pages 不构建 :一开始 commit message 里写了[skip ci],结果 GitHub Pages 跳过了部署,数据更新了但网站不变。去掉就好了。pip install scraplingvsscrapling[fetchers]:后者才会安装 TLS 指纹模拟所需的curl_cffi,缺了这个微信源会报ModuleNotFoundError。
最终效果
| 平台 | 内容 | 更新频率 |
|---|---|---|
| 💻 Hacker News | 硅谷技术圈热议,带分值和评论数 | 每小时 |
| ⭐ GitHub Trending | 当日涨星最快的开源项目 | 每小时 |
| 📚 Stack Overflow | 最热技术问答 | 每小时 |
| 🔍 Google Trends | 全球实时搜索趋势 | 每小时 |
| 🦋 Bluesky | 海外社交媒体热点 | 每小时 |
| 📝 Dev.to / Lobste.rs | 开发者社区热帖 | 每小时 |
| 🐳 Docker Hub / npm / PyPI | 热门容器镜像和包 | 每小时 |
| 💬 微信 24h 热文 | 公众号爆款文章排行 | 每小时 |
复刻指南
如果你也想搭一个自己的热点情报站:
| 项目 | 说明 |
|---|---|
| 💰 成本 | 0 元 |
| 🛠 技能要求 | Python 基础 + GitHub 使用 |
| ⏱ 耗时 | 熟练 2 小时,新手 6 小时 |
| 📦 依赖 | pip install trend-pulse "scrapling[fetchers]" deep-translator |
| 🔧 可定制 | 修改 GLOBAL_SOURCES 列表,加一行代码就能加新源 |
| 🌐 部署 | 推到 GitHub → Settings → Pages → 开启 |
复用流程:
bash
git clone https://github.com/mixuecoding/mihoc-hot.git
cd mihoc-hot
pip install trend-pulse "scrapling[fetchers]" deep-translator
python collect_all.py
python -m http.server 8080
# 打开 http://localhost:8080
核心代码总共不到 500 行 Python + 一个 200 行的 HTML 页面。完整源码在 GitHub,README 里面有分步教程。
为什么值
1. 信息差就是钱。 GitHub 上一个项目在海外炸了,三天后才出现在中文技术社区------这时候别人已经用上甚至二开了。这个站让你看到 0 日差。
2. 全球视野 = 选题永动机。 Hacker News 热搜 + GitHub 新项目 + 微信热文三者对比,天然就能写出「国外在火什么、国内在讨论什么」的差异化技术文章。
3. 完全零成本。 GitHub Pages 免费,Actions 每月 2000 分钟额度(我们只用了约 60 分钟),trend-pulse 和 Scrapling 都是 MIT 开源协议。
开源地址
- 🌐 在线体验 :mixuecoding.github.io/mihoc-hot
- 📦 源码 :github.com/mixuecoding...
如果你也想摆脱信息茧房,或者正在找公众号的技术选题------这个工具应该能帮到你。
关-注-公-众-号「蜜学编程」,获取更多 AI 编程实战内容。完整搭建教程见 GitHub 仓库。
本文同步发布于掘金、CSDN、简书。