
全网热点聚合应用可一键整合微博、知乎、36 氪、Hacker News 等 30 平台热榜界面极简清爽、实时更新支持自定义部署与数据同步帮你高效获取全网热点。功能特点多源聚合默认聚合 40 主流源含知乎、微博、GitHub 等一键整合分散资讯告别多平台切换用户主权完全去广告无算法绑架支持自定义拖拽排序由你决定信息来源与呈现顺序高性能与部署智能缓存默认 30 分钟适配手机 / 平板支持 Docker 快速部署可托管至个人服务器或 Cloudflare Pages添加自定义新闻源适合监控技术论坛、竞品动态或个人博客更新安装部署1、创建本地目录mkdir -p /opt/newsnow/data2、Docker命令安装下载镜像docker pull ghcr.nju.edu.cn/ourongxing/newsnow:v0.0.39Docker命令启动容器docker run -d \ --name newsnow \ --restart always \ -p 8000:8000 \ -v $(pwd)/data:/usr/app/.data \ -e TZAsia/Shanghai \ ghcr.nju.edu.cn/ourongxing/newsnow:v0.0.393、Docker Compose方式部署cd /opt/newsnow/dataCompose配置services: newsnow: image: ghcr.nju.edu.cn/ourongxing/newsnow:v0.0.39 container_name: newsnow ports: - 4444:4444 volumes: - /opt/newsnow/data:/usr/app/.data environment: - HOST0.0.0.0 - PORT4444 - NODE_ENVproduction - G_CLIENT_ID - G_CLIENT_SECRET - JWT_SECRET - INIT_TABLEtrue - ENABLE_CACHEtrue启动容器# 后台启动首次启动会自动拉取/构建镜像耐心等待 docker-compose up -d # 查看启动日志验证是否正常运行 docker-compose logs -f newsnow使用教程1打开网页即可默认30 分钟刷新2将平台添加到关注里类似收藏夹3搜索平台点击更多搜索咨询平台4一些参数设置项目地址ourongxing/newsnow: Elegant reading of real-time and hottest news自定义源设置想要添加数据源请关注shared/sourcesserver/sources项目类型完备结构简单请自行探索1. 创建特征分支一定要为你的更改创建一个功能分支git checkout -b feature-name例如添加一个Bilibili热门视频来源git checkout -b bilibili-hot-video2. 在配置中注册源将你的新源添加到源配置中/shared/pre-sources.tsbilibili: { name: 哔哩哔哩, color: blue, home: https://www.bilibili.com, sub: { hot-search: { title: 热搜, column: china, type: hottest }, hot-video: { // Add your new sub-source here title: 热门视频, column: china, type: hottest } } }对于全新的来源请添加一个新的顶层条目newsource: { name: New Source, color: blue, home: https://www.example.com, column: tech, // Pick an appropriate column type: hottest // Or realtime if its a news feed };3. 实现源源 Fetcher在目录中创建或修改文件。如果你的源与现有源相关比如添加新的Bilibili子源请修改现有文件/server/sources/// In /server/sources/bilibili.ts // Define interface for API response interface HotVideoRes { code: number message: string ttl: number data: { list: { aid: number // ... other fields bvid: string title: string pubdate: number desc: string pic: string owner: { mid: number name: string face: string } stat: { view: number like: number reply: number // ... other stats } }[] } } // Define source getter function const hotVideo defineSource(async () { const url https://api.bilibili.com/x/web-interface/popular const res: HotVideoRes await myFetch(url) return res.data.list.map(video ({ id: video.bvid, title: video.title, url: https://www.bilibili.com/video/${video.bvid}, pubDate: video.pubdate * 1000, extra: { info: ${video.owner.name} · ${formatNumber(video.stat.view)}观看 · ${formatNumber(video.stat.like)}点赞, hover: video.desc, icon: video.pic, }, })) }) // Helper function for formatting numbers function formatNumber(num: number): string { if (num 10000) { return ${Math.floor(num / 10000)}w } return num.toString() } // Export the source export default defineSource({ bilibili: hotSearch, bilibili-hot-search: hotSearch, bilibili-hot-video: hotVideo, // Add your new source here })对于完全新的源创建一个以你来源命名的新文件例如。/server/sources/newsource.ts4. 重新生成源文件添加或修改源文件后执行以下命令以重新生成所需的文件npm run presource这会更新文件和其他必要的配置。sources.json