upload-files について
upload-files は、会話やツール引数にファイル内容を入れず、DAM 経由で ImageKit にアップロードするスキルです。ローカルファイルと公開 URL に対応し、状況に応じて一括コマンドまたは署名済みフォーム項目を案内します。
主な機能
- 01ローカルファイルまたは公開 URL をアップロード
- 02短期間有効なアップロード署名を作成
- 03最大 1,000 件を一括署名
- 04ステータスまたはライブラリー検索で確認
活用シーン
- 01shell 環境から複数ファイルをアップロード
- 02MCP Apps でユーザーにファイルを選択してもらう
- 03個別のアップロード用に署名済みフォーム項目を提供
MCP 対応
`https://imagekit.io/mcp/dam` の DAM サービスでアップロードに署名し、ファイルは ImageKit に直接送信します。MCP Apps を表示できるクライアント向けのファイル選択フローも説明しています。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ imagekit-developer/ skills --skill upload-filesインストール後、Claude Code で/upload-filesを入力して読み込まれたか確認します。
詳細
ファイルをアップロードする
アップロードは DAM(https://imagekit.io/mcp/dam)経由で行います。
ファイルのバイト列を会話やツール引数に含めないでください。 Base64、データ URI、バッファー、ストリームは使わないでください。トークンを大量に消費し、大きなファイルでは失敗します。
アップロードの仕組み
アップロードは、短時間有効で一度だけ使える署名によって認証される、ImageKit のアップロードエンドポイントへの multipart/form-data POST です。DAM サーバーが行うのは署名だけです。ファイルは、存在する場所から ImageKit に直接送られます。ローカルファイルならユーザーのマシンから、公開 URL なら ImageKit が取得します。各ファイルの署名を取得し、ファイルがある場所で POST が実行されるようにするのがあなたの役目です。
使用するツール
| 状況 | 呼び出し |
|---|---|
| ユーザーの環境でシェルコマンドを実行できる(1 個または複数のファイル、ローカルパスまたは公開 URL) | create_upload_signatures_in_bulk を呼び出してから、返された uploadCommand を実行します。 |
| シェルを使えず、ユーザーが自分のコンピューター上のファイルを選択したい(クライアントで MCP Apps を表示できる) | パラメーターなしで upload_file を呼び出します。ファイル選択画面が開きます(ファイル名、フォルダー、タグ、カスタムメタデータ)。 |
| ユーザーが別の場所で自分でアップロードを実行するため、署名済みフォームフィールドが必要 | create_upload_signature を呼び出します。各ファイルを formFields とともに POST します。 |
シェルを使える場合は、ファイルが 1 つだけでも、可能な限り create_upload_signatures_in_bulk を優先してください。署名済みトークンが会話に含まれることはなく、1 つのコマンドですべてをアップロードし、ファイルごとにステータス行を表示します。
create_upload_signatures_in_bulk
- 1 回の呼び出しで 1~1,000 件のエントリーに署名します。各エントリーは、ローカルディレクトリ内に直接あるファイル、または公開 URL のいずれかで、それぞれに独自の
fileName、folder、アップロードフィールドがあります。 - トークンは返されません。
expire(60~3,600 秒、デフォルトは 600)まで、manifestUrlの背後にあるサーバー上に保持されます。ローカルファイルの場所をコマンドに伝えるため、localDirectoryを指定します。 - 返された
uploadCommandをユーザーのシェルで実行します。コマンドはローカルディレクトリに移動し、マニフェストを取得して、一度に最大 16 個のファイルをアップロードします。 - ファイルごとに 1 行出力されます:
<status> <name>。200はアップロード済みを意味します。SKIP <name>はファイル名がローカルで拒否されたことを意味します(空、/または"を含む、あるいは.で始まる)。 - 有効期限前に同じコマンドを再実行すると、失敗したファイルを再試行します。アップロード済みのファイルは拒否され、重複しません。有効期限後は
manifest unavailableと表示され、アップロードは行われません。署名を再取得してください。 - マニフェスト URL は認証情報として扱ってください。URL を知っている人は、有効期限まで署名済みのファイルをアップロードできます。コマンド以外の場所に貼り付けないでください。
create_upload_signature
ユーザーが自分で(自作のスクリプトまたは別のマシンで)アップロードを実行する場合に使用します。結果には署名済みトークンが含まれます。
- 1 回の呼び出しで複数のファイルに署名できます。ファイルごとに
fileNameを指定したエントリーを 1 つ送り、必要に応じてfolder、tags、customMetadata、その他のアップロードフィールドを指定します。expireはすべてのファイルに適用されます。 - 結果には
uploadUrlと、ファイルごとのformFieldsが含まれます。formFieldsにはtokenを含む、その署名が紐付けられた正確なフィールドが含まれます。 - 各ファイルは、
file=@<LOCAL_FILE_PATH>として、または ImageKit に取得させる場合はfile=<PUBLIC_URL>として、返されたとおりのそのファイルのformFieldsを添えてuploadUrlに POST します。フィールドを追加、削除、または再シリアライズすると、署名チェックに失敗します。 - トークンは短時間有効で一度だけ使用できます。アップロードの直前に署名を取得してください。
手順
- フォルダー、ファイル名、タグ、カスタムメタデータを確認します。フィールドは事前に作成しておく必要があります(
list_custom_metadata_fields)。 - 上の表にあるツールを呼び出します。
search_media_library、アップロード応答、または一括コマンドのステータス行で、ファイルが正常にアップロードされたことを確認します。
注意事項
- フォルダーは
/で始まるメディアライブラリのパスであり、ローカルパスではありません。必要に応じて、ネストされたフォルダーが作成されます。 - 無料プランの上限は、画像が25MB、動画が100MBです。1ファイルあたりの最大バージョン数は100です。
- 移行したアセットの元の作成日時を保持するには、予約済みのカスタムメタデータキー
_internal_original_created_datetimeに ISO 8601 形式の文字列を設定します。このキーは、元の作成日時の設定を有効にしたアカウントにのみ存在します。list_custom_metadata_fieldsで確認してください(reserved: true)。