Workflows
ワークフローと manifest.json
ワークフローは、Web アプリの起動や検索コマンドを conduit に追加するパッケージです。manifest.json をひとつ書いて zip にし、ウィンドウへドロップするだけでインストールできます。
インストール
manifest.jsonを含むフォルダを zip 圧縮する- conduit のウィンドウに zip をドラッグ&ドロップする
manifest.json は zip のルート直下か、1 階層下にあれば認識されます。GitHub の「Code → Download ZIP」で落としたアーカイブ(repo-main/manifest.json の形)もそのまま使えます。
- インストール先:
%APPDATA%\com.conduit.launcher\workflows\<id>\ - 同じ
idを再ドロップすると上書き(更新)されます - 再起動は不要です。インポート直後から検索に載ります
manifest.json の仕様
トップレベル:
| フィールド | 型 | 説明 |
|---|---|---|
| id必須 | string | パッケージの識別子。英数字と - _ . のみ(インストール先のフォルダ名になります)。同じ id は上書き対象 |
| name必須 | string | 表示名 |
| description | string | 説明。管理ビューのワークフロータブに表示 |
| icon | string | 絵文字 1 文字。アプリ側に icon がないときの既定アイコン |
| apps必須 | array | アプリ定義の配列。1 件以上 |
apps[] の各要素:
| フィールド | 型 | 説明 |
|---|---|---|
| name必須 | string | アプリ名。キーワードなしの検索はこの名前へのあいまい一致 |
| url必須 | string | 開く URL。http:// か https:// で始まること。{query} を含めると検索コマンドになります |
| keyword | string | トリガーキーワード。yt cats のように「キーワード + 空白 + 検索語」で起動し、検索語が URL エンコードされて {query} に入ります |
| icon | string | 絵文字 1 文字。なければパッケージの icon、それもなければ 🌐 |
| description | string | 検索結果のサブタイトルに表示 |
フルサンプル
{
"id": "web-essentials",
"name": "Web Essentials",
"description": "よく使う Web アプリ集(サンプル)",
"icon": "🌐",
"apps": [
{ "name": "GitHub", "url": "https://github.com", "icon": "🐙" },
{
"name": "YouTube 検索",
"url": "https://www.youtube.com/results?search_query={query}",
"keyword": "yt",
"icon": "▶️",
"description": "yt <キーワード> で YouTube 検索"
},
{
"name": "Google 翻訳",
"url": "https://translate.google.com/?sl=auto&tl=ja&text={query}",
"keyword": "tr",
"icon": "🌏"
}
]
}
このサンプルはリポジトリの docs/workflows-example にもあります。インストールすると:
github→ GitHub をブラウザで開く(名前のあいまい一致)yt lofi→ YouTube で「lofi」を検索(キーワード一致・最上位表示)tr hello→ Google 翻訳で「hello」を日本語へ
検索での振る舞い
- キーワード一致は常に最上位(スコア 1.0)。検索語が空でも(
yt単体でも)ヒットし、{query}は空文字で置換されます - 名前のあいまい一致で開いた場合も
{query}は空文字になります - アクションは 開く(既定ブラウザ)と URL をコピーの 2 つ
バリデーション
次のいずれかに当てはまる zip はインポート時にエラーになります:
manifest.jsonが見つからない(ルートにも 1 階層下にもない)- JSON の形式が不正
idまたはnameが空idに英数字と-_.以外の文字があるappsが空apps内にnameが空の要素があるurlがhttp(s)://で始まらない
セキュリティ上、開けるのは http(s) の URL だけです。file:// やカスタムスキームは実行時にも拒否されます。zip 内のパスはトラバーサル(zip-slip)対策済みです。