エントリーをまとめて書き換える・取り出す
管理画面で 1 件ずつ直すと時間のかかる作業を、hakocms-cli でまとめて行えます。このページの例では、スペースを blog、コンテンツタイプ ID を posts とします。
hakocms-cliでログインし、スペースを決めておきます(hakocms-cli spaces use blog。CLI でログインする)。決めていないときは、コマンドごとに--space blogを付けます- エントリーを編集・公開できるロール(オーナー、管理者、編集者)を持っています
- まとめて行う前に、少ない件数で試します。消す操作は元に戻せません
絞って一覧にする
Section titled “絞って一覧にする”一覧は既定で 30 件です。--all で全部のページをたどります。
hakocms-cli entries list -t posts --all| 絞り方 | フラグ | 例 |
|---|---|---|
| 状態 | --status |
--status draft(下書き)、--status published,closed(どれかに当てはまるもの) |
| 言葉 | --query |
--query お知らせ(全文検索) |
| 並び | --orders |
--orders -updatedAt(更新の新しい順。- で降順) |
| 件数 | --limit |
--limit 100 |
状態の値は draft(下書き)、published(公開中)、closed(公開終了)、reserved(予約公開の待ち)です。公開中のエントリーに下書きがあるときは、一覧の[STATUS]に published_with_draft と表示されます。
ID だけを取り出す
Section titled “ID だけを取り出す”--jq で、JSON を jq の式で絞れます。jq を別に入れる必要はありません。
hakocms-cli entries list -t posts --status draft --all --jq '.[].id'1 行に 1 つ、ID が表示されます。
wsa5cu2ittq59ngd93ymaerrhfyrv6ip6ol0まとめて公開する
Section titled “まとめて公開する”下書きのエントリーを、すべて公開します。上で取り出した ID を 1 つずつ entries publish に渡します。
hakocms-cli entries list -t posts --status draft --all --jq '.[].id' | while read -r id; do hakocms-cli entries publish "$id" -t posts --jq '"\(.id) \(.status)"' done公開したエントリーごとに、ID と状態が表示されます。
wsa5cu2ittq5 published9ngd93ymaerr publishedhfyrv6ip6ol0 published公開できないエントリー(必須のフィールドが空、など)があると、その行で理由が表示され、次のエントリーに進みます。--jq を付けているので、理由は JSON で表示されます。
{"error":{"status":400,"message":"title: is required"}}同じ形で、entries unpublish(公開を終える)、entries delete(削除する)もまとめて行えます。削除するときは、1 件ごとに消してよいかを聞かれます。端末でないところ(パイプやスクリプト)では聞けないので、--force を付けます。
値をまとめて書き換える
Section titled “値をまとめて書き換える”entries update は、今の値に --set の値を重ねて、下書きに保存します。指定しなかったフィールドは、そのまま残ります。
hakocms-cli entries update <エントリー ID> -t posts --set body=書き換えた本文--setの値は、JSON として読めれば JSON として、読めなければ文字列として送られます。--set count=3は数、--set featured=trueは真偽値、--set tags='["news","tech"]'は配列、--set title=helloは文字列です- 文字列の
3やtrueを入れたいときは、JSON の文字列にします(--set code='"3"') - 公開中のエントリーを書き換えると、公開版はそのままで、下書きができます(状態は
published_with_draft)。すぐに公開するときは--publishを付けます
全部のエントリーの body の末尾に、同じ文を足す例です。
hakocms-cli entries list -t posts --all --jq '.[].id' | while read -r id; do body=$(hakocms-cli entries get "$id" -t posts \ --jq '(.draft // .published).body // ""') hakocms-cli entries update "$id" -t posts \ --set "body=${body}(この記事は 2026 年 10 月に更新しました)" --jq .id done(.draft // .published) で、下書きがあれば下書き、なければ公開版の値を使います。
JSON で取り出す
Section titled “JSON で取り出す”エントリーを JSON で取り出して、ほかの道具に渡せます。--json は Admin API の応答をそのまま出します(一覧は、エントリーの配列)。
hakocms-cli entries list -t posts --all --json > posts.json必要な項目だけを、1 行に 1 件の JSON にするには、tojson を使います。
hakocms-cli entries list -t posts --all \ --jq '.[] | {id, title: .published.title} | tojson'{"id":"hfyrv6ip6ol0","title":"お知らせ 1"}{"id":"9ngd93ymaerr","title":"お知らせ 2"}{"id":"wsa5cu2ittq5","title":"お知らせ 3"}サイトに表示する形(参照の展開など)で取り出したいときは、CLI ではなく Content API を使います(エントリーを取り出す)。スペースを丸ごと別の環境に写すときは、hakocms-cli exports create と imports create を使います(CLI のコマンドのリファレンス:書き出し)。
ファイルから作る
Section titled “ファイルから作る”値を JSON のファイルに書いて、--data @<ファイル> で渡します。標準入力から渡すときは --data - です。
{ "title": "ファイルから", "body": "JSON で渡しました" }hakocms-cli entries create -t posts --data @post.json --publish--publish を付けると、下書きにせず公開します。付けなければ下書きになります。
ほかの CMS から移すときは、1 件ずつのファイルにしてから、くり返し entries create に渡します。
for f in export/*.json; do hakocms-cli entries create -t posts --data "@$f" --jq .iddoneフィールドの値の形(画像、参照、リッチテキストなど)は フィールドの種類と値の形 と リッチテキストの形 にあります。画像は先に上げて、その URL を {"url": "<URL>"} の形で値に入れます(CLI でメディアを上げる)。
エディタで直す
Section titled “エディタで直す”entries edit は、エントリーの値を JSON のファイルにして、エディタで開きます。保存して閉じると、下書きに保存されます。
hakocms-cli entries edit <エントリー ID> -t posts開くエディタは環境変数 VISUAL、なければ EDITOR で決まります(export EDITOR=vim)。
予約公開を決める
Section titled “予約公開を決める”hakocms-cli entries schedule <エントリー ID> -t posts --publish-at 2026-11-01T09:00:00+09:00-
日時は RFC 3339 の形で、時差を付けて書きます(日本時間なら
+09:00) -
公開を終える日時は
--close-atです。どちらも今から 1 年以内です -
予約を取り消すときは、
--dataでnullを渡しますターミナルウィンドウ hakocms-cli entries schedule <エントリー ID> -t posts --data '{"closeAt":null}'
管理画面で、コンテンツタイプのエントリーの一覧を開き、状態と値が変わっていることを確かめます。CLI からは、同じ絞り方で一覧にして、件数を数えます。
hakocms-cli entries list -t posts --status draft --all --jq 'length'