Aktar CLI

aktar CLIドキュメント

aktarのすべてのコマンド、オプション、出力を、そのまま貼り付けて使える例とともに紹介します。初めての方は、CLIの概要のほうが手早く読めます。

概要

aktarは、同じコンピュータ上のAktarアプリを操作するリモコンです。ファイルを渡すと127.0.0.1上のAktarに送られ、Aktarがすでに設定済みのアップロード先、キー、パステンプレート、リンクの設定でアップロードします。リンクはターミナルに返ってきます。

できること

  • スクリプト、自分のMacやWindowsマシンでのCIジョブ、Typoraのようなエディタで使える小さなNode.jsコマンド
  • ファイルやクリップボードのアップロード、QRコードの表示、アップロード先とアップロード履歴の確認
  • アプリと同じく無料のオープンソース(MIT)

できないこと

  • 単体では動きません。Aktarが起動していなければ何もアップロードできず、ストレージのキーを持つこともありません
  • Linuxサーバーやリモートマシン向けではありません。通信するのは同じコンピュータ上のAktarだけです。そうした環境では、ストレージプロバイダ公式のCLIを使ってください

動作環境

  • Mac版Aktar 0.18.0以降またはWindows版Aktar 0.11.0以降(アップロード先を1つ以上設定済み)。aktar 0.5.0以前は、Mac版Aktar 0.4.0以降で動作します
  • Node.js 18以降(Homebrewなら自動でインストールされます)
  • --name、--qr、aktar qrにはaktar 0.2.0以降が必要です
  • アップロード済みファイルのリンクの再利用には、aktar 0.2.0と、Mac版Aktar 0.10.0またはWindows版Aktar 0.3.0が必要です
  • aktar replace には aktar 0.3.0 と Aktar for Mac 0.14.0 または Aktar for Windows 0.7.0 以降が必要です
  • --short、--no-short、aktar shortには、aktar 0.5.0と、Mac版Aktar 0.17.0またはWindows版Aktar 0.10.0、そしてアップロード先に設定した短縮サービスが必要です

インストール

npmかHomebrewで一度インストールするだけです。どちらでもaktarコマンドにパスが通ります。

npmでインストール(macOSとWindows)

npm install -g @getaktar/cli

Homebrewでインストール(macOS)

brew install getaktar/tap/aktar-cli

インストールせずに一度だけ実行することもできます:

npx @getaktar/cli upload file.png

インストールされているバージョンを確認します:

aktar --version
0.6.0

Aktarと接続する

  1. Mac版またはWindows版のAktarで設定 → 連携を開き、ローカル接続を許可をオンにします。Aktarは127.0.0.1だけで待ち受けます。ポートは、そこで変更しない限り47913です。
  2. その下に表示されたトークンをコピーします。
  3. aktar loginを実行し、Token:のプロンプトにトークンを貼り付けます。入力中は表示されず、保存前にAktarで確認されるので、打ち間違えたトークンが保存されることはありません。
aktar login
Copy the token from Aktar: Settings > Integrations (turn on Allow local connections first).
Token:
Connected to Aktar 0.10.0. Saved to /Users/you/.config/aktar/cli.json

トークンの保存場所

aktar loginは、トークンとポートをMacでは~/.config/aktar/cli.json(設定していれば$XDG_CONFIG_HOME/aktar/cli.json)に、Windowsでは%APPDATA%\aktar\cli.jsonに保存します。読み取れるのは自分のユーザーだけです。

トークンを送る前に、aktarはポート上のアプリに、同じトークンを持っていることを証明するよう求めます。このときトークン自体は送りません。そのため、Aktarが起動しておらず、別のプログラムがそのポートで待ち受けていても、そのプログラムにトークンやファイルが渡ることはありません。これにはMac版Aktar 0.18.0以降またはWindows版Aktar 0.11.0以降が必要です。古いAktarの場合、aktarは処理を止めてアップデートを求めます。

cli.json
{
  "token": "…",
  "port": 47913
}

aktar logoutでこのファイルを削除できます。すべてのクライアントを一度に締め出すには、Aktarでトークンの横にあるRegenerate(再生成)をクリックし、新しいトークンでaktar loginをもう一度実行します。

スクリプトとCI

ビルドマシンではaktar loginを使わず、AKTAR_TOKEN(ポートを変更した場合はAKTAR_PORTも)を設定します。これらは保存されたファイルより優先されます。そのマシンでは、同じユーザーセッションにサインインした状態でAktarが起動している必要があります。

AKTAR_TOKEN="$AKTAR_SECRET" aktar upload dist/app.zip -d Builds
変数役割
AKTAR_TOKENAktarの設定 → 連携に表示されるトークン。保存されたトークンの代わりに使われます。
AKTAR_PORTAktarのローカルAPIのポート(変更した場合)。--portのほうが優先されます。
NO_COLORQRコードをターミナルの色を使わず、プレーンな文字で描きます。
XDG_CONFIG_HOMEmacOSでの設定フォルダの場所(既定は~/.config)。Windowsでは%APPDATA%が使われます。

コマンド

プレーンテキストやリンクを渡したaktar qrを除き、すべてのコマンドはAktarと通信します。-dを付けなければ、Aktarのメニューバーで選択中のアップロード先にアップロードされ、ほかのアップロードと同じくAktarの履歴に残ります。aktar --helpでも同じ一覧が表示されます。 Aktar for Mac 0.14.0 または Aktar for Windows 0.7.0 以降では、-d を付けないアップロードはまずアップロード先の 用途 のルールに従います。画像はスクリーンショット用のアップロード先へ、ビルドは別の先へ送れます。

aktar upload

1つ以上のファイルをアップロードし、完了するたびにファイルの順にリンクを1つずつ出力します。

使い方

aktar upload <file>... [options]

オプション

フラグ値説明
-d, --destination<name|id>アップロード先を名前かIDで指定します。既定はAktarで選択中のアップロード先です。
-f, --format<format>出力の形式:url(既定)、markdown、html、custom(Aktarで作ったテンプレート)。
--name<name>1つのファイルをこの名前でアップロードします。名前に拡張子がなければ元の拡張子が付きます。
--folder<path>ファイル名をそのままにして、このフォルダにアップロードします。
--expires<days>1、7、14、30日後にバケットがファイルを削除します。0なら残します。
--shortアップロード先のルールで対象外になる場合でも、アップロード先の短縮サービスで短縮リンクを作成します。
--no-short今回は短縮リンクを作成しません。
--qr各リンクのQRコードも出力します。
--jsonリンクの代わりに、各アップロードの詳細をまとめたJSON配列を出力します。
--port<port>このコマンドだけで使うAktarのローカルAPIのポート。AKTAR_PORTや保存されたポートより優先されます。

知っておきたいこと

  • アップロードを始める前にすべてのファイルを確認します。存在しないファイルが1つでもあれば何もアップロードせず、aktarは終了コード2で終了します。
  • 1つのアップロードが失敗しても、ほかはそのまま続きます。失敗はそれぞれstderrに出力され、終了コードは1になります。
  • --folderを付けなければ、メニューバーにドロップしたときと同じく、アップロード先のパステンプレートでファイル名が決まります。--folderを付けると、そのフォルダの中で元のファイル名のままになります。
  • --nameは1回に1ファイルだけに使えます。スラッシュは取り除かれ、名前に拡張子がなければ元のファイルの拡張子が付きます。--name coverならIMG_4021.jpgがcover.jpgとしてアップロードされます。--folderと組み合わせると、フォルダ内での名前になります。
  • --expiresには1、7、14、30(日)、またはファイルを残す0を指定します。付けなければ、Aktarの削除までの設定にかかわらずファイルは残ります。そのアップロード先にAktarの自動削除ルールが必要で、--folderとは併用できません。
  • --qrは--jsonと併用できず、--pngはaktar qrでのみ使えます。
  • ターミナルでは、アップロード中の進行状況がstderrに表示されます。ファイルはストリーミングでAktarに送られるので、サイズは問題にならず、時間制限もありません。
  • アップロード先にAktarで短縮サービスを設定していれば、短縮リンクが出力され、--formatと--qrもそれを使います。--shortはアップロード先のルールで対象外になるアップロードでも短縮リンクを作成し、--no-shortは作成しません。Aktarが作成できなかった場合は元のリンクが出力され、理由がstderrに表示されます。

例

ファイル1つでリンク1つ。
aktar upload screenshot.png
https://files.example.com/2026/10/7f3c2a91.png
複数のファイルをMarkdownで。ファイルの順に1行ずつ出力されます。
aktar upload *.png -f markdown
![](https://files.example.com/2026/10/1b9e44d0.png)
![](https://files.example.com/2026/10/c2f71a5e.png)
別の名前で、フォルダにアップロード。
aktar upload IMG_4021.jpg --name cover --folder blog/2026
https://files.example.com/blog/2026/cover.jpg
同じファイルがすでにバケットにあった場合。リンクはいつもどおり出力され、そのことはstderrに表示されます。
aktar upload photo.jpg
aktar: photo.jpg: already uploaded, reused the existing link
https://files.example.com/2026/09/4d2a8c61.jpg
アップロード先に短縮サービスがあれば、短縮リンクが出力されます。
aktar upload talk.pdf --short
https://s.example.com/k3Tq9

aktar upload --clipboard

Aktar自身のクリップボードショートカットと同じく、クリップボードにあるファイルや画像をアップロードします。

使い方

aktar upload --clipboard [options]

オプション

フラグ値説明
--clipboardファイルの代わりにクリップボードの内容をアップロードします。
-d, --destination<name|id>アップロード先を名前かIDで指定します。既定はAktarで選択中のアップロード先です。
-f, --format<format>出力の形式:url(既定)、markdown、html、custom(Aktarで作ったテンプレート)。
--expires<days>1、7、14、30日後にバケットがファイルを削除します。0なら残します。
--shortアップロード先のルールで対象外になる場合でも、アップロード先の短縮サービスで短縮リンクを作成します。
--no-short今回は短縮リンクを作成しません。
--qr各リンクのQRコードも出力します。
--jsonリンクの代わりに、各アップロードの詳細をまとめたJSON配列を出力します。
--port<port>このコマンドだけで使うAktarのローカルAPIのポート。AKTAR_PORTや保存されたポートより優先されます。

知っておきたいこと

  • ファイルか--clipboardのどちらか一方を指定します。両方は指定できません。
  • --nameと--folderはファイルでのみ使えます。-d、-f、--expires、--qr、--jsonはファイルのときと同じように使えます。
  • --jsonを付けた場合も、出力は要素が1つの配列です。

例

コピーしたばかりのスクリーンショット。
aktar upload --clipboard
https://files.example.com/2026/10/9a4c03be.png
Markdownで、Blogという名前のアップロード先へ。
aktar upload --clipboard -f markdown -d Blog
![](https://blog-assets.example.com/2026/10/e5b2c8a4.png)
1日後にバケットが削除します。
aktar upload --clipboard --expires 1
https://files.example.com/tmp/1d/2026/10/38f0d7c2.png

aktar replace

アップロード済みのファイルを新しいファイルで上書きし、キーとリンクはそのままにします。リンクを持つ人には新しいファイルが表示されます。

使い方

aktar replace <upload-id|link|key> <file> [options]

オプション

フラグ値説明
-d, --destination<name|id>キーの場合: そのキーがあるバケットのアップロード先を名前か ID で指定。既定は Aktar で選択中のもの。
-f, --format<format>出力の形式:url(既定)、markdown、html、custom(Aktarで作ったテンプレート)。
--qr各リンクのQRコードも出力します。
--jsonリンクの代わりに、各アップロードの詳細をまとめたJSON配列を出力します。
--port<port>このコマンドだけで使うAktarのローカルAPIのポート。AKTAR_PORTや保存されたポートより優先されます。

知っておきたいこと

  • 最初の引数は aktar history のアップロード ID かリンク (Aktar の履歴も更新されます)、それ以外は -d のバケット内のキーです (-d を省くと Aktar で選択中のアップロード先)。Aktar の履歴にないリンクは拒否されるので、代わりにキーを -d と一緒に指定します。
  • Aktar はアップロード先の設定どおりにメタデータを削除しサイズを変更しますが、別の形式には変換しないので、キーの拡張子は変わりません。tmp/{N}d/ の下のファイルは N 日のカウントがやり直しになります。
  • キーに番号が付くことはなく、ほかには何もアップロードされません。--folder、--expires、--name、--clipboard は使えず、拒否されます。
  • 古いコピーがしばらく CDN のキャッシュに残ることがあります。Aktar のアップロード先の 短いキャッシュ時間 か Cloudflare のキャッシュ消去で解決できます。
  • Aktar for Mac 0.14.0 または Aktar for Windows 0.7.0 以降が必要です。

例

履歴のアップロードを ID で置き換えます。リンクはそのままです。
aktar replace 0B6C2F8E-3D1A-4C55-9E2B-7A41D0C3E9F1 report-v2.pdf
https://files.example.com/2026/09/0e7d51b3.pdf
別のアップロード先のバケットにあるキーを置き換え、Markdown で出力します。
aktar replace docs/guide.pdf guide.pdf -d Blog -f markdown
[guide.pdf](https://blog-assets.example.com/docs/guide.pdf)

aktar short

履歴にあるアップロードの短縮リンクを、アップロード先の短縮サービスで作成して出力します。すでに短縮リンクがあれば、それを出力します。

使い方

aktar short <upload-id|link> [--json | --qr]

オプション

フラグ値説明
--json短縮リンクの詳細をJSONで出力します: プロバイダー、状態、クリック数。
--qr短縮リンクのQRコードも出力します。
--port<port>このコマンドだけで使うAktarのローカルAPIのポート。AKTAR_PORTや保存されたポートより優先されます。

知っておきたいこと

  • アップロードID、またはaktar historyのリンクを渡します。短縮リンクでもかまいません。aktarは直近1,000件のアップロードから探します。
  • アップロード先に、Aktarの短縮リンクセクションで短縮サービスを設定しておく必要があります: Shlink、YOURLS、Kutt、Dub、Short.io、またはカスタムリクエスト。短縮リンクはその短縮サービスが作成するので、リンクとクリックのデータはご自身のインフラに残ります。
  • --jsonは短縮リンクの詳細を出力します: プロバイダー、状態、短縮サービスが数えていればクリック数と最終クリック。--qrはQRコードを追加します。この2つは同時に使えません。
  • Mac版Aktar 0.17.0またはWindows版Aktar 0.10.0が必要です。古いバージョンは、まだ短縮リンクを作成できないと応答します。

例

履歴のアップロードの短縮リンク。
aktar short 0B6C2F8E-3D1A-4C55-9E2B-7A41D0C3E9F1
https://s.example.com/Qm3xZ

aktar qr

リンクや任意のテキストのQRコードをターミナルに表示し、スマートフォンで開けるようにします。アップロードIDを渡すと、そのアップロードのリンクとQRコードを表示します。

使い方

aktar qr <link|text|upload-id> [--png <file>]

オプション

フラグ値説明
--png<file>QRコードを表示する代わりにPNGファイルとして保存します。
--port<port>このコマンドだけで使うAktarのローカルAPIのポート。AKTAR_PORTや保存されたポートより優先されます。

知っておきたいこと

  • 引数はちょうど1つ渡します。スペースを含むテキストは引用符で囲んでください。
  • アップロードIDは、aktar history --jsonやaktar upload --jsonのidです。aktarはAktarの履歴の直近1,000件から探します。プレーンテキストやリンクなら、Aktarはまったく必要ありません。
  • ターミナルでは、テーマにかかわらず白地に黒でコードを描きます。出力先がターミナルでない場合やNO_COLORが設定されている場合は、色を使わずに描きます。
  • --pngを付けると、QRコードを表示する代わりにPNGとして保存します。
  • 短縮リンクがあるアップロードでは、短縮リンクを表示します。

例

任意のリンクのQRコード。スマートフォンのカメラで開けます。
aktar qr https://files.example.com/2026/10/demo.mp4
履歴のアップロードをPNGとして保存。
aktar qr 0B6C2F8E-3D1A-4C55-9E2B-7A41D0C3E9F1 --png cover-qr.png
Saved to cover-qr.png

aktar login

トークンをAktarで確認して保存し、ほかのコマンドが接続できるようにします。

使い方

aktar login [--token <token>] [--port <port>]

オプション

フラグ値説明
--token<token>プロンプトを使わずに渡すトークン。
--port<port>トークンと一緒に保存するAktarのポート。既定は47913です。

知っておきたいこと

  • ターミナルではトークンの入力を求め、入力内容は表示されません。パイプで入力が渡された場合は、そこからトークンを読み取ります。
  • --tokenを使うとプロンプトを省けますが、コマンドの実行中はほかのプログラムからトークンが見え、シェルの履歴にも残るため、aktarが警告を表示します。パイプで渡すかAKTAR_TOKENを使えば、これを避けられます。
  • Aktarに拒否されたトークンは保存されず、終了コードは3になります。

例

入力中のトークンは表示されません。
aktar login
Copy the token from Aktar: Settings > Integrations (turn on Allow local connections first).
Token:
Connected to Aktar 0.10.0. Saved to /Users/you/.config/aktar/cli.json
Macで、Aktarからコピーしたトークンを使う場合。
pbpaste | aktar login
Connected to Aktar 0.10.0. Saved to /Users/you/.config/aktar/cli.json
プロンプトを使わず、変更したポートを指定。トークンが見える状態だったことをaktarが警告します。
aktar login --token "$AKTAR_SECRET" --port 47920
aktar: warning: a token on the command line can be seen by other programs (ps) and stays in your shell history. Next time, run aktar login without --token and paste it, or pipe it in.
Connected to Aktar 0.10.0. Saved to /Users/you/.config/aktar/cli.json

aktar logout

保存されたトークンとポートを削除します。

使い方

aktar logout

オプション

オプションはありません。

知っておきたいこと

  • AKTAR_TOKENが設定されていれば、aktar logoutのあとも使えます。
  • ほかのクライアントの接続は解除されません。解除するには、Aktarでトークンを再生成してください。

例

トークンを削除します。
aktar logout
Logged out.
以降、コマンドはもう一度ログインするよう求めます(終了コード3)。
aktar status
aktar: Not connected to Aktar yet. Run aktar login with the token from Aktar's Settings > Integrations.

aktar status

接続先のAktar、ポート、Aktarで選択中のアップロード先、設定ファイルの場所を表示します。

使い方

aktar status [--json]

オプション

フラグ値説明
--jsonテキストの代わりにJSONを出力します。
--port<port>このコマンドだけで使うAktarのローカルAPIのポート。AKTAR_PORTや保存されたポートより優先されます。

知っておきたいこと

  • スクリプトで接続を手早く確認できます。Aktarに接続できないかトークンが正しくない場合は、終了コード3で終了します。

例

接続済みで、選択中のアップロード先も表示。
aktar status
Aktar 0.10.0 (build 28) on port 47913
Destination: Screenshots (Cloudflare R2, screenshots)
Config: /Users/you/.config/aktar/cli.json
同じ内容をスクリプト向けにJSONで。
aktar status --json
{
  "app": "Aktar",
  "version": "0.10.0",
  "build": "28",
  "apiVersion": 1,
  "defaultDestinationId": "5D1A9C3E-7B2F-4E61-8A0D-3C9B6F2E1A47",
  "outputFormat": "url",
  "port": 47913
}

aktar destinations

アップロード先を、プロバイダ、バケット、IDとともに一覧表示します。*はAktarで選択中のアップロード先です。

使い方

aktar destinations [--json]

オプション

フラグ値説明
--jsonテキストの代わりにJSONを出力します。
--port<port>このコマンドだけで使うAktarのローカルAPIのポート。AKTAR_PORTや保存されたポートより優先されます。

知っておきたいこと

  • -dには名前かIDを指定します。名前は大文字と小文字を区別せずに照合され、IDは名前を変更したあとでも使えます。
  • --jsonでは、それぞれのid、name、provider、providerName、bucket、publicBaseURL、isDefaultが得られます。

例

選択中のアップロード先には*が付きます。
aktar destinations
* Screenshots  Cloudflare R2  screenshots  5D1A9C3E-7B2F-4E61-8A0D-3C9B6F2E1A47
  Builds  Amazon S3  acme-builds  A83F2C10-6D4B-4F7E-9C1A-2B5E8D0F3C66
  Blog  Backblaze B2  blog-assets  E2C7B9A4-1F3D-4A8E-B6C0-9D5F2A7E4B13
選択中のアップロード先の名前をjqで取得。
aktar destinations --json | jq -r '.[] | select(.isDefault) | .name'
Screenshots

aktar history

最近のアップロードを新しい順に、日時、ファイル名、リンクとともに一覧表示します。historyのあとに続けた語句で履歴を検索します。

使い方

aktar history [search] [options]

オプション

フラグ値説明
-n, --limit<n>表示するアップロードの件数。既定は20件です。
-d, --destination<name|id>このアップロード先(名前かID)へのアップロードだけを表示します。
--jsonテキストの代わりにJSONを出力します。
--port<port>このコマンドだけで使うAktarのローカルAPIのポート。AKTAR_PORTや保存されたポートより優先されます。

知っておきたいこと

  • -nを指定しなければ20件表示します。
  • --jsonではaktar upload --jsonと同じフィールドが得られ、aktar qrで使える各アップロードのidも含まれます。

例

直近3件のアップロード。
aktar history -n 3
2026-10-01  screenshot.png  https://files.example.com/2026/10/7f3c2a91.png
2026-10-01  cover.jpg  https://files.example.com/blog/2026/cover.jpg
2026-09-30  invoice-september.pdf  https://files.example.com/2026/09/0e7d51b3.pdf
1つのアップロード先で請求書を検索。
aktar history invoice -d Screenshots
2026-09-30  invoice-september.pdf  https://files.example.com/2026/09/0e7d51b3.pdf
2026-08-29  invoice-august.pdf  https://files.example.com/2026/08/a6c94f20.pdf
最新のビルドのリンクをjqで取得。
aktar history -d Builds -n 1 --json | jq -r '.[0].url'
https://acme-builds.s3.amazonaws.com/2026/10/app-3f9c2e1.zip

aktar mcp

Model Context Protocol(MCP)サーバーを起動し、Claude、Cursor、VS Code、Codexなどの AI エージェントがAktar経由でファイルをアップロードしたり、過去のアップロードを探したり、リンクを作成したりできるようにします。エージェントに一度追加しておけば、必要なときにエージェントが起動します。

使い方

aktar mcp [--root <folder>]... [--read-only | --allow-replace | --allow-delete] [--max-link-minutes <n>] [--log <file>]

オプション

フラグ値説明
--root<folder>このフォルダー内のファイルだけをアップロードします。複数のフォルダーを指定するには繰り返します。既定は、サーバーが実行されているフォルダーです。それがホームフォルダーやディスクの最上位の場合は、どのフォルダーも許可されません。
--read-onlyバケット内の何も変更しないツール(検索、一覧、一時リンク、サムネイル)だけを提供します。
--allow-replaceバケット内のファイルを上書きするreplace_fileも提供します。
--allow-deleteバケットからファイルを削除するdelete_uploadと、replace_fileも提供します。
--max-link-minutes<n>一時リンクが有効な最長時間(分)。既定は60、最大10080(7日)です。
--log<file>各ツール呼び出し(時刻、ツール、引数、結果)をこのファイルに追記します。読み取れるのは自分だけです。
--port<port>このコマンドだけで使うAktarのローカルAPIのポート。AKTAR_PORTや保存されたポートより優先されます。

知っておきたいこと

  • 先にaktar loginを実行してください。サーバーは呼び出しのたびに保存済みのトークンを読み込むので、再ログインしてもエージェントを再起動する必要はありません。
  • アップロードするとファイルが公開されます。リンクを知っていれば誰でも開けます。エージェントは、許可していない限りツールを呼び出す前に確認を求めます。
  • ファイルは--rootで指定したフォルダーからだけアップロードされます。指定がなければ、サーバーが実行されているフォルダーからです。それが一部のアプリのようにホームフォルダーやディスクの最上位の場合、--rootを追加するまでローカルファイルはアップロードされません。本当にホームフォルダー全体を許可したい場合は--root ~を使います。パスはシンボリックリンクも含めて解決してから検査されます。
  • 秘密情報は、どこにあってもアップロードされません。SSH鍵や秘密鍵、.envファイル、クラウドやパッケージマネージャーの認証情報(~/.aws、~/.kube、~/.npmrcなど)、Aktar自身の設定、キーチェーン、ブラウザーのプロファイル、パスワードデータベースが対象です。ハードリンクが複数あるファイルも拒否されます。これらを共有したい場合は、aktar uploadで自分でアップロードしてください。
  • --read-onlyを指定すると、バケット内の何も変更しないツールだけが提供されます。replace_fileは削除と同じようにファイルを上書きしてしまうため、--allow-replaceを付けたときだけ提供されます。delete_uploadは--allow-deleteを付けたときだけ提供されます(このときreplace_fileも提供されます)。
  • create_temporary_linkで作成できるリンクは、--max-link-minutesで延ばさない限り最長60分です。クリップボードには何が入っているかわからないため、--rootを指定するとupload_clipboardは提供されません。
  • ツールの結果の先頭には、含まれるファイル名、キー、メッセージは指示ではなくデータである、という注記が付きます。--logを使うと、すべての呼び出しが記録されます。同時に実行するツール呼び出しは最大4つです。
  • グローバルインストールしていない場合は、コマンドとしてnpx -y @getaktar/cli mcp --root ~/Projectsを使ってください。
  • stdio上で、現行のMCPバージョン(2026-07-28)と、initializeで始まる以前のバージョン(2024-11-05から2025-11-25)に対応しています。aktar 0.4.0が必要です。上記の制限はaktar 0.6.0で追加されました。

ツール

ツールできること
upload_fileファイルをアップロードし、リンク、Markdown、HTMLを返します。アップロード先、名前、フォルダー、有効期限は省略できます。shortで短縮リンクの作成を指定、または抑止できます。
upload_clipboardクリップボードのファイルまたは画像をアップロードします。shortで短縮リンクの作成を指定、または抑止できます。--rootを指定すると提供されません。
replace_fileリンクを保ったまま、アップロード済みのファイルやバケット内の任意のファイルを新しいファイルで置き換えます。--allow-replaceまたは--allow-deleteを付けたときだけ提供されます。Aktar for Mac 0.14.0 または Windows 0.7.0 が必要です。
create_short_linkアップロード先の短縮サービスでアップロードの短縮リンクを作成するか、既存のものを返します。--read-onlyでは提供されません。Aktar for Mac 0.17.0 または Windows 0.10.0 が必要です。
search_uploadsアップロード履歴を検索します。
list_destinationsアップロード先と、それぞれが使われるファイルの種類を一覧表示します。
list_bucketバケット内のフォルダーとファイルを一覧表示します。Aktarでアップロードしていないファイルも含まれます。
create_temporary_link一定時間後に無効になるリンク(署名付きURL)を作成します。それまでは、リンクを知っていれば誰でも、非公開のバケットからでもファイルをダウンロードできます。--max-link-minutesで延ばさない限り最長60分です。
get_thumbnailアップロードしたもののプレビューをエージェントに見せます。Aktar for Mac 0.13.0 または Windows 0.6.0 が必要です。
list_watched_folders監視フォルダーとその状態を一覧表示します。
get_statusAktarへの接続を確認します。
delete_uploadバケットからアップロード済みのファイルを削除します。--allow-deleteを付けた場合のみ。

例

AktarをClaude CodeまたはCodexに追加。
claude mcp add aktar -- aktar mcp --root ~/Projects
codex mcp add aktar -- aktar mcp --root ~/Projects
エージェントが2つのフォルダーからアップロードし、ファイルを置き換えられるようにする。
claude mcp add aktar -- aktar mcp --root ~/Projects --root ~/Desktop --allow-replace
エージェントが行ったことを記録する。
claude mcp add aktar -- aktar mcp --root ~/Projects --log ~/aktar-mcp.log

aktar skill

エージェント向けのスキル(SKILL.md)を出力します。--json付きのaktarコマンドの使い方、つまり何を実行し、結果をどう読み取り、共有を頼まれたものだけをアップロードすることをエージェントに教えます。スキルは使えてもMCPは使えないエージェント向けです。

使い方

aktar skill

オプション

オプションはありません。

知っておきたいこと

  • エージェントがスキルを探す場所に保存してください。たとえばClaude Codeなら~/.claude/skills/aktar/です。

例

Claude Code用にスキルをインストール。
mkdir -p ~/.claude/skills/aktar
aktar skill > ~/.claude/skills/aktar/SKILL.md

すべてのコマンドで使えるオプション

フラグ値説明
-h, --helpコマンドとオプションの一覧を表示します。
-v, --versionaktarのバージョンを表示します。
--port<port>このコマンドだけで使うAktarのローカルAPIのポート。AKTAR_PORTや保存されたポートより優先されます。

出力

形式

-fで、各アップロードについて出力する内容を選びます。付けなければ、Aktarのメニューバーでコピーする形式にかかわらず、aktarはプレーンなURLを出力します。MarkdownとHTMLでは、Aktarと同じく画像は埋め込み、それ以外のファイルはリンクにします。

形式photo.jpgの出力
-f urlhttps://files.example.com/2026/10/7f3c2a91.jpgリンク(既定)。
-f markdown![](https://files.example.com/2026/10/7f3c2a91.jpg)Markdownの画像。画像以外のファイルはMarkdownのリンク。
-f html<img src="https://files.example.com/2026/10/7f3c2a91.jpg" alt=""><img>タグ。画像以外のファイルは<a>リンク。
-f custom![photo.jpg](https://files.example.com/2026/10/7f3c2a91.jpg)Aktarの設定で作ったテンプレート。{url}、{filename}などの変数が埋め込まれます。

stdoutとstderr

標準出力に書き出されるのはリンクだけで、ファイルの順に1行に1つずつです(--qrを付ければQRコードも)。それ以外はすべて標準エラー出力に送られます。進行状況、エラー、aktar: photo.jpg: already uploaded, reused the existing linkのようなお知らせです。そのため、url=$(aktar upload file)やaktar upload *.png > links.txtでは常にリンクだけが得られます。

aktar upload photo.jpg
aktar: photo.jpg: already uploaded, reused the existing link
https://files.example.com/2026/09/4d2a8c61.jpg

JSON

--jsonは、すべてのアップロードが終わってから、アップロードしたファイルごとに1要素の配列を出力します。失敗したアップロードは含まれない(stderrに出力されます)ので、終了コードもあわせて確認してください。

aktar upload photo.jpg --json
[
  {
    "id": "0B6C2F8E-3D1A-4C55-9E2B-7A41D0C3E9F1",
    "filename": "photo.jpg",
    "objectKey": "2026/10/7f3c2a91.jpg",
    "url": "https://files.example.com/2026/10/7f3c2a91.jpg",
    "shortUrl": null,
    "destinationId": "5D1A9C3E-7B2F-4E61-8A0D-3C9B6F2E1A47",
    "destinationName": "Screenshots",
    "mimeType": "image/jpeg",
    "size": 482113,
    "createdAt": "2026-10-01T12:00:00Z",
    "expiresAt": null,
    "formats": {
      "url": "https://files.example.com/2026/10/7f3c2a91.jpg",
      "markdown": "![](https://files.example.com/2026/10/7f3c2a91.jpg)",
      "html": "<img src=\"https://files.example.com/2026/10/7f3c2a91.jpg\" alt=\"\">",
      "custom": "![photo.jpg](https://files.example.com/2026/10/7f3c2a91.jpg)"
    },
    "reused": false
  }
]
フィールド意味
idAktarの履歴でのアップロードのID。aktar qrに渡せます。
filenameAktarでのファイル名。元のファイル名か、--nameで指定した名前です。
objectKeyバケット内でのファイルの場所。
urlリンク。
shortUrl短縮リンク。ない場合はnull。formatsはすでにこれを使っています。
destinationIdアップロード先のID。
destinationNameアップロード先の名前。
mimeTypeAktarによる変換後のファイルの種類。
size保存されたサイズ(バイト)。
createdAtアップロードされた日時(ISO 8601、UTC)。
expiresAtバケットがファイルを削除する日時。残す場合はnull。
replacedAtファイルが最後に置き換えられた日時 (ISO 8601、UTC)。置き換えられるまでと、Mac 0.14.0 と Windows 0.7.0 より前の Aktar では含まれません。
formats4つの形式すべてのリンク:url、markdown、html、custom。
reused同じファイルがすでにあったため何もアップロードしなかった場合はtrue。Mac版0.10.0、Windows版0.3.0より前のAktarでは含まれません。
shortLinkErrorAktarが短縮リンクを作成できなかった理由。その場合urlは元のリンクです。問題がなければ含まれません。

終了コード

コード意味
0すべて成功しました。
11つ以上のアップロードまたはリクエストが失敗しました(ほかは成功)。自動削除が設定されていないなど、Aktar自身のエラーもここに含まれます。
2引数が正しくない、ファイルが存在しない、またはAktarにない名前のアップロード先が指定されました。何もアップロードされていません。
3ログインしていない、Aktarが起動していない、ローカルAPIがオフになっている、トークンが正しくない、またはポート上のアプリがAktarであることを証明できませんでした(古すぎて証明できない場合も含みます)。

レシピ

コピーして、ファイル名を書き換えれば完了です。どのレシピも、ここまでに説明した機能だけを使っています。

リンクを変数に入れる

標準出力にはリンクだけが書き出されるので、コマンド置換でURLだけがそのまま得られます。|| exit 1は、アップロードが失敗したときにスクリプトを止めます。

url=$(aktar upload build/report.pdf) || exit 1
echo "Report: $url"
Report: https://files.example.com/2026/10/0e7d51b3.pdf

ビルドをアップロードしてリンクを投稿する

ビルドをZIPにまとめ、Buildsという名前のアップロード先にコミットの短いハッシュの名前でアップロードし、JSONを受け付ける任意のWebhook(チャットのチャンネル、課題管理ツール、自分のエンドポイントなど)にリンクを投稿します。set -eにより、アップロードが失敗したら投稿の前に止まります。

#!/bin/sh
set -e
zip -qr app.zip dist
url=$(aktar upload app.zip -d Builds --name "app-$(git rev-parse --short HEAD)")
curl -fsS -X POST "$WEBHOOK_URL" \
  -H 'Content-Type: application/json' \
  -d "{\"text\": \"New build: $url\"}"

Makefileのターゲット

make shareは、レポートを今日の日付の名前でアップロードし、リンクを.last-linkに保存します。Makefileでは$$でシェルに$を渡し、コマンドの行はタブで始めます。

Makefile
share: dist/report.pdf
	aktar upload dist/report.pdf --name "report-$$(date +%F)" | tee .last-link

Typoraの画像アップローダー

TyporaでSettings > Image(画像)を開き、画像アップローダーにCustom Command(カスタムコマンド)を選んで、aktarのフルパス(which aktarが出力するパス)に続けてuploadを入力します。Typoraは画像のパスを渡し、1行に1つずつリンクを読み取ります。

/opt/homebrew/bin/aktar upload

When Insert…(画像挿入時)の設定も含めた手順は、Typoraの画像をS3にアップロードする方法をご覧ください。

Finderやショートカットからアップロードする

Macでは、ショートカット、またはFinderでファイルを受け取るAutomatorのクイックアクションにRun Shell Script(シェルスクリプトを実行)アクションを追加し、入力を引数として渡すように設定します。ショートカットとAutomatorはシェルのPATHを読み込まないため、1行目が必要です。ファイルを選んで実行すれば、リンクがクリップボードに入ります。

export PATH="/opt/homebrew/bin:/usr/local/bin:$PATH"
aktar upload "$@" | pbcopy
osascript -e 'display notification "Link copied" with title "aktar"'

アップロードできるのはファイルだけで、フォルダはできません。複数のファイルなら、1行に1つずつ複数のリンクになります。

一時的なファイル

ログや画面収録など、残しておく必要のないファイルはバケットに削除させましょう。まずアップロード先にAktarの自動削除ルールが必要です。Aktarのメニューバーかアップロード先の設定にある削除までから、一度だけ設定してください。

aktar upload crash.log --expires 1
aktar upload screen-recording.mov --expires 7 --qr

期限付きのファイルはバケット内のtmp/1d/、tmp/7d/などに入り、Aktarが起動していなくてもバケットが削除します。

スマートフォンでリンクを開く

--qrを付けるとリンクの下にQRコードが出力されるので、スマートフォンのカメラをターミナルに向けてください。あとでもう一度表示するには、アップロードのIDをaktar qrに渡します。ここでは「demo」に一致する最新のアップロードを使っています。

aktar upload demo.mp4 --qr
aktar qr "$(aktar history demo -n 1 --json | jq -r '.[0].id')"

Windows PowerShell

PowerShellでも同じように使えます。終了コードは$LASTEXITCODEに入り、--jsonの出力はConvertFrom-Jsonで読み取れます。

PowerShell
$url = aktar upload .\dist\app.zip -d Builds
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
Set-Clipboard $url

$upload = aktar upload .\report.pdf --json | Out-String | ConvertFrom-Json
$upload.formats.markdown

Claude Desktop、Cursor、VS CodeでAktarを使う

MCPサーバーにJSON設定を使うアプリ(Claude Desktop、Cursor、Windsurfなど)には、このエントリが必要です。VS Codeでは、.vscode/mcp.jsonのserversの下に同じエントリを書きます。そのあと、エージェントにファイルのアップロード、先週のスクリーンショットの検索、一時リンクの作成を頼んでみてください。

JSON
{
  "mcpServers": {
    "aktar": { "command": "aktar", "args": ["mcp", "--root", "/Users/you/Projects"] }
  }
}

アプリがaktarを見つけられない場合は、フルパス(which aktar)を使うか、npxを使い、引数に["-y", "@getaktar/cli", "mcp", "--root", "/Users/you/Projects"]を指定してください。--rootの後には、エージェントがアップロード元にしてよいフォルダーを指定します(WindowsではC:\\Users\\you\\Projectsのように)。

Aktarがしてくれること

CLIはファイルを渡すだけで、あとはAktarがアップロード先ごとの設定で処理します。そのため、アプリで設定したことはオプションを追加しなくてもaktar uploadにも適用され、得られるリンクは保存されたとおりのファイルのリンクです。

  • パステンプレート

    アップロード先のオブジェクトパスで、{year}、{uuid}、{filename}などを使ってファイル名が決まります。{md5}と{sha256}を使えば、内容に基づいた名前になります。

  • 画像処理

    アップロード先で画像をWebPやAVIFに変換したり、圧縮やサイズ変更をしたりする設定なら、CLIからのアップロードにも同じ処理が適用され、リンクは変換後のファイルを指します。

  • 写真のメタデータ

    アップロード先のアップロードの既定値にある画像のメタデータで、写真がコンピュータを離れる前に位置情報、またはすべてのメタデータを削除します。

  • 同じファイルには同じリンク

    重複ファイルのリンクを再利用がオンなら、同じアップロード先にある同じ内容のファイルは、もう一度アップロードされずに既存のリンクが返されます。aktarはそのことをstderrに表示します。

  • 大きなファイル

    大きなファイルは分割してアップロードされ、5 GBの上限はありません。接続が切れても再試行し、止まったところから再開します。aktarはファイルをストリーミングでAktarに送るので、メモリに読み込むことはありません。

  • 公開リンクと期限付きリンク

    リンクが公開リンクになるか、非公開バケットでも使える期限付き(署名付き)リンクになるかは、アプリと同じくアップロード先の設定で決まります。

重複ファイルのリンク、画像処理、{md5}と{sha256}、分割アップロードは、Mac版Aktar 0.10.0とWindows版0.3.0で加わりました:0.10.0の新機能。

トラブルシューティング

aktarのエラーメッセージはaktar:で始まり、stderrに出力されます。終了コードで問題の種類がわかります。

Aktar isn't running, or its local API is turned off

Aktarを開き、設定 → 連携でローカル接続を許可がオンになっているか確認してください。そこでポートを変更した場合は、--portかAKTAR_PORTで指定するか、aktar login --portをもう一度実行します。終了コードは3です。

Not connected to Aktar yet

保存されたトークンもAKTAR_TOKENもありません。Aktarの設定 → 連携に表示されるトークンでaktar loginを実行してください。終了コードは3です。

The token doesn't match Aktar's anymore

Aktarでトークンが再生成されたか、入力を間違えています。現在のトークンでaktar loginをもう一度実行してください。AKTAR_TOKENが設定されていると保存されたトークンより優先されるので、そちらも更新するか削除してください。終了コードは3です。

The app on port … couldn't prove it's Aktar

Aktarのポートで何かが応答しましたが、あなたのトークンを持っていることを示せなかったため、トークンは送信されませんでした。Aktarが起動している場合は、トークンが変わった可能性があります。aktar loginをもう一度実行してください。Aktarが起動していない場合は、起動してください。終了コードは3です。

This version of Aktar can't prove it's Aktar

aktar 0.6.0以降はトークンを送る前にアプリを確認するため、Mac版Aktar 0.18.0以降またはWindows版Aktar 0.11.0以降が必要です。Aktarをアップデートすれば(アップデートはAktar自身が案内します)、コマンドは再び使えるようになります。終了コードは3です。

MCP: This server doesn't upload local files

エージェントがホームフォルダーまたはディスクの最上位でaktar mcpを起動しており、--rootが指定されていません。サーバーのコマンドまたは設定に、ファイルの取得元にするフォルダーを--rootで追加し(例: aktar mcp --root ~/Projects)、エージェントを再起動してください。

Auto-delete isn't set up for this destination

--expiresにはバケットの自動削除ルールが必要です。Aktarのメニューバーかアップロード先の設定にある削除までから一度だけ設定するか、--expiresを付けずにアップロードしてください。終了コードは1です。

No destination named "…"

メッセージにはAktarにあるアップロード先の名前が一覧表示されます。綴りを確認するか、スペースを含む名前を引用符で囲む(-d "Client work")か、aktar destinationsで表示されるIDを使ってください。終了コードは2です。

大きなファイルのアップロードに時間がかかる

これはストレージプロバイダの速度によるものです。aktarにはアップロードの時間制限がなく、ターミナルではstderrに進行状況を表示します。完了するまでAktarを起動したままにしてください。接続が切れたりAktarが終了したりした場合(Aktar closed the connection before the request finished)は、同じファイルをもう一度アップロードしてください。Mac版Aktar 0.10.0とWindows版0.3.0では、最後に終わった部分の続きから再開します。

aktarが起動しない:SyntaxErrorまたはparseArgs

Node.jsのバージョンが18より古いためです。node --versionで確認してアップデートするか、独自のNode.jsを同梱するHomebrew版のaktarをインストールしてください。

PowerShellでスクリプトの実行が無効になっていると表示される

PowerShellの実行ポリシーが、npmがaktar用にインストールしたスクリプトをブロックしています。代わりにaktar.cmdを実行するか、Set-ExecutionPolicy -Scope CurrentUser RemoteSignedでローカルのスクリプトを一度許可してください。