118 podcast feeds, tagged by project, each episode carrying a written description. Enough to track what the circuit is saying without transcribing a single minute of audio.
News items carry a computed sentiment and sentiment_score. Podcast episodes do not. What they carry is short_description — a real paragraph, not a truncated title — which is enough to classify against without audio. Anything calling itself podcast sentiment is doing a model pass on that text, and this recipe shows the seam rather than hiding it.
Pass the titles and descriptions to a model in one batched call and ask for a label per episode. Batching matters: five separate calls cost five times as much and give the model no way to calibrate one episode against another.
Produced by running the code above against the live API, not written by hand.
Actual output, 15 Sep 2026. The mean of +0.32 is the number to be careful with: the single largest Ethereum story that week scored -2, and averaging it against 49 quieter items produces a reading of mild optimism that no human following the story would recognise. Weight by recency or by outlet, or report the distribution rather than the mean.
The same shape, pointed somewhere else. Every figure below came back from the live API.
Follow one show
sources scopes to a single feed — Bankless alone has 1,393 indexed episodes, which is enough to track one show's stance over time rather than the circuit's.
Report the distribution, not the mean
The mean hides the story. Counting the buckets keeps the -2 visible instead of averaging it into mild optimism.
Cross-check against video
121 YouTube channels are indexed the same way and take the same filters, so the same script runs over a second medium by changing one path.
Some tags return zero for a project that clearly has coverage
tags=lido returns 0 governance items. A tag only matches content through its keywords, and a tag filed with none never matches anything. Check a tag returns results before building a scheduled job on it.
Sentiment is per article, not per project
Each news item carries sentiment (-2 to +2) and sentiment_score. There is no project-level mood field — averaging is your call, and a mean over 50 articles can read positive in a week whose single biggest story scored -2.
Build a crypto research agent
~30 min · Python, stdlib only
Automate a weekly ecosystem digest
~25 min · Python, stdlib only