关于 hashnode
hashnode 是通过 Hashnode 编辑器的 Cookie 认证 API 管理博客内容的技能,可创建草稿、发布和删除文章;公开或删除操作设有确认门槛。
主要功能
- 01列出博客主页
- 02创建含标签和封面的 Markdown 草稿
- 03确认后发布文章
- 04确认后删除草稿或文章
- 05检查已发布文章是否仍在线
适用场景
- 01查看账户关联的博客
- 02准备并保存私人草稿
- 03发布已批准的文章
- 04移除草稿或现有文章
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ acedatacloud/ skills --skill hashnode安装后在 Claude Code 中输入/hashnode确认已加载。
附带文件scripts/hashnode.py
详细介绍
hashnode — 通过自己的 Cookie 发布到 Hashnode 博客(无需 Pro)
Hashnode 于 2026-05-13 将其公开 GraphQL API 移至付费 Pro 计划,因此个人访问令牌无法再免费发布内容。此技能改为调用 Hashnode 网页编辑器使用的同一第一方 REST API
(https://hashnode.com/api/...),并通过用户的登录会话 Cookie进行身份验证——它免费使用,无需 Pro 计划。
连接器会将 Cookie 集注入为 HASHNODE_COOKIES(JSON 数组;会话 Cookie 为 hashnode-session)。这是机密信息——可完全访问账户。绝不要回显或打印。
已于 2026-07-12 在真实连接的博客上完成端到端验证:列出 publication、创建并保存草稿(标题 / 副标题 / 封面 / 标签 / Markdown)、发布和删除——全程通过 Cookie 身份验证,无需 Pro。
设置 — 以我们自己的脚本为准
# $SKILL_DIR can point at another skill loaded this turn — anchor on our script.
H="$SKILL_DIR/scripts/hashnode.py"; [ -f "$H" ] || H=$(find /tmp -maxdepth 8 -path '*/skills/*/hashnode/scripts/hashnode.py' 2>/dev/null | head -1)
[ -f "$H" ] || { echo "hashnode script not found (SKILL_DIR=$SKILL_DIR)" >&2; exit 1; }
python3 "$H" publications # list the user's blogs (verifies the cookie)
如果出现身份验证错误,说明 Cookie 已过期——请让用户在 https://studio.acedata.cloud/console/connectors 重新连接。不要循环重试。
⚠️ 非 Pro 博客会进行自动审核 — 写编辑内容,而不是广告
这是最重要的一条规则。非 Pro publication 受 Hashnode 自动审核机制约束:明显带有推广性质的帖子(夸张的用语、“免费额度!!”、重复 3–4 次的同一个 CTA 链接)会在几秒内被自动移除——发布调用仍会返回成功,但随后帖子的网址会变成 404。(Pro 在此处唯一的好处是“防止内容被自动审核移除”。)
为确保内容保持在线,请撰写真正有用的操作指南 / 指南,并让产品自然地出现在其中:
- 采用教育性的角度,并使用具体的标题(例如 “…(新手指南)”)。
- 最多添加几个得体的链接,不要重复同一个 CTA。
- 不要使用“限时!!现在就领取!!”之类的营销口吻。
发布后,publish 会重新获取线上网址;如果帖子已被审核移除,就会返回 warning——如果看到此提示,请以编辑文章的方式重写并重新发布。
读取
python3 "$H" publications # {publications:[{id,title,url}]}
保存为私人草稿(安全,不公开)
python3 "$H" draft \
--title "My Title" \
--subtitle "Optional subtitle" \
--content-file article.md \
--cover "https://cdn.example.com/cover.jpg" \
--tags ai,apis
# → {draft_id, editor_url}. Nothing is public yet.
--content-file指定 Markdown 正文(长篇内容请使用文件;短字符串可使用--content)。行内图片和链接直接使用 Markdown 即可。--cover设置页眉 / 封面图片(也用作 OG 图片)。--tags使用逗号分隔的 slug(ai,apis,web-development);系统会自动将其解析为真实的 Hashnode 标签 ID(最多 5 个)。- 只有当账户拥有多个博客时,才需要使用
--publication <id>。
发布 — 需确认(除非末尾带有 --confirm,否则为试运行)
python3 "$H" publish --title "My Title" --content-file article.md --cover "https://…" --tags ai,apis # dry-run
python3 "$H" publish --title "My Title" --content-file article.md --cover "https://…" --tags ai,apis --confirm # LIVE
# → {ok, url} (or {ok:false, warning:"…automoderation removed…"} — rewrite editorially)
确认后的 publish 会立即公开发布到用户的真实博客。务必展示最终标题和正文,取得明确的“是”,然后将 --confirm 作为最后一个参数运行。
删除草稿或帖子 — 需确认
python3 "$H" delete --id <draftOrPostId> # dry-run
python3 "$H" delete --id <draftOrPostId> --confirm # delete
注意事项
- **无需 Pro,也无需 PAT。**此功能使用通过 Cookie 身份验证的
hashnode.com/api/*编辑器 API,而非gql-beta.hashnode.com(该 API 需要付费 Pro 计划)。 - 自动审核(见上文)是免费博客的主要失败原因——请保持内容具有编辑性质。
- **这是用户的真实博客。**发布 / 删除前请先确认。
- 绝不要打印
HASHNODE_COOKIES——它可完全访问账户。 - 第一方内部 API——Hashnode 更新编辑器时,此 API 可能会变化;如果调用突然返回 HTML / 404,请报告为上游变更。
记录输出
成功发布并获取线上结果网址后,调用一次内置的
publish_artifact 工具,以便用户在 My Outputs 中跟踪此交付内容:
publish_artifact(kind="article", channel="hashnode", title="<title>", url="<the REAL returned URL>", status="delivered")
使用实际返回的网址——绝不要伪造。每个已发布项目仅调用一次,并且只能在确认交付后调用;如果发布失败,则跳过(或使用 status="failed")。
另请参阅 _shared/artifacts.md。