mcpField
I
InfoSlides — put content on a TV or screen

InfoSlides — put content on a TV or screen

本地服务
infoslides.app媒体与设计05 天前更新

关于 InfoSlides — put content on a TV or screen

InfoSlides 是面向数字标牌管理者和 AI Agent 的 CLI 与 MCP 服务,可把演示文稿、PDF、图片和实时数据安排到屏幕播放。它支持从创建工作区到配对设备和设置日程的操作。

主要功能

  1. 01上传 PowerPoint、PDF 和媒体文件
  2. 02管理幻灯片、播放列表与日程
  3. 03配对设备并控制屏幕播放
  4. 04接入实时数据源和推送数据
  5. 05检查屏幕状态与播放诊断

适用场景

  1. 01在店铺屏幕展示菜单和营业时间
  2. 02在办公室屏幕显示实时数据
  3. 03通过 Agent 配置新屏幕与播放日程

MCP 相关

作为 MCP 服务,InfoSlides 向客户端提供工作区、幻灯片、媒体、设备、日程和实时数据等管理工具。可通过本地程序或托管服务连接。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库
安装包
mcpbinfoslides-mcp-v1.7.3.mcpb1.7.3

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

InfoSlides:从终端或 Agent 将内容投放到电视

将 PowerPoint、PDF、照片或实时数据流转换成视频流,在任意智能电视上播放。 前台屏幕上的午餐菜单、商店橱窗里的营业时间、学校走廊里的公告栏、酒店大堂里的房间信息、办公室里的实时数据看板。

这个仓库提供 infoslides 二进制程序:一个无需依赖的可执行文件,同时也是供 Claude Code、 Claude Desktop 和 Cursor 等 AI Agent 使用的 开发者 CLI 和 MCP 服务。同一套工具也可作为托管服务运行,地址为 https://infoslides.app/mcp,供 ChatGPT 和 Claude 网页版等助手使用(参见 托管服务)。

有意思的是,create_tenant 无需身份验证。安装了此服务的 Agent 可以从完全没有账号开始,让用户在实体屏幕上播放内容:创建工作区、上传演示文稿、注册显示屏、分配播放计划,再交付视频流链接,全程无需任何人打开管理面板。据我们所知,没有其他数字标牌平台能以这种方式操作。

新工作区将使用永久免费套餐: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>

在电视的浏览器或 InfoSlides TV app 中打开该 URL。屏幕会按照当前配置的播放方式播放内容。

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 bundle,并在任何支持 MCP bundle 的客户端中安装。它包含适用于全部三个平台的二进制文件,启动时无需运行时环境或 API 密钥。

也可以手动配置(stdio 传输):

{
  "mcpServers": {
    "infoslides": {
      "command": "/path/to/infoslides",
      "args": ["--mcp"],
      "env": { "INFOSLIDES_API_KEY": "isk_admin_..." }
    }
  }
}

INFOSLIDES_API_KEY 是可选的。不设置该变量,Agent 也可以从头创建工作区。

托管服务

在浏览器或云端运行的助手会连接托管服务,而不是本地二进制文件:

https://infoslides.app/mcp
  • 传输方式: 可流式传输的 HTTP。
  • 登录: 使用你的 InfoSlides 账户进行 OAuth 身份验证。助手会打开 InfoSlides 授权页面, 你批准后,它便会以你的身份在该工作区中操作。也可使用 bearer isk_ API 密钥。
  • 添加位置: 在 ChatGPT、Claude 或 Gemini 中添加为自定义连接器,或通过上方的 Claude 插件添加。
  • 断开连接: 在 infoslides.app/settings/connected-apps 撤销任意连接。

对于 ChatGPT、Claude 和其他托管助手,该服务提供一组精选工具,用于日常屏幕操作(Gemini 连接可使用更广泛的工具集):当前播放内容、幻灯片、 日程、滚动字幕、实时数据、设备和 AI Studio 幻灯片。它不包含账单和结账、 工作区创建、API 密钥管理以及从本地路径上传文件等功能;这些功能只适用于你自己的机器或控制面板。每次调用都会使用你自己的 凭据访问 InfoSlides API,服务不会存储任何凭据。它会加载托管版助手技能 (zip)。

Agent 可获取的内容

这些工具涵盖了完整流程:工作区配置(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)、 一次调用即可“在那里播放这个”(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)、 一分钟内在屏幕上显示照片或视频(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;团队可能会将评价置顶到落地页,并注明来自该 Agent)、用于自我验证的 PNG 幻灯片预览、API 密钥(包括限定为仅推送单张幻灯片的密钥),以及可指定套餐和计费周期的 Paddle 结账链接。后端会强制执行所有套餐限制,工具层无法绕过这些限制。 设计自己的实时数据幻灯片:面向 Agent 的模板与推送数据指南介绍了如何编写适合屏幕展示的模板,以及如何连接向其推送数据的系统。

Skill,补足工具本身无法提供的判断力:何时应使用自动更新的幻灯片而非固定幻灯片,如何选择横向或纵向布局,幻灯片应为排队等候的人和路过的人分别展示多久,如何按名称查找屏幕、编辑屏幕上的内容并确认更改已显示在屏幕上(renderStatus),以及如何在对方手持遥控器时,引导他们完成电视端的操作。

InfoSlides 数字标牌助手 Skill涵盖对话方面的内容:它会把用户的话(“关闭大厅里的滚动字幕”“11 点前显示早餐菜单”)转换为按正确顺序调用合适工具,说明应如何回复用户,并包含完整示例、如何自行设计幻灯片,以及何时应报告问题或留下评价。工具名称不变。请访问 https://infoslides.app/skills/infoslides-assistant/SKILL.md 阅读,或下载 infoslides-assistant.zip,将其安装到 Claude 或其他支持加载技能的 Agent 中。

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

执行会更改内容的命令时,会向 stderr 输出 undo with: infoslides undo <token>;该令牌在 24 小时内有效。当 API 需要你作出选择(NeedsClarification)时,问题及其选项会输出到 stderr;请使用所选 ID 再次运行命令。

全局选项:--api-url、--api-key、--json。凭据优先级:标志 → INFOSLIDES_API_KEY / INFOSLIDES_API_URL → ~/.infoslides/ → 默认值。

更新通知

所有安装方式都不会主动通知你有新版本,因此二进制文件会自行检查:每天最多检查一次,在后台运行,并将结果缓存到 ~/.infoslides/update-check.json。CLI 模式下,通知会输出到 stderr(因此 --json 输出仍然整洁且可通过管道传递);--mcp 模式下,通知会加入服务说明,Agent 可将其转告给用户。

检查不会影响关键路径:你看到的通知来自缓存,刷新结果供下次使用,因此不会拖慢任何命令,离线也不会产生任何影响。设置 INFOSLIDES_NO_UPDATE_CHECK=1 可关闭检查;设置 CI 时也会自动关闭。

安装

从最新版本下载:

平台文件
Windowsinfoslides-v<version>-win-x64.zip
Linuxinfoslides-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

链接

仓库布局

路径用途
SKILL.mdSkill:与工具配套的标牌判断。
API-CONTRACT.mdInfoSlides 后端实现的、面向 Agent 的 REST 契约。
BACKEND-CHANGES.mdInfoSlides 端工作的检查清单(TenantApiKeys 表、访问控制等)。
docs/PUBLISHING.md发布、MCPB 打包和 MCP 注册表发布操作手册。
mcpb/MCPB 捆绑包清单模板。
src/InfoSlides.Core共享 API 客户端、模型、AOT JSON 上下文、配置和身份验证。
src/InfoSlides.Mcp.ToolsMCP 工具,由本地服务和托管服务共用。
src/InfoSlides.Cliinfoslides 可执行文件:CLI 动词和本地(stdio)MCP 服务。
src/InfoSlides.McpServer位于 infoslides.app/mcp 的托管 MCP 服务(可流式传输的 HTTP、OAuth)。
skills/Digital Signage Assistant 技能,本地变体。
plugins/claude/Claude 插件(托管服务 + 托管技能变体)。
gemini-extension.json, GEMINI.mdGemini CLI 扩展。
plugin.json, mcp_config.jsonAntigravity 插件(仓库根目录即为插件)。
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。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。