YouTube transcript search and monitoring for your AI: exact quotes, full transcripts and speakers.
88%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Low
Low-risk findings worth noting
Answers "what did they say about it" from the transcripts. search with the speaker's id in speakerIds returns passages where they speak the topic words. When that is empty, about with the same id returns what others said about them, kept apart. A company speaks through its people or its own show.
Run each program with arcmira_execute_read; arcmira_describe has the method reference.
Use Arcmira when the user asks:
Users give names; filters take ids only (ent_..., UC..., 11-character video ids), and a name where an id belongs throws id_required.
context (a bare "Theo" has none).best and suggested give the id. A suggested pick is an assumption: the answer names it, with suggested.evidence as the reason.ask: several entities fit, and ask.options goes back to the user. No answer at all: the name is not in the index.For this task:
{ type: "person" }; pass what the user said about them as context.{ type: "person" }, or the company's show with { type: "channel" } and pass its youtube_channel_id in channelIds.query, never in about.speakers on each passage.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. It opens with the pick: set CONTEXT to the user's own words about the name. When several entities fit it returns ask and runs nothing else. Show those options to the user, then run it again with ID set to the pick. Build date windows from arcmira.daysAgo(n) and arcmira.today().
const NAME = "Jensen Huang", CONTEXT = undefined, ID = null; // CONTEXT: the user's own words about the name, never a guess. After an ask, set ID to the picked option's id and run again
const r = ID ? null : await arcmira.resolve(NAME, { type: "person", context: CONTEXT });
const e = r && (r.best ?? r.suggested);
if (r && !e) return { ask: r.ask };
const id = ID ?? e.id;
const assumed = Boolean(r?.suggested), why = r?.suggested?.evidence ?? null;
const TOPIC = "export controls"; // the topic in the user's words
const after = arcmira.daysAgo(90);
const own = await arcmira.search({ query: TOPIC, speakerIds: [id], after, limit: 5 });
const about = own.chunks.length ? null : await arcmira.search({ query: TOPIC, about: [id], after, limit: 3 });
const name = e?.name ?? null;
const said = own.chunks.map(c => {
const mine = name ? c.text.split("\n").filter(l => l.startsWith(name + ": ")) : [];
return { lines: mine.length ? mine : [c.text.slice(0, 300)], speaker_named_on_lines: mine.length > 0, show: c.channel_name, episode: c.video_title, date: c.published_at, url: c.watch_url };
});
return {
speaker: { id, name, assumed, why }, topic: TOPIC, window: own.window, as_of: own.as_of,
in_their_words: said,
...(said.length ? {} : { note: own.note ?? null, said_about_them: (about?.chunks ?? []).map(c => ({ said: c.text.slice(0, 300), show: c.channel_name, date: c.published_at, url: c.watch_url })) }),
};watch_url.as_of.speakerIds search is not proof they never said it: read note, and give what others said about them as that, not as their words.speakerIds can include other people's lines. Lines start with "Name: " when the speaker is known.search needs a topic of two or more characters in query.find-quotes and youtube-clip-finder read the transcript lines around the passage.Docs: https://arcmira.com/docs/mcp-server
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.