コンテンツにスキップ

CLI でメディアを上げる

hakocms-cli media upload で、画像やファイルをいくつもまとめて上げられます。上げたものは管理画面の[メディア]に並びます。

  • hakocms-cli でログインし、スペースを決めておきます(CLI でログインする)
  • メディアをアップロードできるロール(オーナー、管理者、編集者)を持っています
  • 1 つのファイルの大きさには上限があります(使える量の上限)

ファイルの名前を並べて渡します。シェルの * も使えます。

ターミナルウィンドウ
hakocms-cli media upload photos/*.png

1 つずつ送り、送るたびに進み具合が表示されます。最後に、上げたものの一覧が表示されます。

uploaded 1/2: mountain.png
uploaded 2/2: sea.png
ID FILE NAME KIND URL
1edtz5vle5gg mountain.png image https://<ホスト名>.hakocms.net/media/1edtz5vle5gg/mountain.png
k323zqmuvvvs sea.png image https://<ホスト名>.hakocms.net/media/k323zqmuvvvs/sea.png
  • 途中で失敗すると、そこで止まります。それまでに送ったものは残ります。失敗したファイルから、もう一度送ります
  • 同じファイルをもう一度送ると、別のメディアとして増えます。送り直す前に、管理画面か media list で、もう上がっていないかを確かめます

上げるときに、代替テキストとタグを付けられます。どちらも渡したすべてのファイルに付きます。タグは JSON の文字列の配列で渡します。

ターミナルウィンドウ
hakocms-cli media upload photos/*.png --alt "旅行の写真" --tags '["travel","2026"]'
ターミナルウィンドウ
hakocms-cli media update <メディア ID> --alt 海の写真 --tags '["sea","2026"]'

--tags は今のタグに足すのではなく、置き換えます。

ターミナルウィンドウ
hakocms-cli media list --tag 2026 --all # タグで
hakocms-cli media list --query sea # ファイル名・代替テキスト・タグで
hakocms-cli media list --kind file # 画像でないファイルだけ

エントリーの画像のフィールドに入れる

Section titled “エントリーの画像のフィールドに入れる”

画像のフィールドにはメディアの URL を {"url": "<URL>"} の形で入れます。上げたときに表示される URL を使います。

photos というコンテンツタイプに、image という画像のフィールドがあるときの例です。ファイルごとに、上げてから、その画像を入れたエントリーを作ります。

ターミナルウィンドウ
for f in photos/*.png; do
url=$(hakocms-cli media upload "$f" --jq '.[0].url')
hakocms-cli entries create -t photos \
--set "title=$(basename "$f" .png)" \
--set "image={\"url\":\"$url\"}" --jq .id
done

幅と高さは、Hako CMS がメディアから補います。

{ "url": "https://<ホスト名>.hakocms.net/media/pdegl1xwddch/mountain.png",
"width": 1200, "height": 800 }

ほかのスペースのメディアは入れられません。複数画像のフィールド(mediaList)には同じ形の配列を入れます。

メディアを消す前に、どのエントリーが使っているかを確かめます。

ターミナルウィンドウ
hakocms-cli media usages <メディア ID>

使っているエントリーのコンテンツタイプと ID が表示されます。どこにも使われていなければ、[] と表示されます。

ターミナルウィンドウ
hakocms-cli media delete <メディア ID>

消してよいかを聞かれます。スクリプトから消すときは --force を付けます。消したメディアの URL はすぐに使えなくなります。元に戻せません。

エントリーから使われているメディアは消せません。先に media usages で使っているエントリーを確かめ、そのエントリーからメディアを外します。

管理画面の[メディア]で、上げたファイルが並んでいること、代替テキストとタグが付いていることを確かめます。