☰
基于 openclaw + Notion 的工作日报/周报/月报自动化管理系统:把 settings 改到 TaoToken
2026/10/7 7:51:56 网站建设 项目流程

1. 为什么日报周报月报总在重复劳动:openclaw 与 Notion 自动化管理系统要解决的真实问题

先说结论:openclaw + Notion 的工作日报/周报/月报自动化管理系统,本质是把「收集素材 → 生成结构化文本 → 写入数据库 → 定时触发」这条链路交给 AI 和调度器,人只负责在 Notion 里看结果。它适合每天有 Git 提交、又在 Notion 里记活动日志的开发者,尤其是那种「明明干了不少活,写周报时却想不起来」的人。

我自己的痛点是:一天下来提交了七八次代码,Notion 里也记了几条笔记,但到了晚上十点要写日报,脑子里只剩「今天好像挺忙」。手动翻 Git log、翻 Notion 页面、再组织语言,一套下来二十分钟起步。周报更痛苦,要把五天的日报再读一遍,去重、归类、提炼。月报基本靠回忆,写出来自己都不信。

这套系统的思路很直接:让 Claude Code 通过 Skill 读取 Git 提交记录和 Notion 活动日志,生成结构化报告,再通过 Notion MCP Server 写回数据库。openclaw 负责定时调度,用自然语言就能设置「每周一到周六晚上十点执行日报」。整个链路里,唯一需要人工维护的是config.json里的仓库路径和数据库 ID。

但真正落地时,很多人卡在同一个地方:多工具调用时鉴权分散、endpoint 不统一。Claude Code 要调模型,Notion MCP 要调 Notion API,openclaw 触发时又要保证环境变量一致。如果每个工具各配一套 Key、各写一个 Base URL,改起来就是灾难。这篇就从这个配置入口切入,把 settings 改到 TaoToken 统一通道,给出可复制的配置片段,并附一次日报生成链路的完整验证。

核心检索词先摆出来:openclaw 定时调度、Notion 数据库写入、Claude Code Skills、自动化管理系统、settings 配置。这几个词贯穿全文,你搜到这篇大概率就是被其中某个卡住了。

2. TaoToken 前置:把 Claude Code 与 Notion MCP 的鉴权收口到统一通道

在讲具体配置之前,得先把「为什么要统一通道」说清楚。这套自动化系统里,至少有三个地方会发起外部请求:

第一,Claude Code 本身要调用大模型生成报告内容。第二,Notion MCP Server 要调用 Notion API 读写数据库。第三,openclaw 在触发claude -p "/daily-report"时,需要保证子进程能拿到正确的环境变量。

如果 Claude Code 走一个 endpoint、Notion MCP 走另一个、openclaw 又继承了一套旧的 shell 环境,那排查问题时你会面对三个不同的报错来源。我试过最离谱的一次:终端里手动跑claude -p "/daily-report"完全正常,但 openclaw 定时触发就报 401,查了半天发现是调度器启动时的环境变量没加载.zshrc。

TaoToken 在这里的角色是统一 API 通道。官网入口是 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 地址是 https://taotoken.net/api 。你需要做的,是把 Claude Code 的模型请求指向这个统一 Base URL,用同一个 Key 管理。这样无论手动执行还是定时触发,鉴权来源只有一个,出问题也只需要查一处。

具体操作上,先去控制台创建 API Key。控制台地址带归因参数: https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 。创建完 Key 之后,在 API Keys 页面可以管理: https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 。

这里有个关键点:Claude Code 的配置文件和 Notion MCP 的配置文件是分开的,但两者都可以通过环境变量读取同一个 Key。我建议的做法是,在 shell 的 profile 里 export 一个TAOTOKEN_API_KEY,然后 Claude Code 的 settings 和 MCP 的 env 都引用这个变量。这样改 Key 只需要改一处。

如果你还没装 Claude Code,接入文档在这里: https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 。文档里有完整的 Base URL 和 Model ID 对照。对于这套日报系统,模型建议选支持长上下文和结构化输出的,因为报告生成需要读取多天的日志并去重。

另外提一句,如果你打算长期跑这套自动化,甚至后续扩展成 Agent 工作流,可以看看 Coding Plan: https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 。它更适合高频、长期的编码和自动化场景,比按次调用更省心。

前置工作做完,你应该手上有三样东西:一个可用的 API Key、确认过的 Base URL、以及 Claude Code CLI 能正常启动。接下来进入配置环节。

3. 可复制配置:settings.json、.mcp.json 与 config.json 三件套

这一节是全文最核心的部分,直接给可复制的片段。路径和原文保持一致,你照着改就行。

3.1 Claude Code settings 改到 TaoToken

Claude Code 的配置文件通常在~/.claude/settings.json。如果你之前用的是默认配置,需要把模型请求的 Base URL 和 Key 改到 TaoToken 统一通道。可复制的 JSON 片段如下:

{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_API_KEY": "sk-你的TaoTokenKey", "ANTHROPIC_MODEL": "claude-sonnet-4-20250514" }, "permissions": { "allow": [ "Bash(git log:*)", "Bash(bash scripts/gather-git-logs.sh:*)", "Read(~/.claude/skills/**)" ] } }

这里三个字段必须写全:Base URL、Key、Model ID。Base URL 用https://taotoken.net/api,不要加 UTM 参数,那是给网页用的。Model ID 按你实际可用的填,接入文档里有对照表。permissions.allow里放的是这套日报系统需要执行的命令,git log和收集脚本必须放行,否则 Skill 执行到一半会被权限拦截。

如果你不想把 Key 明文写在 settings.json 里,可以改成引用环境变量:

{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_API_KEY": "${TAOTOKEN_API_KEY}", "ANTHROPIC_MODEL": "claude-sonnet-4-20250514" } }

然后在~/.zshrc或~/.bashrc里加一行export TAOTOKEN_API_KEY="sk-你的Key"。注意,openclaw 定时触发时如果读不到这个变量,就会报 401,后面排障章节会细说。

3.2 Notion MCP Server 配置

Notion MCP 的配置在~/.claude/.mcp.json。原文给的是标准写法,我把它和 TaoToken 的环境变量体系对齐一下:

{ "mcpServers": { "notion": { "command": "npx", "args": ["-y", "@notionhq/notion-mcp-server"], "env": { "OPENAPI_MCP_HEADERS": "{\"Authorization\":\"Bearer 你的NotionIntegrationToken\",\"Notion-Version\":\"2022-06-28\"}" } } } }

注意这里的 Token 是 Notion Integration Token,不是 TaoToken 的 Key,两者不要混。Notion Token 的获取方式是:去 Notion Integrations 创建一个 Integration,拿到 Internal Integration Token,然后把目标数据库页面关联给这个 Integration。没关联的话,MCP 写入会报 404 或权限错误。

3.3 config.json 集中管理

项目根目录的config.json管理所有数据库 ID 和仓库路径:

{ "github": { "repos": [ "/Users/你的用户名/Documents/GitHub/你的项目" ] }, "notion": { "databases": { "activity_logs": "你的活动记录数据库ID", "daily_report": "你的日报数据库ID", "weekly_report": "你的周报数据库ID", "monthly_report": "你的月报数据库ID" } } }

Notion 数据库 ID 的获取:打开数据库页面,URL 里notion.so/后面、?v=前面的 32 位字符串就是。四个数据库都要建好,字段结构参考项目模板。

配置改完后,必须运行bash test.sh。这个脚本会把config.json里的数据库 ID 通过 sed 替换同步到.claude/skills/*/SKILL.md.tpl模板,再生成最终的SKILL.md。如果你跳过这一步,Skill 文件里还是{{DAILY_REPORT_DB_ID}}这样的占位符,执行时必然失败。

三件套配完,你的目录结构应该是这样:

auto-daily-report/ ├── config.json ├── test.sh ├── .claude/ │ └── skills/ │ ├── daily-report/ │ │ ├── SKILL.md │ │ └── SKILL.md.tpl │ ├── weekly-report/ │ └── monthly-report/ ├── scripts/ │ └── gather-git-logs.sh └── logs/

4. 验证请求:跑通一次日报生成链路并确认 Notion 写入

配置写完不代表能用,必须手动验证一次完整链路。这一步的目的是把「Claude Code 调用模型 → 读取 Git 日志 → 查询 Notion 活动记录 → 生成日报 → 写入 Notion 数据库」整条路走通,确认没有断点。

4.1 先跑自检

cd /path/to/auto-daily-report bash test.sh

全部通过会输出「全部检查通过!」。如果报「配置文件不存在」,检查当前目录有没有config.json。如果 Skill 文件里还有{{xxx}}占位符,说明同步没执行成功,重新跑一次。

4.2 手动执行日报 Skill

claude -p "/daily-report"

这条命令是非交互模式,适合验证。执行过程中你可以观察终端输出,正常会看到它先调gather-git-logs.sh收集提交,再通过 Notion MCP 查询活动日志,然后生成结构化日报,最后写入日报数据库。

如果这一步报 401,大概率是ANTHROPIC_API_KEY没生效。先在当前 shell 里echo $TAOTOKEN_API_KEY确认变量存在,再确认 settings.json 里的引用写法正确。

如果报local proxy failed或连接超时,检查 Base URL 是不是写成了带 UTM 的网页地址。API 地址就是https://taotoken.net/api,不要多加路径。

如果报reading choices之类的解析错误,通常是模型返回格式不符合 Skill 预期。可以先把 Model ID 换成一个更稳定的版本重试,或者检查 Skill 模板里的输出格式约束。

4.3 确认 Notion 写入

执行成功后,打开 Notion 的日报数据库,应该能看到一条新记录,包含日期、今日完成、进行中、阻塞项等字段。如果 Claude Code 终端显示成功但 Notion 里没有,检查两件事:一是 Integration 有没有关联到该数据库页面,二是数据库 ID 有没有填错。

4.4 验证 openclaw 定时触发

手动跑通后,再验证定时链路。在 openclaw 里用自然语言设置:

每周一到周六晚上 10 点,执行 /daily-report 技能 每周日晚上 10 点,执行 /weekly-report 技能 每月最后一天晚上 11 点,执行 /monthly-report 技能

openclaw 会把这些转换成定时任务。设置完后,可以临时改一个近一点的时间点,观察是否自动触发。触发后去logs/目录看日志:

tail -50 logs/daily-report-$(date +%Y%m%d).log

日志里会记录本次执行的完整过程。如果定时没触发,先确认 openclaw 进程在运行,再检查调度配置。

验证模型本身是否正常,可以走模型对话页面: https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 。在那里发一条测试消息,确认 Key 和通道没问题,再回来排查 Claude Code 配置。

5. 本篇常见错排查:401、local proxy failed、reading choices 与 OAuth

这一节按真实报错来对照。你遇到的现象、可能原因、解决方法,直接查表。

现象可能原因解决方法
401 UnauthorizedAPI Key 未生效或环境变量未加载确认TAOTOKEN_API_KEY已 export,settings.json 引用正确
local proxy failedBase URL 写错或网络不通改为https://taotoken.net/api,去掉多余路径
reading choices 解析错误模型返回格式不符合 Skill 预期换稳定 Model ID,检查 Skill 模板输出约束
OAuth 相关报错Claude Code 走了旧登录态清理旧凭据,改用 API Key 模式
Notion 写入 404Integration 未关联数据库在 Notion 页面把 Integration 加为连接
Skill 占位符未替换未运行 test.sh执行bash test.sh同步配置
openclaw 定时不触发调度器环境变量缺失在调度配置里显式注入 Key 和 Base URL
Claude CLI 启动失败CLI 未安装或不在 PATHwhich claude确认,重装或加 PATH

重点说三个高频的。

401 在定时任务里出现,手动执行却正常。这是最典型的。原因是 openclaw 触发子进程时,继承的环境变量和你交互式 shell 不一样。解决方法是在 openclaw 的任务配置里显式指定环境变量,或者把 export 写进调度器会加载的 profile 文件。不要依赖.zshrc,很多调度器不读它。

local proxy failed。这个报错通常意味着请求根本没到达 TaoToken。检查 Base URL 是不是被其他工具的代理配置覆盖了。如果你之前配过别的 endpoint,settings.json 里的ANTHROPIC_BASE_URL优先级要确认。另外,公司网络如果有出口限制,也可能导致连接失败,这种情况换网络环境测试。

reading choices。这个报错说明模型返回的内容结构不对,Skill 解析不了。常见于模型版本切换后输出格式变化。解决方法是固定一个 Model ID,不要用latest这类浮动标签。同时检查 Skill 模板里对 JSON 输出的约束是否足够明确。

关于 OAuth:Claude Code 早期版本可能走 OAuth 登录态,如果你混用了登录态和 API Key,会出现鉴权冲突。建议统一用 API Key 模式,清理~/.claude下的旧凭据文件。

排障时如果拿不准 Key 是否有效,去 API Keys 页面重新生成一个测试: https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 。接入细节查文档: https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 。

6. 把配置收口之后:这套自动化管理系统还能怎么扩展

配置收口到 TaoToken 统一通道之后,最大的好处不是省了几行配置,而是排查路径变短了。以前出问题要在 Claude Code、Notion MCP、openclaw 三个地方分别查 Key 和 endpoint,现在模型请求这一层只有一个来源,401 就是 Key 问题,超时就是网络问题,格式错误就是模型问题,边界清晰。

这套系统跑顺之后,我实际用下来的感受是:日报基本不用管了,晚上十点自动生成;周报周日聚合,跨天去重确实省事;月报的里程碑识别偶尔需要手动补两句,但框架已经在了。真正花时间的反而是前期把 Notion 数据库字段设计好,字段设计合理,生成的报告可读性高很多。

如果你想继续扩展,几个方向可以参考。一是把config.json里的仓库列表加多,支持远程 URL 自动 clone 到.repo-cache/,这样多项目也能统一收集。二是改SKILL.md.tpl模板,调整报告的输出结构和语气,改完记得重新跑test.sh。三是把 openclaw 的触发时间调成符合自己作息的,不必卡在晚上十点。

长期跑自动化任务的话,Coding Plan 会比按次调用更合适: https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 。尤其是你打算把日报系统扩展成更复杂的 Agent 工作流时,稳定的调用额度比什么都重要。

最后留一个实用技巧:每次改完config.json或 Skill 模板,先跑bash test.sh,再手动claude -p "/daily-report"验证一次,确认没问题再交给 openclaw 定时。不要改完直接等定时触发,出了问题你连日志都来不及看。日志保留最近 30 天,出问题时先tail -50看最近一次执行,比盲目改配置快得多。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询