type
Post
status
Published
date
Apr 28, 2026
slug
codex-skill-notion-publisher-usage-and-implementation
summary
这篇文章记录了 notion-publisher skill 的使用方式、适配过程和实现原理:如何让 Codex 根据文章内容自动推断元数据,并调用 Notion MCP 创建文章页面。
tags
工具
开发
agent
LLM
category
技术分享
icon
🧩
password
这篇文章记录一个刚刚完成的小工具:
notion-publisher skill。它的目标很简单:把“写文章、补元数据、创建 Notion 页面”这套重复流程,沉淀成 Codex 可以直接执行的工作流。为什么要写这个 skill
平时把文章发布到 Notion 数据库,真正麻烦的往往不是写正文,而是这些边角工作:
- 找到正确的 Notion 数据库
- 读取数据库 schema,确认有哪些字段
- 根据文章内容填写
slug、summary、category、tags、status等属性
- 选择封面
- 调用 Notion 工具创建页面
- 必要时再写入正文或更新页面
这些步骤每次都差不多,但又不能完全硬编码。比如不同数据库字段名、枚举值、模板配置可能不同,所以适合做成一个 skill:让 Codex 在需要发布文章时,按固定流程检查环境、读取 schema、推断字段,再调用 Notion MCP 完成创建。
如何使用 notion-publisher
使用方式很直接。在 Codex 里输入类似下面的话即可触发:
也可以用自然语言描述目标:
或者:
触发后,它会按流程处理:
- 检查本地配置文件是否存在。
- 检查当前会话是否有 Notion MCP 工具。
- 询问或搜索目标 Notion 数据库。
- 调用
notion_fetch读取数据库 schema。
- 根据标题和正文推断文章元数据。
- 调用
notion_create_pages创建页面。
- 输出创建结果和页面链接。
当前版本的适配点
这次主要修的是从 Claude 插件版迁移到 Codex 环境后的工具适配。
原来的 skill 使用的是 Claude 插件工具名,例如:
但当前 Codex 会话里可用的是 Notion MCP 工具:
所以适配时做了几件事:
- 把配置路径从
~/.claude/notion-publisher-config.json改成~/.codex/notion-publisher-config.json
- 去掉
/plugin install和/reload-plugins这类 Claude 插件命令
- 去掉旧的 authentication 工具调用说明
- 把搜索、读取、创建、更新页面全部改成当前 Codex 可用的 Notion MCP 工具
- 去掉“必须通过 Agent 子代理调用”的旧限制,当前工具可以直接接收结构化参数
实现原理
这个 skill 的核心不是复杂代码,而是一份结构化的执行说明。Codex 加载 skill 时,会先读取
SKILL.md 顶部的元数据:其中
description 很关键,它决定模型什么时候应该触发这个 skill。比如用户提到发布文章、创建 Notion 文章页、生成 slug、summary、tags 等场景时,就应该使用它。真正执行时,skill 会把“发布文章”拆成三个层次。
1. 环境层
先确认 Notion MCP 是否可用。当前需要这些工具:
mcp__notion__notion_search
mcp__notion__notion_fetch
mcp__notion__notion_create_pages
mcp__notion__notion_update_page
如果这些工具不可用,skill 不应该继续猜测,而是提示用户先配置 Notion MCP。
2. Schema 层
Notion 数据库的字段不能靠记忆写死,所以要先调用
notion_fetch 读取 schema。比如这次使用的数据库包含:
title:文章标题
type:Post、Page、Notice 等
category:技术分享、知行合一、心情随笔、LLM
tags:工具、开发、agent、LLM 等
summary:摘要
slug:文章路径
status:Published、Invisible、Draft
date:发布日期
有了 schema,Codex 才能用数据库真实存在的字段和值来创建页面,避免把不存在的标签、分类或字段名写进去。
3. 内容层
拿到标题和正文后,skill 会自动推断:
slug:把标题转成英文 kebab-case
summary:提炼一到两句摘要
category:根据文章主题匹配数据库枚举
tags:从已有 tags 里选最相关的几个
status:默认草稿,或者按用户明确要求设为发布
cover:按文章气质选择 Notion 内置封面
这一步的重点是“只从数据库已有选项里选择”,而不是自由发挥出一个新标签。
这次发布的完整流程
这次实际流程是:
- 发现原来的
notion-publisher.md没有被 Codex 加载,因为 Codex 需要skill-name/SKILL.md结构。
- 新建
~/.codex/skills/notion-publisher/SKILL.md。
- 添加
name和descriptionfrontmatter。
- 审查 skill 里引用的工具名。
- 把 Claude 插件版工具名替换为 Codex 当前可用的 Notion MCP 工具名。
- 搜索 Notion 工作区,找到
OldWang TechTalk数据库。
- 读取数据库 schema。
- 根据本文主题生成标题、摘要、slug、分类、标签、封面和正文。
- 调用 Notion MCP 创建文章页面。
一个好 skill 应该长什么样
这次也顺手验证了一个经验:skill 最重要的不是写得长,而是边界清楚。
一个可用的 skill 至少应该说明:
- 什么时候触发
- 需要哪些工具
- 输入从哪里来
- 每一步调用什么工具
- 工具失败时怎么处理
- 输出应该是什么
- 哪些字段不能猜,必须从真实 schema 里读
如果 skill 里混着旧环境的命令、旧工具名、旧路径,它就算能被加载,也会在执行时跑偏。
总结
notion-publisher 的价值在于把一套重复但容易出错的发布流程固定下来。它不只是“帮我写一篇文章”,而是把 Notion 数据库 schema、文章元数据推断、页面创建和正文写入串成一个可靠流程。这类 skill 很适合沉淀个人工作流:凡是你经常重复、步骤明确、需要调用工具、但又保留一点判断空间的任务,都可以做成 skill。
- 作者:老王TechTalk
- 链接:https://www.illusionjourney.com/article/codex-skill-notion-publisher-usage-and-implementation
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章


