从来源池到每日 Top 20 的自动化生产线

这页把网站背后的内容工程拆开:哪些任务低成本跑、哪些任务消耗 API 配额、哪些任务交给大模型,以及哪些结果需要人工审核。

01

来源

维护 50-100 个高质量来源,按 AI 官方、研究者、科技媒体、数码评测、开发者频道分组,并给核心来源更高优先级。

channels.json
02

RSS 发现

每 2 小时读取 YouTube RSS,发现 24 小时内新视频,写入候选池。这个阶段不消耗 YouTube Data API 配额。

discover-rss.mjs
03

指标同步

每 6 小时批量调用 videos:list,只查询候选队列中的视频,拿到播放、点赞、评论、发布时间等核心指标。

sync-metrics.mjs
04

热度排序

用半衰期公式计算分数,避免老视频长期霸榜,同时让新发布但互动很强的内容快速进入候选。

score-topics.mjs
05

AI 聚类

把前 40 条候选交给 Qwen/DeepSeek,合并同一产品、同一模型、同一发布会的重复内容,输出不超过 20 个核心话题。

cluster-prompt.md
06

摘要与推送

拉取字幕,生成中文摘要和关键时间点;每天 08:30 推送给订阅用户,失败任务进入重试队列。

daily-digest.json

建议数据库表

channels

来源名称、分类、优先级、最近同步时间和可用状态。

videos

videoId、频道、标题、简介、发布时间、指标快照、字幕状态。

topic_clusters

中文话题名、主视频、关联视频、AI 聚类理由、审核状态。

summaries

视频摘要、关键时间点、字幕语言、模型版本、生成时间。

subscriptions

用户标识、频道订阅、关键词、推送渠道、推送时间。

job_runs

任务名、开始/结束时间、状态、错误原因、处理条数。

推荐任务节奏

每 2 小时RSS 发现新视频

低成本运行,持续更新候选池。

每 6 小时YouTube API 指标同步

批量查询候选池,控制 Quota。

每 12 小时热度评分重算

更新排序,处理发布时间衰减。

每天 08:00AI 聚类与摘要

生成中文 Top 20 和详情页内容。

每天 08:30订阅推送

Telegram、企业微信或邮件发送。

已准备的脚本雏形

discover-rss.mjs

读取频道 RSS,输出发现的视频候选。

sync-metrics.mjs

调用 YouTube Data API v3 同步播放、点赞、评论。

score-topics.mjs

按热度半衰期公式排序候选视频。

build-digest.mjs

生成每日中文快报 JSON,等待 AI 摘要接入。

push-digest.mjs

推送 Telegram;未配置 token 时输出预览。

cluster-prompt.md

给 Qwen/DeepSeek 的话题聚类 Prompt。