InfoSlides — put content on a TV or screen について
InfoSlides は、デジタルサイネージの管理者や AI エージェント向けの CLI と MCP サーバーです。プレゼンテーション、PDF、画像、ライブデータを画面に配信し、ワークスペース作成から端末のペアリング、再生スケジュール設定まで行えます。
主な機能
- 01PowerPoint、PDF、メディアファイルのアップロード
- 02スライドショー、スライド、スケジュール管理
- 03端末のペアリングと再生制御
- 04ライブフィードとプッシュデータの接続
- 05画面状態の確認と再生診断
活用シーン
- 01店舗画面にメニューや営業時間を表示
- 02オフィス画面にライブ数値を表示
- 03エージェント経由で画面と配信予定を設定
MCP 対応
InfoSlides は、ワークスペース、スライドショー、メディア、端末、スケジュール、ライブデータを管理するツールを MCP クライアントに提供します。ローカルプログラムまたはホスト型サーバーで接続できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
InfoSlides:ターミナルやエージェントからテレビにコンテンツを表示
PowerPoint、PDF、写真、またはライブデータフィードを、スマートテレビで再生される動画ストリームに変換します。 受付の画面に表示するランチメニュー。店頭の営業時間。学校の廊下の掲示板。ホテルのロビーの客室情報。オフィスのリアルタイム数値ボード。
このリポジトリは infoslides バイナリです。Claude Code、Claude Desktop、Cursor などの AI エージェント向けに、開発者用 CLI と MCP サーバーの両方として機能する、依存関係のない単一の実行ファイルです。同じツールは https://infoslides.app/mcp のホスト型サーバーとしても動作し、ChatGPT やウェブ版 Claude などのアシスタントから利用できます(ホスト型サーバーを参照)。
特筆すべきは、create_tenant が匿名で利用できることです。このサーバーをインストールしたエージェントなら、アカウントがまったくない状態から、物理画面でコンテンツを再生するところまで、ユーザーを導くことができます。ワークスペースを用意し、スライドをアップロードし、ディスプレイを登録し、スケジュールを割り当て、ストリームのリンクを返すまで、ダッシュボードを誰かが開く必要はありません。私たちが知る限り、この方法で操作できるデジタルサイネージプラットフォームはほかにありません。
新しいワークスペースは永久無料プランで開始します。画面1台、スライドショー4件、ユーザー2人、200 MBです。クレジットカードも、トライアル期間も、期限切れになるものもありません。以下のフローはすべて無料で、継続して利用できます。
何もない状態から画面での再生まで
# 1. Install (macOS/Linux; see Install for Windows and MCP clients)
# Version-pinned. Check /releases/latest for the current one.
curl -L https://github.com/arnibj/InfoSlides.MCP/releases/download/v1.8.0/infoslides-v1.8.0-linux-x64.tar.gz | tar xz
# 2. Create a workspace (anonymous; prints an admin API key and saves it to ~/.infoslides)
./infoslides tenant create "Acme Cafe" [email protected] --save
# 3. Grab a ready-made deck from the starter gallery
./infoslides gallery list
./infoslides slideshow clone <gallery-id> --from-gallery
# 4. Register the screen and tell it what to play
./infoslides device create "Reception TV"
./infoslides schedule assign <device-id> <slideshow-id>
# 5. The link to open on the TV
./infoslides stream link <device-id>
その URL をテレビのブラウザーまたは InfoSlides TV アプリで開きます。この画面の設定に応じた方法でコンテンツが再生されます。
https://github.com/user-attachments/assets/8da62e05-59f4-4a70-9351-dfa3fd47ce4e
MCP サーバーとして
MCP クライアントに接続します。
infoslides mcp install --client claude-code # or claude-desktop / cursor
または、Gemini CLI 拡張機能やAntigravity プラグインとしてインストールします。
# In Gemini CLI
gemini extensions install https://github.com/arnibj/InfoSlides.MCP
# In Antigravity CLI (install agy first, see below), from a clone of this repository
git clone https://github.com/arnibj/InfoSlides.MCP
agy plugin install ./InfoSlides.MCP
Antigravity はフォルダーからプラグインをインストールするため、このリポジトリのコピーが必要です。リポジトリのルートがプラグインです(plugin.json、mcp_config.json、skills/)。まず agy 自体をインストールしてください。Windows では irm https://antigravity.google/cli/install.ps1 | iex、macOS と Linux では curl -fsSL https://antigravity.google/cli/install.sh | bash を実行します。どちらの方法でもローカルの infoslides プログラムを実行するため、先にインストールして PATH に追加してください。(agy plugin import gemini は、Gemini CLI にすでにインストールされている拡張機能のみをインポートし、URL は受け取りません。)
または、Claude プラグインを追加します(ホスト型サーバーを使うため、事前のインストールは不要です)。
claude plugin marketplace add arnibj/InfoSlides.MCP
claude plugin install infoslides@infoslides
または、最新リリースから .mcpb バンドルをダウンロードし、MCP バンドルに対応する任意のクライアントにインストールします。3つのプラットフォームすべてに対応するバイナリが含まれており、利用開始にあたってランタイムも API キーも不要です。
または、手動で設定します(stdio トランスポート)。
{
"mcpServers": {
"infoslides": {
"command": "/path/to/infoslides",
"args": ["--mcp"],
"env": { "INFOSLIDES_API_KEY": "isk_admin_..." }
}
}
}
INFOSLIDES_API_KEY は任意です。省略すると、エージェントがワークスペースをゼロから作成できます。
ホステッドサーバー
ブラウザーまたはクラウドで実行されるアシスタントは、ローカルバイナリではなくホステッドサーバーに接続します。
https://infoslides.app/mcp
- トランスポート: ストリーミング可能な HTTP。
- サインイン: InfoSlides アカウントを使った OAuth。アシスタントが InfoSlides の同意ページを開き、
承認すると、そのワークスペースであなたとして操作します。ベアラー
isk_API キーも使用できます。 - 追加場所: ChatGPT、Claude、Gemini のカスタムコネクターとして、または上記の Claude プラグインを通じて追加します。
- 接続の解除: infoslides.app/settings/connected-apps で接続を取り消します。
ChatGPT、Claude、その他のホステッドアシスタント向けに、サーバーは日常的な画面操作に使う厳選されたツールを提供します(Gemini 接続ではより幅広いツールを利用できます)。対象は、再生中のコンテンツ、スライド、スケジュール、ティッカー、ライブデータ、デバイス、AI Studio のスライドです。請求とチェックアウト、ワークスペースの作成、API キーの管理、ローカルパスからのファイルアップロードは含まれません。これらの操作は、ご自身のマシンまたはダッシュボードでのみ意味を持つためです。すべての呼び出しはご自身の認証情報を使って InfoSlides API に送信され、サーバーに認証情報が保存されることはありません。アシスタントスキルのホステッド版(zip)を読み込みます。
エージェントが利用できるもの
ツールは一連の流れ全体をカバーします。ワークスペースのプロビジョニング(create_tenant、匿名で実行され、管理者キーを返します)、スライドショー(.pptx/.pdf の直接アップロードを含む、upload_pptx)、URL またはファイルの直接アップロードによるメディアスライド(upload_media)、表示条件(時刻、曜日、日付範囲、データトリガー。すべてまたはいずれかの条件に応じて表示または非表示)、再生中の内容の編集(スライドの再生時間、非表示フラグ、ライブデータを変更する update_slide、ニュースティッカー、時計、デフォルトの再生時間、共有設定を変更する update_slideshow、delete_slide、delete_slideshow、replace_slideshow_file、ティッカーのソースを確認する list_sources、取得するフィードのための list_adapters、create_source、update_source_settings、delete_source、各フィードの状態と直近のエラーをわかりやすい言葉で表示する list_sources と get_source_status、フィードを更新する fetch_source_now、取得した内容を表示する get_source_items、保存前に設定を試す test_source_config、ワークスペースのブランドガイドを読み取る get_brand_guide、下書きを置き換える update_brand_guide、ガイドに基づいてサンプルスライドを描画する preview_brand、スライドショーをガイドに照らして確認する check_brand、upload_brand_logo と list_brand_previews。担当者は Brand ページでガイドを確認します。get_source_fields によるソースのフィールド確認、add_weather_alert_timeline、テンプレートの管理(list_template_categories、get_template、update_template、delete_template、clone_template、get_template_usage、regenerate_template_thumbnail)、テキストスライドの編集(get_slide_design、update_slide_design、ストック写真の search_stock_images)、Google Slides のインポート(import_google_slides)、共有スライドショーからのページのコピー(list_shared_slideshows、import_slide)、メディアライブラリ(get_upload_limits、list_media、get_media、update_media、delete_media、list_media_folders、create_media_folder、rename_media_folder、delete_media_folder)、画面とブロードキャストチャンネルの削除(delete_device、create_broadcast_device)、スケジュール枠のその場での編集(update_schedule_entry)、監査証跡、エラーログ、削除したスライドショーの復元(get_audit_trail、get_error_log、restore_slideshow)、チームアクセスの無効化と再有効化(deactivate_member、reactivate_member)、プラットフォームのお知らせ(get_platform_version、get_platform_notices)、ヘルプ記事、ブログ、リリースノート(search_articles、get_article)、
ライブデータのプッシュで更新されるテンプレートスライド(update_source、およびユーザー自身のシステムからデータを受け取るプッシュソース:push_data、get_source_status、create_source_key)、デバイス、AspectMismatch 警告付きのスケジュール、再生モードの制御(update_slideshow の playbackMode は、スライドショーをレンダリング済み動画ストリームとライブ HTML/CSS ループの間で切り替えます)、画面のモードにかかわらず機能する再生可能なストリームリンク、担当者の目の前でのテレビのペアリング(pair_device)、1 回の呼び出しで実行する「ここでこれを再生」(play_slideshow_find_device)、時間指定スケジュール(get_schedule、add_schedule_entry、delete_schedule_entry)、一時的な表示の切り替え(create_takeover、list_takeovers、end_takeover)、再生時間レポート(get_slideshow_plays、get_device_plays)、画面の位置情報(update_device、地点付近の画面を検索する list_devices)、チーム(list_team、invite_team_member、revoke_team_invitation、remove_team_member)、ワークスペースのタイムゾーンとロケール(update_tenant)、「現在のプランと更新日は?」(get_billing)、「この画面はどれ?」(identify_devices)、画面に表示されている内容と黒画面になっている理由(get_now_slide_png、get_device_diagnosis)、1 分以内に画面へ写真や動画を表示する機能(show_media_on_device、get_show_status)、画面名の変更(update_device)、ワークスペースのヘルスサマリーとオフライン警告メール(get_workspace_health、get_offline_alerts、set_workspace_offline_alerts、set_device_offline_alerts)、AI Studio スライド(make_ai_slide、get_ai_slide_job、insert_ai_slides、start_ai_studio_trial)、保存前のテンプレートのプレビュー(preview_new_template)、変更の取り消し(undo_change)、InfoSlides チームへのフィードバック(問題が発生した場合の report_issue、作業がうまくいった後の leave_testimonial。チームは、エージェント名を表示したうえで、推薦コメントをランディングページに掲載することがあります)、自己検証用の PNG スライドプレビュー、プッシュ専用キーを含む単一スライドに限定された API キー、選択したプランと請求期間に対応する Paddle のチェックアウトリンク。バックエンドはすべてのプラン制限を適用し、ツールレイヤーからこれらを回避することはできません。
独自のライブデータスライドを設計する: エージェント向けテンプレートとデータプッシュのガイドでは、画面で見やすいテンプレートの書き方と、データをプッシュするシステムの接続方法を解説しています。
**スキル**は、ツールだけでは判断できないことを補います。自動更新スライドが固定スライドより適している場合、横向きと縦向きの選び方、列に並ぶ人や通りすがりの人に向けてスライドを表示する時間、名前で画面を探す方法、画面に表示する内容の編集と変更が壁面ディスプレイに反映されたことの確認(renderStatus)、そしてリモコンを手にしている人にテレビ側の操作を説明する方法を扱います。
InfoSlides Digital Signage Assistant スキルは会話の側面をカバーします。人の発話(「ロビーのティッカーを消して」「11時前に朝食メニューを表示して」)を、適切な順序で実行する適切なツール呼び出しに変換し、相手にどう伝えるべきかも示します。また、具体的なシナリオ、スライドを自分で設計する方法、問題を報告する場合や感想を投稿する場合についても解説します。ツール名は同じです。https://infoslides.app/skills/infoslides-assistant/SKILL.mdで読むか、infoslides-assistant.zipをダウンロードして、スキルを読み込む Claude などのエージェントにインストールしてください。
CLI
infoslides login # OAuth in the browser (Google/Microsoft/GitHub)
infoslides tenant create "Acme Cafe" [email protected] --save
infoslides gallery list
infoslides slideshow clone <gallery-id> --from-gallery
infoslides slideshow upload-pptx ./deck.pptx # or ./deck.pdf; or: media upload + slide add-media
infoslides media upload ./logo.png
infoslides slide add-media <slideshow-id> --asset-id <media-id> --duration 8
infoslides slide set-conditions <slide-id> --condition time=08:00-11:00
infoslides slide set-conditions <slide-id> --condition date=2026-12-01..2026-12-26 --mode hide
infoslides slide update <slide-id> --hidden true # or --duration 15; dynamic: --override-data '{"price":"1.990 kr"}'
infoslides slide delete <slide-id>
infoslides slideshow update <slideshow-id> --ticker false --default-duration 15 --clock true
infoslides slideshow replace-file <slideshow-id> ./new-deck.pptx
infoslides slideshow delete <slideshow-id>
infoslides source list # ids for --ticker-source
infoslides template create "Weather" --html ./weather.html --css ./weather.css
infoslides slide add-dynamic <slideshow-id> <template-id>
infoslides source update <slide-id> --data '{"tempC": 12}'
infoslides template create "Queue" --html ./queue.html --css ./queue.css --data-mode push
infoslides slide add-dynamic <slideshow-id> <template-id> --create-push-key # prints sourceId + a push key
infoslides source push <source-id> --data '{"nowServing": "A-142"}'
infoslides source status <source-id>
infoslides device create "Lobby screen" --width 1080 --height 1920
infoslides schedule assign <device-id> <slideshow-id>
infoslides stream link <device-id>
画面、スケジュール、ワークスペース:
infoslides device pair --nickname swift-oak-42 --slideshow-id <slideshow-id> # or --qr <url>; --device-id alone prints a code to type on the TV
infoslides device play <slideshow-id> --device-id <device-id> --until 2026-10-01T17:00 # --dry-run to see what would happen
infoslides device list --q lobby --near 64.1466,-21.9426
infoslides device set-location <device-id> 64.1466 -21.9426 --label "Front lobby"
infoslides device identify # each online screen shows its name for ~90 s
infoslides device now <device-id> --output lobby.png # what the screen should show right now
infoslides device diagnose <device-id> # why is it black?
infoslides device show <device-id> --file ./photo.jpg --until 2026-10-01T17:00 # or --url; default 30 minutes
infoslides device show-status <device-id> <media-asset-id> <slideshow-id>
infoslides device update <device-id> --name "Lobby TV" --width 1080 --height 1920
infoslides device offline-alerts <device-id> false # true --quiet-start 22:00 --quiet-end 07:00 for own quiet hours
infoslides device plays <device-id> --from 2026-09-01 --to 2026-09-30 # slideshow plays <slideshow-id> for the other way round
infoslides schedule show <device-id>
infoslides schedule add <device-id> <slideshow-id> 06:00 11:00 --priority 1
infoslides schedule remove <device-id> <entry-id>
infoslides takeover create <slideshow-id> --device <id>,<id> --minutes 30 # or --starts-at/--ends-at
infoslides takeover list --active
infoslides takeover end <takeover-id>
infoslides source adapters
infoslides source create RssFeed "RÚV news" --config '{"feedUrl":"https://..."}' --interval 900
infoslides source edit <source-id> --enabled false
infoslides source delete <source-id>
infoslides source test RssFeed --config '{"feedUrl":"https://..."}' # try settings, nothing is saved
infoslides source fetch <source-id> # refresh now; source status shows the new health
infoslides source items <source-id> --limit 5
infoslides source fields <source-id> # field names and a sample value for mapping
infoslides schedule edit <device-id> <entry-id> --end 15:00
infoslides device delete <device-id> # prints an undo token; device broadcast "Hall" for a channel
infoslides media limits # free space and largest file before a big upload
infoslides media list --type video # media edit/delete, folders, folder-create/-rename/-delete
infoslides template usage <template-id> # template show/edit/clone/delete/categories/thumbnail
infoslides slide design <slide-id> # slide set-design <slide-id> @design.json; slide stock-search lake
infoslides slideshow restore <slideshow-id> # find it with: workspace audit --action SlideshowDeleted
infoslides slideshow shared # then slideshow import-slide <target> <source> <page>
infoslides workspace errors --level Error
infoslides platform version # platform notices, platform search "portrait screen", platform article help <slug>
infoslides team invite [email protected] --role TenantAdmin
infoslides team list # team revoke <invitation-id>, team remove <member-id>
infoslides workspace settings --time-zone Europe/London --locale en-GB
infoslides workspace health
infoslides workspace offline-alerts
infoslides workspace set-offline-alerts --quiet-start 22:00 --quiet-end 07:00 # neither option: alert at any hour
infoslides billing upgrade --plan Starter --period annual
AI Studio、テンプレートのプレビュー、取り消し:
infoslides ai make <slideshow-id> prompt --prompt "Lunch special: soup and bread 1.990 kr, 11-14"
infoslides ai make <slideshow-id> photo --media-asset-id <media-id> # also: url --url <page>, document --media-asset-id <pdf-id>
infoslides ai status <slideshow-id> <job-id> # poll until Ready, then look at the previews
infoslides ai insert <slideshow-id> <job-id>
infoslides ai trial # the free trial, once per workspace
infoslides template preview @./menu.html --css @./menu.css --sample-data @./sample.json --output menu.png
infoslides undo <token> # --force overwrites a later change
変更を行うコマンドは、undo with: infoslides undo <token>を標準エラー出力に表示します。このトークンは24時間有効です。APIで判断が必要な場合(NeedsClarification)、質問と選択肢が標準エラー出力に表示されます。選択したIDを指定して、コマンドを再実行してください。
グローバルオプション:--api-url、--api-key、--json。認証情報の優先順位:フラグ → INFOSLIDES_API_KEY / INFOSLIDES_API_URL → ~/.infoslides/ → デフォルト。
更新通知
どのインストール方法でも、新しいリリースがあっても自動で通知されません。そのため、バイナリが自ら確認します。確認はバックグラウンドで1日に1回まで行われ、結果は~/.infoslides/update-check.jsonにキャッシュされます。CLIモードでは通知は標準エラー出力に送られるため、--jsonの出力はそのままクリーンに保たれ、パイプで利用できます。--mcpモードではサーバーの指示に含まれ、エージェントが通知を伝えられます。
この確認がコマンドのクリティカルパスを妨げることはありません。表示される通知はキャッシュから取得され、更新確認は次回のために行われます。そのため、コマンドの実行が遅くなることはなく、オフラインでも負荷はありません。INFOSLIDES_NO_UPDATE_CHECK=1を設定すると無効にできます。また、CIが設定されている場合も自動的に無効になります。
インストール
最新リリースからダウンロードしてください。
| プラットフォーム | 成果物 |
|---|---|
| Windows | infoslides-v<version>-win-x64.zip |
| Linux | infoslides-v<version>-linux-x64.tar.gz |
| macOS(Apple Silicon) | infoslides-v<version>-osx-arm64.tar.gz |
| MCP クライアント | infoslides-mcp-v<version>.mcpb |
すべてのリリースにsha256sums.txtが含まれています。バイナリはNative AOTコンパイルされているため、実行時に必要なものはありません。ソースからビルドすることもできます。
dotnet publish src/InfoSlides.Cli -c Release -r linux-x64 # or win-x64 / osx-arm64
リンク
- InfoSlides:https://infoslides.app
- ホスト型 MCP サーバー:
https://infoslides.app/mcp(OAuth。 ホスト型サーバーを参照) - REST API リファレンス:https://infoslides.app/docs/api(このツールがラップする
/v1のエンドポイント) - AI エージェント向けガイド:https://infoslides.app/agents.md
- ブログ:https://infoslides.app/blog(テンプレート、ライブデータ、画面設計、エージェントに関するガイド)
- Digital Signage Assistant スキル:https://infoslides.app/skills/infoslides-assistant/SKILL.md(zip)
リポジトリの構成
| パス | 目的 |
|---|---|
SKILL.md | ツールと組み合わせて使う、サイネージの判断に関するスキルです。 |
API-CONTRACT.md | InfoSlides バックエンドが実装する、エージェント向けの REST コントラクトです。 |
BACKEND-CHANGES.md | InfoSlides 側で必要な作業のチェックリストです(TenantApiKeys テーブル、アクセス制御など)。 |
docs/PUBLISHING.md | リリース、MCPB のバンドル化、MCP レジストリへの公開に関する手順書です。 |
mcpb/ | MCPB バンドルのマニフェストテンプレートです。 |
src/InfoSlides.Core | 共有 API クライアント、モデル、AOT JSON コンテキスト、設定、認証です。 |
src/InfoSlides.Mcp.Tools | ローカルサーバーとホスト型サーバーで共有する MCP ツールです。 |
src/InfoSlides.Cli | infoslides 実行ファイルです。CLI コマンドとローカル(stdio)MCP サーバーを提供します。 |
src/InfoSlides.McpServer | infoslides.app/mcp にある、ホスト型 MCP サーバー(ストリーミング可能な HTTP、OAuth)です。 |
skills/ | デジタルサイネージアシスタントのスキルです。ローカル版を収録しています。 |
plugins/claude/ | Claude プラグインです(ホスト型サーバーとホスト型スキル版)。 |
gemini-extension.json, GEMINI.md | Gemini CLI 拡張機能です。 |
plugin.json, mcp_config.json | Antigravity プラグインです(リポジトリのルートがプラグインです)。 |
deploy/ | ホスト型サーバーのデプロイに使用します。systemd ユニット、nginx、デプロイスクリプトを含みます。 |
tests/ | 単体テスト、MCP stdio のエンドツーエンドスモークテスト、ホスト型サーバーのテストです。 |
開発
dotnet build # AOT analyzers run as errors; keep it warning-free
dotnet test # unit + MCP end-to-end tests (no network needed)
MCP SDK ツールは AOT セーフな WithTools<T>() 経由で登録します。すべてのワイヤー型を InfoSlidesJsonContext に列挙する必要があり、いずれかが不足するとテストが失敗します。--mcp モードでは stdout がプロトコルに使われるため、ログは stderr にのみ出力してください。
ツールの説明はドキュメントではなく、トリガーとなるテキストです。モデルは説明をユーザーの直近の発言と照合するため、API 操作ではなく状況を先に示します(「物理画面を登録する:受付にあるテレビ、カウンターの上のメニューボード」など)。McpStdioSmokeTests のテストでは、この語彙がひそかに変わってしまわないよう固定しています。
プライバシーポリシー
InfoSlides は、許可されたディスプレイにデジタルサイネージのストリームをレンダリングして配信する目的に限り、プレゼンテーションのコンテンツ、メディアアセット、画面デバイスのメタデータを処理します。InfoSlides はユーザーデータを販売せず、ユーザーコンテンツを使って基盤 AI モデルをトレーニングせず、第三者広告のためにユーザーを追跡することもありません。
OAuth 認証のセキュリティ、データ保持、データ主体の権利に関する詳細は、プライバシーポリシーをお読みください。
ライセンス
MIT.
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。