Lunara

io.github.DarkMatteros由 GitHub 帳號 DarkMatteros 發布v1.0.1更新於 Oct 29, 2026

Subtitle engine for AI agents: one upload gives a written track and a translation, timings exact.

已驗證Streamable HTTP可網頁執行媒體與設計AI 與機器學習

概覽

AI 產生的概覽

Lunara 是託管的字幕引擎,讓助理把音訊或影片轉成書面語字幕軌與譯文軌,並保持時間軸精確。

可以做什麼
  • 從可存取的網址提交媒體或上傳本機檔案產生字幕,輪詢任務狀態並取得完成的 SRT 或單條字幕。
  • 對既有任務單獨執行各階段:僅語音辨識、翻譯字幕文字、粵語口語轉書面中文,以及依標點近似切分字幕。
  • 檢查品質:探測媒體長度與編碼、統計時間軸覆蓋率與缺口、檢視每條字幕的閱讀速度,並對兩條軌道做免費契約檢查。
  • 管理術語:讀取組織術語表,並從任務字幕中擷取候選專有名詞。
  • 列出可用工具及其消耗分鐘數、查詢工作佇列容量,並取得寫給人看的使用指南。
適用情境
適合需要為音訊和影片產生或翻譯字幕,或在不重新對齊時間軸的前提下檢查、品管既有字幕軌的情況。也適合在選擇辨識引擎前檢視媒體屬性,或向他人說明使用流程。
執行需求
透過 streamable HTTP 連線到 lunaraai.cc 遠端端點,Authorization 標頭必須帶 bearer 權杖:OAuth 2.1 存取權杖或在帳號設定中建立的靜態 API 金鑰。產生字幕的工具需要帳號中有分鐘餘額。
安裝前請注意
Authorization bearer 權杖屬於機密,可存取帳號餘額。產生字幕的工具會消耗餘額中的分鐘數,另有十個工具免費。上傳媒體與啟動任務會把音訊或影片送到第三方服務,任務會持續保存在伺服器上。同時送出多個任務時,工作執行緒飽和可能被拒絕。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Lunara,將其新增到工作區。
  2. 連接 Authorization token 憑證。它們會被私密儲存,絕不會在公開頁面上展示。
  3. 為需要使用其工具的對話啟用該服務。

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

交給代理程式安裝

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

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

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

其他 MCP 客戶端

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

{
  "mcpServers": {
    "lunara": {
      "type": "http",
      "url": "https://lunaraai.cc/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_TOKEN>"
      }
    }
  }
}

README

該儲存庫沒有 README。

工具

20

lunara_list_tools

List Lunara tools

Return every subtitle tool Lunara exposes, with the minutes each one costs. Call this first when you are unsure which tool fits.

無需輸入參數。

lunara_get_job

Get subtitle job

Return the state of a subtitle job: status, progress, whether the SRT is ready, and how many cues it has. Poll this after lunara_upload_video.

輸入參數jobId必填

lunara_get_srt

Download SRT

Return the subtitle file for a finished job. One line per cue. Use track="secondary" for the translated track (English by default).

輸入參數jobId必填track

lunara_list_cues

List cues

Return subtitle cues for a job as timestamps plus text, so you can inspect or reference individual lines before proposing edits.

輸入參數jobId必填limitoffset

lunara_start_subtitle_job

Start a subtitle job from a URL

Run the full eight-layer subtitle pipeline on an audio or video URL you can already host. Produces a written-language track and a translated track. Prefer lunara_upload_video when the file is local.

輸入參數audioUrl必填spokenLangprimaryLangsecondaryLang

lunara_subtitle_from_url

Subtitles from a URL

Start a persisted subtitle job from a URL you already host — no upload needed. Returns a job id; poll lunara_get_job every 15–30 s until status is "completed", then call lunara_get_srt. Prefer this over lunara_upload_video whenever the media is reachable by URL.

輸入參數audioUrl必填filenamespokenLangprimaryLangsecondaryLang

lunara_upload_video

Upload a video for subtitling

Reserve an upload slot and return the object key plus a signed URL per part. After uploading the bytes call lunara_finish_upload. Use this for a file you hold locally.

輸入參數mime必填filename必填projectIdsizeBytes必填primaryLangsecondaryLangclientOperationId

lunara_finish_upload

Finish an upload

Tell Lunara the bytes are uploaded so the pipeline can start. Returns the job id to poll with lunara_get_job.

輸入參數key必填parts必填videoId必填uploadId必填durationMs必填

lunara_get_glossary

Get the project glossary

Return the proper nouns Lunara has learned for this org, so names are spelled consistently across tracks.

輸入參數limit

lunara_transcribe

Transcribe audio

Run speech recognition only — no rewrite, no translation. Returns timed segments. Use this when you want the transcript itself, or when you plan to pick a later stage yourself.

輸入參數audioUrl必填spokenLang

lunara_translate

Translate a cue list

Translate the text of an existing job’s cues into another language. Every cue boundary and timestamp is preserved; only the text changes. Use this instead of translating yourself so the timing contract holds.

輸入參數jobId必填tracktargetLang必填

lunara_rewrite

Rewrite spoken → written

Turn spoken Cantonese cue text into written Chinese. Every cue boundary and timestamp is preserved. Deliberate mispronunciations are never corrected, and proper nouns are protected.

輸入參數jobId必填track

lunara_segment

Split cues at punctuation

Approximate split, not audio-grounded segmentation: cue text is divided at clause punctuation and each piece receives a share of the original span proportional to its character count. The words are not changed. Timings are estimated, so treat them as a reading aid rather than a re-alignment — use lunara_start_subtitle_job if you need timing derived from the audio.

輸入參數jobId必填trackmaxCueMs

lunara_glossary_extract

Extract proper nouns

Find candidate proper nouns in a job’s cues, ranked by frequency, with the first cue they appear in. Suggestions for a glossary, not corrections — nothing is rewritten.

輸入參數jobId必填limit

lunara_guide

How to use Lunara — a guide you can relay to a person

Returns a step-by-step guide written to be read by a human, not by you. Call this when someone asks "how do I use this", "what can it do", "how do I get started", or when you need to explain the workflow rather than execute it. Pass journey="first_subtitle" for the end-to-end path, "api_key" for credential setup, "languages" for what is supported, or "limits" for what it cannot do. Answer the person with this text rather than paraphrasing from memory.

輸入參數journey

lunara_get_queue

Pipeline queue depth

How many transcription jobs are running and whether a new one can be accepted. Call this before lunara_start_subtitle_job or lunara_subtitle_from_url if you are submitting several jobs — when saturated, wait the retryAfterSeconds rather than retrying immediately.

無需輸入參數。

lunara_qa_contract

Check the subtitle contract

Run the contract gate over both tracks: ASR text and timings byte-exact, cue length bounds, no empty cues. Returns pass/fail per rule. Free, because refusing a broken track should never cost the caller money.

輸入參數jobId必填track

lunara_probe_media

Probe media

Return duration, dimensions, codecs and container for a URL, plus whether the audio is mono 16 kHz already. Call this before choosing an ASR engine.

輸入參數mediaUrl必填

lunara_get_coverage

Delivery coverage

Report how much of the source timeline the subtitles cover, and list suspicious gaps longer than a second. Use before shipping a long video.

輸入參數jobId必填

lunara_readability

Readability report

Per-cue reading speed, displayed length and characters-per-second, with the cues that exceed comfortable limits. Mirrors the metrics shown in the editor.

輸入參數jobId必填track

版本歷史

1
  1. v1.0.1最新Oct 29, 2026

評分

已滿足適用檢查項的 75%

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

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

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

  • 授權條款10 分

    請在儲存庫或註冊中心條目中宣告授權條款。