Publish Weekly(草稿发布)
此技能用于将本地生成的周刊 Markdown 文件发布到 Payload CMS 的 weekly 集合中,并保持为 草稿(status: draft)。
前置条件
- 环境变量
PAYLOAD_API_KEY:来自 Payloadusers集合为某个用户生成的 API Key。 - 环境变量
PAYLOAD_BASE_URL(推荐):Payload/Next.js 服务的公开地址(例如http://localhost:3000)。
输入
从 /weekly 命令的参数块中获取:
week_id:如Y26W12(写入issueNumber)title:写入titlefilename:周刊 Markdown 文件名(从工作目录读取该文件内容,写入content)current_date:写入publishDate(ISO 日期字符串)
可选:
summary:周刊描述/摘要(写入summary)。若未提供则从content提炼。tags:标签(字符串数组,例如["模型", "工具"])。写入tags数组字段。links:链接列表(对象数组,形如[{ label, url }]),写入links。
发布目标
- Collection:
weekly - REST Endpoint:
- 查询:
GET {BASE_URL}/api/weekly?where[issueNumber][equals]={week_id}&limit=1 - 创建:
POST {BASE_URL}/api/weekly - 更新:
PATCH {BASE_URL}/api/weekly/{id}
- 查询:
认证方式(HTTP Header)
必须使用 Payload 的 API Key 认证头:
Authorization: users API-Key {PAYLOAD_API_KEY}
Content-Type: application/json
字段映射
发布/更新时写入以下字段:
title(text, required):{title}summary(textarea, required):- 若提供了
{summary}:直接使用 - 否则:从
content提炼 1-2 句话(不超过 200 字);如果文章开头已包含“摘要/导语”,优先复用
- 若提供了
content(textarea, required): 读取{filename}的完整 Markdown 内容issueNumber(text, required, unique):{week_id}status(select, required): 固定写入draftpublishDate(date, required):{current_date}(建议YYYY-MM-DD)
可选字段(若无就留空/不传):
links(array):{links},元素结构为{ label: string, url: string }tags(array): 将{tags}(字符串数组)转换为[{ value: string }]
请求 Body 示例
{
"title": "Agili 的 AIGC 周刊(Y26W12)",
"issueNumber": "Y26W12",
"publishDate": "2026-03-25",
"status": "draft",
"summary": "本期聚焦推理模型的工程化落地,以及一批值得试用的生产力工具。",
"content": "# ...完整 Markdown...",
"links": [{ "label": "在线阅读", "url": "https://aigc-weekly.agi.li" }],
"tags": [{ "value": "模型" }, { "value": "工具" }]
}
行为约束
- 幂等:优先按
issueNumber == week_id查询:- 若已存在:用
PATCH更新(覆盖title/summary/content/publishDate/status/links/tags)。 - 若不存在:用
POST创建。
- 若已存在:用
- 保持草稿:无论是创建还是更新,都必须写入
status: "draft"。 - 产物落盘:将创建/更新成功的响应 JSON 保存为
published/{week_id}.json,用于后续恢复与审计。 - 失败可诊断:若请求失败,输出:HTTP 状态码、响应 body(若有)、请求的 URL(不要泄露
PAYLOAD_API_KEY)。