5.7 KiB
5.7 KiB
name, description
| name | description |
|---|---|
| profilemax-publishing | ProfileMax「发布」能力的外部 Agent 操作手册:导入站点、学习站点并生成/复用 Schema 发布脚本、生成文章、创建发布作业、诊断失败并提交修复、验证已发布链接。所有操作经 ProfileMax MCP 工具或 /api/publishing REST 完成;ProfileMax 只负责确定性执行、持久化与校验,不运行大模型。 |
ProfileMax 发布(Publishing)Agent 操作手册
适用场景:在已授权或允许投稿的第三方网站发布含目标外链的文章(外链建设/内容分发)。 执行链路:你(外部 Agent)负责学习站点、写/修脚本、生成内容;ProfileMax 负责调度执行、 幂等防重、持久化、失败记录与链接检查。
0. 前置与鉴权
- MCP:Bearer 用户 API Token(与 MCP Token 同值);先
whoami核对身份与权限(需 publishing)。 - 核心工具:
publishing_import_sites/publishing_save_article/publishing_create_job/publishing_get_job/publishing_verify_job/publishing_get_repair_context; 站点与脚本管理复用list_profiles/create_script/update_script/run_script/get_script_run。 - 项目列表经 REST
GET /api/publishing/projects(无专用 MCP 工具)。
1. 导入站点
publishing_import_sites { projectId, csv | items }批量导入(项目内按 URL 去重,重复跳过)。- 对每个站点:从返回列表/
GET /api/publishing/sites?projectId=取 id;PATCH /api/publishing/sites/:id关联:profileId:该站点获授权的发布账号 Profile(必须已有登录态,见 Profile Cookie 能力);scriptId:发布脚本(见 §2;阶段 A 仅接受 Schema 编排脚本);platform/tags按实际填写(业务标签用于筛选,与页面 Tabs 无关)。
2. 学习站点与发布脚本
-
学习:用现有浏览器能力学习站点(
start_browser+execute_js/fetch_url), 弄清登录态、发帖入口、表单字段、富文本编辑器行为、防 Bot 措施。 -
脚本形态:发布脚本必须是 Schema 编排(kind=schema),其中至少一个
script.run步骤承载主流程。运行时 ProfileMax 把本次文章参数注入该步骤的ctx.vars.publish(标准 I/O):interface PublishInput { siteId: string; article: { title: string; html: string; markdown?: string; images?: string[] }; targetLinks: Array<{ url: string; anchor: string }>; mode: "draft" | "publish"; } interface PublishResult { status: "draft" | "published" | "failed" | "unknown"; articleUrl?: string; // 发布后的文章 URL(验证与评分依赖它) externalId?: string; // 站点侧文章 ID errorCode?: string; // 稳定错误码(如 LOGIN_EXPIRED / CAPTCHA / SELECTOR_MISS) message?: string; }脚本末尾
return { status, articleUrl, ... };ProfileMax 据此把执行终态映射为业务状态。 不要在脚本里硬编码文章内容;不要写死 Selector 之外的 URL。 -
测试:开发期用
run_script { profileRefs:[指纹] }直接试跑(可先给样例 vars 手动验证), 或先建一篇文章走一次完整publishing_create_job。 -
提交候选:脚本改动用
update_script保存(不要覆盖正在运行的版本时再改;先在测试号验证)。 -
安全红线:节点侧
code以new Function执行、无沙箱;脚本内容要像对待生产代码一样审查, 不得引入抓取密钥、横向访问内网等行为。Agent 生成的代码在审查通过前不得进入生产站点脚本。
3. 生成文章
- 结合项目 config(关键词/语言/内容规则,见
GET /api/publishing/projects)生成有实际价值的文章, 自然植入目标外链(targetLinks 的 anchor 与上下文匹配)。 publishing_save_article { projectId, title, markdown|html, targetLinks, status }; 内部审阅通过后置status=ready。内容更新走同一工具带articleId(版本自动自增)。
4. 创建发布作业与跟进
publishing_create_job { articleId, siteId, mode }(站点须已绑定脚本+Profile; 同文章/站点/模式有在途作业会 409;同 Profile 串行执行)。- 轮询
publishing_get_job { id }:published(附 articleUrl)/draft→ 完成,转 §6;unknown(超时)→ 先publishing_verify_job(或人工核对 URL)确认是否已发布,再决定重试, 避免重复提交;failed/needs_repair→ 转 §5;- 幂等:作业的
idempotencyKey全程不变;retry会复用它,不会产生重复发布记录。
5. 失败诊断与修复
publishing_get_repair_context { id }领取:返回脱敏错误、执行步骤/日志、站点信息、 当前脚本 Schema 与本次 PublishInput;failed/unknown 作业同时标记needs_repair。- 依据 errorCode 与步骤日志定位(常见:LOGIN_EXPIRED → 提示用户续 Cookie;SELECTOR_MISS → 站点改版,重新学习页面;CAPTCHA → 建议站点脚本接入挑战开关)。
- 修改脚本 →
update_script提交 → 用测试 Profilerun_script验证 → 对该作业POST /api/publishing/jobs/:id/retry(或重跑publishing_create_job)。
6. 发布后验证
publishing_verify_job { id }:HTTP 拉取 articleUrl,记录页面状态码、目标链接存在性与 rel 属性(nofollow/sponsored 会体现在检查记录),结果进入质量评分。- 需要登录/JS 渲染才能核验的页面,用 Profile
fetch_url(browser 运行时)人工复核,阶段 C 将自动化。
7. 约束
- 只发布有授权或允许投稿的站点,遵守站点规则与频率限制;
- Profile/脚本/作业均有归属与权限校验,越权请求直接 403/404;
- 不要绕过 ProfileMax 直接操作数据库;执行、重试、幂等全部走上述接口。