mcpField
C
csdn-article-publish

csdn-article-publish

github.com/wuchubuzai2018マーケティング・グロース4373 回インストール8 週間前に更新
リポジトリ

csdn-article-publish について

Markdown記事を準備し、CSDNの下書きや公開を管理するスキルとNode.jsスクリプトです。リクエスト前に設定や公開項目をローカルで検証し、後続の更新に使えるファイルと記事の対応関係を記録します。

主な機能

  1. 01MarkdownをCSDNの下書きとして保存
  2. 02記事の更新と公開
  3. 03リクエスト前の設定検証
  4. 04ファイル、記事ID、URLの追跡
  5. 05ローカル記事マッピングの管理

活用シーン

  1. 01ローカルのMarkdown記事を下書き保存
  2. 02ファイルの対応情報を使った記事更新
  3. 03タグや公開範囲を指定して公開

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/wuchubuzai2018/expert-skills-hub --skill csdn-article-publish

インストール後、Claude Code で/csdn-article-publishを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

config/
config_example.json
user_agents.json
references/
api_reference.md
troubleshooting.md
scripts/
csdn_article.js
markdown_to_html.js
marked.umd.js

詳細

CSDN ブログ記事公開スキル

スキルの概要

  • 指定したディレクトリ内の Markdown ファイルの内容を読み取り、CSDN の下書きとして保存できます
  • Markdown 記事を生成し、ローカルファイルに保存できます
  • Markdown 記事を CSDN の下書きとして保存できます
  • ローカルで事前検証を行い、リクエスト送信前に設定項目の不足、タイトル、タグ数、概要の長さ、公開時の必須項目などを確認できます
  • ローカルの記事マッピングファイル csdn_article_map.json を自動で管理し、file -> articleId -> url を記録します
  • 記事 ID または保存済みの Markdown ファイルを指定して記事を更新できます
  • 記事を公開できます(追加フィールドが必要です)

⚠️ 重要な注意事項

  • レート制限の回避:CSDN には API のレート制限があるため、API を頻繁に呼び出さないでください
  • 推奨事項:
    • 保存/更新の間隔は、1 回ごとに少なくとも 5~10 秒空けてください
    • 1 日に保存/更新する記事は、5 件以下を推奨します
    • 一括操作の場合は、適宜間隔を長くしてください
    • まず下書きとして保存し、内容を確認してから公開してください

使用手順

手順 1:リクエストヘッダーの設定

現在のディレクトリに csdn_config.json ファイルが存在するか確認してください。ファイルが存在しない場合は、config/config_example.jsonを作業ディレクトリにコピーし、ファイル名を csdn_config.json に変更してください。サンプルに従ってユーザーに内容を変更してもらい、リクエストヘッダー情報を入力します:config_example.json

リクエストヘッダーの取得方法
  1. CSDN にログインし、https://editor.csdn.net/md/ Markdown スタイルの記事エディターを開きます
  2. タイトルと内容を入力し、「下書きとして保存」をクリックします
  3. ブラウザーの開発者ツール(F12)を開きます
  4. Network(ネットワーク)タブに切り替えます
  5. saveArticle リクエストを見つけ、右クリック → Copy → Copy as cURL を選択します
  6. curl コマンドから以下のリクエストヘッダーを抽出します:
    • Cookie:ユーザーのログイン Cookie
    • x-ca-nonce:リクエストの一意の識別子(UUID)
    • x-ca-signature:署名
    • x-ca-signature-headers:署名ヘッダーの一覧
    • x-ca-key:API Key
設定ファイルの形式
{
  "headers": {
    "Cookie": "用户Cookie",
    "x-ca-nonce": "UUID",
    "x-ca-signature": "签名",
    "x-ca-signature-headers": "x-ca-key,x-ca-nonce",
    "x-ca-key": "API Key"
  },
  "defaults": {
    "readType": "public",
    "type": "original",
    "pubStatus": "draft",
    "creation_statement": 0,
    "tags": "",
    "categories": ""
  }
}

各フィールドの詳細については、config_example.json を参照してください

スクリプトはリクエスト送信前にローカルで検証を行います:

  • 必須リクエストヘッダーが不足していないか、サンプル値のままになっていないかを確認します
  • Cookie が明らかに不完全でないかを確認します
  • x-ca-signature-headers に x-ca-key,x-ca-nonce が含まれているかを確認します
  • デフォルト設定の readType、type、pubStatus、creation_statement が有効かを確認します
手順 2:Markdown 記事の生成
  1. ユーザーの要望に応じて記事の内容を生成します(Markdown 形式)
  2. 現在の作業ディレクトリにある csdnarticle/ フォルダーに保存します
  3. ファイル名には {記事タイトル}.md を推奨します
# 确保 csdnarticle 目录存在
mkdir -p csdnarticle
手順 3:下書きの保存

ローカルの Markdown ファイルを CSDN の下書きとして保存します:

# 方式1:通过 --file 参数指定 Markdown 文件(推荐)
node {skills目录}/scripts/csdn_article.js save \
  --title "Python 异步编程实战" \
  --file csdnarticle/Python异步编程实战.md

# 方式2:通过 --content 参数直接传递内容
node {skills目录}/scripts/csdn_article.js save \
  --title "Python 异步编程实战" \
  --content "# Python 异步编程实战\n\n## 简介\n\n本文介绍Python异步编程..."

# 方式3:仅使用 --file 参数,自动提取文件名作为标题
node {skills目录}/scripts/csdn_article.js save \
  --file csdnarticle/Python异步编程实战.md

パラメーターの説明:

  • --title:記事のタイトル(--file を使用する場合は任意です。指定しない場合はファイル名が使用されます)
  • --content:Markdown の内容(--file とのいずれか一方を指定します)
  • --file:Markdown ファイルのパス(--content とのいずれか一方を指定します。こちらの使用を推奨します)
  • --config:設定ファイルのパス(デフォルト:csdn_config.json)

--file を使用して保存に成功すると、スクリプトは現在の作業ディレクトリに csdn_article_map.json を生成し、その Markdown ファイルに対応する記事 ID と URL を記録します。従来の --id パラメーターも引き続き使用できます。以降の update/publish では、--id を明示的に指定することも、このマッピングを再利用することもできます。

手順 4:下書きの確認

CSDN エディターで記事のレイアウト、形式、内容が正しいか確認するようユーザーに案内してください。問題がないことを確認したら、次の手順に進みます。

手順 5:記事の公開(公開する場合)

publish コマンドを使用し、--extra パラメーターで公開設定を渡します:

node {skills目录}/scripts/csdn_article.js publish \
  --id 159048943 \
  --title "Python 异步编程实战" \
  --file csdnarticle/Python异步编程实战.md \
  --extra '{"tags":"python,async","readType":"public","type":"original","creation_statement":1,"description":"Python 异步编程实战发布摘要"}'

--extra パラメーターの説明:

フィールド説明選択可能な値
tagsタグ(コンマ区切り、最大5個)python,async
readType公開範囲public(デフォルト値), private, read_need_fans, read_need_vip
type記事の種類original(デフォルト値), repost, translated
creation_statement創作に関する声明0=声明なし(デフォルト値), 1=一部の内容は AI の支援を受けて生成, 2=ネット上の情報をもとに統合して作成, 3=個人の見解であり、参考情報です
description記事の概要(最大256文字)-

API パラメーターの詳細については、api_reference.md を参照してください

ローカルでの事前検証

スクリプトはリクエスト送信前に以下のよくある問題を検出し、修正方法を提示します:

  • 設定項目の不足:Cookie、x-ca-nonce、x-ca-signature、x-ca-signature-headers、x-ca-key が不足しています
  • 設定のプレースホルダーが未置換:your_cookie_here、xxxxxx などのサンプル値が残っています
  • タイトルが空:--title が指定されておらず、ファイル名からタイトルを生成できません
  • タグが多すぎる:tags が5個を超えています
  • 概要が長すぎる:description が256文字を超えています
  • 公開フィールドの不足:publish モードで概要が指定されていないか、公開用の列挙値が無効です
  • 更新/公開対象の記事が見つからない:--id が指定されておらず、再利用可能なローカルマッピングもありません
ローカルの記事マッピングファイル
  • ファイル名:csdn_article_map.json
  • 生成タイミング:save/update/publish で --file を指定し、リクエストが成功した後
  • 用途:Markdown ファイルと記事 ID、記事 URL の対応関係を記録します
  • 効果:以降の update/publish で同じ --file を引き続き使用する場合、--id を明示的に指定することも、省略してマッピングを自動的に再利用することもできます

例:

# 首次保存,生成本地映射
node {skills目录}/scripts/csdn_article.js save \
  --file csdnarticle/Python异步编程实战.md

# 之后基于同一个文件更新,既可以继续传 --id,也可以直接复用映射
node {skills目录}/scripts/csdn_article.js update \
  --id 159048943 \
  --file csdnarticle/Python异步编程实战.md

# 或者省略 --id,自动从本地映射读取
node {skills目录}/scripts/csdn_article.js update \
  --file csdnarticle/Python异步编程实战.md

# 发布时同样既支持显式传 --id,也支持直接复用映射
node {skills目录}/scripts/csdn_article.js publish \
  --id 159048943 \
  --file csdnarticle/Python异步编程实战.md \
  --extra '{"tags":"python,async","description":"Python 异步编程的实战经验总结","creation_statement":1}'

# 或者省略 --id,自动从本地映射读取
node {skills目录}/scripts/csdn_article.js publish \
  --file csdnarticle/Python异步编程实战.md \
  --extra '{"tags":"python,async","description":"Python 异步编程的实战经验总结","creation_statement":1}'

ディレクトリ構成

csdn-article-publish/
├── SKILL.md                          # 技能说明文档
├── scripts/
│   └── csdn_article.js              # Node.js 脚本(核心执行脚本)
├── config/
│   ├── config_example.json           # 用户配置文件示例
│   └── user_agents.json             # 随机User-Agent列表
└── references/
  ├── api_reference.md             # CSDN API 详细文档
  └── troubleshooting.md           # 常见问题排查指南

実行時には、現在の作業ディレクトリに csdn_article_map.json も生成されます。このファイルはリポジトリでは管理されません。

使用例

例 1:記事を生成して下書きとして保存する

「Python の非同期プログラミングについての記事を書いてください。タイトルは『Python 非同期プログラミング実践』で、CSDN の下書きに保存してください」

実行手順:

  1. 記事の内容を生成します(Markdown 形式)
  2. csdnarticle/Python异步编程实战.md に保存します
  3. save コマンドを呼び出します:
    # 方式1:使用 --file 参数(推荐)
    node scripts/csdn_article.js save \
      --title "Python 异步编程实战" \
      --file csdnarticle/Python异步编程实战.md
    
    # 方式2:使用 --content 参数(内容较短时)
    node scripts/csdn_article.js save \
      --title "Python 异步编程实战" \
      --content "# Python 异步编程实战\n\n## 简介\n\n本文介绍..."
    
  4. 後続の操作に使用できる記事 ID を返します
例 2:下書きを更新する

「以前作成した CSDN の下書き(ID: 159048943)を更新し、タイトルを『Python 非同期プログラミング応用編』に変更してください」

実行手順:

  1. 新しい要望に応じて Markdown の内容を更新します
  2. csdnarticle/Python异步编程进阶.md に保存します
  3. update コマンドを呼び出します:
    # 方式1:使用 --file 参数(推荐,若已有本地映射可省略 --id)
    node scripts/csdn_article.js update \
      --id 159048943 \
      --title "Python 异步编程进阶" \
      --file csdnarticle/Python异步编程进阶.md
    
    # 方式2:使用 --content 参数
    node scripts/csdn_article.js update \
      --id 159048943 \
      --title "Python 异步编程进阶" \
      --content "# Python 异步编程进阶\n\n## 新增内容..."
    
例 3:記事を公開する

「ID 159048943 の記事を CSDN で公開してください。タグは python,async です」

実行手順:

  1. creation_statement、readType、type などのフィールドを確認するようユーザーに案内します
  2. publish コマンドを呼び出します:
    # 方式1:使用 --file 参数(推荐,若已有本地映射可省略 --id)
    node scripts/csdn_article.js publish \
      --id 159048943 \
      --title "Python 异步编程实战" \
      --file csdnarticle/Python异步编程实战.md \
      --extra '{"tags":"python,async","creation_statement":1,"readType":"public","type":"original","description":"Python 异步编程的发布版摘要"}'
    
    # 方式2:使用 --content 参数
    node scripts/csdn_article.js publish \
      --id 159048943 \
      --title "Python 异步编程实战" \
      --content "# Python 异步编程实战\n\n..." \
      --extra '{"tags":"python,async","creation_statement":1,"description":"Python 异步编程的发布版摘要"}'
    

トラブルシューティング

リクエストヘッダーの期限切れ、署名の無効化、レート制限、公開失敗など、よくある問題については、troubleshooting.md を参照してください

コメント