hashnode について
hashnodeは、HashnodeエディターのCookie認証APIを通じてブログ記事を管理するスキルです。下書きの作成、公開、削除に対応し、公開や削除には明示的な確認が必要です。
主な機能
- 01ブログ一覧の取得
- 02タグとカバー画像付きMarkdown下書きの作成
- 03確認後の記事公開
- 04確認後の下書き・記事の削除
- 05公開記事が表示中かの確認
活用シーン
- 01アカウントに紐づくブログの確認
- 02非公開下書きの準備と保存
- 03承認済み記事の公開
- 04下書きまたは既存記事の削除
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ acedatacloud/ skills --skill hashnodeインストール後、Claude Code で/hashnodeを入力して読み込まれたか確認します。
同梱ファイルscripts/hashnode.py
詳細
hashnode — 独自の Cookie を使って Hashnode ブログに公開(Pro 不要)
Hashnode は 公開 GraphQL API を有料の Pro プラン限定にしました(2026-05-13)。そのため、Personal Access Token では無料で公開できなくなりました。このスキルでは代わりに、Hashnode のウェブエディターが使用する同じファーストパーティ REST API(https://hashnode.com/api/...)を、ユーザーのログインセッション Cookieで認証して操作します。これは無料で、Pro プランも不要です。
コネクターは Cookie jar を HASHNODE_COOKIES として(JSON 配列で)渡します。セッション Cookie は hashnode-session です。秘密情報です。アカウントへのフルアクセス権があります。絶対にそのまま返したり、出力したりしないでください。
E2E 検証済み(2026-07-12、実際に接続されたブログで実施):Publication の一覧表示、下書きの作成と保存(タイトル/サブタイトル/カバー/タグ/Markdown)、公開、削除をすべて Cookie 認証で実施。Pro 不要。
セットアップ — 独自のスクリプトを基準にする
# $SKILL_DIR can point at another skill loaded this turn — anchor on our script.
H="$SKILL_DIR/scripts/hashnode.py"; [ -f "$H" ] || H=$(find /tmp -maxdepth 8 -path '*/skills/*/hashnode/scripts/hashnode.py' 2>/dev/null | head -1)
[ -f "$H" ] || { echo "hashnode script not found (SKILL_DIR=$SKILL_DIR)" >&2; exit 1; }
python3 "$H" publications # list the user's blogs (verifies the cookie)
認証エラーが発生した場合、Cookie の有効期限が切れています。ユーザーに https://studio.acedata.cloud/console/connectors から再接続してもらってください。再試行を繰り返さないでください。
⚠️ Pro 以外のブログは自動モデレーションの対象です — 広告ではなく、編集記事を書いてください
これが最も重要なルールです。Pro 以外の Publication は、Hashnode の自動モデレーションの対象です。露骨に宣伝する投稿(煽るような表現、「無料クレジット!!」、同じ CTA リンクを 3~4 回繰り返すなど)は、数秒以内に自動削除されます。公開呼び出しは成功を返しますが、その後、公開 URL は 404 になります。(Pro の唯一の利点は「自動モデレーションによる削除からの保護」です。)
公開状態を維持するには、製品が登場するハウツー/ガイドとして、実際に役立つ内容を書いてください。
- 教育的な切り口と、具体的なタイトルを付けます(例:「…(初心者向けガイド)」)。
- 使用するリンクは、節度あるものを数個までにし、同じ CTA を繰り返さないでください。
- 「期間限定!! 今すぐ申し込もう!!」のようなマーケティング調の文体は避けてください。
publish は公開後にライブ URL を再取得し、投稿がモデレーションで削除されていた場合は warning を返します。その場合は、編集記事として書き直してから再公開してください。
読み取り
python3 "$H" publications # {publications:[{id,title,url}]}
非公開の下書きを保存(安全、公開されません)
python3 "$H" draft \
--title "My Title" \
--subtitle "Optional subtitle" \
--content-file article.md \
--cover "https://cdn.example.com/cover.jpg" \
--tags ai,apis
# → {draft_id, editor_url}. Nothing is public yet.
--content-fileは Markdown 本文を指定します(長い投稿にはファイルを使い、短い文字列をインラインで指定する場合は--contentを使います)。インラインの画像やリンクには、通常の Markdown を使用します。--coverはヘッダー画像/カバー画像を設定します(OG 画像としても使用されます)。--tagsはカンマ区切りのスラッグです(ai,apis,web-development)。Hashnode のタグ ID に自動的に解決されます(最大 5 個)。--publication <id>が必要なのは、アカウントに複数のブログがある場合だけです。
公開 — 要確認(末尾に --confirm がなければドライラン)
python3 "$H" publish --title "My Title" --content-file article.md --cover "https://…" --tags ai,apis # dry-run
python3 "$H" publish --title "My Title" --content-file article.md --cover "https://…" --tags ai,apis --confirm # LIVE
# → {ok, url} (or {ok:false, warning:"…automoderation removed…"} — rewrite editorially)
publish を確認して実行すると、ユーザーの実際のブログですぐに公開されます。必ず最終的なタイトルと本文を見せ、明示的な「はい」を得てから、最後の引数に --confirm を付けて実行してください。
下書きまたは投稿を削除 — 要確認
python3 "$H" delete --id <draftOrPostId> # dry-run
python3 "$H" delete --id <draftOrPostId> --confirm # delete
注意事項
- Pro なし、PAT なし。 有料の Pro プランが必要な
gql-beta.hashnode.comではなく、Cookie 認証を使うhashnode.com/api/*のエディター API を使用します。 - 無料ブログでは、主な失敗要因は(上記の)自動モデレーションです。編集記事として書いてください。
- これはユーザーの実際のブログです。 公開や削除の前に確認してください。
HASHNODE_COOKIESを絶対に出力しないでください。 アカウントへのフルアクセス権があります。- ファーストパーティの内部 APIです。Hashnode がエディターを更新すると変更される可能性があります。呼び出しが予期せず HTML/404 を返し始めた場合は、上流側での変更として報告してください。
出力を記録する
公開に成功し、ライブ結果の URL を取得したら、組み込みの publish_artifact ツールを 1 回呼び出して、ユーザーが My Outputs でこの成果物を追跡できるようにしてください。
publish_artifact(kind="article", channel="hashnode", title="<title>", url="<the REAL returned URL>", status="delivered")
実際に返された URL を使ってください。URL を捏造してはいけません。公開した項目ごとに 1 回だけ、公開が確認された後に呼び出してください。公開に失敗した場合は呼び出しを省略するか、status="failed" を使ってください。_shared/artifacts.md を参照してください。