csdn-article-publish について
Markdown記事を準備し、CSDNの下書きや公開を管理するスキルとNode.jsスクリプトです。リクエスト前に設定や公開項目をローカルで検証し、後続の更新に使えるファイルと記事の対応関係を記録します。
主な機能
- 01MarkdownをCSDNの下書きとして保存
- 02記事の更新と公開
- 03リクエスト前の設定検証
- 04ファイル、記事ID、URLの追跡
- 05ローカル記事マッピングの管理
活用シーン
- 01ローカルのMarkdown記事を下書き保存
- 02ファイルの対応情報を使った記事更新
- 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.jsonuser_agents.jsonreferences/api_reference.mdtroubleshooting.mdscripts/csdn_article.jsmarkdown_to_html.jsmarked.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
リクエストヘッダーの取得方法
- CSDN にログインし、https://editor.csdn.net/md/ Markdown スタイルの記事エディターを開きます
- タイトルと内容を入力し、「下書きとして保存」をクリックします
- ブラウザーの開発者ツール(F12)を開きます
- Network(ネットワーク)タブに切り替えます
saveArticleリクエストを見つけ、右クリック → Copy → Copy as cURL を選択します- curl コマンドから以下のリクエストヘッダーを抽出します:
Cookie:ユーザーのログイン Cookiex-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 記事の生成
- ユーザーの要望に応じて記事の内容を生成します(Markdown 形式)
- 現在の作業ディレクトリにある
csdnarticle/フォルダーに保存します - ファイル名には
{記事タイトル}.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 の下書きに保存してください」
実行手順:
- 記事の内容を生成します(Markdown 形式)
csdnarticle/Python异步编程实战.mdに保存します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本文介绍..."- 後続の操作に使用できる記事 ID を返します
例 2:下書きを更新する
「以前作成した CSDN の下書き(ID: 159048943)を更新し、タイトルを『Python 非同期プログラミング応用編』に変更してください」
実行手順:
- 新しい要望に応じて Markdown の内容を更新します
csdnarticle/Python异步编程进阶.mdに保存します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 です」
実行手順:
- creation_statement、readType、type などのフィールドを確認するようユーザーに案内します
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 を参照してください