新規ブログ記事の作成。「記事を書きたい」「新しい記事を作成」「ブログ投稿」などのリクエスト時に使用。
新規 Markdown 記事を作成するスキル。
2つの方法がある。CMS API(推奨)を優先し、API が利用できない場合はファイル直接作成を使用。
| 方法 | 説明 | 利用シーン |
|---|---|---|
| CMS API(推奨) | API 経由で記事を投稿 | 本番環境への投稿 |
| ファイル直接作成 | Markdown ファイルを直接配置 | API が利用できない場合のフォールバック |
.envrc.local が設定済みであること:
# 初回セットアップ
cp .envrc.local.example .envrc.local
vim .envrc.local # API キーを設定
direnv allow
| 変数名 | 説明 | 値 |
|---|---|---|
SKILL_CMS_API_URL |
CMS API エンドポイント | https://cms-api.tqer39.workers.dev/v1 |
SKILL_CMS_API_KEY |
CMS API 認証キー | Cloudflare Workers から取得 |
status: "draft" として投稿| メソッド | エンドポイント | 用途 |
|---|---|---|
| POST | /articles |
記事作成 |
| POST | /articles/{hash}/publish |
公開 |
| POST | /articles/{hash}/unpublish |
下書きに戻す |
source .envrc.local && curl -X POST "${SKILL_CMS_API_URL}/articles" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${SKILL_CMS_API_KEY}" \
-d '{
"title": "記事タイトル",
"content": "## はじめに\n\n本文...",
"description": "SEO用の記事説明",
"status": "draft",
"tags": ["Tag1", "Tag2"]
}'
レスポンス例:
{
"hash": "01kgktn8xbv4wqzg1bg3hyj83b",
"title": "記事タイトル",
"status": "draft",
"createdAt": "2026-02-04 08:00:20"
}
source .envrc.local && curl -X POST "${SKILL_CMS_API_URL}/articles/{hash}/publish" \
-H "Authorization: Bearer ${SKILL_CMS_API_KEY}"
source .envrc.local && curl -X POST "${SKILL_CMS_API_URL}/articles/{hash}/unpublish" \
-H "Authorization: Bearer ${SKILL_CMS_API_KEY}"
{
title: string; // 必須
content: string; // 必須(Markdown 本文)
description?: string; // SEO 用説明文
status?: 'draft' | 'published'; // デフォルト: draft
tags?: string[]; // タグ配列
categoryId?: string | null; // カテゴリ ID
}
source .envrc.local が必須: direnv は自動読み込みされないAuthorization: Bearer {token} 形式CMS API が利用できない場合に使用。
apps/blog/src/contents/YYYY-MM-DD-slug.md
YYYY-MM-DD-slug.mdhello-world, nextjs-tips)---
title: "記事タイトル"
date: "YYYY-MM-DD"
published: true
tags: ["Tag1", "Tag2"]
description: "SEO用の記事説明(100-160文字程度)"
---
| フィールド | 必須 | 説明 |
|---|---|---|
| title | Yes | 記事タイトル(日本語可) |
| date | Yes | 公開日(YYYY-MM-DD形式) |
| published | Yes | true: 公開 / false: 下書き |
| tags | Yes | タグの配列(2-5個推奨) |
| description | Yes | SEO用説明文 |
---
title: "タイトル"
date: "YYYY-MM-DD"
published: false
tags: ["Tag"]
description: "説明"
---
## はじめに
導入文をここに。
## 本文
メインコンテンツ。
## まとめ
締めくくり。
published: false で作成(ユーザー確認後、true へ変更)just lint を実行してエラーがないことを確認:filename.ext)/public/images/ に配置し /images/xxx.png で参照