掘金发布 SOP(Codex + Playwright MCP + Edge)
1. 目标
把本地 Markdown 文章稳定发布到掘金,并保留登录态,支持在新对话里直接复用。
2. 固定目录约定(建议长期保持)
2.1 文章目录
- 根目录:
C:\code\doc\AI\juejin - 规则:每篇文章一个
.md文件,文件名即文章主题名
2.2 浏览器自动化目录(Codex 专用)
- 根目录:
D:\browser-automation\Codex - Playwright(用于 Codex MCP):
- Profile:
D:\browser-automation\Codex\playwright\msedge\profile - Output:
D:\browser-automation\Codex\playwright\msedge\output
- Profile:
- ChromeDev(预留):
- Profile:
D:\browser-automation\Codex\chromedev\msedge\profile - Output:
D:\browser-automation\Codex\chromedev\msedge\output
- Profile:
说明:
- 日常 Edge 与 Codex 自动化要分离 profile,避免登录态和会话互相污染。
- 发布前尽量关闭可能占用同一 profile 的 Edge 进程。
3. Codex MCP 配置基线
C:\Users\jianzhangg\.codex\config.toml 中 Playwright MCP 参考:
toml
[mcp_servers.playwright]
command = "npx.cmd"
args = [
"@playwright/mcp@latest",
"--browser",
"msedge",
"--user-data-dir",
"D:\\browser-automation\\Codex\\playwright\\msedge\\profile",
"--output-dir",
"D:\\browser-automation\\Codex\\playwright\\msedge\\output",
"--save-session"
]
参数说明(只保留核心):
--browser msedge:强制用 Edge。--user-data-dir:指定独立 profile(保留登录态关键)。--output-dir:保存会话日志、截图、console 输出。--save-session:持久化会话,减少重复登录。
4. 文章格式约定(让 AI 更稳)
建议每篇 Markdown 满足:
- 第一行是一级标题
# 标题(作为掘金标题)。 - 正文用标准 Markdown(
##、列表、代码块)。 - 代码块必须带语言标记(如
json、bash)。
5. 新对话发布指令模板(直接复制)
请严格按 SOP 执行掘金发布:
- 先读取
C:\code\doc\AI\juejin\掘金发布SOP-Codex-Playwright-MCP.md- 再读取
{{文章绝对路径}}- 使用 Playwright MCP(Edge)进入掘金编辑器并发布
- 若出现验证码/滑块,暂停并提示我处理;我回复"已完成"后继续
- 发布完成后返回:文章标题、文章 URL、发布时间、是否公开可访问
示例:
请严格按 SOP 执行掘金发布:先读取
C:\code\doc\AI\juejin\掘金发布SOP-Codex-Playwright-MCP.md,再读取C:\code\doc\AI\juejin\Mac上Antigravity无法调用browser_subagent的解决记录.md,然后发布并返回文章 URL。
6. AI 执行流程(标准版)
- 读取 SOP 与目标文章 Markdown。
- 检查 Playwright MCP 是否连到 Edge(不是 Chrome)。
- 打开掘金编辑器新建页:
https://juejin.cn/editor/drafts/new?v=2。 - 填入标题(取 H1)与正文(Markdown 全文)。
- 点击发布,完成分类/标签等必填项。
- 若出现验证码,暂停等待用户回复"已完成"。
- 点击"确定并发布"。
- 进入文章管理或文章详情页核验发布结果。
- 输出最终结果(标题 + URL + 时间 + 核验结论)。
7. 人机协作点(必须明确)
- 验证码/滑块:通常需要你手动处理。
- 你处理完后只需回复:
已完成。 - AI 收到后继续执行后续发布动作。
8. 常见问题与处理
8.1 发布时提示"至少添加一个标签"
处理方式:
- 在标签输入框输入标签后,按 Enter 让标签真正"落入已选状态"。
- 仅看到候选词不算已选。
8.2 Mac 上 browser_subagent / Playwright MCP 请求大量 400
高频根因:
- 代理把
127.0.0.1/localhost/::1也转发了,导致本地回环通信异常。
settings.json 示例:
json
{
"http.proxy": "http://127.0.0.1:7890",
"http.proxyStrictSSL": false,
"http.noProxy": [
"127.0.0.1",
"localhost",
"::1"
]
}
补充检查:
- 环境变量
NO_PROXY也应包含:127.0.0.1,localhost,::1。
9. 发布完成判定标准
满足以下全部条件才算完成:
- 文章详情页可打开,URL 形如:
https://juejin.cn/post/<id>。 - 标题与本地 Markdown 一致。
- 在创作者中心"文章管理"里可检索到该文章。
- AI 在对话中返回最终 URL 与核验结论。
10. 建议的长期工作流
每次发文只做两件事:
- 把文章写到:
C:\code\doc\AI\juejin\<你的文章名>.md - 在新对话粘贴"第 5 节模板",替换文章路径并让 AI 执行
这样新对话无需继承历史上下文,也能按统一流程稳定发布。