ORANGE BOOK · CODEX

第十四章 办公自动化

14.1 办公族的"重复地狱"

如果你的工作离不开 Excel、PDF、邮件、文件归档,你大概有过这种感觉:

  • 同一份报表,每周做一次
  • 同一类 PDF,每月归档一次
  • 同一种邮件,每天回十封
  • 同一类文件,按日期、类型分一遍
  • 同一份对账,每月底关账时核一遍

这不是"工作",这是"重复劳动"。重复劳动消耗的不是脑力,是耐心。耐心耗光了,你就开始厌倦工作。

这一章讲怎么用 Codex 把这些重复劳动一次性 Skill 化 + Automation 化,从此把心力留给真正需要思考的事。

14.2 Excel 数据清洗

典型场景

老板甩来一份"销售数据"Excel,让你"看看哪些客户今年增长最快"。打开一看:

  • "区域"列里有"华东"、"East"、"east"、"华东区"四种写法
  • "金额"列有"1.2 万"、"12000"、"12,000.00"三种格式
  • "日期"列有"2025-01-15"、"2025/1/15"、"2025年1月15日"

光是清洗就要花两小时。

Codex 怎么做

读取 sales-2025.xlsx,做以下清洗:

1. "区域"列:把"华东/East/east/华东区"统一成"华东",
   "华南/South/south"统一成"华南",以此类推
2. "金额"列:把所有写法转成数字("1.2 万" = 12000),
   保留两位小数
3. "日期"列:统一成 YYYY-MM-DD 格式
4. 删除完全重复的行
5. "客户名"列里有空白的,整行标记到 issues.csv,让我手动处理

输出 sales-2025-clean.xlsx 和 issues.csv 两个文件。
完成后告诉我清洗了多少行、删除了多少重复、issues 有多少条。

Codex 用 Python 的 pandas 跑一遍,3 分钟给你三件东西:

  • sales-2025-clean.xlsx:干净的数据
  • issues.csv:需要你处理的脏数据
  • 一段统计报告

Skill 化

如果"清洗销售数据"是你每月固定动作,把它做成 Skill:

---
name: 销售数据清洗
description: 把销售 Excel 中区域、金额、日期等列统一格式,分离脏数据
keywords: [数据清洗, 销售数据, Excel 清洗, sales clean]
---

## 步骤
1. 区域映射(按 references/region-map.md)
2. 金额标准化("X 万" → 数字)
3. 日期标准化(→ YYYY-MM-DD)
4. 重复行去重
5. 缺失关键字段的行隔离到 issues.csv

## 输出
- {原文件名}-clean.xlsx
- issues.csv
- 一段统计报告

下次老板再发数据来:

对这个 sales-2025-Q4.xlsx 做销售数据清洗

3 分钟出结果,省下 1 小时 57 分钟

14.3 PDF 批量提取

典型场景:发票汇总

财务月底关账,要把这个月所有报销发票(200+ 张 PDF)汇总成一份 Excel:每张提取金额、开票方、税号、发票号。

人工做 = 一整天。

Codex 怎么做

读取 invoices/2026-04/ 下所有 PDF,
对每张提取:金额、开票方、税号、发票号、开票日期。

存到 invoices-2026-04.xlsx,最后一行是"金额合计"(用公式 =SUM(...))。

如果某张提取失败(PDF 是图片版需要 OCR),列到 failed.txt 让我手动处理。

完成后给我汇总报告。

Codex 装一下 pdfplumber(请求授权时批准),跑一遍,5 分钟出结果。

复杂版:带分类

读取 invoices/ 下所有 PDF(不限月份),
按"开票月份 + 类别"分类:
- 类别从内容判断:"餐饮"、"交通"、"办公用品"、"差旅"、"其他"

输出:
- invoices-summary.xlsx:每张发票一行 + 分类标签
- by-month.xlsx:按月份分 sheet,每个 sheet 内按类别小计
- by-category.xlsx:按类别分 sheet

Skill 化

---
name: 发票批量提取
description: 从 PDF 发票文件夹中提取金额、税号、开票方等关键信息,汇总到 Excel
keywords: [发票, 报销, PDF 提取, invoice]
---

每月跑一次,账总能在 1 小时内关完。

14.4 文件归档与目录整理

典型场景:下载文件夹大爆炸

~/Downloads/ 里 800 个文件,2 年没整理。每次找一个文件都要花 10 分钟。

Codex 怎么做(保守版)

扫描 ~/Downloads/,按以下规则归档:

1. 按"创建年月"建文件夹:~/Archive/2024/01/、2024/02/...
2. 按"文件类型"建子文件夹:documents/、images/、archives/、apps/、others/
3. 移动文件到对应位置(不改名)
4. 跳过最近 7 天创建的文件(可能还在用)
5. 大于 100MB 的文件单独列到 large-files.txt 让我决定

完成后给我归档报告,并保留 ~/Downloads/ 顶层只剩"未归档"的最近 7 天文件。

Codex 把 800 个文件按 年/月/类型 分类,10 分钟搞定。下载文件夹瞬间清爽。

进阶版:智能归类

扫描 ~/Documents/ 下所有 PDF:

按"内容类型"自动分类:
- 合同 → contracts/
- 发票 → invoices/
- 学习资料 → learning/
- 简历 → resumes/
- 论文 → papers/
- 其他 → misc/

判断依据:文件名 + 文件内容前 500 字。
分不清的归 misc/ 并列在 unclassified.txt,让我手动确认。

不要删除任何文件,只移动。完成后给报告。

这种"理解文件内容再分类"的活,传统脚本做不到,AI 才行。

Automation:每周自动整理

设一个 Automation:每周日晚上 9 点自动跑"下载文件夹归档"。星期一早上你打开电脑,桌面是干净的。

14.5 邮件草稿与回复

典型场景:通知邮件

每月给 200 个客户发"账单已生成"通知邮件,内容大同小异,但金额、日期、客户名要每封不同。

Codex 怎么做

准备:

  • customers.xlsx:客户名、邮箱、本月金额
  • template.md:邮件模板(带占位符)
<!-- template.md -->
主题:{月份}账单 - {客户名}

{客户名}:

您好。本期账单已生成:
- 账期:{月份}({周期})
- 金额:¥{金额}
- 截止:{截止日期}

附件为详细账单 PDF,请查阅。如有疑问,请回复本邮件或联系您的客户经理。

财务部
{公司名}

指令:

读取 customers.xlsx 和 template.md,
为每个客户生成一封邮件正文,输出到 emails/ 文件夹,
文件名:{客户名}.txt

不要发送,只生成草稿。完成后告诉我生成了多少封。

200 封邮件 5 分钟生成。你抽查 5 封确认无误,然后批量发送(或导入到 Outlook 邮件列表)。

进阶:智能回复

对收到的邮件做智能回复:

读取 inbox.mbox 里今天的所有未读邮件。

对每封邮件做以下处理:
1. 判断"是否需要回复":广告、系统通知、群发不需要
2. 对需要回复的:
   - 判断紧急程度:今日 / 本周 / 本月
   - 起草回复(不发送)
3. 输出 reply-drafts/ 下,文件名:{邮件主题}.md

最后给我一个汇总:今天 X 封新邮件,Y 封需要回复,Z 封紧急。

每天早上 5 分钟过一遍,比手动看 100 封邮件快 10 倍。

14.6 报表自动化

典型场景:销售周报

每周一 9 点全公司大会,需要一份"上周销售战报"PPT:

  • 周销售额 vs 上周
  • TOP 10 客户
  • TOP 5 产品
  • 区域分布饼图
  • 同比增长率

Codex 怎么做

读取 sales-2026.xlsx,生成上周销售战报:

1. 计算上周(周一到周日)的销售总额,跟前一周比较
2. 列出 TOP 10 客户(按上周销售额)
3. 列出 TOP 5 产品(按上周销售数量)
4. 生成 4 张图:
   - 周销售趋势(最近 8 周折线图)
   - TOP 10 客户柱状图
   - TOP 5 产品柱状图
   - 区域销售饼图
5. 把所有图保存到 charts/,文件名 chart-1.png 到 chart-4.png
6. 生成 weekly-sales-report.md,包含数字和对图的引用

明天我要在 PPT 里用这些图和数据。

Codex 用 pandas + matplotlib 跑一遍,10 分钟给你 4 张图 + 一份 Markdown 报告。

Skill 化 + Automation

把这个流程做成 weekly-sales Skill。设定每周一早上 7:00 自动跑。9:00 开会前,PPT 已经在等你了。

14.7 跨表关联与数据分析

典型场景:客户分析

你有:

  • orders.xlsx:订单数据,5000 行
  • customers.xlsx:客户档案,500 行
  • products.xlsx:产品信息,100 行

老板问:"给我最近 30 天,下单超过 3 次的女性客户清单,按消费额排序。"

Codex 怎么做

读取 orders.xlsx、customers.xlsx、products.xlsx:

1. 关联:orders.customer_id → customers.id
2. 筛选:order_date 在最近 30 天内
3. 聚合:每个客户的订单数和总金额
4. 过滤:订单数 ≥ 3
5. 再过滤:customers.gender = "女"
6. 排序:按总金额降序
7. 输出 top-female-customers.xlsx,包含:
   姓名、手机号、订单数、总金额、最近一次下单日期

不需要分析,只要数据。

不用写 SQL、不用 VLOOKUP、不用 Pivot Table。3 分钟出结果。

进阶:自然语言查询

你甚至可以这样问:

我想知道"上个月华东地区下单金额超过 1 万的女性客户里,
有多少买了 A 类产品"

Codex 自己理解你的问题,自己关联表,自己出答案。这是 Excel 永远做不到的事。

14.8 网页数据抓取

典型场景:竞品价格监控

竞品有 5 款主推产品,你需要每天看一遍他们官网的价格、是否在搞促销。

Codex 怎么做(用 In-App Browser)

访问 https://competitor.com/products,

对页面上每款产品提取:
- 产品名
- 当前价格
- 是否有"促销"/"限时"标签
- 库存状态

输出到 competitor-prices-YYYY-MM-DD.csv。

如果今天的价格跟 yesterday-prices.csv 有差异,
单独列在 changes.txt。

设个 Automation 每天 9:00 跑。如果有价格变动,自动发飞书提醒。

注意

抓取要遵守网站的 robots.txt 和服务条款。仅用于公开信息、低频访问、自用分析。要是高频商业抓取,请用专业的合作或 API。

14.9 文档转换

各种"格式互转"

把 ~/Documents/papers/ 里所有 PDF 转成 Markdown,
保留章节结构和图片引用。
输出到 ~/Documents/papers-md/。
把 minutes.docx 转成 Markdown,
表格保留为 Markdown 表格格式。
把 slides.pptx 的内容提取成大纲,
每张幻灯片一个二级标题,重点项用 bullet。
把 video.mp4 转写成文字,
按发言人分段,每段加时间戳。

各种"格式 A → 格式 B"的事,Codex 都能做。它会装合适的工具(Pandoc、whisper、pdfplumber 等),跑出结果。

14.10 一份"办公自动化工作台"

集中管理:

~/codex-workspace/office/
├── AGENTS.md                # 全局规则
├── .codex/skills/
│   ├── excel-clean/
│   ├── invoice-extract/
│   ├── file-archive/
│   ├── email-draft/
│   ├── weekly-sales/
│   └── customer-analysis/
├── data/                    # 输入数据(不提交 git)
├── reports/                 # 输出报告
├── archives/                # 历史归档
└── templates/               # 各类模板
    ├── email-template.md
    ├── report-template.md
    └── invoice-template.md

AGENTS.md(办公自动化版):

# 办公自动化工作台

## 数据安全
- data/ 下的所有文件不要外传
- data/ 不在 git 跟踪范围(已 .gitignore)
- 不要把客户姓名、手机号、身份证写到 reports/ 之外

## 输出规范
- 报告统一放 reports/,命名 YYYY-MM-DD-类型.md
- Excel 输出统一放 reports/excel/
- 图表统一放 reports/charts/

## 工具依赖
- Python 3.12(系统装的)
- 需要的库:pandas, openpyxl, pdfplumber, matplotlib
- 需要的工具:pandoc

## Always
- 任何"清洗"操作都生成新文件,不覆盖原始
- 大数据集(>10 万行)先抽 1% 试跑

## Ask First
- 删除任何文件
- 跨文件夹移动文件
- 调用付费 API(OCR、翻译等)

## Never
- 不要直接修改 data/ 下的原始文件
- 不要把数据上传到非 OpenAI 的第三方服务
- 不要在输出中包含客户的全名 + 手机号组合(脱敏:手机号显示 138****5678)

14.11 一个常被忽视的好处:可重复

人手做的报表,每个人有自己的"风格"——同事 A 和同事 B 做出来不一样。新人接手要重新摸索。

Skill 化的报表,永远一致。无论是你做、同事做、半年后的新人做,结果都是一份格式、一种风格、同样的数据精度。

这种"可重复性"对企业级应用价值巨大:

  • 月报年报始终一个模子
  • 跨团队对账有统一标准
  • 审计时可以追溯到具体步骤
  • 新人入职 1 天就能产出合格的标准报表

14.12 本章小结

  • 办公自动化的核心:把"重复地狱"Skill 化 + Automation 化
  • 7 个高价值场景:Excel 清洗、PDF 提取、文件归档、邮件、报表、跨表分析、网页抓取
  • 工具组合:Codex + pandas + pdfplumber + matplotlib + In-App Browser
  • 搭一个"办公自动化工作台",集中规范
  • 数据安全是底线:脱敏、不外传、原始数据只读
  • 价值不只是省时间,还有"可重复性"

下一章给非编程出身但想"做个小工具"的人:第十五章 · 自学编程与小工具