周报自动化工具

一款自动从Jira、Glean和Pendo等平台提取数据并生成和维护Confluence周报文档的系统。

  • by npcrites
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 npcrites/weekly_update_agent

使用说明

每周更新自动化代理

在Confluence中生成和维护每周更新文档的自动化系统,从Jira、Glean和Pendo那里获取见解。

特性

  • 星期一文件创建:每周一自动创建一个新的每周更新文档
  • 每日更新:每天晚上8点用新内容更新当前的每周文件
  • 周五编译:周五晚上8:30,将本周的内容汇编成一个连贯的文档(无重复)
  • 多源综合:从Jira、Glean、Pendo和Granola中提取数据
  • 音调匹配:从过去的文档中学习,以匹配你的写作风格
  • 高级副总裁焦点:突出与产品高级副总裁相关的战略项目
  • 防止重复:跟踪添加的内容以避免重复

设置

  1. 安装依赖项:
pip install -r requirements.txt
  1. 配置环境变量(可选):
export PENDO_INTEGRATION_KEY="your-key-here"
export TIMEZONE="America/New_York"
  1. 确保在Cursor中配置了MCP服务器:
    • Atlassian(Jira/Confluence)
    • 收集
    • 彭多

用法

作为服务运行:

python main.py
# or
python scheduler.py

重要提示: 调度程序作为一个长时间运行的进程运行。你必须 保持终端窗口打开 (或者在里面运行它 tmux/screen)使周一、每日和周五的作业按计划运行。如果关闭终端或停止进程,则在重新启动之前,不会运行任何计划作业。

手动运行作业(用于测试):

from scheduler import WeeklyUpdateScheduler

scheduler = WeeklyUpdateScheduler()
scheduler.run_now("daily")  # or "monday" or "friday"

松弛(斜线命令)

您可以通过以下方式触发Slack的每周更新 /weekly-update 斜线命令。

先决条件

  • 带有Slash命令的Slack应用程序,其请求URL指向您正在运行的Slack应用服务器(请参阅 SLACK.md 用于设置)。

环境变量

  • SLACK_SIGNING_SECRET (必填):从您的Slack应用程序→ 基本信息→ 签名秘密。用于验证请求。
  • SLACK_BOT_TOKEN (可选):仅当您通过以下方式发布后续消息时才需要 chat.postMessage 而不是内置 response_url.

运行Slack应用程序

python slack_app.py
# or: flask --app slack_app run --port 5000

将斜线命令请求URL设置为 https://your-host/slack/weekly-update (例如使用 吸烟 用于本地测试)。

用法

  • /weekly-update --运行 日常 更新(默认)。
  • /weekly-update daily --同样的。
  • /weekly-update monday --创建新的每周文件(周一作业)。
  • /weekly-update friday --编译本周(周五作业)。

应用程序立即响应并在后台运行作业;作业完成后,它会向同一通道发布成功或失败消息(如果 response_url 由Slack提供)。

部署到渲染(这样您的团队就可以在不本地运行的情况下使用它)

  1. 将此仓库推送到GitHub(如果还没有)。
  2. 首选 dashboard.render.com → 新 → 蓝图.
  3. 连接您的GitHub帐户并选择 weekly_updates_agent 回购。渲染将读取 render.yaml 并创建一个免费的 网络服务.
  4. 在新服务中,打开 环境 并添加:
    • 密钥: SLACK_SIGNING_SECRET
    • 价值: Slack应用程序的签名密码(来自 api.slack.com → 你的应用→ 基本信息)。
    • 如果希望后台作业在Render上成功运行,请在服务器上添加您每周更新作业所需的任何其他环境变量(例如Confluence/Jira/Glean/Pendo凭据)。
  5. 部署(或等待第一次自动部署)。一旦上线,复制服务URL(例如。 https://weekly-updates-slack.onrender.com).
  6. 在Slack中: api.slack.com → 你的应用→ 斜杠命令 → 编辑您的命令。集 请求URL 到 https://YOUR-RENDER-URL/slack/weekly-update (例如。 https://weekly-updates-slack.onrender.com/slack/weekly-update).保存。

然后,您工作区中的任何人都可以使用 /weekly-update 不在本地运行任何东西。在免费套餐中,服务可能会在大约15分钟的不活动后休眠;之后的第一个请求可能需要几秒钟才能唤醒。

建筑

  • scheduler.py -运行作业的主调度程序
  • file_manager.py -管理Confluence页面的创建和更新
  • content_generator.py -从聚合数据生成内容
  • jira_aggregator.py -从Jira获取数据
  • glean_aggregator.py -从Glean获取数据
  • pendo_aggregator.py -从Pendo获取数据
  • granola_aggregator.py -从Granola获取会议数据
  • tone_analyzer.py -分析过去的文档的语气/风格
  • svp_filter.py -根据SVP相关性过滤内容
  • confluence_client.py -汇流API包装器
  • config.py -配置管理
  • slack_app.py -用于Slack slash命令的Flask应用程序(/weekly-update)

文档结构

每周更新包括:

  • 亮点:主要成就和阻碍因素简明摘要
  • 本周:项目层面的更新和倡议进展
  • 下周:行动项目和计划采取的下一步行动
  • 客户专区:前一周客户通话记录的链接

备注

  • 代理使用MCP服务器进行API访问(已在Cursor中配置)
  • 内容以增量方式附加,以避免覆盖现有条目
  • 音调和风格是从过去3-5周的文档中学习的
  • 客户电话从Granola(主要)或Glean(备用)接听
  • Granola需要OAuth身份验证-您需要在首次连接时进行身份验证