Skip to content

aooiuu/ynews

Repository files navigation

Ynews

AI 驱动的日报生成工具,过滤噪音,按需推送。

工作流程

flowchart LR
    A[抓取RSS] --> B[关键词过滤]
    B --> C{AI 评分}
    C -->|是| D[AI 评分筛选]
    C -->|否| E[跳过]
    D --> F[生成日报]
    E --> F
    F --> G[推送]
    G --> H[飞书]
    G --> I[钉钉]
    G --> J[GitHub]
Loading

功能特性

  • 开箱即用 内置AI资讯模板,你只需要根据模板配置大模型既可以直接运行
  • 自定义资讯来源 自定义RSS源
  • 降噪 除了关键词黑名单白名单,还支持AI评分、筛选、生成
  • 自定义推送 支持推送钉钉、飞书、Github等
  • WEB GUI 可视化配置
  • 自定义 根据 yaml 配置文件,可以自定义数据源、提示词、推送渠道等等

CLI

# 安装
npm install -g @ynews/cli

# 生成示例配置文件 ynews.yaml
ynews init --template ai
# 按需修改 ynews.yaml
ynews # 完整流程:抓取 → 生成 → 推送

配置和命令

Options:
  -V, --version        output the version number
  -c, --config <file>  配置文件路径(默认:当前目录下的 ynews.yaml)
  -d, --dry-run        试运行,不推送,仅输出日报内容到 stdout
  -v, --verbose        输出详细日志
  --hours <number>     抓取最近 N 小时的资讯(默认:24)
  --no-cache           禁用 LLM 缓存
  -h, --help           display help for command

Commands:
  init [options]       生成示例配置文件 ynews.yaml

Web GUI

WEB 端提供定时任务、多任务管理、登录 等功能

  1. 启动 API 服务和 Web GUI:
pnpm dev
  1. 访问 http://localhost:5173

YAML 配置文件详解

ynews.yaml 是核心配置文件,支持 ${ENV_VAR} 环境变量占位符。

配置示例

# ── 模型(OpenAI 兼容接口,第一个为默认模型)──
models:
  - name: gpt-4o-mini
    baseUrl: https://api.openai.com/v1
    apiKey: ${OPENAI_API_KEY}
  # 可配置多个模型,AI 节点可通过 llm.model 指定使用哪个
  # - name: deepseek-chat
  #   baseUrl: https://api.deepseek.com/v1
  #   apiKey: ${DEEPSEEK_API_KEY}

# ── 数据源(RSS 订阅)──
datasources:
  - url: https://example.com/feed.xml
  # 支持任意 RSS/Atom 源
  # - url: https://another.com/rss

# ── AI 评分筛选(可选)──
scoring:
  llm:
    model: gpt-4o-mini  # 可指定模型,不填则用第一个
    temperature: 0.7
    # top_p: 1
    # max_tokens: 2048
  prompt: |
    为程序员挑选高价值文章。返回 JSON 数组,每篇文章一个分数(0-10)。

    **评分标准(综合考虑相关性和质量)**
    - 9-10: 新模型发布、大模型版本更新、重要开源项目、工具发布**
    - 8-9: 开发者洞察、观点与趋势
    - 7-8: xxx
    - 0: 满足任意一项: 1.边缘技术内容 2.低价值内容 3.标题简短意义不明 4.对开发者和互联网创业公司没有任何帮助 5.汽车行业 6.学术与研究进展

    **输出要求**
    返回纯 JSON 数组, 不要任何多余的内容, 分数数量、顺序必须和文章保持一致
    比如:[8,5,3]

  topN: 200              # 取评分最高的前 N 篇

# ── 日报生成──
generate:
  mode: ai              # ai: AI 生成摘要 | plain: 原文拼接
  llm:
    model: gpt-4o-mini  # 可指定模型
    temperature: 0.1
  prompt: |
    你是一个专业的AI领域资讯编辑,请根据以下文章列表生成一份简洁的日报摘要。
    要求:1) 按主题分组 2) 每篇文章一句话总结 3) 使用 Markdown 格式

# ── 推送渠道(可选,不填则仅输出到 stdout)──
push:
  # 飞书群机器人
  feishu:
    webhook: https://open.feishu.cn/open-apis/bot/v2/hook/xxx
    secret: ${FEISHU_SECRET}      # 签名密钥(可选)
    title: "📰 AI 日报"           # 卡片标题

  # 钉钉群机器人
  dingtalk:
    webhook: https://oapi.dingtalk.com/robot/send?access_token=xxx
    secret: ${DINGTALK_SECRET}   # 签名密钥(可选)
    title: "AI 日报"

  # GitHub 仓库
  github:
    token: ${GITHUB_TOKEN}
    owner: myuser
    repo: daily
    branch: main                  # 默认 main
    pathTemplate: "{YYYY}/{MM}/{DD}.md"  # 文件路径模板

配置字段说明

字段 必填 说明
models LLM 模型列表,支持 OpenAI 兼容 API。第一个模型为默认
models[].name 模型名称,作为 API model 参数
models[].baseUrl API 地址,默认 https://api.openai.com/v1
models[].apiKey API 密钥,支持 ${ENV_VAR} 环境变量
datasources RSS 数据源列表
datasources[].url RSS/Atom 订阅地址
filter 关键词过滤配置
filter.strategy blocklist(黑名单)或 allowlist(白名单)
filter.keywords 关键词列表,支持正则如 /^广告/
scoring AI 评分配置,不填则跳过 AI 评分
scoring.llm 评分节点的 LLM 参数配置,按 client.chat.completions.create 参数原样传入(messages 由程序生成)
scoring.llm.model 评分用的模型,不填用第一个模型
scoring.llm.temperature 评分调用的 temperature,范围 0-2
scoring.llm.top_p 评分调用的 top_p,范围 0-1
scoring.llm.max_tokens 评分调用的 max_tokens
scoring.prompt 评分提示词
scoring.topN 取评分最高的前 N 篇,默认不限制
generate 日报生成配置
generate.mode ai(AI 生成摘要)或 plain(原文拼接)
generate.llm AI 生成节点的 LLM 参数配置,按 client.chat.completions.create 参数原样传入(messages 由程序生成)
generate.llm.model 生成用的模型,不填用第一个模型
generate.llm.temperature 生成调用的 temperature,范围 0-2
generate.llm.top_p 生成调用的 top_p,范围 0-1
generate.llm.max_tokens 生成调用的 max_tokens
generate.prompt 生成提示词(ai 模式)
generate.maxArticles plain 模式文章上限,默认全部
cache 缓存配置
cache.rssTtl RSS 缓存秒数,默认 3600
cache.llmTtl LLM 缓存秒数,默认 3600
retry 重试策略
retry.maxRetries 最大重试次数,默认 3
retry.rounds 评分重试轮数,默认 2
push 推送渠道配置
push.feishu 飞书推送
push.dingtalk 钉钉推送
push.github GitHub 推送

Docker

docker compose up -d --build
# 浏览器访问 http://localhost:3011

About

AI 驱动的自定义资讯日报工具,过滤噪音,按需推送。

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages