Token导航 LogoToken导航

Agent Skill · 开发

csdn-publisher(CSDN 出版商)

csdn-publisher 用于补充开发相关能力,适合在 OpenClaw 中需要让 Agent 承接开发相关任务时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

csdn-publisher 是开发类 Agent Skill,可用宿主为 OpenClaw,通过ClawHub获取,权限为接触敏感数据;许可证为 MIT-0,第三方扫描有提醒项,按安装量在开发类的 21,746 个 Skill 里排第 596。

总安装 70,848周安装 2,952GitHub Stars 2下载 23,616核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
MIT-0
版本
2.3.0

安装方式

通过对话安装

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

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

命令行安装

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

ClawHubOpenClaw
openclaw skills install csdn-publisher

这个 Skill 是做什么的

开发类 Skill 面向写代码、改代码和排查问题,一般会读写仓库文件,部分还会执行构建或测试命令。

撰写文章并发布到CSDN。使用浏览器自动化+扫码登录。支持通过Telegram发送二维码,消耗VNC。集成博客作者写作方法论,批量高质量、有个人风格的技术文章。

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 OpenClaw;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 openclaw skills install csdn-publisher;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它需要接触敏感数据,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

csdn-publisher 怎么安装?

在终端执行 openclaw skills install csdn-publisher。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

csdn-publisher 支持哪些 AI 工具?

公开资料标注支持 OpenClaw。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

csdn-publisher 需要什么权限?

权限级别是接触敏感数据。该 Skill 可能接触密钥、Token、环境变量或敏感配置,应进入高风险复核队列,默认不自动发布。

csdn-publisher 是免费的吗?

来源标注的许可证是 MIT-0。本站不代收任何费用,也不托管安装包;能否商用、要不要署名,以许可证原文为准。

csdn-publisher 用的人多吗?

公开数据是累计安装 70,848 次,近一周安装 2,952 次,下载 23,616 次,GitHub 2 星。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

csdn-publisher 安全吗?

第三方扫描有提醒项,说明存在需要人工确认的行为。安装前请打开源码看清它读了什么、联网到哪里。

值得选的地方和要先想清楚的地方

值得选的地方

  • 专注 OpenClaw 一种宿主,触发方式和使用习惯不用来回切换。
  • 许可证明确为 MIT-0,商用和分发边界好判断。

先想清楚的地方

  • 需要接触敏感数据,装到常用环境前要先评估影响面。
  • 第三方扫描存在提醒项或未通过项,需要人工逐条确认。
  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 OpenClaw,想直接扩展它能力的人。
  • 需要处理开发类任务、又不想每次都手写提示词的人。

不太适合

  • 环境里有大量密钥、凭证,不方便给第三方 Skill 读取的人。
  • 需要厂商级技术支持和 SLA 的生产系统。

开发类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
skill-vetter

技能审查员 · OpenClaw

8,779,018986操作浏览器MIT-0通过
ontology

本体论 · OpenClaw

6,636,960576只读MIT-0通过
entra-app-registration

内部应用程序注册 · Codex、Claude

6,631,872764接触敏感数据未明确通过
entra-app-registration

内部应用程序注册 · Codex、Claude

3,757,680201接触敏感数据未明确通过
nano-banana-pro

纳米香蕉专业版 · OpenClaw

3,526,898364接触敏感数据MIT-0有提醒
csdn-publisher

CSDN 出版商 · 本页

70,8482接触敏感数据MIT-0有提醒

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

name
csdn-publisher
version
2.3.0
description
写文章并发布到 CSDN。使用浏览器自动化 + 扫码登录。支持通过 Telegram 发送二维码,无需 VNC。集成 blog-writer 写作方法论,产出高质量、有个人风格的技术文章。

CSDN Publisher

通过浏览器自动化发布文章到 CSDN。支持扫码登录,二维码可通过 Telegram 发送。

v2.0 新增:集成 blog-writer 写作方法论,自动产出高质量、有个人风格的技术文章。


🎯 核心工作流(v2.0)

1. 用户说"帮我发篇 CSDN 文章"或提供主题/素材
2. 【内容创作阶段】调用 blog-writer 写作方法论
   ├─ 阅读 style-guide-cn.md 校准写作风格
   ├─ 参考 examples/ 目录中的示例文章
   ├─ 整合用户提供的素材/研究材料
   └─ 产出初稿,用户确认后继续
3. 检查登录状态
   ├─ 已登录 → 继续
   └─ 未登录 → 扫码登录流程
4. 启动浏览器,打开编辑器
5. 注入标题和内容
6. 添加标签,点击发布
7. 验证发布成功,返回文章链接
8. 【可选】用户确认终稿后,保存到 examples/ 目录

✍️ 内容创作阶段(核心)

触发条件

当用户请求写文章时,必须先完成内容创作,再进行发布。

触发词:

  • "帮我写篇文章"
  • "发布到 CSDN"
  • "写一篇关于 XXX 的博客"
  • 提供主题、素材、链接等

写作流程

Step 1: 收集信息

向用户确认:

  • 主题:写什么?
  • 角度:从什么视角切入?(教程、踩坑记录、观点输出、技术分析)
  • 素材:有没有参考链接、笔记、代码片段?
  • 长度:简短(500-800字)/ 标准(800-1500字)/ 深度(1500-3000字)
Step 2: 阅读风格指南

必须阅读 style-guide-cn.md 校准写作风格。

核心原则:

  • 直接、有观点、不装腔作势
  • 口语化表达,像跟朋友聊天
  • 第一人称叙述个人经历
  • 短段落(2-4句话)
  • 多用小标题分隔内容
Step 3: 参考示例文章

阅读 examples/ 目录中的示例文章,感受目标风格。

Step 4: 撰写初稿

按照风格指南撰写,完成后展示给用户确认。

Step 5: 迭代修改

根据用户反馈修改,直到用户满意。


📝 写作风格指南(中文版)

详见 style-guide-cn.md,核心要点:

开头模式

用强有力的观点或个人经历开场:

✅ 好的开头:

  • "搞了两个小时,终于把这个坑填上了。"
  • "说实话,我一开始是拒绝用 XXX 的。"
  • "作为一个写了 5 年代码的人,我可以负责任地说:这玩意儿真的有用。"

❌ 避免的开头:

  • "随着人工智能的快速发展..."
  • "在当今数字化时代..."
  • "众所周知..."

结构模式

# [直接、有态度的标题]

[开头:1-2句话抛出核心观点或问题]

### [小标题1:问题/背景]
[2-3个短段落]

### [小标题2:过程/分析]
[具体细节、代码、截图]

### [小标题3:解决方案/结论]
[实操步骤或观点总结]

### 写在最后
[个人感想、行动号召、或前瞻性思考]

语言风格

用这些:

  • "说实话"、"坦白讲"
  • "踩了个坑"、"折腾了半天"
  • "真香"、"血泪教训"
  • 第一人称:"我发现"、"我的做法是"

避免这些:

  • "首先...其次...最后..."
  • "值得注意的是"
  • "综上所述"
  • "不难发现"

新闻资讯类文章特别要求

写新闻汇总、行业日报等资讯类文章时:

  • 必须附带原文链接:每条新闻都要有跳转链接,方便读者查看原文
  • 链接格式:[新闻标题](原文URL) 或在新闻末尾标注 👉 [原文链接](URL)
  • 如果原文链接不可用,标注来源名称(如"来源:36氪")

段落长度

  • 每段 2-4 句话
  • 单句成段用于强调
  • 每 150-250 字一个小标题

🔍 新闻去重(v2.3 新增)

发布新闻汇总类文章时,必须先去重,避免同一条新闻反复出现。

去重流程

  1. 获取已有新闻:运行 scripts/notion-query-recent.sh 14 获取最近 14 天的 Notion 数据库记录
  2. 逐条比对:对每条搜索到的新闻,检查是否与已有记录重复:

- URL 精确匹配:同一个 URL 已存在 → 跳过 - 语义重复:标题描述的是同一件事(即使措辞不同)→ 跳过

  1. 只保留新新闻:去重后无新闻则跳过写文章和发布

语义重复判断示例

以下算同一条新闻:

  • "宇树人形机器人日常训练视频爆火B站,播放量超376万" ≈ "宇树人形机器人日常训练视频爆火:播放量超375万"
  • "小鹏Iron人形机器人深圳首秀摔倒" ≈ "小鹏Iron机器人深圳商场演示翻车"
  • "Apptronik融资9.35亿美元" ≈ "Apptronik获5.2亿美元融资"(同一轮融资的不同报道)

脚本说明

脚本用途
scripts/notion-query-recent.sh [天数]查询最近 N 天的已有新闻,输出 `标题 \URL \日期`
scripts/notion-check-duplicate.sh "标题" ["URL"]精确检查单条新闻是否重复,返回 duplicate 或 new

⚠️ 脚本中的 Notion API Key 和 Database ID 需要根据实际环境配置。


🔧 技术发布流程

前置条件

1. 安装 Chrome
cd /tmp && curl -sL \
  "https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm" \
  -o chrome.rpm && yum install -y ./chrome.rpm
2. 安装 Python 依赖
pip install playwright -i https://pypi.org/simple/
playwright install chromium
3. 配置 OpenClaw 浏览器

需要 headless + noSandbox 模式(服务器无显示器):

# 通过 gateway config.patch 添加:
{"browser": {"headless": true, "noSandbox": true}}

扫码登录流程 ✨

完整流程(推荐)
  1. 启动登录脚本
cd /root/.openclaw/workspace/skills/csdn-publisher
nohup python scripts/login.py login --timeout 300 > /tmp/csdn-login.log 2>&1 &
  1. 等待二维码生成(约 10-15 秒)
ls ~/.openclaw/workspace/credentials/csdn-qr.png
  1. 通过 Telegram 发送二维码
message(action="send", filePath="~/.openclaw/workspace/credentials/csdn-qr.png", target="用户ID", caption="请用 CSDN App 扫码登录")
  1. 用户扫码后,脚本自动保存 Cookie
cat /tmp/csdn-login.log
检查 Cookie 有效性
python scripts/login.py check

发布文章流程(browser 工具)

Step 1: 启动浏览器并检查登录状态
browser action=start profile=openclaw
browser action=navigate targetUrl=https://editor.csdn.net/md
browser action=snapshot

检查 snapshot 结果:

  • 看到 textbox "请输入文章标题" → 已登录 ✅
  • 看到 登录 或 扫码 → 需要扫码登录
Step 2: 扫码登录(仅首次或 Cookie 过期时)
browser action=navigate targetUrl=https://passport.csdn.net/login
browser action=screenshot  # 截取二维码发给用户
Step 3: 注入标题

使用 browser 工具的 type 操作:

browser action=snapshot  → 找到标题输入框的 ref(通常是 textbox "请输入文章标题")
browser action=act request={kind: "click", ref: "<标题ref>"}
browser action=act request={kind: "type", ref: "<标题ref>", text: "你的标题"}
Step 4: 注入内容(⚠️ 关键步骤)

CSDN 使用 cledit 编辑器(contentEditable),不能用以下方法:

  • ❌ browser evaluate 嵌入长字符串 → 参数长度限制
  • ❌ document.execCommand('insertText') → 换行符不被 cledit 识别
  • ❌ navigator.clipboard → headless Chrome 无权限
  • ❌ HTTP server + fetch → CORS/混合内容拦截

✅ 正确方案:使用 scripts/inject-content.js 通过 CDP 注入

# 前置:确保 ws 模块已安装
cd /root/.openclaw/workspace/skills/csdn-publisher
npm install ws 2>/dev/null

# 注入内容(自动跳过 frontmatter)
node scripts/inject-content.js /tmp/csdn-article-YYYY-MM-DD.md

脚本原理:

  1. 通过 CDP /json 找到 CSDN 编辑器 tab
  2. 用 Runtime.evaluate + JSON.stringify(content) 将内容存入 window 变量(绕过长度限制)
  3. 用 editor.textContent = content + dispatchEvent('input') 注入(cledit 兼容)
  4. 自动验证注入结果(字数、行数)

注意: 运行脚本前必须先用 browser 工具打开 CSDN 编辑器页面。

Step 5: 发布
browser action=snapshot  → 找到"发布文章"按钮的 ref
browser action=act request={kind: "click", ref: "<发布按钮ref>"}
browser action=snapshot  → 检查发布对话框
  - 确认标签已添加(必填)
  - 文章类型选"原创"
browser action=act request={kind: "click", ref: "<对话框中的发布按钮ref>"}
browser action=snapshot  → 验证"发布成功!正在审核中"

🛡️ 容错与重试策略(v2.1 新增)

浏览器自动化容易因网络、服务中断等原因失败。以下策略确保内容不丢失、发布可重试。

原则:先存内容,再发布

内容创作是昂贵的(搜索+写作),发布是廉价的(浏览器操作)。必须先把内容落盘,再尝试发布。

Step 1: 内容落盘(发布前必做)

在尝试浏览器发布之前,必须将文章保存到本地文件:

/tmp/csdn-article-YYYY-MM-DD.md

文件格式:

---
title: 文章标题
date: YYYY-MM-DD
tags: [标签1, 标签2]
status: draft | published
csdn_url: (发布成功后回填)
---

文章正文 Markdown 内容...

这样即使发布失败,文章内容也不会丢失,可以随时重试。

Step 2: 浏览器健康检查(发布前必做)

在打开 CSDN 编辑器之前,先确认浏览器服务可用:

1. browser action=start profile=openclaw
2. browser action=snapshot profile=openclaw

如果 start 或 snapshot 返回错误:

  • 不要继续发布流程
  • 跳到 Step 4(兜底通知)

Step 3: 失败后自动重试(最多 1 次)

如果发布过程中浏览器操作失败:

1. browser action=stop profile=openclaw     # 关闭浏览器
2. 等待 5 秒
3. browser action=start profile=openclaw    # 重启浏览器
4. 重新执行发布流程(从打开编辑器开始)
5. 只重试 1 次,避免无限循环

注意:只重试发布步骤,不重跑内容创作。 从本地文件 /tmp/csdn-article-YYYY-MM-DD.md 读取已保存的内容。

Step 4: 兜底通知

如果重试后仍然失败:

  1. 更新本地文件的 status: failed
  2. 向用户发送通知,包含:

- 失败原因 - 文章标题 - 提示:文章已保存在 /tmp/csdn-article-YYYY-MM-DD.md,可以手动触发重新发布

完整发布流程(含容错)

内容创作完成
    ↓
保存到 /tmp/csdn-article-YYYY-MM-DD.md  ← 落盘
    ↓
browser start + snapshot  ← 健康检查
    ↓ (失败 → 跳到兜底通知)
打开编辑器 → 注入内容 → 发布
    ↓ (失败)
browser stop → 等 5s → browser start  ← 重试
    ↓
重新打开编辑器 → 注入内容 → 发布
    ↓ (仍然失败)
发送失败通知 + 文章保存路径  ← 兜底

📁 目录结构

csdn-publisher/
├── SKILL.md              # 本文档
├── style-guide-cn.md     # 中文写作风格指南
├── examples/             # 示例文章库
│   └── *.md              # 示例文章(YYYY-MM-DD-slug.md)
├── scripts/
│   ├── login.py              # 扫码登录脚本
│   ├── inject-content.js     # CDP 内容注入脚本(核心)
│   ├── notion-query-recent.sh   # 查询最近N天已有新闻
│   └── notion-check-duplicate.sh # 精确去重检查

📚 示例文章管理

保存终稿

当用户确认文章为终稿时,保存到 examples/ 目录:

examples/YYYY-MM-DD-slug-title.md

例如:examples/2025-02-02-gui-agent-overview.md

示例库维护

  • 保持 10-20 篇示例文章
  • 超过 20 篇时,询问用户是否删除最旧的 5 篇
  • 示例文章用于校准写作风格

🔗 依赖技能

本技能依赖 blog-writer 的写作方法论:

skills/blog-writer/
├── SKILL.md              # 写作工作流
├── style-guide.md        # 英文风格指南(参考)
└── *.md                  # 示例文章

在撰写文章时,可参考 blog-writer 的:

  • 结构模式
  • 开头/结尾技巧
  • 个人经历融入方式

踩坑记录

坑原因解决方案
Playwright 安装失败国内镜像源没有pip install playwright -i https://pypi.org/simple/
进程被 killOpenClaw 超时机制用 nohup 后台运行
二维码定位失败选择器不对用 img[src*="qrcode"]
浏览器启动失败服务器无显示器配置 headless: true, noSandbox: true
Cookie 注入无效domain 设置错误必须设置 domain=.csdn.net
标签未添加必填项发布前必须添加至少一个标签

Cookie 存储

~/.openclaw/workspace/credentials/csdn-cookie.json   # Playwright storage_state 格式
~/.openclaw/workspace/credentials/csdn-cookie.txt    # 简单字符串格式(兼容)
~/.openclaw/workspace/credentials/csdn-qr.png        # 登录二维码截图

登录状态说明 🔑

browser 工具使用 Chrome 的 user-data 目录,登录状态是持久化的:

  • 首次使用需要扫码登录
  • 登录后状态自动保存到 /root/.openclaw/browser/openclaw/user-data
  • 下次启动 browser 工具会自动加载登录状态
  • Cookie 过期后(通常几天到几周)需要重新扫码

自动通知配置 🔔

配置 Telegram 通知

python scripts/login.py setup-notify \
  --bot-token "YOUR_BOT_TOKEN" \
  --chat-id "YOUR_CHAT_ID"

启动带通知的登录

nohup python scripts/login.py login --timeout 300 --notify > /tmp/csdn-login.log 2>&1 &

Changelog

  • v2.3.0: 新增新闻去重功能(notion-query-recent.sh + notion-check-duplicate.sh),支持 URL 精确匹配和语义重复判断
  • v2.2.0: 固化 CDP 内容注入方案(scripts/inject-content.js),替换不可靠的 browser evaluate 方法
  • v2.1.0: 添加容错与重试策略(内容落盘、健康检查、自动重试、兜底通知)
  • v2.0.0: 集成 blog-writer 写作方法论,添加中文风格指南,重构工作流
  • v1.3.0: 添加登录成功自动 Telegram 通知功能
  • v1.2.0: 完善 Telegram 二维码发送流程,添加完整工作流示例
  • v1.1.0: 添加扫码登录脚本 scripts/login.py
  • v1.0.0: 初始版本,手动 Cookie 注入

平台分布

OpenClaw

70.8%
按下载量换算16,720

安全审计

VirusTotal

可疑

ClawScan

可疑

Static analysis

未展示

权限和风险

接触敏感数据

该 Skill 可能接触密钥、Token、环境变量或敏感配置,应进入高风险复核队列,默认不自动发布。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在提醒或未通过项,安装前请自行复核。目前只有一个公开来源,建议同时核对源仓库。

继续浏览同类 Skills