1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Gyazo APIのカスタムノードを作ってみた

Last updated at Posted at 2025-12-22

こんにちは、のびすけです。

Gyazoは無料で画像のアップロードに使えて便利ですよね。

こんな記事を書いてる方もいますが、GyazoのAPIはさらに便利でハッカソンとかちょっとした何かを作るときにも役立ちます。

Node-REDで扱うときにちょうど良いカスタムノードが無かったので作ってみました。

node-red-contrib-gyazo-api

node-red-contrib-gyazo-apiでパレットから追加かnpm i node-red-contrib-gyazo-apiでインストールできるはず。

node-red-contrib-gyazoにするか悩みつつ誰か公式っぽい人が作ろうってなるかもしれないので-apiをつけて少しズラしておきました。

4つのノード

取り急ぎ4つのノードを作成しました。

Configノード

とりあえず最近のカスタムノード作成はグローバル設定ノードを作るのがたぶん主流なので入れてます。

Gyazoのアクセストークンを取得して設定します。

CleanShot 2025-12-22 at 19.31.10.png

アクセストークンはGyazoのApplicationsページで作成できます。

Get Listノード

シンプルに直近の画像リストを取得します。

CleanShot 2025-12-22 at 19.33.34.png

※細かい検索は今の所できないです。

Get Imageノード

画像のIDを指定してその画像の情報を取得するノードです。

CleanShot 2025-12-22 at 19.35.14.png

msg.payload = {
    image_id: '013e25d1fc15977c916bf665254ba31c'
};
return msg;

Uploadノード

バッファーを受け取って画像をアップロードします。

この例だとカメラ画像を受けてアップロードしています。

CleanShot 2025-12-22 at 19.24.36.png

AboartController

先日 #JSFES で教えてもらったAboartController()を使ってタイムアウト処理も入れてみました。

APIアクセス時に指定しています。

//省略

const GYAZO_TOKEN = configNode.accessToken;
const UPLOAD_ENDPOINT = 'https://upload.gyazo.com/api/upload';

// payloadがBufferかどうかチェック
if (!Buffer.isBuffer(msg.payload)) {
    node.error("Payload must be a Buffer (image data).");
    done();
    return;
}

const controller = new AbortController();
const timeout = setTimeout(() => controller.abort(), 15000); // アップロードは少し長めに

//省略

終わりに

Gyazoは結構便利だけどアップロード周りがそのままやろうとするとちょっと手間があったのでこんな感じでまとめてみました。

使った人いたら感想やコメントや要望など書いてくれるとありがたいです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?