将 HTML 或 Markdown 内容发布至 Bilibili — 支持 专栏(article)和 小站(tribee)两种目标类型。自动处理登录状态检查、标题输入,以及通过 ed… 注入内容。
bili- sunflower-publish. 统一发布 bilibili 的管道: HTML/Markdown 文件 – 编辑器 – 发布.. . 直接使用是一项面向实际任务的技能,主要用于支持两个目标 : (A)。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。
执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
面向哔哩哔哩的统一发布流程:HTML/Markdown 文件 → 编辑器 → 发布。直接调用 window.editor API,不依赖系统剪贴板。
支持两类发布目标:
member.bilibili.com 的长文形式文章bilibili.com/bubble 的社区帖文openclaw profile(由 Playwright 管理的浏览器实例).html 与 .md / .markdown 文件article(专栏)或 tribee(小站)—— 根据用户意图推断跳转至 https://member.bilibili.com/york/read-editor 并截取快照。
"请输入标题(建议30字以内)"发布页面 URL:https://www.bilibili.com/bubble/publish?tribee_id={id}&tribee_name={name}
发布 URL 中 tribee_id 与 tribee_name 均为必需参数。缺失参数时按如下方式解析:
| 用户提供 | 解析方式 |
|---|---|
| id + name | 直接构造发布 URL |
| 仅 id | 跳转至 https://www.bilibili.com/bubble/home/{id},从页面中提取小站名称,再构造发布 URL |
| 仅 name | 访问搜索页 https://search.bilibili.com/all?keyword={name},查找指向 bilibili.com/bubble/home/{id} 的卡片,提取 {id},再构造发布 URL |
成功跳转至发布 URL 后:
若未登录,立即中止并提示用户在 openclaw 浏览器 profile 中手动完成登录,之后重试。
根据输入文件类型执行对应预处理脚本。脚本负责 H1 标题提取、标题层级提升、图片内联(inline),以及(对 HTML)空白字符清理。
.html 文件python3 {SKILL_DIR}/scripts/preprocess_html.py [output-dir]
输出(标准输出,共 3 行):
title=<提取出的标题> path=<处理后 HTML 文件路径> bytes=
从输出中解析 title 与 path。位于 path 的已处理 HTML 文件即可用于第三阶段注入。
.md / .markdown 文件python3 {SKILL_DIR}/scripts/preprocess_md.py [output-dir]
输出(标准输出,共 3 行):
title=<提取出的标题> path=<处理后 Markdown 文件路径> bytes=
从输出中解析 title 与 path。位于 path 的已处理 Markdown 文件即可用于第三阶段注入。
若用户显式提供了标题,则优先采用该标题,而非脚本提取结果。
确定最终标题后,进行如下校验:
output、untitled、temp,或明显与正文内容无关):读取正文前几百字符,生成 2–3 个标题建议,供用户选择严禁静默采用低质量标题。必须等待用户选定后方可继续后续流程。
输入标题:点击标题输入框并键入。
两种编辑器共享同一富文本编辑组件(window.editor)。
使用第二阶段产出的预处理内容注入编辑器。
重要 — JS 字符串转义要求:
内容(HTML 或 Markdown)常含破坏 JS 语法的字符(反引号、引号、换行符、反斜杠等)。你 必须 使用下方方法安全构造 JS 执行代码。禁止 将原始内容直接拼入 JS 变量赋值语句中。
请严格按以下步骤操作,适用于 HTML 与 Markdown 注入:
path=...)python3 -c "import json,sys; print(json.dumps(open(sys.argv[1]).read()))"
该命令输出一个双引号包裹的 JSON 字符串,其中所有特殊字符(换行、引号、反斜杠等)均已转义,例如:"line1nline2"quoted""。
ESCAPED_JSON_STRINGESCAPED_JSON_STRING 嵌入下述模板(见 3a-HTML / 3a-MD)构建完整 JS 代码。注意:该字符串本身已含双引号,因此应直接置于 JSON.parse( 后,无需额外添加引号。(function () {
const html = JSON.parse(ESCAPED_JSON_STRING);
const clipboardData = new DataTransfer();
clipboardData.setData('text/html', html);
clipboardData.setData('text/plain', '');
const pasteEvent = new ClipboardEvent('paste', {
bubbles: true,
cancelable: true,
clipboardData,
});
window.editor.view.dom.dispatchEvent(pasteEvent);
})();
注意: 若 HTML 内容较大(>50KB),需分块依次粘贴。
(function () {
const markdown = JSON.parse(ESCAPED_JSON_STRING);
window.editor.commands.importMarkdown({
content: markdown,
replaceContent: true,
});
})();
执行 JS 以确认内容已正确插入:
(function () {
const e = window.editor.view.dom;
return { chars: e.textContent.length, first80: e.textContent.substring(0, 80) };
})();
预期结果:chars > 100,且 first80 与文章开头一致。
编辑器底部存在“发布设置”面板(通常默认可见),其默认配置可直接使用:
若用户有特定发布偏好,应在发布前调整:
| 设置 | 操作 | 说明 |
|---|---|---|
| 可见范围 | 单选:“所有人可见” / “仅自己可见” | “仅自己可见”不支持分享与商业推广 |
| 自定义封面 | 勾选复选框 → 上传图片 | 不设置则自动截取正文开头文字 |
| 评论开关 | 勾选/取消复选框 | 关闭后无法评论 |
| 精选评论 | 勾选复选框 | 开启后需手动筛选评论才展示 |
| 定时发布 | 勾选复选框 → 选择时间 | 时间范围:当前时间 +2 小时 至 7 天内(北京时间) |
| 创作声明-原创 | 勾选复选框 | 声明原创,禁止转载 |
| 创作声明-AI | 勾选复选框 | 标识使用 AI 合成技术 |
| 话题 | 点击“添加话题”按钮 | 可选 |
| 文集 | 点击“选择文集”按钮 | 可选 |
操作步骤:
正文输入完成后,底部栏自动出现,默认配置可直接使用:
若用户有特定偏好,应在发布前调整:
| 设置 | 操作 | 说明 |
|---|---|---|
| 分区 | 点击“选择分区”下拉菜单 → 选择分区 | 部分小站可能必选 |
| 同步至动态 | 取消勾选复选框 | 默认开启,取消后不同步到动态 |
当用户 未指定 分区时:
若用户 已指定 分区,则直接采用(跳过自动选择)。
操作步骤:
默认行为:在主会话中顺序执行第一至第四阶段(支持用户交互,如登录、标题选择等)。
仅当用户明确要求时,才交由子 agent 执行。
相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134万人学习
共49课时 | 82.5万人学习
最新文章