1. 为什么我要把 Codex 和 PPT Skill 拼在一起用
先说清楚这套组合到底在解决什么问题。Codex 本身是一个能读写文件、执行命令的 AI 编程助手,PPT Skill 则是一个开源的技能插件,它把「生成演示文稿」这件事拆成了可被 AI 调用的步骤:先出大纲,再写每页文案,最后按模板排版成可导出的文件。两者接上之后,你只需要在对话框里说一句「帮我做一份介绍南京一日游的 PPT,受众是学生」,剩下的构思、写稿、排版它自己跑完。
适合谁用?三类人最明显:一是经常要做汇报但不想在排版上耗时间的开发者;二是需要快速产出课程提纲、产品介绍、活动方案的运营和产品同学;三是已经在用 Codex 或 Claude Code 做日常开发,想顺手把办公文档也交给同一套工具链的人。
但真正动手时,卡住大多数人的不是插件本身,而是 Key。Codex 要一个模型 Key,PPT Skill 背后调用的模型又要一个 Key,如果你同时还在用 Claude Code、DeepSeek 的网页端,Key 就散落在四五个地方。改一次配置要翻好几个后台,换模型还得重新对一遍参数。我试过把 Key 统一收口到 TaoToken 之后,Codex 和 PPT Skill 共用同一个 Key,配置文件只维护一份,换模型只改一个字段。下面就把这条链路完整走一遍。
2. TaoToken 前置:一个 Key 打通 Codex 与 PPT Skill
TaoToken 在这里的角色是「统一入口」。它提供兼容 OpenAI 风格的 API 地址,Codex 的 config.toml 和 PPT Skill 的 settings.json 都指向同一个 base_url,模型名按需切换。这样你不需要为每个工具单独申请和轮换 Key,也不用担心某个工具的 Key 过期后忘了在哪改。
官网地址是 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 根地址是 https://taotoken.net/api ,注意这个 API 地址后面不加任何查询参数,配置里直接写它就行。
你需要先拿到一个 API Key。进入控制台创建:https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console&utm_campaign=rewrite ,在 API Keys 页面新建一个:https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite 。创建后复制那串以 sk- 开头的字符串,后面两个配置文件都要用它。
注意:Key 只在创建时完整显示一次,建议先粘到本地临时文件里,配完两个文件再删掉。
模型选择上,做 PPT 这种「大纲 + 文案 + 结构化输出」的任务,DeepSeek 系列性价比很高,长文本组织能力够用;如果你要生成带复杂排版的成品,可以切到 Claude 系列。TaoToken 的好处是模型名在配置里改一行就能换,不用重新申请 Key。
3. 可复制配置:settings.json 与 config.toml 骨架
这一节是全文最该照着抄的部分。两个文件分别对应 PPT Skill 和 Codex,Key 和 base_url 保持一致。
3.1 PPT Skill 的 settings.json
PPT Skill 插件读取的配置文件通常放在插件目录下的 config 或项目根目录,文件名 settings.json。骨架如下:
{ "provider": "openai-compatible", "base_url": "https://taotoken.net/api", "api_key": "sk-你的TaoToken密钥", "model": "deepseek-chat", "max_tokens": 8192, "temperature": 0.7, "ppt": { "template": "default", "output_dir": "./output", "language": "zh-CN", "slide_count_hint": 10 } }几个字段说明一下。provider 固定写 openai-compatible,因为 TaoToken 走的是兼容接口。base_url 就是上面那个 API 根地址,不要多加 /v1 之类的后缀,插件内部会自己拼。model 先填 deepseek-chat,想换 Claude 就改成对应模型名。ppt 段里的 slide_count_hint 是给模型的页数提示,不是硬限制,实际页数由内容决定。
3.2 Codex 的 config.toml
Codex 的配置一般在用户目录下的 .codex/config.toml。如果你之前配过别的模型,把对应段落替换成下面这样:
model_provider = "taotoken" model = "deepseek-chat" [model_providers.taotoken] name = "TaoToken" base_url = "https://taotoken.net/api" env_key = "TAOTOKEN_API_KEY" [profiles.ppt] model = "deepseek-chat" model_provider = "taotoken"这里用 env_key 指向环境变量,比把 Key 明文写进 toml 更稳妥。设置环境变量:
export TAOTOKEN_API_KEY="sk-你的TaoToken密钥"Windows PowerShell 用:
$env:TAOTOKEN_API_KEY="sk-你的TaoToken密钥"如果你更习惯直接写进配置,把 env_key 那行换成 api_key = "sk-..." 也能跑,但记得别把这份文件提交到 Git。
3.3 两个文件的对应关系
| 配置项 | settings.json | config.toml |
|---|---|---|
| 接口地址 | base_url | base_url |
| 密钥 | api_key | env_key 指向的环境变量 |
| 模型 | model | model |
| 用途 | PPT Skill 调用 | Codex 主对话 |
只要 base_url 和 Key 两处一致,Codex 里发起的请求和 PPT Skill 内部发起的请求就都走同一个账号,用量和额度在一个后台看。
4. 验证请求:一句话生成 PPT 的完整动作
配置写完别急着做正式内容,先用最小案例验证链路通不通。
第一步,确认 Codex 能连上模型。在终端里跑:
codex "用一句话说明你现在用的是哪个模型"如果返回内容正常,说明 config.toml 生效。报 401 就是 Key 没读到,检查环境变量是否在当前 shell 生效;报连接错误就检查 base_url 有没有写错。
第二步,安装 PPT Skill 插件。在 Codex 对话框里直接发仓库地址加一句自然语言:
帮我安装这个 GitHub 仓库里的 PPT 插件:<插件仓库地址>Codex 会拉代码、装依赖。装完后确认插件目录下能看到 settings.json,把 3.1 的内容填进去。
第三步,发一句话生成指令。在 Codex 里输入:
调用 PPT skill,帮我生成一份 PPT。内容介绍南京一日游,受众是来南京玩一天的学生,语言生动活泼,控制在 8 到 10 页。接下来它会依次输出大纲、每页文案,最后在 output 目录生成文件。你可以在浏览器里预览,确认排版没问题后导出。
第四步,验证结果。打开 output 目录,应该能看到一个 .pptx 或 .html 文件。如果只生成了大纲没有成品文件,多半是模板路径没配对,检查 settings.json 里 template 字段是否指向插件自带的模板目录。
想单独测模型对话是否正常,可以走这个入口:https://taotoken.net/model-chat?utm_source=taotoken_aicg_blog_end&utm_content=model-chat&utm_campaign=rewrite ,发一条消息看返回,能快速区分是 Key 问题还是插件问题。
5. 本篇常见错排查
5.1 401 Unauthorized
最常见。原因有三个:Key 复制时带了空格;环境变量没 export 成功;settings.json 里 api_key 写成了别的工具的 Key。逐个排查,先在终端 echo $TAOTOKEN_API_KEY 看有没有值。
5.2 404 或 model not found
模型名写错了。TaoToken 的模型名要和后台可用列表一致,deepseek-chat 这类名称区分大小写。改 config.toml 和 settings.json 里的 model 字段,两处要同步改。
5.3 插件装了但召唤不出来
Codex 没识别到技能。检查插件是否装在 Codex 能扫描的目录,重启一次 Codex 让它重新加载。如果用的是斜杠命令,确认命令名和插件注册名一致。
5.4 生成到一半中断
多半是 max_tokens 太小。PPT 文案加上大纲容易超长,把 settings.json 里的 max_tokens 调到 8192 或更高。如果还是断,把页数提示降下来,分两次生成。
5.5 中文乱码或排版错位
模板对中文字体支持不好。换一个自带中文字体的模板,或者在 settings.json 的 ppt 段里指定 language 为 zh-CN,让插件走中文排版分支。
5.6 两个工具用量对不上
如果你在 Codex 和 PPT Skill 里用了不同的 Key,后台就会分成两个账号。回到第 3 节,确认两处 base_url 和 Key 完全一致。
6. 长期用下去,把 Key 收口成一套
跑通一次之后,真正省时间的是长期维护。我的做法是:所有需要模型 Key 的工具——Codex、PPT Skill、Claude Code、以及后续可能加的 Agent——全部指向 TaoToken 的同一个 base_url 和同一个 Key。换模型时只改 model 字段,不动 Key;额度用完只在一个后台充值;某个工具出问题,先看是不是 Key 过期,而不是挨个翻配置。
如果你打算把编码和 Agent 任务也长期跑在这套链路上,可以了解一下 Coding Plan:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite ,它更适合高频调用场景。接入细节和参数说明看文档:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite 。Claude Code 相关的接入方式在:https://taotoken.net/claudecode-anthropic?utm_source=taotoken_aicg_blog_end&utm_content=claudecode-anthropic&utm_campaign=rewrite 。
最后留一个实用习惯:把 settings.json 和 config.toml 里的 Key 都改成读环境变量,本地建一个 .env 文件专门放 Key,加进 .gitignore。这样即使你把配置分享给别人,也不会把密钥带出去。