Token导航 LogoToken导航TokenDH.com
研究检索操作浏览器clawhub未标认证来源可访问clear审计通过

bili-sunflower-publishbili 向日葵出版

Agent Skill

bili-sunflower-publish 用于查找、检索和筛选相关信息,适合在 OpenClaw 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

10,608

周安装

442

GitHub Stars

1

下载量

3,536
OpenClaw

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

MIT-0

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:bili-sunflower-publish(bili 向日葵出版)
来源仓库:https://github.com/zangzhicong/bili-sunflower-publish
安装命令:
openclaw skills install bili-sunflower-publish
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 OpenClaw 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

ClawHubOpenClaw
openclaw skills install bili-sunflower-publish

简介

用于查找、检索和筛选发布内容到 Bilibili 的相关信息。

  • 适合在 OpenClaw 中根据关键词或任务场景快速定位候选结果。
  • 可结合来源仓库和 README 核验具体用法,安装前需确认权限和维护状态。
  • 建议检查是否会触发联网、命令执行或文件读写操作。
  • 适用于将 HTML 或 Markdown 内容发布到专栏或小站的场景。

SKILL.md

name
bili-sunflower-publish
description
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发帖.

bili-sunflower-publish

Unified publish pipeline for Bilibili: HTML/Markdown file → editor → publish. Uses window.editor API directly — no system clipboard dependency.

Supports two targets:

  • 专栏 (Article): long-form articles on member.bilibili.com
  • 小站 (Tribee): community posts on bilibili.com/bubble

Prerequisites

  • Browser tool with openclaw profile (Playwright-managed browser)

Input

  • Content file path (article body) — supports .html and .md / .markdown files
  • Target type: article (专栏) or tribee (小站) — infer from user intent
  • Title (optional — see Phase 2)
  • For tribee: tribee name or ID (required)
  • For tribee: 分区 (category, optional — user can specify or choose during publish)

Phase 1: Navigate & Login Check

Article mode

Navigate to https://member.bilibili.com/york/read-editor and take a snapshot.

  • Logged in: editor loads with title textbox "请输入标题(建议30字以内)"
  • Not logged in: redirects to login page

Tribee mode

Publish URL: https://www.bilibili.com/bubble/publish?tribee_id={id}&tribee_name={name}

Both tribee_id and tribee_name are required for the publish URL. Resolve missing params:

User providesResolution
id + nameDirect → publish URL
id onlyNavigate to https://www.bilibili.com/bubble/home/{id}, extract tribee name from the page, then → publish URL
name onlySearch https://search.bilibili.com/all?keyword={name}, find the card linking to bilibili.com/bubble/home/{id}, extract {id}, then → publish URL

After navigating to the publish URL:

  • Logged in + member: editor loads with title and body area
  • Not logged in: redirects to login page
  • Not a member: may show join prompt — tell user to join the tribee first

If not logged in, stop and tell the user to log in manually in the openclaw browser profile, then retry.


Phase 2: Preprocess & Title Handling

Run the preprocess script matching the file type. The script handles H1 extraction, heading promotion, image inlining, and (for HTML) whitespace cleanup.

2a. For .html files

python3 {SKILL_DIR}/scripts/preprocess_html.py <input.html> [output-dir]

Output (stdout, 3 lines):

title=<extracted title>
path=<processed html file path>
bytes=<html byte size>

Parse title and path from the output. The processed HTML at path is ready for injection in Phase 3.

2b. For .md / .markdown files

python3 {SKILL_DIR}/scripts/preprocess_md.py <input.md> [output-dir]

Output (stdout, 3 lines):

title=<extracted title>
path=<processed md file path>
bytes=<md byte size>

Parse title and path from the output. The processed Markdown at path is ready for injection in Phase 3.

2c. Title validation

If the user provided a title explicitly, use it instead of the script-extracted one.

After resolving, validate:

  • Title > 50 characters: present 2-3 shortened alternatives, let user choose
  • Title looks meaningless (e.g. output, untitled, temp, or clearly unrelated to the content): read the first few hundred chars of body, generate 2-3 title suggestions, let user choose

Do NOT silently use a bad title. Wait for user selection before proceeding.

Enter the title: click the title textbox and type.


Phase 3: Insert Article Body

Both editors share the same rich-text editor component (window.editor).

Use the preprocessed content from Phase 2 and inject it into the editor.

IMPORTANT — JS string escaping:

Content (HTML or Markdown) often contains characters that break JS syntax (backticks, quotes, newlines, backslashes, etc.). You must use the method below to safely construct the JS code. Do NOT paste raw content directly into a JS variable assignment.

How to construct the evaluate JS code

Follow these steps exactly for both HTML and Markdown injection:

  1. Get the processed file path from Phase 2 output (path=...)
  2. Run the following command to produce a JSON-escaped string of the file content:
python3 -c "import json,sys; print(json.dumps(open(sys.argv[1]).read()))" <processed-file-path>

This outputs a double-quoted JSON string with all special characters escaped (newlines, quotes, backslashes, etc.), e.g. "line1\ line2\"quoted\"".

  1. Capture the stdout output as ESCAPED_JSON_STRING
  2. Build the full JS code by embedding ESCAPED_JSON_STRING into the template (see 3a-HTML / 3a-MD below). It already includes its own surrounding double quotes, so place it directly after JSON.parse( with no additional quotes.

3a-HTML. Processed HTML → ClipboardEvent dispatch

(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);
})();

Note: If the HTML content is large (>50KB), split it into chunks and paste sequentially.

3a-MD. Processed Markdown → editor importMarkdown command

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

3b. Verify content

Evaluate JS to confirm content was inserted:

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

Expected: chars > 100 and first80 matches the article opening.


Phase 4: Publish

Article mode

Editor bottom has a "发布设置" panel (usually already visible) with defaults that work out of the box:

  • 可见范围: 所有人可见 (default)
  • 封面: auto-generated from body text (default)
  • 评论: enabled (default)

If the user has specific publishing preferences, adjust before publishing:

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

Steps:

  1. Scroll down to confirm the "发布设置" panel is visible; if collapsed, click "发布设置" button to expand
  2. Apply any user-requested settings from the table above
  3. Click "发布" button (next to "保存为草稿", at the bottom right)
  4. If a confirmation dialog appears, confirm
  5. Verify publish succeeded (URL changes or success toast)

Tribee mode

Bottom bar appears after content is entered, with defaults that work out of the box:

  • 分区: 未选择 (some tribees may require)
  • 同步至动态: enabled (default)

If the user has specific preferences, adjust before publishing:

设置操作说明
分区点击"选择分区"下拉 → 选择分区部分小站可能必选
同步至动态取消勾选 checkbox默认开启,取消后不同步到动态

分区自动选择(Tribee only)

When the user did not specify a 分区:

  1. Click "选择分区" dropdown to reveal available options
  2. Read the list of 分区 names from the dropdown (snapshot)
  3. Based on the article title + first ~200 chars of body content, pick the most relevant 分区:

- Match by keyword/topic similarity (e.g. tutorial content → "经验分享", questions → "提问求助") - If no option is a clear fit, pick the most general/catch-all option - If the tribee only has 1-2 generic options, just pick the best one without overthinking

  1. Click the chosen 分区
  2. Do not ask the user to confirm — just pick and proceed (they can always re-publish if wrong)

If the user did specify a 分区, use it directly (skip auto-selection).

Steps:

  1. Handle 分区 (user-specified or auto-selected per above)
  2. Apply any other user-requested settings
  3. Click "发布" button (blue, bottom right)
  4. Verify publish succeeded

Execution

Default: execute Phase 1 → 4 directly in the main session (supports user interaction for login/title).

Only delegate to subagent if the user explicitly requests it.

适合场景

01

OpenClaw 用户查找和安装 Skill 时

02

用户想查找某类 Agent Skill 时

03

需要根据任务场景推荐可安装能力包时

04

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

补充不同宿主或平台的使用分布数据

能力 5

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

OpenClaw

97.8%
按下载量换算3,458

安全审计

VirusTotal

通过

ClawScan

通过

Static analysis

通过

权限和风险

操作浏览器

该 Skill 可能涉及浏览器控制能力,使用时可能读取或操作网页内容,需要在受控环境中确认权限边界。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills