Communitygithub.com

RunApps 技能

透過 MCP 工具在 RunApps (runapps.ai) 上建置與發布 AI 網頁應用程式,並使用 RunApps JavaScript SDK (@runappsai/sdk) 撰寫應用程式程式碼。涵蓋授權連線、平台模型、所有 MCP 工具、SDK 使用、上傳規則與安全規範。

RunApps 技能 是什麼?

此技能提供在 RunApps 平台上無縫建置與發布 AI 網頁應用程式的完整指引。它詳細說明如何透過裝置授權流程(device-code flow)取得並管理 API 金鑰,並設定 MCP 串流 HTTP 連線。技能內容涵蓋 RunApps 平台的核心物件模型,包含應用程式(App)、套件(Bundle)、可見性(Visibility)與創作者費用(Creator Fee),並逐一介紹每個 MCP 工具(如 create_app、upload_bundle、update_app)的用途與使用時機。此外,它也完整說明了 RunApps JavaScript SDK 的功能,包括使用者登入、對話、圖片/音訊/影片生成、每用戶檔案儲存、IndexedDB 同步以及私有提示(private prompts)的實作方式。技能最後強調了開發與發布的工作流程,從建立應用程式、本地開發、打包上傳,到設定應用程式資訊與發布為私人或公開狀態,並提供遵循的安全規則,例如使用 list_models 取得正確模型名稱、避免在應用程式程式碼中嵌入 API 金鑰等,以確保開發者能正確且安全地使用 RunApps 平台。

相容平台✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/runapps/skills/tree/HEAD/runapps

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

透過 MCP 使用 RunApps

RunApps (https://www.runapps.ai) 發布 AI 網頁應用程式:創作者上傳一個靜態前端套件(zip),該套件將在專屬的 https://<slug>.runapps.dev 網域上提供服務,使用者透過同一個 RunApps 帳號登入並支付自己的模型使用費用,而創作者則可以從每次呼叫中賺取費用。以下所有操作都透過 runapps MCP 伺服器和 SDK 完成。尚未連線?請參閱「連線」章節。

此檔案是進入點:連線方式、平台模型、工具目錄、工作流程與規則。SDK(應用程式程式碼如何與模型和檔案溝通)位於 references/sdk.md;確切的工具參數位於 references/tools.md。請僅閱讀任務所需的內容。

連線(授權)

權威且永遠最新的版本在 https://www.runapps.ai/agent/setup.md;此處為簡化版。使用者永遠不需要為你輸入密碼,你也永遠看不到密碼:你只需要求一個金鑰,使用者在瀏覽器中點擊一次「核准」即可。

  1. 請求金鑰:POST https://www.runapps.ai/api/agent/device/code,並附上 JSON {"name": "<你的名稱> @ <機器>", "scopes": "read,develop,publish,gateway"}。回應中包含 device_code、user_code、verification_uri_complete(https://www.runapps.ai/agent/authorize?code=XXXX-XXXX)、expires_in(600 秒)和 interval(5 秒)。將 verification_uri_complete 原封不動地顯示給使用者,並請他們開啟該網址並核准。name 是金鑰的身分:使用相同名稱核准一個請求,會撤銷該名稱的前一個金鑰,因此重新執行設定不會累積多個金鑰。
  2. 輪詢:每隔 interval 秒鐘 POST https://www.runapps.ai/api/agent/device/token,並附上 {"device_code": "…"}。status 可能是 pending(等待)、slow_down(減速)、denied / expired(停止並通知使用者)或 approved(核准),後者會回傳 api_key(rk_…)、key_prefix、scopes 和 mcp_url —— 僅一次。立即將其寫入你的 MCP 設定;切勿寫入對話、日誌或儲存庫。
  3. 連線:MCP 串流 HTTP 連線至 https://www.runapps.ai/api/mcp,並帶上標頭 Authorization: Bearer <api_key>。Claude Code:claude mcp add --transport http runapps "https://www.runapps.ai/api/mcp" --header "Authorization: Bearer <api_key>"。Codex:[mcp_servers.runapps] url = "https://www.runapps.ai/api/mcp",http_headers = { Authorization = "Bearer <api_key>" }。其他用戶端:使用相同的 URL 和標頭。接著執行 tools/list;來自 initialize 的 instructions 會提供建議的工作流程。

範圍(Scopes):read、develop、publish、gateway 為預設授予;danger(刪除 / 取消發布)除非你明確要求並告知使用者原因,否則絕不會被包含在內。使用者可以在核准頁面上取消勾選範圍,並於之後在 https://www.runapps.ai/dashboard/api 重新命名金鑰、變更其範圍或撤銷它(範圍變更會在下一次呼叫時生效,無需新金鑰)。一個工具在缺少其所需的範圍時被呼叫,會回傳一個指出缺少範圍的錯誤:請要求使用者重新授權,不要試圖繞過。

同一個金鑰在具有 gateway 範圍時,也可在閘道(https://www.runapps.ai/v1,相容 OpenAI,Authorization: Bearer rk_…)上使用 —— 用於測試你建置的應用程式;每次呼叫都會向使用者收費。若要永久斷開連線,請呼叫 revoke_my_key 並帶上 confirm: true。

平台模型

物件說明如何存取
應用程式(專案)一個已發布的套件,具有平台指定的 slug、名稱、一行描述、Markdown 長描述、分類、圖示、可見性與創作者費用(rebate_rate)。建立時為草稿且無套件,因此在任何程式碼之前 slug 就已存在。list_apps、get_app、create_app、update_app
套件應用程式建置結果的 zip 檔。整個儲存;檔案會從 https://<slug>.runapps.dev 中提供服務。點檔案(.private/…)永遠不會被提供服務;zip 根目錄下的 index.html 是預設入口。upload_bundle(+ PUT)、upload_bundle_base64、check_bundle
可見性draft(僅創作者可見)→ private(不公開:擁有連結者皆可存取,無需審查)或 public(公開於應用程式庫中;首次設為公開會經過審查並顯示為 pending,後續更新則立即生效;如果被拒絕,會附帶 review_note)。update_app 搭配 visibility、get_review
使用者與登入使用者在應用程式內部使用其 RunApps 帳號登入(SDK 負責處理;new RunApps() 無需金鑰)。每個使用者支付自己的模型使用費用加上創作者費用。應用程式永遠不會持有金鑰。SDK(references/sdk.md)
私有提示應用程式發布但瀏覽器永遠看不到的提示檔:在 zip 中的 .private/prompts/<id>.md;應用程式發送 prompt: { id, vars },閘道會填入內容並將其前置。get_app / check_bundle 會列出找到的 ID
每用戶檔案與同步每個使用者每個應用程式都有一個檔案空間(client.files),而 IndexedDB 同步(client.sync)則會將本地資料庫鏡像到該空間中。SDK
模型一系列聊天、視覺、圖片、語音、轉錄、影片、嵌入與即時模型;請求中需使用目錄名稱來指定模型。list_models
代理金鑰你所持有的 rk_ 金鑰:kind = agent,具有範圍;列於使用者的 API 金鑰之下。revoke_my_key

分類:創意、內容、生產力、行銷、工程、設計、研究、數據分析、商業、金融。

工作流程

  1. 建立:使用 create_app 並提供 name(以及 description、category)。結果包含 slug(proj-xxxxxxxx,由平台指派,你或使用者不得自行選擇;管理員之後可能為已上架的應用程式賦予可讀的名稱)和 url。將 slug 告知使用者。
  2. 本地開發,針對該 slug(references/sdk.md,「建置應用程式」):
    <script src="https://www.runapps.ai/sdk/latest.js"></script>
    <script>
      const client = new RunApps({ project: "<slug>" });
      const r = await client.chat.create({ model: "Claude Sonnet 4.6", messages: [{ role: "user", content: "hi" }] });
    </script>
    
    從 http://localhost:<port> 登入即可運作,並且呼叫會透過真實的閘道進行。從 list_models 中挑選模型(使用確切名稱)。切勿在應用程式程式碼中放入 rk_ 金鑰。
  3. 建置並壓縮 建置資料夾的內容:cd dist && zip -r ../app.zip .,這樣 index.html 就會位於 zip 的根目錄(直接壓縮資料夾本身是最常見的錯誤)。絕對路徑的資源可以正常運作;點資料夾會被隱藏。
  4. 上傳:upload_bundle → PUT 將 zip 檔傳送至 upload_url(curl -sS -X PUT -H 'Content-Type: application/zip' --data-binary @app.zip '<upload_url>')。PUT 的回應是套件報告:修正每個警告(未載入 SDK、入口不在根目錄、頁面中有金鑰)。check_bundle 可隨時重新讀取該報告。
  5. 描述:使用 update_app 設定 description(一行,說明應用程式用途)、long_description(Markdown:使用者可獲得什麼、如何使用、實際花費)、category、icon_url(方形 PNG/SVG,https 或 data URL)。
  6. 發布:使用 update_app 將 visibility 設為 "private" 以獲得可分享的連結,或設為 "public" 以加入應用程式庫。在設為 "public" 之後,get_review 會顯示 pending 狀態,直到審查者做出決定;若被 rejected,則會附帶 review_note 供你處理,之後再將 visibility 設為 public 一次。在發布前,請自行開啟 url(或請使用者開啟):如果套件回傳 404 或顯示空白頁面,將會被拒絕。

更新:隨時上傳新套件或變更中繼資料;公開的應用程式會保持公開狀態。

規則

  • [danger] 工具(unpublish_app、delete_app)會移除其他可能正在使用的東西。先詢問使用者,並僅在他們同意後才傳遞 confirm: true;若缺少 danger 範圍,則工具本身就會被拒絕。
  • 每個使用 gateway 範圍進行的模型呼叫,以及使用者應用程式進行的每個呼叫,都會花費真實錢財。請使用簡短的提示詞和便宜的模型進行測試;list_models 會提供價格資訊。
  • 金鑰是使用者的:每台機器一個(以 name 區分),不得共用,不得寫入 MCP 設定以外的任何地方。當被要求斷開連線時,使用 revoke_my_key 撤銷。
  • 不要發明模型名稱;請使用 list_models。使用未知名稱會導致 400 錯誤,絕不會被靜默替換。
  • 私有提示的文字必須保持隱私:閘道會阻止回傳會回顯該提示的回覆。

下一步閱讀

任務閱讀
撰寫應用程式:登入、對話、串流、圖片、音訊、影片、檔案、同步、私有提示、錯誤處理references/sdk.md
確切的工具參數與結果格式references/tools.md
連線(完整文字,始終最新)https://www.runapps.ai/agent/setup.md
建置套件、發布、收益references/sdk.md → 「建置應用程式」、「發布」

相關技能