mcpField
C
csdn

csdn

github.com/acedatacloudマーケティング・グロース17175 回インストール今日更新
リポジトリ

csdn について

ユーザーの認証済み CSDN アカウントを通じてデータを取得し、Markdown 記事を公開する Python スキルです。記事の統計を確認でき、公開前にはプレビューと確認を挟みます。

主な機能

  1. 01アカウント情報と記事数の確認
  2. 02公開済み記事と統計の一覧表示
  3. 03個別記事の統計取得
  4. 04Markdown の下書き保存と公開
  5. 05外部画像を CSDN CDN に転送

活用シーン

  1. 01アカウントの活動と記事の反応を確認
  2. 02レビュー用の非公開下書きを作成
  3. 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 画像(![](url))を保存前に 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 を参照してください。

コメント