返回市场
任务同步

任务同步

作者:iamfaham2 星标更新:2025-10-24

项目介绍

JobSyncd

使用LLMs和MCPs进行智能自动化求职申请跟踪。

功能

  • 📧 Gmail集成: 获取最近的求职申请邮件
  • 🤖 AI邮件解析: 使用LLM从邮件中提取结构化数据
  • 📊 Notion数据库: 自动在你的Notion求职追踪器中创建条目
  • 🔄 每日同步: 使用智能缓存防止重复条目
  • 🔁 智能重试逻辑: 自动处理OpenRouter速率限制并回退
  • 🎯 应用ID跟踪: 当状态变化时更新现有条目
  • 📈 每周报告: AI生成的总结,包含统计数据和见解

架构

项目结构

JobSyncd/
├── mcp_servers/           # 外部服务的MCP服务器
│   ├── gmail_server.py    # Gmail MCP服务器
│   ├── notion_server.py   # Notion MCP服务器
│   └── weekly_report_server.py # 每周报告MCP服务器
├── workflows/             # LangGraph工作流
│   ├── job_sync_workflow.py # 主求职同步工作流
│   └── weekly_report_workflow.py # 每周报告工作流
├── agent/                 # 主自动化代理
│   ├── gmail_client.py    # Gmail API客户端
│   ├── credentials.json   # Gmail OAuth凭证(从Google Cloud Console下载)
│   ├── token.json         # OAuth令牌(自动生成)
│   ├── notion_utils.py    # Notion数据库操作
│   ├── main.py            # 每日同步编排器(MCP + LangGraph)
│   └── weekly_report.py   # 每周总结生成器
├── pyproject.toml         # 项目配置
├── requirements.txt       # Python依赖项
├── uv.lock                # 锁定依赖项
├── README.md              # 项目概述和快速开始
└── SETUP_ENV.md           # 完整设置指南(包括每周报告)

数据流

  • MCP架构: 模块化、可复用的服务
  • LangGraph工作流: 带有内置去重功能的智能邮件处理
  • 单次LLM调用: 一起处理所有邮件以获得更好的上下文
  • 智能去重: LLM自然理解邮件关系
  • 可扩展性: 容易添加新的服务和工作流

设置

参见SETUP_ENV.md获取完整的设置说明,包括Gmail API、Notion配置和环境变量。

使用

测试Notion连接

uv run agent/notion_utils.py

运行每日同步

uv run agent/main.py

这将执行以下步骤:

  1. 获取最近的邮件(默认为最后10封邮件)
  2. 使用AI一起处理所有邮件以实现智能去重
  3. 提取求职申请信息,并带有内置的重复检测
  4. 在你的Notion数据库中创建条目
  5. 自动处理状态更新

首次运行时: 浏览器会打开进行Gmail OAuth认证。授予权限后,代理会保存一个token.json用于未来使用。

前提条件:

  • 需要从Google Cloud Console下载credentials.json并将其放置在agent/文件夹中
  • 请参阅SETUP_ENV.md获取详细的设置说明

关键改进:

  • 智能去重: LLM一起处理所有邮件,自然识别相关邮件
  • 状态进展: 自动处理申请→评估→面试→录用流程
  • 无重复: 同一公司的邮件合并为单一申请

生成每周报告

注意: 需要设置每周报告数据库(参见SETUP_ENV.md)。

uv run agent/weekly_report.py

这将执行以下步骤:

  1. 使用MCP + LangGraph获取过去7天的应用数据
  2. 生成带有智能见解的AI驱动总结
  3. 在你的Notion数据库中创建格式化的报告
  4. 优雅地处理速率限制和错误

自定义时间范围:

uv run agent/weekly_report.py 14  # 最近14天
uv run agent/weekly_report.py 30  # 最近30天(月度报告)

关键改进:

  • MCP架构: 模块化、可复用的每周报告服务
  • LangGraph工作流: 智能数据处理和总结生成
  • 智能见解: AI分析模式并提供可操作建议
  • 灵活的时间范围: 支持自定义日期范围

调度

GitHub Actions(推荐 - 云端)

使用GitHub Actions自动化一切 - 不需要保持计算机运行!

特性:

  • ☁️ 在云端运行(免费用于公共仓库)
  • 📅 每日同步 + 每周报告
  • 🔄 自动刷新OAuth令牌
  • 💾 在运行之间持久化缓存
  • 📧 失败时发送电子邮件通知

设置(GitHub Actions):

  • 本地运行一次:uv run agent/main.py(创建agent/token.json
  • 添加GitHub Secrets,使用原始JSON内容(设置 → Secrets → Actions):
    • GMAIL_CREDENTIALS = agent/credentials.json的内容
    • GMAIL_TOKEN = agent/token.json的内容
    • NOTION_TOKEN, NOTION_DATABASE_ID, NOTION_WEEKLY_REPORTS_DB_ID, OPENROUTER_KEY
  • 确保工作流权限:设置 → Actions → 通用 → 读写
  • 手动运行每个工作流一次以验证

详见SETUP_ENV.md中的“GitHub Actions设置”。

计划:

  • 每日同步: 每天上午9:00(UTC)
  • 每周报告: 每周一上午10:00(UTC)

本地调度(替代方案)

如果你更喜欢在自己的机器上运行:

每日同步

Windows(任务计划程序):

schtasks /create /tn "JobSyncd-Daily" /tr "uv run D:\Projects\JobSyncd\agent\main.py" /sc daily /st 09:00

Linux/Mac(Cron):

crontab -e
# 添加: 0 9 * * * cd /path/to/JobSyncd && uv run agent/main.py

每周报告

Windows(任务计划程序):

schtasks /create /tn "JobSyncd-Weekly" /tr "uv run D:\Projects\JobSyncd\agent\weekly_report.py" /sc weekly /d MON /st 10:00

Linux/Mac(Cron):

crontab -e
# 添加: 0 10 * * 1 cd /path/to/JobSyncd && uv run agent/weekly_report.py

使用Python schedule库

import schedule
import time

schedule.every().day.at("09:00").do(daily_sync)

while True:
    schedule.run_pending()
    time.sleep(3600)

贡献

欢迎贡献!请随时提交Pull Request。

许可证

本项目采用MIT许可证。详情请参阅LICENSE文件。