AI实战之:智能周报生成器

内容分享2小时前发布
0 0 0
全能 AI 聚合平台 免费

一站式接入主流 AI 大模型,支持对话 · 生图 · 生视频,即开即用

ChatGPT Claude Gemini Grok DeepSeek 通义千问 Ollama
AI对话 AI生图 AI视频
免费使用 →

本章的收官实战来了。

这一节我们做一个真正能用的工具——智能周报生成器。它解决的是一个 99% 上班族都有的痛点:

周五下午,领导在群里:「大家下午 5 点前把本周周报发我。」

你打开电脑,看着空白的文档发呆:这周到底做了啥?好像很忙,但又想不起来具体干了什么。翻日历、翻聊天记录、翻提交记录——找齐了之后,还要按”工作内容、进展、下周计划”的格式组织成规整的文字……这一整套下来,一个小时没了。

如果我们让 AI 来做:

你每天随手在一个文本文件里记一行流水账,列如”2026-04-15 上午:和张总开会讨论 Q2 营销方案,下午:跟进了抖音代运营的合同”。

周五一键运行脚本,AI 自动读取一周的记录,按”工作内容/完成进展/下周计划”三大块整理成一份结构规整的周报。

AI实战之:智能周报生成器

总耗时:1 分钟。

需求分析

先把需求拆清楚。一个”智能周报生成器”要做三件事:

  1. 读取一周的工作流水账(本地 txt 文件)
  2. 调用 AI 整理分类(归纳成”已完成 / 进行中 / 下周计划”)
  3. 输出规整的周报(Markdown 格式,直接复制粘贴到飞书、企微、邮件)

附加要求:

  • 支持手动指定周数范围(这周 / 上周 / 自定义日期)
  • 输出结果要包含标题、日期、姓名等元信息
  • 容错:流水账格式不规范也能处理
  • 可复用:不同岗位的人都能用(产品、运营、开发、销售……)

准备工作

流水账文件

新建一个 worklog.txt 文件,随手记录每天的工作。格式随意,列如:

2026-04-14 周一
上午:review 了上周末上线的功能,修复了两个用户反馈的 bug
下午:和设计师对接了会员中心改版的 UI 稿
晚上:写了下个月的技术方案初稿

2026-04-15 周二
上午:参与了产品周会,讨论 Q2 路线图
下午:帮销售同学解决了一个客户的集成问题
晚上:加班完成了技术方案

2026-04-16 周三
开发新功能:消息推送模块,完成了后端接口
和产品对了一下推送规则,下周要做 A/B 实验

2026-04-17 周四
继续开发消息推送,完成了前端页面
遇到一个性能问题,正在排查

2026-04-18 周五
定位到性能问题,是数据库查询太慢,加了索引解决
写周报中

注意:AI 对格式的容忍度很高,你不需要严格遵循”上午/下午/晚上”的结构。哪怕只写一句”今天开了三个会,写了需求文档”,AI 也能理解。

目录结构

weekly_report/
├── worklog.txt           # 你的流水账
├── generate_report.py    # 周报生成脚本
└── reports/              # 生成的周报存放目录
    └── 2026-04-18.md

第一版:最小可运行版本

我们先用最短的代码跑通核心流程,再逐步完善。

# generate_report.py
import anthropic
from datetime import datetime

client = anthropic.Anthropic()

# 1. 读取流水账
with open('worklog.txt', 'r', encoding='utf-8') as f:
    worklog = f.read()

# 2. 让 AI 整理
prompt = f"""你是一位专业的职场助理,请根据以下一周的工作流水账,生成一份结构规整的周报。

要求:
1. 用 Markdown 格式
2. 分三个部分:本周完成、进行中、下周计划
3. 用条目式列举,每条简洁清晰
4. 突出成果和数据,避免记流水账

流水账:
{worklog}

请直接输出周报正文,不要加解释。
"""

response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=2000,
    messages=[{"role": "user", "content": prompt}]
)

report = response.content[0].text

# 3. 保存
today = datetime.now().strftime('%Y-%m-%d')
output_path = f'reports/{today}.md'

import os
os.makedirs('reports', exist_ok=True)

with open(output_path, 'w', encoding='utf-8') as f:
    f.write(report)

print(f"✅ 周报已生成:{output_path}")
print("
" + "=" * 40)
print(report)

跑一下:

python generate_report.py

你会看到 AI 生成的周报,类似这样:

## 本周工作周报

### 本周完成
- 完成会员中心改版 UI 对接,设计稿已确认
- 修复上周功能上线后发现的 2 个用户反馈 Bug
- 定位并解决消息推送模块的数据库性能问题(通过新增索引)

### 进行中
- 消息推送模块开发:后端接口已完成,前端页面开发完成,待联调
- 下月技术方案:初稿已完成,待评审

### 下周计划
- 消息推送模块 A/B 实验上线
- 技术方案评审并修改
- 参与 Q2 路线图落地

15 分钟前还要花 1 小时写的周报,目前只要按一下回车。

第二版:让它更好用

第一版能跑,但还有一些不足:

  1. 没有个人信息(姓名、岗位)
  2. 没法区分”本周”和”上周”
  3. 流水账越写越多,全量丢给 AI 浪费钱

我们升级一下。

# generate_report.py (v2)
import os
import re
import anthropic
from datetime import datetime, timedelta

client = anthropic.Anthropic()


# ========== 配置区 ==========
USER_NAME = "张三"
USER_ROLE = "产品经理"
DEPARTMENT = "增长部"
WORKLOG_FILE = "worklog.txt"
OUTPUT_DIR = "reports"
# ============================


def parse_worklog(content):
    """把流水账按日期分段"""
    entries = []
    # 用日期行作为分段标记
    pattern = r'(d{4}-d{1,2}-d{1,2}.*?)(?=
d{4}-d{1,2}-d{1,2}|)'
    matches = re.finditer(pattern, content, re.DOTALL)

    for m in matches:
        block = m.group(1).strip()
        # 提取日期
        date_match = re.match(r'(d{4}-d{1,2}-d{1,2})', block)
        if date_match:
            date_str = date_match.group(1)
            try:
                date = datetime.strptime(date_str, '%Y-%m-%d')
                entries.append({'date': date, 'content': block})
            except ValueError:
                continue

    return entries


def filter_this_week(entries):
    """只保留本周(周一到周五)的条目"""
    today = datetime.now()
    weekday = today.weekday()  # 0=周一, 6=周日
    monday = today - timedelta(days=weekday)

    result = []
    for entry in entries:
        if entry['date'] >= monday.replace(hour=0, minute=0, second=0, microsecond=0):
            result.append(entry)
    return result


def generate_report(entries, name, role, department):
    """调用 AI 生成周报"""
    worklog_text = "

".join([e['content'] for e in entries])

    prompt = f"""你是一位专业的职场助理,负责为以下同事生成一份本周工作周报。

同事信息:
- 姓名:{name}
- 岗位:{role}
- 部门:{department}

以下是这位同事本周的工作流水账:
{worklog_text}

请生成一份结构化的周报,要求:
1. Markdown 格式
2. 分三部分:「一、本周完成」「二、进行中」「三、下周计划」
3. 每部分用列表形式
4. 语言简洁专业,突出成果与进展,避免罗列细节
5. 如果流水账没体现"下周计划",请基于进行中的工作合理推断

直接输出周报正文,不要前置说明。
"""

    response = client.messages.create(
        model="claude-sonnet-4-6",
        max_tokens=2000,
        messages=[{"role": "user", "content": prompt}]
    )
    return response.content[0].text


def build_report_header(name, role, department):
    """生成周报的元信息头部"""
    today = datetime.now()
    weekday = today.weekday()
    monday = today - timedelta(days=weekday)
    friday = monday + timedelta(days=4)

    return f"""# 周报 · {name}

- **姓名**:{name}
- **岗位**:{role}
- **部门**:{department}
- **周期**:{monday.strftime('%Y-%m-%d')} ~ {friday.strftime('%Y-%m-%d')}
- **提交日期**:{today.strftime('%Y-%m-%d')}

---

"""


def main():
    # 读流水账
    with open(WORKLOG_FILE, 'r', encoding='utf-8') as f:
        content = f.read()

    # 解析
    entries = parse_worklog(content)
    if not entries:
        print("❌ 流水账为空或格式无法识别")
        return

    # 筛选本周
    this_week = filter_this_week(entries)
    if not this_week:
        print("❌ 本周还没有记录")
        return

    print(f" 本周共记录 {len(this_week)} 天的工作")

    # 生成周报正文
    print(" AI 整理中...")
    body = generate_report(this_week, USER_NAME, USER_ROLE, DEPARTMENT)

    # 加上头部
    header = build_report_header(USER_NAME, USER_ROLE, DEPARTMENT)
    full_report = header + body

    # 保存
    os.makedirs(OUTPUT_DIR, exist_ok=True)
    filename = datetime.now().strftime('%Y-%m-%d') + '.md'
    output_path = os.path.join(OUTPUT_DIR, filename)

    with open(output_path, 'w', encoding='utf-8') as f:
        f.write(full_report)

    print(f"✅ 周报已生成:{output_path}
")
    print("=" * 40)
    print(full_report)


if __name__ == '__main__':
    main()

新增的功能:

  1. 配置区:顶部的 USER_NAME 等变量,改一下就能给不同人用
  2. 按日期筛选:parse_worklog() + filter_this_week() 只取本周的数据
  3. 统一头部:自动拼接”姓名、岗位、部门、周期”这些元信息
  4. 异常处理:流水账为空或格式错误都有友善提示

输出文件的效果:

# 周报 · 张三

- **姓名**:张三
- **岗位**:产品经理
- **部门**:增长部
- **周期**:2026-04-14 ~ 2026-04-18
- **提交日期**:2026-04-18

---

## 一、本周完成

- **会员中心改版**:完成 UI 对接和设计稿确认
- **Bug 修复**:修复用户反馈的 2 个生产环境问题
- **消息推送模块**:后端接口开发完成,前端页面开发完成
- **性能优化**:定位并解决数据库慢查询问题

## 二、进行中

- 消息推送模块联调与 A/B 实验准备
- 下月技术方案撰写,初稿已完成

## 三、下周计划

- 消息推送模块 A/B 实验上线
- 技术方案评审并根据反馈修改
- 推进 Q2 路线图相关工作

完美的周报,比 90% 的人手写得都规整。

第三版:进阶增强

如果你想再进一步,这里有几个方向:

增强 1:读取多个数据源

不只是流水账文件,还可以读:

  • Git 提交记录(开发同学适用)
import subprocess
commits = subprocess.check_output(
    ['git', 'log', '--since=1.week.ago', '--pretty=format:%s'],
    text=True
)
  • 日历事件(已开会议作为”沟通协作”条目)
  • 邮件发件箱(本周处理的重大问题)
  • 任务管理工具(Jira、飞书任务、腾讯文档等)

把这些数据合并后一起喂给 AI,周报会更丰满。

增强 2:自定义模板

不同公司对周报格式要求不同。可以把模板抽成一个文件:

# template.md
# 周报 · {name}

##  本周目标达成情况
{goals}

##  关键数据
{metrics}

## ✅ 本周完成
{completed}

## ⏳ 进行中
{in_progress}

##  下周计划
{next_week}

##  思考与提议
{thoughts}

然后让 AI 按这个模板填内容。

增强 3:自动发送

生成完周报,直接发到指定渠道:

# 发到飞书机器人
import requests
webhook_url = "https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxx"
requests.post(webhook_url, json={
    "msg_type": "text",
    "content": {"text": full_report}
})

或者发邮件、企微、钉钉——第 11 章之后你会越来越熟悉这些。

增强 4:定时自动运行

在 Mac 上用 cron、Windows 上用”任务计划程序”,设置每周五下午 4 点自动跑一遍

Mac 示例:

# 编辑定时任务
crontab -e

# 添加这一行(每周五 16:00 执行)
0 16 * * 5 cd /path/to/weekly_report && python generate_report.py

reports/从此你再也不用手动跑脚本——周五下午,周报自动出目前你的 文件夹里。

用的过程中会踩到的坑

坑 1:流水账写得太简略,AI 瞎编

如果你某天只写了”开会”两个字,AI 只能靠猜——它可能会编造”讨论了 Q2 关键战略”之类的内容。

解法:在提示词里加一句”不要捏造流水账中没有的内容,宁可简略也不要编造“。

坑 2:生成的周报太啰嗦或太简略

解法:在提示词里加上字数约束,列如”每条不超过 30 字”、”整份周报控制在 500 字以内”。

坑 3:中英文混杂

有时候 AI 会把”完成”写成”Completed”。解法:加一句”严格使用中文“。

坑 4:敏感信息外泄

如果你的流水账里有客户姓名、财务数据等敏感信息,发给 AI 之前要先脱敏

def sanitize(text):
    # 把手机号替换成 ***
    text = re.sub(r'1[3-9]d{9}', '[手机号已屏蔽]', text)
    # 把金额数字替换
    text = re.sub(r'd+[万千亿元]', '[金额已屏蔽]', text)
    return text

具体规则根据你的场景定。涉及敏感信息时,优先思考用国产 AI(数据在国内),或者用本地模型

本章总结

从 1 到 5,你完整经历了”给工具接上 AI 大脑”的全过程:

  • 1 理解了 API 是什么,API Key 怎么用
  • 2 完成了第一次 AI API 调用
  • 3 学会了”读 → 发 → 接 → 存”的通用套路
  • 4 掌握了让脚本稳定运行的七个关键技巧
  • 5 做出了一个真正有用的工具 —— 智能周报生成器

从这一章开始,你已经不再是”AI 的用户”,而是”AI 的使用者”**。你会开始用”AI 能不能帮我做这个”的视角看待日常工作——这是一种思维方式的升级,比具体的代码更重大。

你可以 clone 下来直接改参数跑。用起来之后你会发现,AI 编程不是技术,而是一种”让生活变简单”的新习惯

© 版权声明

相关文章

暂无评论

none
暂无评论...