コンテンツにスキップ

はじめての CLI

このページでは、hakocms-cli で Hako CMS にログインし、エントリーを 1 つ書き換えて公開するまでを、順にたどります。15 分ほどかかります。

  • hakocms-cli を入れておきます(CLI を入れる)
  • Hako CMS の環境と、エントリーの入ったスペースを用意しておきます。まだなら、クイックスタート で、スペース、コンテンツタイプ、エントリーを作ります。このページでは、クイックスタートと同じく、スペースのスラッグを blog、コンテンツタイプ ID を posts とします
  • エントリーを編集・公開できるロール(オーナー、管理者、編集者)で、そのスペースのメンバーになっておきます

このページに出てくる ID、日時、フィールドの値は例です。あなたの環境では、違う値が表示されます。

端末で、次のコマンドを実行します。<ホスト名> は、あなたの環境のホスト名に置き換えます。ホスト名は、管理画面のアドレス https://<ホスト名>.hakocms.net/admin の <ホスト名> の部分です。

ターミナルウィンドウ
hakocms-cli auth login --host https://<ホスト名>.hakocms.net

次のように、確かめの文字と URL が表示され、ブラウザが開きます。

First check this code in the browser: DCHP-QPXW
Approve the login at:
https://<ホスト名>.hakocms.net/admin/cli-login?code=DCHP-QPXW
Waiting for approval…

ブラウザに[CLI のログイン]の画面が表示されます。管理画面にログインしていなければ、先にログインします。

  1. 画面の文字が端末に表示された文字(この例では DCHP-QPXW)と同じかを確かめます
  2. [許可する]を押します。「許可しました。端末に戻ってください」と表示されます

端末に戻ると、次のように表示されています。

✓ Logged in to <ホスト名>.hakocms.net (https://<ホスト名>.hakocms.net) as you@example.com

ブラウザが開かないときは、端末に表示された URL を手元のブラウザで開きます。確かめの文字の期限は 10 分です。

ログインした環境のスペースを一覧にします。

ターミナルウィンドウ
hakocms-cli spaces list

あなたがメンバーになっているスペースが表示されます。

ID SLUG NAME ROLE CREATED AT
sdbm329n7t7o blog ブログ owner 2026-10-23T04:17:48.862Z

これから使うスペースを決めます。決めておくと、コマンドごとに --space blog を付けずに済みます。

ターミナルウィンドウ
hakocms-cli spaces use blog
✓ Using the space blog on <ホスト名>.hakocms.net

スペースのコンテンツタイプを一覧にします。

ターミナルウィンドウ
hakocms-cli content-types list
ID ENDPOINT NAME KIND UPDATED AT CREATED AT
k4xst7lr0ikx posts 記事 collection 2026-10-23T04:18:29.560Z 2026-10-23T04:18:29.560Z

[ENDPOINT]の列がコンテンツタイプ ID です。posts のエントリーを一覧にします。コンテンツタイプは --type(短く -t)で指定します。

ターミナルウィンドウ
hakocms-cli entries list -t posts
ID STATUS UPDATED AT CREATED AT
iazte4ghzm55 draft 2026-10-23T04:18:29.640Z 2026-10-23T04:18:29.640Z

左の[ID]がエントリーの ID です。次の手順で使います。

エントリーの値を見ます。<エントリー ID> は、手順 3 で表示された ID に置き換えます。

ターミナルウィンドウ
hakocms-cli entries get <エントリー ID> -t posts
id: iazte4ghzm55
contentTypeId: k4xst7lr0ikx
status: draft
published:
draft: {"title":"はじめての記事","body":"CLIから書きました"}
createdAt: 2026-10-23T04:18:29.640Z
updatedAt: 2026-10-23T04:18:29.640Z
publishedAt:
revisedAt:
reservation: {"publishAt":null,"closeAt":null,"error":null,"failedAt":null}

タイトルを書き換えます。--set に、フィールド ID と値を = でつないで渡します。

ターミナルウィンドウ
hakocms-cli entries update <エントリー ID> -t posts --set title=はじめての記事(直した)

draft の値の title が変わったことが表示されます。指定しなかったフィールド(body)は、そのまま残ります。

status: draft
draft: {"title":"はじめての記事(直した)","body":"CLIから書きました"}

この時点では、下書きに保存されただけです。管理画面の[保存]と同じで、サイトにはまだ出ません。

ターミナルウィンドウ
hakocms-cli entries publish <エントリー ID> -t posts

status が published になり、published に今の値が入ります。

status: published
published: {"title":"はじめての記事(直した)","body":"CLIから書きました"}
draft:
publishedAt: 2026-10-23T04:18:42.148Z

管理画面で、blog の[記事]のエントリーを開きます。タイトルが「はじめての記事(直した)」になり、公開されています。

Content API からも取り出せます(エントリーを取り出す)。

ターミナルウィンドウ
curl https://<ホスト名>.hakocms.net/api/v1/content/posts/<エントリー ID> \
-H "Authorization: Bearer <API キー>"