Cto51
Read the connected 51CTO 博客 (blog.51cto.com) account and create Markdown article drafts with the user's own login cookies (BYOC). Use when the user mentions 51CTO, wants to save a 51CTO draft, or asks who their connected 51CTO account is.From its SKILL.md
npx -y skills add AceDataCloud/Skills --skill cto51Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 13 stars13 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its file declares
Copied from the file, not written here
The file declares its own license as Apache-2.0. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
3.5 KB, 718 tokens by cl100k_base, as published. Nobody here has run it
cto51 — read & draft on 51CTO 博客 via your own cookies
Drives the user's real 51CTO account through the same blog.51cto.com
endpoints the site uses, authenticated by the login cookie they captured with
the ACE extension. No browser, no third-party deps — just urllib.
The connector injects the cookie jar as a JSON env var $CTO51_COOKIES. Never
print it.
python3 "$SKILL_DIR/scripts/cto51.py" whoami
If $SKILL_DIR points at a different skill loaded in the same turn, resolve
this skill's directory explicitly before running the commands below.
Important: draft only
51CTO's write endpoint creates a draft. This skill returns the draft's editor URL and does not publish. Tell the user plainly that they must open that URL and publish themselves — do not claim the article went live.
Verify the connection first
python3 "$SKILL_DIR/scripts/cto51.py" whoami
If this fails with a redirect or auth error, the cookie has expired. Ask the
user to reconnect at https://auth.acedata.cloud/user/connections rather than
retrying.
Create a draft — GATED
Prepare the complete Markdown in a file. The first call is always a dry run and does not write anything.
# Dry run — shows exactly what would be written.
python3 "$SKILL_DIR/scripts/cto51.py" draft \
--title "标题" --content-file /tmp/article.md --tags "python,api"
# Actually create the draft after the user confirms.
python3 "$SKILL_DIR/scripts/cto51.py" draft \
--title "标题" --content-file /tmp/article.md --tags "python,api" --confirm
Options: --content-file <path.md> (preferred) or --content "<markdown>" for
short inline text; --tags "a,b" comma-separated; --abstract "…" sets the
summary shown in listings. The dry run echoes every field that will be written,
including the abstract — show that output to the user before confirming.
--confirm is valid only as the final argument. Show the title, tags and full
content to the user before writing.
Gotchas
- 51CTO sits behind a WAF that answers a bare request with HTTP 567. The CLI
always sends a full browser fingerprint, so do not strip its headers or
re-implement the calls with plain
curl. - Both the identity and the
_csrftoken come from the publish page. A redirect there means the session is dead — reconnect, do not retry. - Content is sent as Markdown (
is_old=0). Do not pre-render it to HTML. - Images referenced by external URL are not re-hosted. If the source host blocks hotlinking they will not render; mention this when the article has images.
- Do not retry a timed-out write automatically — the outcome may be unknown and a retry can create a duplicate draft.
Record the output
This skill only produces drafts, so do not call publish_artifact. Report
the returned draft_id and edit_url to the user instead.
What ships with it: 1 file
16.3 KB alongside SKILL.md, 1 of them executable
scripts/
- cto51.pyruns16.3 KB