Weftly

ai.weftly由 weftly.ai 發布官方發布者v0.38.0更新於 Nov 8, 2026

查詢並剪輯橫屏和豎屏影片片段(Shorts/Reels),轉寫並產生摘要。按任務付費。

AI 翻譯由 AI 模型根據下方的原文描述翻譯,可能有誤。

原文描述

Find & cut horizontal and vertical video clips (Shorts/Reels), transcribe & summarize. Pay per job.

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

概覽

Weftly 的託管 MCP 服務(api.weftly.ai),由 weftly.ai 發布;無需登入;Streamable HTTP;10 個工具。

暫無 AI 概覽:以下資訊來自註冊中心條目和服務本身。

發布者
weftly.ai
端點
api.weftly.ai
最近檢查

安裝

在 SourceWeft 中

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

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

交給代理程式安裝

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

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

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

其他 MCP 客戶端

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

{
  "mcpServers": {
    "weftly": {
      "type": "http",
      "url": "https://api.weftly.ai/mcp"
    }
  }
}

README

該儲存庫沒有 README。

工具

10

transcribe

Transcribe audio or video to text, including per-word timestamps for precise editing. Three-call flow: (1) call with `filename` to receive {job_id, payment_challenge}; (2) pay via MPP, then call with `job_id` + `payment_credential` to receive {upload_url} (presigned PUT, 1h expiry); (3) PUT the bytes, then complete_upload(job_id), then poll get_job_status(job_id). On completion, get_job_status returns two outputs: role `transcript` (SRT) and role `transcript-words` (JSON matching /.well-known/weftly-transcript-v2.schema.json, with segment-level and per-word timestamps). For other formats, pass `format=srt|txt|vtt|json|words|edit` to get_job_status to receive content inline — `txt` and `vtt` are derived from SRT, `json` is v1 (segments only), `words` is v2 (segments + words), `edit` is a plain-text "[NNNN] words..." paragraph list for editing by hand. Flat price: audio $0.50, video $1.00 — see /.well-known/mpp.json for the authoritative table. Use for podcasts, interviews, meetings, lectures, and especially for creating clips, multicamera edits, or edit-video-from-transcript where word boundaries matter. Retrying any call with `job_id` alone returns current state (idempotent). Failed jobs auto-refund.

輸入參數job_idfilenamepayment_credential

summarize

Summarize an audio or video file — returns both a text summary AND the full transcript (with per-word timestamps). Do not also call transcribe on the same file. Three-call flow: (1) call with `filename` to receive {job_id, payment_challenge}; (2) pay via MPP, then call with `job_id` + `payment_credential` to receive {upload_url} (presigned PUT, 1h expiry); (3) PUT the bytes, then complete_upload(job_id), then poll get_job_status(job_id). On completion, get_job_status returns three outputs: role `summary` (plain text), role `transcript` (SRT), and role `transcript-words` (JSON matching /.well-known/weftly-transcript-v2.schema.json, with segment-level and per-word timestamps). For other formats, pass `format=srt|txt|vtt|json|words|edit` to get_job_status to receive transcript content inline — `txt` and `vtt` are derived from SRT, `json` is v1 (segments only), `words` is v2 (segments + words), `edit` is a plain-text "[NNNN] words..." paragraph list for editing by hand. Flat price: audio $0.75, video $1.25 — see /.well-known/mpp.json for the authoritative table. Use for meetings, long-form interviews, lectures, and podcast episodes; the `words` output additionally supports creating clips, multicamera edits, or edit-video-from-transcript. Retrying any call with `job_id` alone returns current state (idempotent). Failed jobs auto-refund.

輸入參數job_idfilenamepayment_credential

find_clips

START HERE for any clip workflow on a video — `find_clips` is the canonical entry point and includes a full transcription as a free byproduct. **Do not call `transcribe` first**: doing so doubles the upload, doubles the spend, and produces the same transcript. Identify ranked candidate clips in a video — what to cut for highlights, social, or testimonials. Three-call flow: (1) call with `filename` (and optional `query`) to receive {job_id, payment_challenge}; (2) pay via MPP, then call with `job_id` + `payment_credential` to receive {upload_url} (presigned PUT, 1h expiry); (3) PUT the bytes, then complete_upload(job_id), then poll get_job_status(job_id). On completion, get_job_status returns three outputs: role `clip-candidates` (JSON matching /.well-known/weftly-clips-v1.schema.json — includes `source_job_id` and `source_expires_at`), role `transcript` (SRT, free byproduct), role `transcript-words` (JSON matching /.well-known/weftly-transcript-v2.schema.json, free byproduct). Each candidate carries `transcript_text` — the full text of what's in the clip — so callers can preview content before paying for clips_from_job. Optional `query` parameter switches to query mode (e.g., "they discuss pricing", "the part about hiring") with the same output shape; the `mode` field in clip-candidates.json indicates which mode produced the result. Flat price: $2.00 video — see /.well-known/mpp.json. **Source-reuse contract:** the source video stays in storage for 72h after find_clips completes. Hand the find_clips `job_id` (also returned as `source_job_id` in the candidates JSON) to `clips_from_job` as its `source_job_id` — within those 72h it cuts directly from the stored source: no re-upload, no re-transcribe, just $0.50 per cut (more for a multi-clip `output: "files"` batch). Pass the same `source_job_id` to as many `clips_from_job` calls as you need. Use for interviews, podcasts, sales calls, all-hands recordings. Retrying with `job_id` alone returns current state. Failed jobs

輸入參數queryjob_idfilenamepayment_credential

clips_from_job

Cut one or more clips from any prior video job (find_clips, summarize, or video transcribe). Operates on a parent job — possessing the parent `source_job_id` is the capability, no upload step. Contrast with `clips_from_video`, which takes a local `filename` and uploads a video that has never been in Weftly before; use this tool whenever a video job already exists. Two choices are required on every new job, with no default — if the customer's intent is genuinely ambiguous, ask rather than guess: `orientation` (`horizontal` keeps the source framing; `vertical` crops to 9:16 for TikTok/Reels/Shorts) and `output` (`files` delivers one file per clip; `reel` concatenates every clip into a single file). Two-call flow: (1) call with `source_job_id` + `clips` (1+ objects `{start, end, title?}` in source seconds) + `orientation` + `output` to receive {job_id, payment_challenge}; (2) pay via MPP and call again with `job_id` + `payment_credential` to start processing. Price: `output: "reel"` bills a flat $0.50 regardless of segment count; `output: "files"` bills N × $0.50 for N clips, charged once for the whole batch (Stripe quantity). See /.well-known/mpp.json for the Tempo USDC rate. `output: "files"` caps a batch at 5 clips; `output: "reel"` concatenates every clip into one file, capped at 30 minutes of total output for `orientation: "horizontal"` or, for `orientation: "vertical"`, the selected profile's cap: 240s for `tiktok-primary` and `tiktok-primary-720p`, 180s for `instagram-reels`, 60s for `instagram-stories`. The 240s ceiling is an encode limit (crop+scale cost per segment against the container's own timeout), not a platform rule; the shorter profile caps are the destination's own limit. `orientation: "vertical"` accepts `profile` (default `tiktok-primary`; also `tiktok-primary-720p`, `instagram-reels`, `instagram-stories`) and `subject` (`center`/`auto`/`follow`, default `follow` — switches crop between active speakers across clip and segment boundaries, the mode th

輸入參數clipsjob_idoutputprofilesubjectcaptionsorientationsource_job_idinclude_transcriptpayment_credential

edit_from_transcript

Cut and re-assemble a video from an edited copy of its own word-level transcript — the text-editing counterpart to clips_from_job's timestamp-based cutting. Operates on a parent job (find_clips, summarize, or video transcribe) that has a word-level transcript; possessing the parent `source_job_id` is the capability, no upload step. Get the editable text first via get_job_status(job_id, format: "edit") or the download route — one `[NNNN]`-marked line per sentence — then edit it in any text editor: delete words or whole lines, move whole lines, but do not add or change a word (a marker used twice, or any added/changed word, invalidates the whole edit and is rejected before payment). Two-call flow: (1) call with `source_job_id` + the full edited text as `edited_transcript` (sent inline, max 262144 UTF-8 bytes) + optional `title` to receive {job_id, payment_challenge} — an invalid edit is rejected here, before any charge, with the exact failing lines; (2) pay via MPP (Tempo USDC) or open the Stripe Checkout `payment_url` in a browser, then call again with `job_id` + `payment_credential` to start processing. Flat price: $1.00 — see /.well-known/mpp.json for the Tempo USDC rate. Up to 300 cuts and 60 minutes of output per call; repeated phrases match their first occurrence, left to right. Outputs: role `clip-video` (the edited video), plus `clip-srt` and `clip-words` re-timed to match the edit. Source must still be in storage (72h TTL for find_clips parents, 24h elsewhere — check `expires_at` from get_job_status on the parent). Use whenever the edit is easier to describe in text than in timestamps — tightening a clip or a short segment by deleting filler words and tangents, or reordering a handful of sentences; use `extract_clip` (via clips_from_job) instead when you already know the exact start/end seconds you want. Retrying with `job_id` alone recovers the current state. A rejected edit creates no job, so show its errors to the user from the response that returned them.

輸入參數titlejob_idsource_job_idedited_transcriptpayment_credential

complete_upload

Confirm that the file has been uploaded (via HTTP PUT to the upload_url from transcribe or summarize) and start processing. Verifies that the file is present in storage and that the job has been paid. Returns status "processing". Poll get_job_status to track progress and retrieve download URLs when done.

輸入參數job_id必填

get_job_status

Check the status of a transcribe or summarize job. Returns the current state and, when completed, an `outputs` array. Each output has either `content` (returned inline) or a presigned, time-limited (1 hour) `download_url`. Small text outputs (e.g. `transcript` SRT, `clip-candidates`, `summary`) come inline as `content`; larger outputs — `transcript-words` JSON for any non-trivial recording, plus video outputs like `clip-video` / `clip-vertical-video` — come as a `download_url` to fetch when needed. Optionally pass `format` (srt, txt, vtt, json, words, edit) to get the transcript content inline in the top-level `transcript` field — `txt` and `vtt` are derived from the stored SRT; `json` is v1 (segments only); `words` is v2 (segments + per-word timestamps matching /.well-known/weftly-transcript-v2.schema.json); `edit` is a plain-text "[NNNN] words..." paragraph list, one line per paragraph, for editing by hand — send the edited text to edit_from_transcript to cut a re-timed video from it. Poll this periodically after calling complete_upload — wait at least 60 seconds between checks. For files under 10 minutes, jobs usually complete within 1-2 minutes. For long files (1hr+), expect 10-30 minutes. Derivative jobs (`extract_clip`, `extract_vertical_clip`, `publish_youtube`, `clips_vertical`, `clips_horizontal`, `edit_from_transcript`) have no upload step and no `awaiting_upload`/`awaiting_complete_upload` states — a paid derivative job reports `processing` once its parent source is confirmed still in storage, or a terminal `source_expired` if the parent source has expired: stop polling, and re-run the parent job named in `source_job_id` to get a fresh source before retrying. `publish_youtube` is the one exception: its upload starts by itself as soon as payment settles, so a paid job goes straight to `publishing`. If it reports `awaiting_trigger` instead, the upload did not start — almost always because the YouTube account is not connected yet; connect it and the publish

輸入參數formatjob_id必填

mpp_smoke_test

Smoke-test the MPP payment plumbing end-to-end via this MCP server, for $0.01 USDC. Two-call flow: (1) call with no arguments to receive an MPP `payment_challenge`; (2) pay via MPP and call again with `payment_credential` set to the resulting Authorization header value (e.g. "Payment eyJ...") to receive {paid: true, timestamp, receipt_ref, payment_method}. Uses the exact same `createPayToAddress` + `createMppHandler` verification path as paid product tools (transcribe, summarize), so a green run here means real paid calls will work too. Stateless — no job is created, no database row written. Use this whenever you want to confirm a wallet, the MCP transport, the worker, and the production payment middleware are all healthy without paying a transcribe price. Cost: $0.01 USDC per attempt.

輸入參數payment_credential

edit_from_multiple_cameras

Assemble one continuous edit from 2 camera files of the same event that started rolling at different moments. It syncs the cameras from their audio (a clap or sharp sound in the first 30 seconds of every file is the fallback), picks the camera that frames each voice by diarization, and renders one video at the main camera's resolution and fps (1080p ceiling). Three calls: (1) call with `inputs` (array of `{filename, name?}`, index 0 = the main camera) to receive {job_id, payment_challenge}. (2) After payment, call again with `job_id` (+ `payment_credential` on the MPP rail) to receive `upload_urls[]`: one presigned PUT URL per camera, 1h expiry. (3) PUT every file to its URL, call complete_upload(job_id) once ALL are uploaded (a partial upload is rejected naming the missing indices), then poll get_job_status(job_id). Optional `offsets` (seconds per camera, `offsets[0]` = 0, others may be negative) skip clap detection for footage with no clap; optional `cuts` (`{source, start, end}` in each camera's own timeline) render exactly the angles you give and skip automatic selection; `show` (`speaker` default, or `listener`) and `n_speakers` tune automatic selection. Output: role `edit`, one H.264 video with audio loudness-normalized to -14 LUFS / -1.5 dBTP, as long as the main camera and at most 60 minutes. Flat price for the whole job regardless of camera count: $3.00, see /.well-known/mpp.json for the Tempo USDC rate. Allow about 1.5 minutes of processing per minute of footage, plus upload time. The result is a normal video job: pass its `job_id` to clips_from_job as `source_job_id` to cut clips from the finished edit (it stays in storage 72h). Use for multi-camera interviews, podcasts and panels; use clips_from_job instead to cut a single existing video. Voice-based selection only (no gaze). Retrying with `job_id` alone recovers the current state or fresh upload URLs. Failed jobs auto-refund. Payment: pay by credit card via the Stripe Checkout link (open the returned `p

輸入參數cutsshowtitleinputsjob_idoffsetsn_speakerspayment_credential

clips_from_video

Find clips in a video AND cut up to 5 of them, under ONE payment. This is the alternative to calling find_clips and then clips_from_job yourself — prefer it whenever the user wants clips delivered end-to-end from a video they have not yet uploaded. CARD PAYMENT ONLY — this chain authorizes a Stripe hold (up to $4.50) before the final price is known (the total depends on how many clips are found and delivered), a shape MPP push settlement cannot express. A caller with no card-checkout capability (a wallet-only MPP agent) should NOT call this tool — call find_clips then clips_from_job instead, paying per step in USDC. Two-call flow: (1) call with `filename` and `content_type` (video only) — and an optional `query` to switch clip discovery from "best clips" to matching specific content (e.g. "the part about pricing") — to receive {job_id, status: "awaiting_payment", checkout_url}; (2) once the user says they have authorized payment, call again with the SAME `job_id` (no other fields needed) to recover state — this returns the same checkout_url if still unauthorized, or an upload step once the card hold is authorized (the client performs the upload, never you). Retrying with a NEW call instead of the same `job_id` authorizes a SECOND card hold for the same video — always resume with `job_id`, exactly like every other job-creating tool here. The card hold authorizes the worst case (one $2.00 find_clips analysis plus up to 5 × $0.50 clips), not a charge — the customer is charged once, at the end, for exactly what was delivered (fewer clips than the maximum is normal, not a failure). Clips are auto-selected by score and delivered as a `clips-manifest` output alongside the transcript and clip candidates on the same job. Poll with get_job_status(job_id) for the transcript and candidates; the clips themselves land as the job progresses through its chained stages. Set `orientation` to choose the shape: `vertical` (the default) cuts 9:16 clips for TikTok, Reels and Shorts; `hor

輸入參數queryjob_idcaptionsfilenamejob_type必填thread_idorientationcontent_type

版本歷史

11
  1. v0.36.0Nov 3, 2026
  2. v0.35.3Oct 15, 2026
  3. v0.35.2Oct 10, 2026
  4. v0.35.0Oct 4, 2026
  5. v0.34.4Oct 4, 2026
  6. v0.34.3Sep 30, 2026
  7. v0.33.3Sep 29, 2026
  8. v0.33.1Sep 28, 2026
  9. v0.33.0Sep 27, 2026
  10. v0.31.0Sep 26, 2026
  11. v0.30.10Sep 16, 2026

評分

已滿足適用檢查項的 75%

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

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

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

  • 授權條款10 分

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