csdn について
ユーザーの認証済み CSDN アカウントを通じてデータを取得し、Markdown 記事を公開する Python スキルです。記事の統計を確認でき、公開前にはプレビューと確認を挟みます。
主な機能
- 01アカウント情報と記事数の確認
- 02公開済み記事と統計の一覧表示
- 03個別記事の統計取得
- 04Markdown の下書き保存と公開
- 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 の記事を閲覧・公開
ACE 拡張機能で取得したログイン Cookie で認証し、サイト独自のエディターが
使用するものと同じ Web API を通じて、ユーザーの実際の CSDN アカウントを
操作します。ブラウザーやサードパーティー依存関係は不要です。urllib と
hmac を使用します(エディターの保存エンドポイントには HMAC 署名が必要で、
標準ライブラリで計算します)。
コネクターは Cookie jar を環境変数として渡します。
CSDN_COOKIES— Cookie の JSON 配列です。秘密情報です。絶対にエコーまたは出力しないでください。 CLI が読み取ります。
CSDN は API の前段に WAF を設置しています。読み取り時に 403 が返されないよう、 CLI は完全なブラウザーフィンガープリントをすでに送信します。それでも 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は非公開の下書き(CSDN のstatus=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 ツールを 1 回だけ呼び出し、ユーザーがマイ出力でこの成果物を追跡できるようにします。
publish_artifact(kind="article", channel="csdn", title="<title>", url="<the REAL returned URL>", status="delivered")
実際に返された URL を使用してください。決して捏造してはいけません。公開された各アイテムにつき 1 回のみ呼び出し、公開の完了を確認した後に限って実行してください。公開に失敗した場合はスキップするか、status="failed" を使用してください。
_shared/artifacts.md を参照してください。