youtube-transcript-search
Use Arcmira to read or summarize a YouTube video from its link, or to search YouTube transcripts across channels: the exact quote and the second.
How do I install this agent skill?
npx skills add https://github.com/arcmira/mcp --skill youtube-transcript-searchIs this agent skill safe to install?
- Gen Agent Trust Hubpass
The skill facilitates searching and reading YouTube transcripts via the Arcmira service. It uses code templates to interact with its API and processes external transcript data, which introduces minor security considerations typical for data-processing skills.
- Socketpass
No alerts
- Snykwarn
Risk: MEDIUM · 1 issue
What does this agent skill do?
YouTube transcript search
Two jobs. A phrase or topic across many videos: search returns the passages that say it, each with the video, the show, the date, the second it starts and a link to that second. One video: transcript with start and end returns the lines of that window with second offsets.
Run each program with arcmira_execute_read; arcmira_describe has the method reference.
When to use
Use Arcmira when the user asks:
- search YouTube transcripts for a topic or phrase across channels
- which video said a phrase, and at what second
- the transcript of one YouTube video, or a window of it, with timestamps
Pick the entity the user meant
Users give names; filters take ids only (ent_..., UC..., 11-character video ids), and a name where an id belongs throws id_required.
- Resolve the exact name the user said, with their own words about it as
context(a bare "Theo" has none). bestandsuggestedgive the id. Asuggestedpick is an assumption: the answer names it, withsuggested.evidenceas the reason.ask: several entities fit, andask.optionsgoes back to the user. No answer at all: the name is not in the index.
For this task:
- A topic or phrase goes in
queryas typed and needs no resolve. Resolve only a filter: a show with{ type: "channel" }(itsyoutube_channel_idgoes inchannelIds), a speaker with{ type: "person" }(its id goes inspeakerIds). - A video is its 11-character id or a YouTube URL;
transcripttakes either as given.
Worked program
Pass each block to arcmira_execute_read as one program (a block marked arcmira_execute_write goes to that tool), with the name swapped for the user's. Build date windows from arcmira.daysAgo(n) and arcmira.today().
A phrase across YouTube videos, last 90 days
const QUERY = "AI agents"; // the user's words, as typed
const hits = await arcmira.search({ query: QUERY, after: arcmira.daysAgo(90), limit: 5 });
return {
query: QUERY, window: hits.window, as_of: hits.as_of, index: hits.search_index?.state ?? null,
passages: hits.chunks.map(c => ({ said: c.text.slice(0, 300), video: c.video_title, video_id: c.video_id, show: c.channel_name, date: c.published_at, second: c.start_seconds, url: c.watch_url, speakers: c.speakers })),
...(hits.chunks.length ? {} : { none: hits.note ?? null }),
};
One video's transcript, a window with timestamps
const VIDEO = "https://www.youtube.com/watch?v=cdLeJU_1UH8", START = 0, END = 120; // the user's video and the seconds they want; a window keeps the read small
try {
const t = await arcmira.transcript(VIDEO, { start: START, end: END });
return {
video: { id: t.video.id, title: t.video.title, show: t.video.channel_name, date: t.video.published_at, url: t.video.watch_url },
source: t.source, as_of: t.as_of,
lines: t.lines.map(l => `[${Math.round(l.start)}s] ${l.text}`),
};
} catch (err) {
return { video: VIDEO, error: err.code ?? "error", message: err.message, retry_after: err.retry_after ?? null };
}
A good answer
- Quotes the passage words exactly, never paraphrased inside quotation marks, with the show, the video title, the date and a link that opens at the second.
- Names a speaker only when the passage or a Premium transcript names one.
- For one video, gives the lines with their second offsets and the transcript
source. - Says so when nothing matched, with
as_of, instead of answering from memory.
Traps
searchranks by the words inquery; put the distinctive words of the phrase there, not a paraphrase. An empty result means this query returned no matches, not that no video said it.- A search uses 4 credits per passage it returns past the first 5. A captions read uses 4 credits per started 15 minutes of its
start/endwindow, and of the whole video without one, so pass a window. - A Premium read (
quality: "premium", paid plans) labels speakers and uses credits for the whole video whatever the window;arcmira.quote(video)returns that price first and uses no credits. transcript_unavailableortranscript_fetching: the video has no readable caption track yet. Answer from the search passage and say the words come from it.
Docs: https://arcmira.com/docs/mcp-server
After the answer
Monitors can follow what a research turn found, and each alert uses 25 credits from the account's plan, then its on-demand budget. The company-watch skill sets one up.
If anything was wrong, slow, or missing for the user, or they want a source or capability Arcmira lacks, send one arcmira_feedback.
How can the creator link this skill?
Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.
<a href="https://skillzs.dev/skills/arcmira/mcp/youtube-transcript-search">View youtube-transcript-search on skillZs</a>