Skip to content

feat: 提供 HTTP API,支持第三方系统获取每日日报 #69

@okatu-loli

Description

@okatu-loli

Is your feature request related to a problem? Please describe.

是的。我希望将 Horizon 集成到第三方系统中,由第三方系统主动调用 API 获取每日生成的日报内容。

目前 Horizon 已经支持 GitHub Pages、Webhook、Email、MCP 等输出和集成方式。但是对于一些已有的内部系统、企业后台或门户系统来说,它们可能不是 MCP Client,也不适合通过 Webhook 被动接收推送。

在这种情况下,目前似乎还没有一个比较直接的 HTTP API,可以让第三方系统按需获取日报内容。

这会导致以下集成场景不够方便:

  • 按日期主动拉取日报
  • 获取最新一次生成的日报
  • 将日报同步到内部系统、知识库或门户
  • 对日报内容进行归档、检索、展示或二次分发
  • 在同步失败后按日期重试补拉

Describe the solution you'd like

希望 Horizon 能提供一个标准的 HTTP API,允许第三方系统获取已生成的日报。

例如:

GET /api/daily-report?date=2026-05-24&lang=zh

返回示例:

{
  "date": "2026-05-24",
  "language": "zh",
  "format": "markdown",
  "content": "# Daily Report..."
}

也希望支持获取最新生成的日报:

GET /api/daily-report/latest?lang=zh

返回示例:

{
  "run_id": "xxx",
  "date": "2026-05-24",
  "language": "zh",
  "format": "markdown",
  "content": "# Daily Report..."
}

可以考虑的实现方式:

  • 增加一个轻量级 HTTP API 服务
  • 直接读取 data/summaries/ 下已生成的日报文件
  • 或复用现有 MCP 能力,例如 hz_list_runshz_get_run_summary
  • 支持 Docker 部署时暴露 API 端口
  • 可选支持 token-based authentication,避免接口被公开访问
  • 支持按日期获取历史日报,以及获取 latest report

Describe alternatives you've considered

我考虑过以下替代方案:

  1. Webhook

    Horizon 可以通过 Webhook 将日报推送到第三方系统。
    但在我的场景中,第三方系统更倾向于主动拉取,而不是被动接收推送。

    主动拉取更方便控制同步时机、失败重试,以及按日期补拉历史日报。

  2. GitHub Pages / 静态文件

    GitHub Pages 或静态文件可以用于公开或半公开地访问日报。
    但对于私有部署、需要鉴权、或需要结构化返回结果的系统来说,标准 HTTP API 会更合适。

  3. MCP

    MCP 对 AI Agent 集成很有用。
    但并不是所有第三方系统都是 MCP Client。对于普通后端服务、内部管理后台或企业门户来说,HTTP API 会更容易集成,也更通用。

Additional context

主要使用场景是:

  • Horizon 每天生成新闻日报
  • 第三方系统通过 API 主动获取 latest report 或指定日期的 report
  • 第三方系统将日报内容进行存储、展示、索引、归档或内部分发

希望能增加这个能力,或者在文档中补充说明:如果第三方系统需要主动获取日报,推荐的集成方式是什么。

如果这个功能符合项目方向,并且维护者认为可行的话,我也可以尝试贡献一个 PR。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions