关于 csdn
这是一个通过用户已登录的 CSDN 账号读取数据和发布 Markdown 文章的 Python 技能,提供文章统计,并在发布前设置预览确认步骤。
主要功能
- 01查看账号身份和文章总数
- 02列出已发布文章及统计
- 03读取单篇文章数据
- 04将 Markdown 保存为草稿或公开发布
- 05将外部图片转存至 CSDN CDN
适用场景
- 01查看账号活动和文章互动数据
- 02准备待审核的私密草稿
- 03确认后发布文章至 CSDN
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ acedatacloud/ skills --skill csdn安装后在 Claude Code 中输入/csdn确认已加载。
附带文件scripts/csdn.py
详细介绍
csdn — 使用你自己的 Cookie 在 CSDN 上阅读和发布
通过网站编辑器使用的相同 Web API 操作用户的真实 CSDN 账号,并使用用户通过 ACE
扩展获取的登录 Cookie 进行身份验证。无需浏览器,也无第三方依赖——使用 urllib + hmac(编辑器的
保存端点需要 HMAC 签名,该签名使用标准库计算)。
连接器会将 Cookie jar 注入为环境变量:
CSDN_COOKIES— Cookie 的 JSON 数组。机密——切勿回显或打印。 CLI 会为你读取它。
CSDN 的 API 前置有 WAF;CLI 已发送完整的浏览器指纹,因此读取操作不会返回 403。如果你仍然遇到 WAF 403,说明 Cookie 已过期——请让用户重新连接。
CLI
此技能提供 scripts/csdn.py——独立脚本,仅使用标准库。
# $SKILL_DIR can point at another skill loaded this turn — anchor on our own
# script, and re-run this at the top of every Bash block (fresh shell each time).
CSDN="$SKILL_DIR/scripts/csdn.py"; [ -f "$CSDN" ] || CSDN=$(find /tmp -maxdepth 8 -path '*/skills/*/scripts/csdn.py' 2>/dev/null | head -1)
[ -f "$CSDN" ] || { echo "csdn script not found (SKILL_DIR=$SKILL_DIR)" >&2; exit 1; }
python3 "$CSDN" whoami # who is logged in (+ total article count)
python3 "$CSDN" articles --limit 20 # my published articles + stats
python3 "$CSDN" article <article-id> # one article's stats
统计数据直接来自 CSDN:view_count(阅读)、digg_count(点赞)、
comment_count(评论)、collect_count(收藏)。
首先验证连接
CSDN="$SKILL_DIR/scripts/csdn.py"; [ -f "$CSDN" ] || CSDN=$(find /tmp -maxdepth 8 -path '*/skills/*/scripts/csdn.py' 2>/dev/null | head -1)
python3 "$CSDN" whoami
# → {"username": "...", "nickname": "...", "articles_total": 0}
如果出现 WAF 403 / 身份验证错误,说明 Cookie 已过期——请告知用户前往 https://studio.acedata.cloud/console/connectors 重新连接。不要循环重试。
发布——需确认(除非最后附带 --confirm,否则为试运行)
publish 会写入用户的真实账号。内容为 Markdown。如果末尾没有附带 --confirm,则会进行试运行。只有将
--confirm 作为最后一个参数时才会生效。务必先展示试运行结果并获得明确的“是”,然后再将
--confirm 放在最后重新运行。
CSDN="$SKILL_DIR/scripts/csdn.py"; [ -f "$CSDN" ] || CSDN=$(find /tmp -maxdepth 8 -path '*/skills/*/scripts/csdn.py' 2>/dev/null | head -1)
python3 "$CSDN" publish --title "标题" --content-file a.md # dry-run
python3 "$CSDN" publish --title "标题" --content-file a.md --draft-only --confirm # private draft (status=2)
python3 "$CSDN" publish --title "标题" --content-file a.md --tags "AI,Python" --confirm # PUBLIC, goes live
--draft-only会保存为私人草稿(CSDNstatus=2)——安全,不会公开。- 如果不使用
--draft-only,文章将以用户的名义公开发布。除非用户明确要求上线,否则默认使用--draft-only。 --tags是以逗号分隔的文章标签列表。
图片
publish 会在保存前自动将外部 Markdown 图片()重新托管到
CSDN 自己的 CDN(i-blog.csdnimg.cn)。CSDN 的防盗链会拦截外部
图片,保存一篇包含大量外部 URL 的文章甚至可能超时。已位于 csdnimg.cn 上的图片不会处理;传入 --no-rehost-images 可跳过此操作。上传失败的图片会保留原始 URL(不会阻止文章发布)。
注意事项——提前告知用户,避免其感到意外
- 这是用户的真实 CSDN 账号。 发布前请先确认。
- Cookie 过期 / WAF 403:前往 studio.acedata.cloud/console/connectors 重新连接—— 切勿循环重试 WAF 拦截。
- 编辑器保存端点使用嵌入在 CSDN Web 包中的 HMAC 密钥签名;如果 CSDN 轮换该密钥,发布会明确失败(读取仍可正常进行)。
- 切勿打印
CSDN_COOKIES——它可完全访问账号。 - 服务条款:Cookie 自动化仅操作用户自己的账号,并使用用户自己获取的 Cookie;相关风险由用户承担。
记录输出
成功发布并获得实际结果 URL 后,调用内置的
publish_artifact 工具一次,让用户可以在 My Outputs 中跟踪此交付内容:
publish_artifact(kind="article", channel="csdn", title="<title>", url="<the REAL returned URL>", status="delivered")
使用实际返回的 URL——切勿伪造。每个已发布项目仅调用一次,
且只能在确认交付后调用;如果发布失败,则跳过(或使用 status="failed")。
参见 _shared/artifacts.md。