![图片[1]-用AI做了个自动写周报的工具:从想法到上线只用了3天-AI智能库](https://ai.guidianzi.net/wp-content/uploads/2026/07/ai-weekly-report-20260720174000.jpg)
📖 项目背景
每周五下午写周报,是我最讨厌的工作环节。不是不会写,而是太重复——把这周做过的事从日历、聊天记录、文档里捞出来,整理成领导爱看的格式,纯粹是体力活。作为一个懒人,我决定用AI把这个流程自动化。
从想法到上线只用了3天,今天把整个过程分享出来。不涉及太高深的技术,有Python基础就能跟着做。
🎯 要解决什么问题?
先明确需求。我的周报需要包含:
- 本周完成的任务(按项目分类)
- 遇到的问题和解决方案
- 下周计划
- 进度百分比和工时统计
数据来源有三个:钉钉打卡记录(知道每天在干嘛)、Git提交记录(知道写了什么代码)、飞书文档(知道开了什么会、写了什么文档)。
目标是:每周五下午点一下按钮,AI自动从这些数据源提取信息,生成一份格式规范、内容准确的周报。
🏗️ 技术方案设计
| 模块 | 技术选型 | 作用 |
|---|---|---|
| 数据采集 | Python + 各平台API | 拉取一周的工作数据 |
| 数据清洗 | Python文本处理 | 去重、分类、格式化 |
| 内容生成 | DeepSeek API | 用AI生成周报文本 |
| 格式输出 | python-docx | 生成Word文档 |
| 调度触发 | crontab | 每周五下午自动执行 |
为什么用DeepSeek而不是ChatGPT?两个原因:便宜(生成一份周报成本不到1分钱)、国内访问稳定。DeepSeek的中文生成质量已经足够好了。
📊 第一步:数据采集
这是最耗时的一步。每个平台的数据格式不一样,需要分别对接。
Git提交记录
Git的数据最好拿。在项目目录下跑一个命令就行:
import subprocess
from datetime import datetime, timedelta
def get_git_log(repo_path, days=7):
since_date = (datetime.now() - timedelta(days=days)).strftime("%Y-%m-%d")
cmd = f"git -C {repo_path} log --since='{since_date}' --pretty=format:'%h|%s|%an|%ad' --date=short"
result = subprocess.run(cmd, shell=True, capture_output=True, text=True)
commits = []
for line in result.stdout.strip().split("\\n"):
parts = line.split("|")
if len(parts) >= 4:
commits.append({
"hash": parts[0],
"message": parts[1],
"author": parts[2],
"date": parts[3]
})
return commits
commits = get_git_log("/path/to/project")
for c in commits:
print(f"{c['date']} | {c['message']}")
这段代码会拉取最近7天的Git提交记录,包括commit hash、提交信息、作者和日期。Git提交信息是周报最核心的数据源——它精确记录了你每天做了什么。
飞书日历/文档
飞书有开放API,可以拉取日历事件和文档列表。需要先在飞书开放平台创建应用,获取app_id和app_secret:
import requests
def get_feishu_events(app_id, app_secret, days=7):
# 获取access_token
token_url = "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal"
resp = requests.post(token_url, json={"app_id": app_id, "app_secret": app_secret})
token = resp.json()["tenant_access_token"]
# 查询日历事件
start_time = int((time.time() - days * 86400) * 1000)
end_time = int(time.time() * 1000)
url = f"https://open.feishu.cn/open-apis/calendar/v4/calendar_events"
headers = {"Authorization": f"Bearer {token}"}
params = {"start_time": start_time, "end_time": end_time}
resp = requests.get(url, headers=headers, params=params)
events = resp.json().get("data", {}).get("items", [])
return [{"title": e.get("summary"), "start": e.get("start_time")} for e in events]
钉钉打卡记录
钉钉也有开放API,但打卡记录需要企业管理员权限。如果拿不到权限,可以简化方案——让用户手动填一个简单的”今日工作”表单,作为补充数据源。
🤖 第二步:AI生成周报
拿到原始数据后,核心工作就是把这些碎片化的信息组织成一份通顺的周报。这就是AI的用武之地。
import requests
import json
def generate_weekly_report(commits, events, tasks):
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END









