OffStereo

io.github.andzar22由 GitHub 帳號 andzar22 發布v3.0.0更新於 Oct 25, 2026

Builds narrated, playable music stories, explores sample lineage, and saves verified playlists.

已驗證Streamable HTTP可網頁執行效率與工作流媒體與設計

概覽

AI 產生的概覽

OffStereo 可產生帶旁白的可播放音樂故事、追溯有憑據的取樣脈絡,並把核實過的歌單存到聽眾的音樂服務中。

可以做什麼
撰寫並審閱原創故事,或把貼上的文件整理成可編輯草稿;為單曲或旁白故事建立可播放卡片,包括可下載的 MP3 故事音訊與已備妥的 Spotify 單集。探索依曲風篩選的新發行與公共檔案媒合,取得合併的當日音樂史內容,並探索有來源的取樣脈絡。依想法或曲目清單建立歌單,可先預覽再確認。控制目前播放器:暫停、繼續、跳過、追加下一首、調整音樂音量或說明某首歌為何出現。把本次工作階段媒合到的音樂存成私人歌單,並查看或管理已登入聽眾自己的故事與服務歌單。
適用情境
適合聽眾想要音樂探索、旁白式音樂故事、取樣脈絡探索,或把歌單存到 Spotify 或 Apple Music,並希望用對話方式控制播放時使用。也適合把貼上的文章或筆記整理成附引用的故事草稿以供審閱。
執行需求
遠端 streamable HTTP 端點;未宣告套件、環境變數或請求標頭。儲存歌單與管理自有項目需要已登入的聽眾及可用的音樂服務;僅在聽眾明確指名時才使用 Spotify 或 Apple Music。
安裝前請注意
儲存工作階段與管理自有項目會改動聽眾的音樂庫:歌單會被加入,故事會被封存(可還原),Spotify 歌單會從媒體庫移除。備妥的 Spotify 單集不會自動發布。故事音訊以可下載的 MP3 連結回傳,應將該連結視為可分享內容。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 OffStereo,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/io.github.andzar22%2Foffstereo/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "offstereo": {
      "type": "http",
      "url": "https://www.offstereo.com/api/mcp"
    }
  }
}

工具

13

create_authored_story

Create from your set list and notes

Use action=article with title, url and pasted text to draft a cited adaptation for review; this does not fetch the URL. Inspect its evidence and narration before action=review. Use action=intake with title and notes to organize a pasted document into an editable draft. Review all extracted identities and unassigned lines before action=review. Turn a supplied ordered set list and exact liner notes into a playable story without rewriting them. First use action=review with material, present the returned recordings, narration and issues for approval, then action=prepare with that reviewId after approval. To edit an owned story, action=revise takes sessionId and narration changes, returns a new review, and leaves the original unchanged. Reviews expire after 30 minutes. After preparation, export_video with sessionId and narration beatId creates a short narrated video; video_status with jobId reports progress and signed-in browser download links. Downloads require the same owner to sign in; these links are not public or bearer download URLs. Use credits with sessionId for the saved transcript, source credits, recording identities and owner-only return path. Does not publish or start playback. Music rights are not granted and narration export does not include music.

輸入參數urltextjobIdnotestitleaction必填beatIdchangesmaterialreviewIdsessionId

make_playable

Play music or a story

Create one playable OffStereo card for a direct standalone-song or narrated-story request. Discovery and Music Today already play their songs, so keep those results in their original card unless the listener asks for dedicated controls. experience=single_track returns exactly one recording with no narration or library save; pass artist plus track. experience=story progressively creates a sourced story; mode=fresh starts a new build. Pass artist plus album for an exact record and trackCount for an exact requested length. Spotify, Apple Music, and SoundCloud URLs are story seeds unless the listener requests only the recording. Playlist requests use create_playlist. existingSessionId opens a selected library story; get_session is reserved for card polling. The mounted card owns live progress and playback. Assistant prose should avoid restating transient stages such as building, recording, or still working because they become stale as the card updates, and should wait for Ready before stating final counts. A tool call opens the card without starting playback.

輸入參數modealbumtitletrackartistlengthprompttrackssourceUrlvideoModeexperiencesourceText另有 4 個

get_session

Refresh the player

Application polling for an already-mounted OffStereo card. It refreshes one PlayableSession in place. A selected library story opens through make_playable(existingSessionId), while playback and contextual follow-ups use steer_session.

輸入參數sessionId必填

steer_session

Steer the listening session

Control and contextual follow-ups for the active player: pause, resume, skip, play the next song, append one exact next song, adjust the music level, explain why a song is present, open an explicitly requested documented sample lineage, or return to the story. The result updates the mounted card in place. For an AI-DJ transition to a newly chosen record, pass queueTrack with exact artist and title; OffStereo resolves it and appends it to this same widget so the current song can finish and auto-advance. Keeping the transition in this queue avoids a second make_playable call. Use instruction='Queue this as the next song without interrupting the current song' to queue ahead, or 'Play this next now' to append and immediately advance. A why-this-song question preserves the queue. sessionId identifies the active session, and activeItemId plus positionMs preserve exact continuity when the card supplies them.

輸入參數sessionIdpositionMsqueueTrackinstruction必填activeItemIdplaybackStateacknowledgeDirectiveId

discover

Discover music

Discover genre-aware new releases, strong public-archive matches, or popular OffStereo shows. Call exactly once per listener request: put every positive genre into the same genres array, use [] when none were requested, and avoid one call or card per genre. query carries the listener's full wording, exclusions, counts, and no-padding constraint. Results remain relevant rather than padding a requested genre or archive search with unrelated rows. Dated music-history requests use music_today and are not a discover mode. playableOnly limits results to music that plays in ChatGPT. allowBuild and allowSave preserve a read-only request. The result card already includes song playback; a separate one-song card is for an explicit request for a dedicated song card.

輸入參數type必填limitquerygenres必填allowSaveallowBuildplayableOnlyperGenreLimit

music_today

Music today

Call exactly once for a 'today in music' or dated music-history request. One response already combines album anniversaries, artist birthdays and memorials, current releases, current US song-chart context, and related playable OffStereo stories; use that one combined call rather than separate history, releases, charts, or shows calls. dateMode=today uses the listener's current day and omits date; dateMode=explicit pairs with a named YYYY-MM-DD date. limit is the maximum total across the combined response, playableOnly limits rows to music that plays in ChatGPT, and allowBuild=false plus allowSave=false preserves a read-only request. This is the only dated-music tool in the current schema.

輸入參數datelimitdateMode必填allowSaveallowBuildplayableOnly

explore_lineage

Explore sample lineage

Explore documented sample lineage. Pass artist + track for one song, or topic for one multi-song narrated lineage story. OffStereo only returns connections it can source and withholds uncertain matches rather than guessing.

輸入參數topictrackartist

create_playlist

Create a playlist

Create one playlist from a natural-language idea or explicit track list. Call exactly once per listener turn: do not inspect the result and make a corrective second call or stack another playlist card in the same response. previewOnly=true returns one authoritative playlist that can be heard before saving and needs no music-service connection. After explicit approval, previewOnly=false with the approved tracks and the same concise editorial name creates one private playlist in the listener's active music service. Pass service only when the listener explicitly names Spotify or Apple Music. requiredArtists carries every artist the listener named as required. allowSecondPlaylist is true only for an explicit request for a separate additional playlist. Sign-in recovery preserves the exact request and pendingActionId for a safe retry.

輸入參數namecountprompttracksservicepreviewOnlypendingActionIdrequiredArtistsallowSecondPlaylist

save_session

Save the story playlist

Explicitly save the matched music from one listening session as a private playlist in the listener's active music service. Pass service only when the listener explicitly names Spotify or Apple Music. Unmatched songs are excluded and reported. If sign-in is needed, OffStereo preserves the request for one safe retry.

輸入參數nameservicesessionIdpendingActionId

prepare_episode

Prepare a Spotify episode

Prepare one finished OffStereo story to become a private Spotify episode after the listener explicitly asks. OffStereo packages its completed intro, ordered narration, sign-off, branded title, show notes, OffStereo cover, chapters, and song timeline, then returns an honest handoff: the episode is not in Spotify until the listener finishes with Spotify's Save to Spotify helper on their own computer. Use the active or selected story's sessionId. This is for a narrated story, not a playlist or an unfinished build.

輸入參數sessionId必填

manage_owned_item

Manage my library

Manage the signed-in listener's own OffStereo stories or service playlists. Removing an OffStereo story is a recoverable archive operation, and restore brings it back. Removing an owned Spotify playlist means remove from library because Spotify does not permanently delete playlists; the operation follows an explicit confirmation turn. Apple Music's public API does not expose playlist deletion, so that case returns an honest unsupported handoff. confirm=true records explicit confirmation of the named item and operation.

輸入參數id必填action必填confirmserviceitemType必填

get_story_audio

get story audio

Get a finished OffStereo story as ONE downloadable MP3 — the narrated story, without the records. Use this on any surface where a player card cannot render: send it as a WhatsApp or Telegram voice note, attach it to an email, play it over a phone or speaker, or hand it to someone as a file. The URL is public and needs no OffStereo account, so it can be forwarded to anyone. It is narration only, which is why it is freely shareable — say so rather than promising the songs; the songs are at webUrl. Prefer this over reading a summary aloud in your own synthetic voice: this is the produced story, already voiced. Only finished shows have audio — poll get_show until status is ready.

輸入參數slugshowId

my_offstereo

My OffStereo

Call once to return the signed-in listener's OffStereo library overview, currently including their completed, unarchived shows. This is the primary personal-library tool.

輸入參數limit

版本歷史

1
  1. v3.0.0最新Sep 16, 2026

評分

已滿足適用檢查項的 83%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分

    請宣告包含 README 的 GitHub 儲存庫,或在 OAuth 受保護資源後設資料中提供 resource_documentation。

  • 授權條款不適用

    託管服務按其提供方的條款使用,因此這裡不要求授權條款。此檢查項不計入百分比。