ニュースやブログを管理する
Claude Code から記事を投稿する
管理画面の AI チャットではなく、ご自身のターミナル上の Claude Code から presto.pw に記事を追加・更新する手順です。LLM の利用料金は Claude Code の契約に含まれ、presto.pw 側で追加課金は発生しません。
| 用途 | エンドポイント | API キー |
|---|---|---|
| 記事の取得(サイト埋め込み) | /api/public/... | チェックなし(読み取り専用) |
| 記事の作成・更新(AI エージェント) | /api/agent/... | 「AI から投稿・更新を許可」あり(書き込み) |
pcms_... 形式ですが、権限と使えるエンドポイントが異なります。読み取り専用で React や静的サイトから記事を取得したい場合は コンテンツAPI ガイド を参照してください。1. 投稿用 API キーを発行する
- 管理画面の
/dashboard/settingsで対象サイトを選択します。 - + 新規発行 をクリックし、ラベルを付けます。
- AI(Claude Code など)から記事を投稿・更新を許可できるようにする にチェックを入れて発行します。
- 表示された
pcms_...キーを控えます(再表示できないので忘れず控えておきましょう)
チェックなしのキーは公開 Content API(/api/public/...)の読み取り専用です。詳細は コンテンツAPI ガイド を参照してください。
投稿には必ずチェックありの書き込み用キーを使ってください。
2. Claude Code に MCP を接続する
API ベース URL: https://api.presto.pw
claude mcp add --scope project --transport http presto https://api.presto.pw/mcp --header "Authorization: Bearer pcms_YOUR_WRITE_KEY"
プロジェクトルートに .mcp.json を置く場合:
{
"mcpServers": {
"presto": {
"type": "http",
"url": "https://api.presto.pw/mcp",
"headers": {
"Authorization": "Bearer pcms_YOUR_WRITE_KEY"
}
}
}
}キーはサイトごとに紐づきます。複数サイトを扱う場合は、サイトごとにキーと MCP 設定を用意してください。
3. 使い方の例
Claude Code に自然言語で指示すると、MCP ツール(list_content_sets、create_entry、update_entry、upload_media など)を自動で呼び出します。コンテンツセットは id(例: news、blog)または表示名で指定できます。以下の例ではnews / blog を使っていますが、ご自身のセット名に読み替えてください。
既定のステータスは下書きです。公開する場合はプロンプトで明示するか、管理画面で公開してください。
新規作成
下書きで新規作成 — チャット内にタイトルと Markdown 本文を書いて保存します。
このサイトの news コンテンツセットに、以下の Markdown で記事を下書き保存して。 タイトル: サービスをアップデートしました ## サービスをアップデートしました 本日、**ダッシュボード**の操作性を改善しました。 ### 主な変更点 - 記事一覧の表示を調整 - 下書き保存の応答を改善 1. 管理画面で確認 2. 公開 API で取得 > 詳細は管理画面のお知らせもご確認ください。 *斜体* と ~~打ち消し線~~ も使えます。 --- [リリースノート全文](https://example.com/release)
Markdown ファイルから作成 — リポジトリ内の .md を読んで投稿します。
docs/release-note.md を読んで blog コンテンツセットに下書き保存して。タイトルはファイル名から推測して。
公開記事として作成 — いきなり公開したい場合は status: published を指定します。
news コンテンツセットに以下の内容で公開記事として保存して(status: published)。 タイトル: サービスをアップデートしました ## サービスをアップデートしました 本日、**ダッシュボード**の操作性を改善しました。 ### 主な変更点 - 記事一覧の表示を調整 - 下書き保存の応答を改善 1. 管理画面で確認 2. 公開 API で取得 > 詳細は管理画面のお知らせもご確認ください。 *斜体* と ~~打ち消し線~~ も使えます。 --- [リリースノート全文](https://example.com/release)
更新・公開
既存記事の本文を更新 — 記事一覧・詳細を取得してから、本文を差し替えます。
news コンテンツセットの記事一覧を確認し、「サービスをアップデートしました」という記事を取得して、以下の Markdown で本文を差し替えて。 ## サービスをアップデートしました 本日、**ダッシュボード**の操作性を改善しました。 ### 主な変更点 - 記事一覧の表示を調整 - 下書き保存の応答を改善 1. 管理画面で確認 2. 公開 API で取得 > 詳細は管理画面のお知らせもご確認ください。 *斜体* と ~~打ち消し線~~ も使えます。 --- [リリースノート全文](https://example.com/release)
下書きを公開に変更 — ステータスだけを変更します。
news コンテンツセットの下書き「サービスをアップデートしました」を公開ステータスに変更して。
タイトルだけ修正 — 部分更新の例です。本文は触りません。
news コンテンツセットの「旧タイトル」という記事のタイトルを「新タイトル」に変更して。本文は変更しないで。
確認
コンテンツセット・記事一覧の確認 — 投稿前にセット名や既存記事を確認します。
このサイトのコンテンツセット一覧と、news の記事一覧(下書き含む)を教えて。
メディアへ画像をアップロード
画像ファイルをメディアライブラリに投稿 — 管理画面の「メディア」に表示されます。 返ってきた url は公開配信用 URL です。
screenshot.png をメディアライブラリにアップロードして。返ってきた url を教えて。
1 ファイルあたり最大 5MB。対応形式: JPEG / PNG / WebP / GIF / AVIF / SVG。 記事本文の Markdown に  として画像を埋め込む機能はまだ非対応です。アップロード後は管理画面の記事エディタから画像を挿入してください。
Markdown のサンプル
プロンプトに渡す本文の例です。Markdown 本文への画像埋め込みは非対応です。対応記法の一覧はセクション 6 を参照してください。
## サービスをアップデートしました 本日、**ダッシュボード**の操作性を改善しました。 ### 主な変更点 - 記事一覧の表示を調整 - 下書き保存の応答を改善 1. 管理画面で確認 2. 公開 API で取得 > 詳細は管理画面のお知らせもご確認ください。 *斜体* と ~~打ち消し線~~ も使えます。 --- [リリースノート全文](https://example.com/release)
オプション(slug・タグ)
slug・タグを指定して作成 — URL 用の slug やタグを指定できます。
blog コンテンツセットに slug: my-post、tags: ["release", "update"] を指定して、以下の Markdown で下書き保存して。 タイトル: サービスをアップデートしました ## サービスをアップデートしました 本日、**ダッシュボード**の操作性を改善しました。 ### 主な変更点 - 記事一覧の表示を調整 - 下書き保存の応答を改善 1. 管理画面で確認 2. 公開 API で取得 > 詳細は管理画面のお知らせもご確認ください。 *斜体* と ~~打ち消し線~~ も使えます。 --- [リリースノート全文](https://example.com/release)
記事タグは Pro プラン以上で利用できます。無料プランではタグ指定はエラーになります。
更新する場合は list_entries / get_entry で既存記事を確認し、update_entry で部分更新できます。保存後、レスポンスの editUrl から管理画面のエディタを開けます。
4. 利用可能な MCP ツール
| ツール | 用途 |
|---|---|
get_site | キーに紐づくサイト(id / name / slug) |
list_content_sets | コンテンツセット一覧(下書きセットも含む) |
list_entries | 記事一覧 |
get_entry | 記事1件(bodyMarkdown 付き) |
create_entry | Markdown から記事作成 |
update_entry | 記事の部分更新 |
upload_media | 画像をメディアライブラリにアップロード(id / key / url を返す) |
5. REST API(任意)
MCP の代わりに HTTP でも同じ操作ができます。認証は Authorization: Bearer pcms_...(投稿用キー)です。ここで使うのは /api/agent/... であり、読み取り専用の /api/public/... とは別のエンドポイントです。
| Method | Path | 用途 |
|---|---|---|
| GET | /api/agent/site | サイト情報 |
| GET | /api/agent/content-sets | コンテンツセット一覧 |
| GET | /api/agent/content-sets/:ref/entries | 記事一覧 |
| GET | /api/agent/content-sets/:ref/entries/:id | 記事1件 |
| POST | /api/agent/content-sets/:ref/entries | 記事作成(title, bodyMarkdown) |
| PATCH | /api/agent/content-sets/:ref/entries/:id | 記事更新 |
| POST | /api/agent/media | 画像アップロード(multipart の file フィールド) |
:ref にはコンテンツセットの id(例: news)または表示名を指定できます。
メディアアップロード(curl)
curl -X POST https://api.presto.pw/api/agent/media \ -H "Authorization: Bearer pcms_YOUR_WRITE_KEY" \ -F "file=@screenshot.png"
成功時は id、key、url などを含む JSON が返ります。url は認証不要で配信される公開 URL です。
6. Markdown の対応範囲
サーバーが Lexical リッチテキストに変換します。対応: 段落、見出し(h1–h3)、箇条書き・番号付きリスト、引用、水平線、リンク、太字・斜体・打ち消し線。Markdown 本文への画像()は非対応です。画像は upload_media でメディアに投稿し、管理画面のエディタから挿入してください。
保存後、管理画面の記事エディタでそのまま開いて編集できます。