社内に開発チームのある方へ
書くのはマーケ、組むのはエンジニア
マーケティングやサポートの人が管理画面で書き、エンジニアは型のついた API で組みます。マーケサイト、ブログ、ヘルプ、更新情報に使えます。
型がついてくる
スペースのスキーマから、TypeScript の型(/api/v1/schema/types.ts)、OpenAPI 3.1 の定義(/api/v1/schema/openapi.json)、GraphQL のスキーマを書き出せます。フィールドを足したら、型を書き出し直すだけです。
ほかの言語では、OpenAPI の定義から、その言語の道具でクライアントを作れます。
// 新しい順に 10 件。型は /api/v1/schema/types.ts から書き出したもの
import type { News } from "./hako-types";
const res = await fetch(
"https://acme.hakocms.net/api/v1/content/news?order=-sys.publishedAt&limit=10",
{ headers: { Authorization: `Bearer ${process.env.HAKO_KEY}` } },
);
const { items } = (await res.json()) as { items: News[] };管理画面でできることは、
すべてコマンドでも
hakocms-cli を使うと、管理画面でできる操作をすべてコマンドで行えます。スキーマのファイルを CI からスペースに反映したり、エントリーをまとめて書き換えたりできます。Linux、macOS、Windows 向けの 1 つの実行ファイルです。
CLI は管理画面と同じ Admin API を使い、ログインした人と同じ権限で動きます。行った操作は監査ログに残ります。複数の環境にログインしておき、切り替えて使うこともできます。
hakocms-cli auth login --host https://<ホスト名>.hakocms.net
# リポジトリのスキーマのファイルを、差分を見てからスペースに反映する
hakocms-cli schema diff blog.hako.json --space blog
hakocms-cli schema apply blog.hako.json --space blog
# 下書きのエントリーを、まとめて公開する
hakocms-cli entries list -t posts --status draft --all \
--jq '.[].id' |
while read -r id; do
hakocms-cli entries publish "$id" -t posts
done式で絞り込む
REST では、SQL の WHERE 句のような式で絞り込みます。GraphQL では、同じ演算子を入力の型で書きます。どちらも意味は同じです。
GET /api/v1/content/news?where=category contains "press" and sys.publishedAt >= "2026-04-01" GET /api/v1/content/products?where=price < 1000 and (stock > 0 or preorder = true)&order=price
query {
newsCollection(
where: { category: { contains: "press" } }
order: [sys_publishedAt_DESC]
limit: 10
) {
total
items { sys { id } title category }
}
}参照は、段数を決めてその場に展開します(REST の include=2)。返す項目は select で選べます。
公開したら、サイトが変わる
Webhook で再ビルド
公開や更新のたびに通知を送ります。Vercel や Netlify の再ビルドの形を選べ、続けて公開したときは 1 回にまとめます。自前の受け手には、署名(HMAC-SHA256)付きの本文を送ります。
下書きのプレビュー
プレビューの権限を付けた API キーと preview=true で、下書きを読めます。このキーはサイトのサーバーの中にだけ置きます。サイトのサーバーで、見に来た人とプレビューの指定を確かめ、見せてよいときだけこのキーで読むようにすると、下書きをその人に見せられます。
画像の変換
画像の URL に ?w=800&fm=avif のようなパラメーターを付けると、大きさを変え、WebP や AVIF にして返します。
書く人の権限を分ける
コンテンツタイプごとに「読む・書く・公開する」を分けたロールを作れます。API キーも、読めるコンテンツタイプ、書けるかどうか、下書きを読めるかを、キーごとに決められます。
日本語で探せる
日本語の全文検索が入っています(REST の q、GraphQL の q)。サイト内の検索のために、外部の検索サービスを足す必要はありません。
フリーのプランで試せます。カードは要りません。