Yueying – Let AI watch videos
PYPI · YUEYING
Local videos or YouTube/Bilibili URLs -> timestamped transcript, keyframes, contact sheets. Offline.
Available components
Last scanned (1 day ago)
Scores higher than 96% of PyPI servers
Category Entertainment and Games
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security100
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- Runs setuptools.build_meta at install time, a recognised build step with no custom scripting around it. View diagnostics → Pass
- 2 of 48 dependencies flagged as unhealthy.Partial
Provenance & Transparency100
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Cryptographically verified build provenance (signed, bound to vsh5dvsch7-png/yueying). View diagnostics → Pass
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 52 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability63
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 1670 tokens (~278/item across 6 items; 6 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
- No destabilizing schema changes in the last 30 days.Pass
Tool Coverage95
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 86% of tool parameters carry a description.Partial
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 6 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 7 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 3 Nov 26 +15
- Malware scan: unverified → pass ▲ security
- Stability: 0.97 → pass security
- 2 Nov 26 0
- Stability: pass → 0.97 functional
- 1 Nov 26 −15
- Malware scan: pass → unverified ▼ security
- 30 Oct 26 +15
- Malware scan: unverified → pass ▲ security
- 28 Oct 26 −15
- Malware scan: pass → unverified ▼ security
- 27 Oct 26 +15
- Malware scan: unverified → pass ▲ security
- Stability: 0.97 → pass security
- 26 Oct 26 −14
- Malware scan: pass → unverified ▼ security
- 25 Oct 26 +14
- Malware scan: unverified → pass ▲ security
- Stability: pass → 0.93 functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 5 Nov 2026 · Analysed pypi/yueying@0.2.1
Provenance Verified
A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.
| Result | Verified |
|---|---|
| Ecosystem | pypi |
| Reason | Verified |
| Discovered via | Registry attestation endpoint |
| Source repo | vsh5dvsch7-png/yueying |
| Certificate issuer | https://token.actions.githubusercontent.com |
| Certificate SAN | https://github.com/vsh5dvsch7-png/yueying/.github/workflows/publish.yml@refs/tags/v0.2.1 |
| Rekor log index | 2813600917 |
| Predicate type | PyPI publish attestation https://docs.pypi.org/attestations/publish/v1 |
| Subject digest | sha256:f11ebec892b0dba21e55038e1ed1014f6709c40ac0bb09fefbaf3b199d69301b |
Background: How many MCP packages publish verified provenance →
Install scripts 1 script
| Hook | Tier | Command |
|---|---|---|
| build_backend | allowlisted | setuptools.build_meta |
Background: Why install scripts are a supply-chain risk →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
get_frame_at ~145
Look closely at one moment of an already-watched video, e.g. to read code, a slide, a chart or a UI. For local files that still exist the exact frame at that time is extracted from the video; otherwise the nearest cached keyframe is returned and the caption says so. Also returns the transcript paragraphs spoken around that time. Returns one image (~100 KB at 960 px).
| Name | Type | Req | Description |
|---|---|---|---|
| max_width | integer | – | – |
| time | string | yes | Timestamp: seconds, mm:ss or h:mm:ss, e.g. '03:15' |
| video | string | yes | video_id, results folder, or the path/URL given to watch_video |
No output schema declared.
No examples provided.
get_frames ~257
See what is on screen in an already-watched video. Returns contact-sheet images (3x3 keyframes in time order, every tile labelled '#number mm:ss' bottom-left) or individual keyframes. Read the contact sheets first to get the visual storyline, then request single frames only when you need to read code, slides or UI text. At most 3 images per call (default 2), downscaled to max_width; page with start/count. Every image is preceded by its absolute file path so hosts that can read files may open the full-size original instead.
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | – | Images per call; keep 2 or fewer in Claude Desktop |
| kind | string | – | grids = 3x3 contact sheets, 9 keyframes per image (start here); frames = individual full-size keyframes |
| max_width | integer | – | Downscale width in pixels; 1280 is about 150 KB per contact sheet |
| start | integer | – | 1-based number of the first image: contact-sheet number for grids, keyframe number (as printed on the tiles) for frames |
| video | string | yes | video_id, results folder, or the path/URL given to watch_video |
No output schema declared.
No examples provided.
get_transcript ~189
Read part of an already-watched video's transcript with [mm:ss] timestamps. Use when the watch_video overview was truncated, when the user asks about a specific time range, or to export subtitles (format='srt'). Returns at most max_chars; when truncated the last line gives next_start so you can continue from there. Paragraph format is the cheapest.
| Name | Type | Req | Description |
|---|---|---|---|
| end | – | – | End time (same formats); None = to the end |
| format | string | – | paragraphs = compact [mm:ss] text (fewest tokens); segments = one line per subtitle cue with start-end; srt = subtitle blocks |
| max_chars | integer | – | – |
| start | string | – | Start time: seconds, mm:ss or h:mm:ss |
| video | string | yes | video_id from watch_video/list_videos, the results folder, or the same path/URL given to watch_video |
No output schema declared.
No examples provided.
list_videos ~90
List videos already processed by yueying on this machine (newest first) and jobs currently running, with video_id, title, duration, text source, date, folder and size. Use when the user refers to a video watched earlier, to get a video_id for the other tools, or to see how much disk space results use. Instant and read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | – |
No output schema declared.
No examples provided.
search_transcript ~157
Find where something is said in an already-watched video. Each hit shows the time, the surrounding sentences, and the nearest keyframe number and contact-sheet number so you can follow up with get_frame_at or get_transcript. Use this instead of paging the whole transcript when the user asks 'when does he mention X' or 'find the part about Y'.
| Name | Type | Req | Description |
|---|---|---|---|
| context_seconds | number | – | Seconds of surrounding text to include around each hit |
| limit | integer | – | – |
| query | string | yes | Words to look for; separate alternatives with spaces (any term matches, more terms rank higher). Case-insensitive |
| video | string | yes | video_id, results folder, or the path/URL given to watch_video |
No output schema declared.
No examples provided.
watch_video ~588
Turn a video into a timestamped transcript plus a keyframe overview so you can summarize it, answer questions about it, extract steps, commands or code, or write notes. `video` is an absolute path to a local video/audio file or a YouTube / Bilibili / Douyin / Xiaohongshu / TikTok / Vimeo URL. Fully offline: platform subtitles are used when they exist, otherwise local Whisper speech recognition (GPU when available, CPU otherwise); no API key. Results are cached per video, so calling again with the same video is instant. Typical time: 5–60 s for short subtitled videos, a few minutes for long videos without subtitles; the very first speech recognition downloads a model once (~480 MB on CPU, ~1.6 GB on GPU). If the reply starts with RUNNING, call watch_video again with the same `video` — it resumes waiting for the same job; do not change options and do not start other videos meanwhile. The reply is an English overview: metadata, chapters, the list of contact sheets (see them with get_frames), file paths, and the transcript with [mm:ss] timestamps (truncated at max_chars with a start time for get_transcript). Cite timestamps like (03:15). Not for live streams or images.
| Name | Type | Req | Description |
|---|---|---|---|
| cookies_from_browser | – | – | Reuse a browser login for HD or member-only Bilibili / sign-in-gated YouTube. Close Chrome first on Windows |
| frame_interval_seconds | – | – | Approximate seconds between keyframes; None = automatic by duration (2–20 s). Use 2 for code/slide-heavy screencasts |
| language | string | – | Spoken language; auto detects it. Set it when you know it for better accuracy |
| max_chars | integer | – | Maximum characters of transcript included in the reply |
| mode | string | – | full = transcript + keyframes (default); transcript = no keyframes; frames = no speech recognition (platform subtitles still used) |
| model | string | – | Whisper model used only when the video has no subtitles. auto = large-v3-turbo on an NVIDIA GPU, small on CPU |
| output_dir | – | – | Absolute folder for the results; default $YUEYING_OUT_DIR/<name>-<id> |
| refresh | boolean | – | Discard cached results (and any running job) for this video and process it again |
| video | string | yes | Absolute path to a local video/audio file, or a video page URL (YouTube, Bilibili, Douyin, Xiaohongshu, TikTok, Vimeo, X and other yt-dlp sites) |
| wait_seconds | integer | – | How long this call may block before answering RUNNING. Keep 45 in Claude Desktop/Cursor (60 s client timeout); Claude Code/Cline may use up to 1500 |
No output schema declared.
No examples provided.
How do I install the Yueying – Let AI watch videos MCP server?
Yueying – Let AI watch videos runs locally as a PyPI package, launched with uvx yueying. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
pypi · yueying
claude mcp add vsh5dvsch7-png-yueying -- uvx yueying
What is the Yueying – Let AI watch videos MCP server?
Yueying – Let AI watch videos is an MCP server listed in the public MCP registry as io.github.vsh5dvsch7-png/yueying. Local videos or YouTube/Bilibili URLs -> timestamped transcript, keyframes, contact sheets. Offline. This page covers its PyPI package (yueying).
Is the Yueying – Let AI watch videos MCP server safe to use?
Yueying – Let AI watch videos scores 93 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 4 November 2026. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Yueying – Let AI watch videos MCP server expose?
Yueying – Let AI watch videos exposes 6 tools: watch_video, get_transcript, search_transcript, get_frames, get_frame_at, list_videos. Their descriptions and schemas cost roughly 1,426 tokens of context every time the server is loaded.
Is the Yueying – Let AI watch videos MCP server still maintained?
Yueying – Let AI watch videos is still listed as active in the MCP registry. We last reached this channel on 4 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the Yueying – Let AI watch videos MCP server under?
Yueying – Let AI watch videos declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.