compare-shows
Side-by-side comparison of YouTube channels and podcasts to identify overlapping topics and shared sponsors.
Install
mkdir -p .claude/skills/compare-shows && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/19564" && unzip -o skill.zip -d .claude/skills/compare-shows && rm skill.zipInstalls to .claude/skills/compare-shows
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Compares two podcasts or YouTube shows side by side: size, latest episode, what each talks about, what both cover, and shared sponsors. Uses arcmira.Key capabilities
- →Compare episode recency and show size
- →Identify shared topics between two channels
- →Find overlapping sponsors across shows
- →Generate side-by-side content digests
- →Analyze top subjects for individual channels
How it works
The skill retrieves status and episode data for two channels, then uses occurrences and sponsors methods to find intersections in content and advertising.
Inputs & outputs
When to use compare-shows
- →Compare two competing podcasts for audience overlap
- →Find shared sponsors between two tech shows
- →Determine if two shows cover the same news topics
- →Analyze the differences in content focus between two channels
- →Create a combined digest of topics from two shows
About this skill
Compare two shows
status sizes each show, episodes gives the latest, occurrences with both channel ids ranks what each covers and returns shared for what both mention, and sponsors of each, joined on entity id, gives shared sponsors.
Run each program with arcmira_execute_read; arcmira_describe has the method reference.
When to use
- compare two shows, or a show against a competitor
- what two podcasts both talk about, or who they both advertise
- a digest of what one or two shows covered this week or month
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:
- Resolve each show with
{ type: "channel" }and useyoutube_channel_id. Users shorten show names ("All In", "MTS"); resolve suggests a show by its initials or closest spelling, so say when a show was assumed. When nothing comes back, retry the full or hyphenated name before saying the show is not in the index. - Pass both UC ids in one
occurrencescall and readshared.
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. 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().
Two shows, last 90 days
const SHOWS = ["TBPN", "All-In Podcast"], IDS = [null, null]; // after an ask, put the picked option's channel_id in IDS and run again
const ids = [], names = [], assumed = [];
for (const [i, n] of SHOWS.entries()) {
if (IDS[i]) { ids.push(IDS[i]); names.push(n); assumed.push(null); continue; }
const r = await arcmira.resolve(n, { type: "channel" });
const e = r.best ?? r.suggested;
if (!e) return { unresolved: n, ask: r.ask && { question: r.ask.question, options: r.ask.options.map(o => ({ ...o, channel_id: r.candidates.find(c => c.id === o.id)?.youtube_channel_id ?? null })) } };
ids.push(e.youtube_channel_id);
names.push(e.name);
assumed.push(r.suggested ? r.suggested.evidence : null);
}
const after = arcmira.daysAgo(90);
const [s0, s1, e0, e1, occ, sp0, sp1] = await Promise.all([
arcmira.status({ channelId: ids[0] }), arcmira.status({ channelId: ids[1] }),
arcmira.episodes(ids[0], { limit: 1 }), arcmira.episodes(ids[1], { limit: 1 }),
arcmira.occurrences({ channelIds: ids, types: ["organization", "product"], after, limit: 40 }),
arcmira.sponsors(ids[0]), arcmira.sponsors(ids[1]),
]);
const inOther = new Map(sp1.sponsors.map(x => [x.entity.id, x.ad_reads]));
return {
window: occ.window,
shows: ids.map((id, i) => ({ name: names[i], channel_id: id, assumed: Boolean(assumed[i]), why: assumed[i], videos_indexed: [s0, s1][i].channel.searchable_videos, indexed_through: [s0, s1][i].channel.indexed_through, latest: [e0, e1][i].episodes[0]?.title ?? null,
top: occ.rows.filter(x => x.channel_id === id).slice(0, 5).map(x => [x.name, x.count]) })),
both_discussed: occ.shared.slice(0, 5).map(x => ({ name: x.name, id: x.entity_id, episodes_by_show: x.by_channel.map(c => [c.channel_name, c.count]) })),
shared_sponsors: sp0.sponsors.filter(x => inOther.has(x.entity.id)).map(x => ({ name: x.entity.name, id: x.entity.id, ad_reads: [x.ad_reads, inOther.get(x.entity.id)] })),
};
A good answer
- Names both shows as resolved, with their channel ids.
- A side-by-side: videos indexed and
indexed_throughfor each, the latest episode, and each show's top subjects with episode counts. - What both covered, from
shared, with episodes per show, and the shared sponsors with ad reads per show, for a stated window.
Traps
- With two or more
channelIds,occurrencesputs the overlap inshared;rowsalone never shows it. - Never count
episodesto size a show;status({ channelId }).channel.searchable_videosis the count. - An empty
sharedin a short window is an answer (no overlap in the window), not an error; widen the window only if the user asked for a longer one.
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.
When not to use it
- →When show names cannot be resolved to channel IDs
- →When the requested window has no shared content
- →When comparing more than two shows simultaneously
Prerequisites
Limitations
- →Shared content is only visible in the shared field
- →Episode counts do not represent total show size
- →Requires specific channel IDs for accurate comparison
How it compares
It provides a programmatic intersection of data between two specific channels rather than relying on manual comparison of individual show feeds.
Compared to similar skills
compare-shows side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| compare-shows (this skill) | 0 | 7d | No flags | Beginner |
| literature-review | 559 | 4mo | Review | Advanced |
| openalex-database | 48 | 10mo | Review | Intermediate |
| market-research-reports | 38 | 10mo | Review | Advanced |
Try saying
Example prompts that trigger this skill in your AI assistant.
More by arcmira
View all by arcmira →You might also like
literature-review
K-Dense-AI
Conduct comprehensive, systematic literature reviews using multiple academic databases (PubMed, arXiv, bioRxiv, Semantic Scholar, etc.). This skill should be used when conducting systematic literature reviews, meta-analyses, research synthesis, or comprehensive literature searches across biomedical, scientific, and technical domains. Creates professionally formatted markdown documents and PDFs with verified citations in multiple citation styles (APA, Nature, Vancouver, etc.).
openalex-database
davila7
Query and analyze scholarly literature using the OpenAlex database. This skill should be used when searching for academic papers, analyzing research trends, finding works by authors or institutions, tracking citations, discovering open access publications, or conducting bibliometric analysis across 240M+ scholarly works. Use for literature searches, research output analysis, citation analysis, and academic database queries.
market-research-reports
davila7
Generate comprehensive market research reports (50+ pages) in the style of top consulting firms (McKinsey, BCG, Gartner). Features professional LaTeX formatting, extensive visual generation with scientific-schematics and generate-image, deep integration with research-lookup for data gathering, and multi-framework strategic analysis including Porter's Five Forces, PESTLE, SWOT, TAM/SAM/SOM, and BCG Matrix.
scientific-brainstorming
davila7
Research ideation partner. Generate hypotheses, explore interdisciplinary connections, challenge assumptions, develop methodologies, identify research gaps, for creative scientific problem-solving.
exa-search
benjaminjackson
Search the web for content matching a query with AI-powered semantic search. Use for finding relevant web pages, research papers, news articles, code repositories, or any web content by meaning rather than just keywords.
scientific-critical-thinking
davila7
Evaluate research rigor. Assess methodology, experimental design, statistical validity, biases, confounding, evidence quality (GRADE, Cochrane ROB), for critical analysis of scientific claims.