Gyazo APIでコマンドラインから画像をアップロードする

公開日:
目次

CLIから画像をGyazoにアップロードしたかったので、Gyazo APIを使う方法を調べました。備忘録として残します。

アクセストークンの取得

Gyazo APIを使うにはアクセストークンが必要です。以下の手順で取得します。

Gyazoのアプリケーション管理ページにアクセスします。

「New Application」をクリックします。

Image from Gyazo

以下の入力フォームが表示されます。

Image from Gyazo

  • Name:アプリケーションの識別名です。自分がわかる名前を入力してください(例:cli-upload
  • Callback URL:OAuth認証後のリダイレクト先URLです。CLIから使う場合は認証フローを使わないので、http://localhost と入力しておけば問題ありません

登録が完了すると、アプリケーション一覧に追加されます。作成したアプリケーションを選択してください。

Image from Gyazo

アプリケーションの詳細ページが表示されます。「Your Access Token」セクションの「Generate」ボタンをクリックします。

Image from Gyazo

アクセストークンが発行されます。このトークンをコピーして保存してください。

Image from Gyazo

環境変数への設定

トークンを環境変数に設定しておくと便利です。

export GYAZO_ACCESS_TOKEN="取得したトークン"

永続化する場合は ~/.zshrc~/.bashrc に追記してください。

curlでのアップロード

画像ファイルをGyazoにアップロードするには、以下のコマンドを実行します。

curl -i "https://upload.gyazo.com/api/upload?access_token=$GYAZO_ACCESS_TOKEN" \
  -F "imagedata=@./screenshot.png"

-F "imagedata=@ファイルパス" でアップロードする画像を指定します。

レスポンスの確認

アップロードが成功すると、JSON形式でレスポンスが返ってきます。

{
  "image_id": "abcdef123456",
  "permalink_url": "https://gyazo.com/abcdef123456",
  "thumb_url": "https://thumb.gyazo.com/thumb/abcdef123456",
  "url": "https://i.gyazo.com/abcdef123456.png",
  "type": "png"
}

Markdownで使う場合は url フィールドの値を使います。

![Image from Gyazo](https://i.gyazo.com/abcdef123456.png)

シェルスクリプト化

頻繁に使う場合はスクリプト化しておくと便利です。

gyazo-upload.sh
#!/bin/bash
if [ -z "$1" ]; then
  echo "Usage: gyazo-upload.sh <image_path>"
  exit 1
fi

curl -s "https://upload.gyazo.com/api/upload?access_token=$GYAZO_ACCESS_TOKEN" \
  -F "imagedata=@$1" | jq -r '.url'

このスクリプトを使うと、画像のURLだけが出力されます。

./gyazo-upload.sh screenshot.png

実行すると https://i.gyazo.com/xxxxx.png のようなURLが返ってきます。