Skip to content
Agentmart
Submit a tool

cnblogs

Publish, update and read CNBlogs (博客园) posts with a personal access token through the API used by the official vscode-cnb client.

Skill by acedatacloud

IndexedApache-2.0★ 17
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/acedatacloud-cnblogs

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Publish, update and read CNBlogs (博客园) posts with a personal access token through the API used by the official vscode-cnb client. Use when the user wants to publish Markdown to 博客园, save a CNBlogs draft, edit or delete a post, or list posts or categories.

Use cases: documents, backend, writing

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found
Runs as
Python package

Network hosts it talks to 4

  • codeload.github.com · found in install command
  • i.cnblogs.com · found in code
  • studio.acedata.cloud · found in code
  • write.cnblogs.com · found in code

Files it touches

  • ~/.claude/skills/cnblogs

What's inside

Skill name
cnblogs
Description
Publish, update and read CNBlogs (博客园) posts with a personal access token through the API used by the official vscode-cnb client. Use when the user wants to publish Markdown to 博客园, save a CNBlogs draft, edit or delete a post, or list posts or categories.
License
Apache-2.0
Metadata
author: acedatacloud · version: 1.0
Instructions
78 lines in SKILL.md · view on GitHub

Before installing

  • Ships executable scripts

Files (3)

  • SKILL.md
  • cnblogs.py · scripts/
  • test_cnblogs.py · tests/

SKILL.md (first lines)

Use the bundled standard-library CLI. The connector injects the user's 博客园
personal access token as `$CNBLOGS_TOKEN`. Never print it. The CLI follows the
current official `cnblogs/vscode-cnb` client contract at
`https://write.cnblogs.com/api` (`Authorization: Bearer` plus
`Authorization-Type: pat`).

```bash
python3 "$SKILL_DIR/scripts/cnblogs.py" whoami
```

If authentication fails, ask the user to create a PAT at
`https://account.cnblogs.com/settings/tokens` and reconnect. Do not ask for
their account password or Cookie.

## Read the blog

```bash
# Verify the token and inspect the account's post template.
python3 "$SKILL_DIR/scripts/cnblogs.py" whoami

# Categories and recent posts.
python3 "$SKILL_DIR/scripts/cnblogs.py" categories
python3 "$SKILL_DIR/scripts/cnblogs.py" posts --limit 20
python3 "$SKILL_DIR/scripts/cnblogs.py" post POST_ID
```

## Create a draft or publish

Prepare the complete Markdown in a file. Category values are numeric IDs from
the `categories` command; tags are names.

```bash
# First call is always a dry run and does not load credentials or call the API.
python3 "$SKILL_DIR/scripts/cnblogs.py" create \
  --title "标题" --content-file /tmp/article.md \
  --category-ids "123,456" --tags "agent,api"

# Save as a private draft after the user confirms.
python3 "$SKILL_DIR/scripts/cnblogs.py" create \
  --title "标题" --content-file /tmp/article.md \
  --category-ids "123,456" --tags "agent,api" --confirm

# Public publishing additionally requires --publish.
python3 "$SKILL_DIR/scripts/cnblogs.py" create \
  --title "标题" --content-file /tmp/article.md \
  --category-ids "123,456" --tags "agent,api" --publish --confirm
```

`--confirm` is valid only as the final argument. Always show the title,
categories, tags, visibility and full content to the user before a public
publish. Default to a draft unless the user explicitly requests publication.

## Update and delete

Updating requires an explicit visibility choice so an existing post is not
silently unpublished. All commands below dry-run without trailing `--confirm`.

```bash
python3 "$SKILL_DIR/scripts/cnblogs.py" update POST_ID \
  --title "新标题" --content-file /tmp/article.md --publish --confirm

python3 "$SKILL_DIR/scripts/cnblogs.py" update POST_ID \
  --title "新标题" --content-file /tmp/article.md --draft --confirm

python3 "$SKILL_DIR/scripts/cnblogs.py" delete POST_ID --confirm
```

Use the real returned `post_id`, URL, or media URL. Do not retry a timed-out
write automatically because its outcome may be unknown; list recent posts or
inspect the post first.

## Record the output

After a confirmed public publish returns a real URL, call `publish_artifact`
once with `kind="article"`, `channel="cnblogs"`, the title, returned URL, and
`status="delivered"`. Do not record drafts or failed/unknown writes.

From AceDataCloud/Skills, Apache-2.0.

More from AceDataCloud/Skills

Signals

Stars
17
Forks
1
Open issues
0
Last commit (this folder)
Aug 22, 2026 (2 months ago)
Last release
Oct 23, 2026 (4 days ago)

From GitHub (fetched Oct 24, 2026).

Details

Version
1.0
License
Apache-2.0
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from acedatacloud

Cite this page

cnblogs skill. Agent Mart. https://agentmart.dev/skills/acedatacloud-cnblogs (last updated 2026-10-24)