返回顶部
b

bili-sunflower-publishB站发布工具

Publish HTML or Markdown content to Bilibili — supports both 专栏 (article) and 小站 (tribee) targets. Handles login check, title input, content injection via editor API, and direct publish. Trigger when user asks to publish to B站专栏/小站, or mentions 发布文章到B站/上传专栏/发B站文章/发小站帖子/tribee发帖.

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.1
安全检测
已通过
318
下载量
免费
免费
1
收藏
概述
安装方式
版本历史

bili-sunflower-publish

bili-sunflower-publish

B站统一发布流程:HTML/Markdown文件 → 编辑器 → 发布。直接使用 window.editor API,无需依赖系统剪贴板。

支持两种目标:

  • - 专栏 (Article):在 member.bilibili.com 发布长文
  • 小站 (Tribee):在 bilibili.com/bubble 发布社区帖子

前置条件

  • - 浏览器工具,使用 openclaw 配置文件(Playwright 管理的浏览器)

输入

  • - 内容文件路径(文章正文)—— 支持 .html 和 .md / .markdown 文件
  • 目标类型:article(专栏)或 tribee(小站)—— 根据用户意图推断
  • 标题(可选 —— 见第二阶段)
  • 小站模式:小站名称或 ID(必填)
  • 小站模式:分区(category,可选 —— 用户可指定或在发布时选择)

第一阶段:导航与登录检查

专栏模式

导航至 https://member.bilibili.com/york/read-editor 并截图。

  • - 已登录:编辑器加载,显示标题输入框 请输入标题(建议30字以内)
  • 未登录:重定向至登录页面

小站模式

发布 URL:https://www.bilibili.com/bubble/publish?tribeeid={id}&tribeename={name}

发布 URL 需要同时提供 tribeeid 和 tribeename。缺失参数的处理方式:

用户提供处理方式
id + 名称直接 → 发布 URL
仅 id
导航至 https://www.bilibili.com/bubble/home/{id},从页面提取小站名称,然后 → 发布 URL |
| 仅名称 | 搜索 https://search.bilibili.com/all?keyword={名称},找到链接至 bilibili.com/bubble/home/{id} 的卡片,提取 {id},然后 → 发布 URL |

导航至发布 URL 后:

  • - 已登录且为成员:编辑器加载,显示标题和正文区域
  • 未登录:重定向至登录页面
  • 非成员:可能显示加入提示 —— 告知用户先加入该小站

如果未登录,停止并告知用户在 openclaw 浏览器配置文件中手动登录,然后重试。



第二阶段:预处理与标题处理

运行与文件类型匹配的预处理脚本。脚本处理 H1 提取、标题层级提升、图片内联以及(针对 HTML)空白清理。

2a. 针对 .html 文件

bash
python3 {SKILLDIR}/scripts/preprocesshtml.py [output-dir]

输出(stdout,3行):

title=<提取的标题>
path=<处理后的 html 文件路径>
bytes=

从输出中解析 title 和 path。处理后的 HTML 文件位于 path,可直接用于第三阶段注入。

2b. 针对 .md / .markdown 文件

bash
python3 {SKILLDIR}/scripts/preprocessmd.py [output-dir]

输出(stdout,3行):

title=<提取的标题>
path=<处理后的 md 文件路径>
bytes=

从输出中解析 title 和 path。处理后的 Markdown 文件位于 path,可直接用于第三阶段注入。

2c. 标题验证

如果用户明确提供了标题,则使用用户提供的标题,而非脚本提取的标题。

解析完成后,进行验证:

  • - 标题超过 50 个字符:提供 2-3 个缩短的备选方案,让用户选择
  • 标题看起来无意义(例如 output、untitled、temp,或明显与内容无关):读取正文前几百个字符,生成 2-3 个标题建议,让用户选择

不要静默使用糟糕的标题。等待用户选择后再继续。

输入标题:点击标题输入框并输入。



第三阶段:插入文章正文

两个编辑器共享相同的富文本编辑器组件(window.editor)。

使用第二阶段预处理后的内容,注入到编辑器中。

重要 —— JS 字符串转义:

内容(HTML 或 Markdown)通常包含会破坏 JS 语法的字符(反引号、引号、换行符、反斜杠等)。你必须使用以下方法安全地构建 JS 代码。不要将原始内容直接粘贴到 JS 变量赋值中。

如何构建 evaluate 的 JS 代码

对于 HTML 和 Markdown 注入,请严格遵循以下步骤:

  1. 1. 从第二阶段输出中获取处理后的文件路径(path=...)
  2. 运行以下命令生成文件内容的 JSON 转义字符串:

bash
python3 -c import json,sys; print(json.dumps(open(sys.argv[1]).read())) <处理后的文件路径>

这将输出一个双引号括起的 JSON 字符串,其中所有特殊字符(换行符、引号、反斜杠等)均已转义,例如 line1\nline2\quoted\。

  1. 3. 捕获 stdout 输出作为 ESCAPEDJSONSTRING
  2. 通过将 ESCAPEDJSONSTRING 嵌入模板来构建完整的 JS 代码(见下方 3a-HTML / 3a-MD)。它已包含自身的双引号,因此直接放在 JSON.parse( 之后,无需额外引号。

3a-HTML. 处理后的 HTML → ClipboardEvent 分发

javascript
(function () {
const html = JSON.parse(ESCAPEDJSONSTRING);
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),请分块粘贴。

3a-MD. 处理后的 Markdown → editor importMarkdown 命令

javascript
(function () {
const markdown = JSON.parse(ESCAPEDJSONSTRING);
window.editor.commands.importMarkdown({
content: markdown,
replaceContent: true,
});
})();

3b. 验证内容

执行 JS 确认内容已插入:

javascript
(function () {
const e = window.editor.view.dom;
return { chars: e.textContent.length, first80: e.textContent.substring(0, 80) };
})();

预期结果:chars > 100 且 first80 与文章开头匹配。



第四阶段:发布

专栏模式

编辑器底部有发布设置面板(通常已可见),默认设置可直接使用:

  • - 可见范围:所有人可见(默认)
  • 封面:从正文文字自动生成(默认)
  • 评论:已启用(默认)

如果用户有特定的发布偏好,请在发布前进行调整:

设置操作说明
可见范围选择 radio:所有人可见 / 仅自己可见仅自己可见不支持分享和商业推广
自定义封面
勾选 checkbox → 上传图片 | 不设则自动抓正文开头文字 |
| 评论开关 | 勾选/取消 checkbox | 关闭后无法评论 |
| 精选评论 | 勾选 checkbox | 开启后需手动筛选评论才展示 |
| 定时发布 | 勾选 checkbox → 选择时间 | 范围:当前+2h ~ 7天内,北京时间 |
| 创作声明-原创 | 勾选 checkbox | 声明原创,禁止转载 |
| 创作声明-AI | 勾选 checkbox | 标识使用 AI 合成技术 |
| 话题 | 点击添加话题按钮 | 可选 |
| 文集 | 点击选择文集按钮 | 可选 |

步骤:

  1. 1. 向下滚动确认发布设置面板可见;如果已折叠,点击发布设置按钮展开
  2. 应用上表中用户请求的任何设置
  3. 点击发布按钮(位于保存为草稿旁边,右下角)
  4. 如果出现确认对话框,确认
  5. 验证发布成功(URL 变化或成功提示)

小站模式

输入内容后出现底部栏,默认设置可直接使用:

  • - 分区:未选择(部分小站可能需要)
-

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 bili-sunflower-publish-1776202668 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 bili-sunflower-publish-1776202668 技能

通过命令行安装

skillhub install bili-sunflower-publish-1776202668

下载

⬇ 下载 bili-sunflower-publish v1.0.1(免费)

文件大小: 10.06 KB | 发布时间: 2026-4-15 10:45

v1.0.1 最新 2026-4-15 10:45
**Major update: Adds Markdown support, removes system clipboard dependency, and injects content via the Bilibili editor API.**

- Now supports publishing both HTML and Markdown (.md/.markdown) files.
- Content is preprocessed via Python scripts for HTML and Markdown, with improved title extraction and file handling.
- System clipboard and macOS dependency removed; uses direct JS injection into the Bilibili editor (`window.editor` API).
- Robust JS string escaping ensures safe content insertion, even for large or complex articles.
- Scripts for HTML/MD preprocessing added; obsolete clipboard script removed.
- Documentation (README, SKILL.md) updated to reflect new workflow and requirements.

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部