locaihost data

Signal recipe · Content

A content signal: 299 transcripts from 6 B2B sales channels for $0.90, and which tools and topics they talk about

The hosts and guests of a niche's YouTube channels name tools, rivals and problems out loud, hour after hour. Their captions turn that into something you can count. Here is how we did it for six B2B sales channels, for 90 cents.

The channels a market watches are where its opinions form. Sales leaders tell each other which tools they kept and which they ripped out, founders explain their pricing, trainers decide what next year's sales calls will sound like. Almost none of it is written down. It is spoken, in hour-long episodes, and YouTube keeps a caption track for nearly every one.

If you market a sales tool, plan content for a B2B audience, buy sponsorships, or want to know what your buyers are hearing, that is the signal you want: in the channels your market watches, which companies get named, next to whom, and which topics each channel keeps coming back to.

We built it for six YouTube channels about B2B sales on 15 October 2026 with our youtube-transcripts Actor on Apify. It reads the captions a logged-out viewer can see, with the video's title, date, length and views, and splits each transcript into chunks with start times. Every number below is from that run. The transcripts are the creators' work, so this post publishes counts and a few short quotes with links, not the text.

The signal, written as an input

The six channels: 30 Minutes to President's Club (a sales podcast), SaaStr (SaaS founders and go-to-market talks), Sales Gravy (sales training), Pavilion (a community for revenue leaders), Winning by Design (sales methodology) and Close (a CRM vendor's own channel). We checked each handle first with maxVideosPerChannel: 1.

JSON
{
  "urls": ["@30MPC", "@Saastr", "@salesgravy", "@JoinPavilion", "@WinningByDesign", "@closecrm"],
  "maxVideosPerChannel": 50,
  "includeShorts": false,
  "languages": ["en"],
  "includeSegments": false,
  "chunkSize": 300,
  "chunkOverlap": 40,
  "onlyNew": true
}

Four notes on the fields:

  • urls takes channel handles or links (the newest videos), playlist links, video links or bare video IDs, mixed in one list.
  • includeShorts: false keeps a channel's regular videos and leaves out Shorts and past live streams.
  • chunkSize and chunkOverlap split each transcript into pieces of about 300 words, each with its start and end second, the next one repeating the last 40 words. That is the RAG export below, and it is also how a mention gets a timestamp.
  • onlyNew remembers which videos it has returned for this input, so a weekly run reads, and charges for, only new uploads.

What came back

  • 299 transcripts from 300 videos in 70 seconds, for $0.90. One Winning by Design video had no captions at all; it came back as a free row saying so. At $3 per 1,000 transcripts plus a $0.00005 start fee, that is the price on the free or Starter plan.
  • 153 hours of video and 1.79 million words. 295 of the 299 transcripts are YouTube's automatic captions; 4 had captions written by the channel.
  • 6,968 chunks of about 300 words, each with a start time and a link that opens the video there.
  • LinkedIn came up in 142 of the 299 videos, Salesforce in 89, Claude or Anthropic in 68, and ChatGPT or OpenAI in 67. Among sales tools after Salesforce: HubSpot 45, Gong 33, Clay 31.
  • Ad reads change the count. Gong was named in 42 videos, but in 16 of them inside a sponsor's ad on Pavilion. Counted on the conversation only, it is 33.
  • A second run with the same input, a minute later, returned no new transcripts and cost $0.00005. That is what the weekly version below relies on.

The 50 newest videos cover very different periods per channel, because channels post at different rates:

ChannelVideosOldestNewestMedian lengthWords
30 Minutes to President's Club502025-12-232026-10-1327 min296,452
SaaStr502025-12-242026-10-0946 min487,788
Sales Gravy502026-06-222026-10-1411 min153,565
Pavilion502025-07-152026-10-0155 min457,490
Winning by Design492024-05-232026-09-2939 min276,878
Close502025-06-102026-10-136 min113,334

Which tools and companies come up

We counted names with plain text matching on the captions, case included: YouTube's captions capitalise names, so Clay finds the company and not the word clay. A few names come out of the captions misspelled, so we added the spellings we found ("Salesoft" for Salesloft, "Raplit" for Replit, "chat GPT"). Names that are also ordinary words or first names too often (Close, Instantly, Harvey) are left out. A video counts once per name however often it is said.

NameVideos (of 299)MentionsChannelsAlso in ad reads
LinkedIn14254360
Salesforce8990268
Google8322460
Slack72244611
Claude / Anthropic6854850
ChatGPT / OpenAI6722760
HubSpot4517760
Zoom459560
Shopify357940
Gong3396616
Gemini326340
Clay3126750
Replit3131920
Microsoft265150
Lovable207430
ZoomInfo143650
Intercom145330
Cursor122246
Outreach112240
Salesloft111720
Apollo71630

Videos and mentions are counted on the conversation, with intros, outros and ad reads taken out (next section). The last column is how many videos name it inside one of those. All 30 names and the per-channel counts are in tool-mentions.csv.

Mentions per video tell you something the video count doesn't. Replit is named 319 times, but in only 31 videos on two channels: SaaStr talks at length about building its own apps with it. Clay is named 267 times in 31 videos, about nine mentions a video, which is what a tool people walk through on screen looks like. Zoom, with 95 mentions in 45 videos, is mostly the meeting tool named in passing.

Ad reads change the count

Podcasts read the same sponsor message in every episode for weeks. To keep those from counting as conversation, we set aside any run of 12 words that appears word for word in three or more videos of the same channel. That took out 20,860 words, mostly SaaStr's and Pavilion's sponsor reads and intros, and none of Winning by Design's.

It matters for exactly the names a sales-tool marketer cares about. On Pavilion, Gong was named inside two different sponsors' ads in 16 episodes: from November to December 2025 an ad for a customer-evidence platform listed it among its customers, and from January to April 2026 an ad for a rival call-analysis tool quoted one of its customers: "we ripped out Gong and went all in on Momentum". Ramp, listed as a customer in two sponsors' ads, drops from 19 videos to 6 once ads are taken out, and Slack from 76 to 72.

That is a signal of its own. Which channels your competitors sponsor, and whether their ads name you, is one search across the repeated passages.

Which channel owns which topic

Topics are phrase lists, matched ignoring case; a video counts for a topic when its phrases come up at least three times, so one passing mention doesn't count.

TopicVideos (of 299)Channel where it comes up most
Pipeline and forecasting81Sales Gravy (19)
AI agents77SaaStr (44)
Hiring and ramping reps74Pavilion (25)
LinkedIn prospecting6330 Minutes to President's Club (20)
Churn, retention and expansion56Winning by Design (27)
Cold calling4430 Minutes to President's Club (22)
Pricing39SaaStr (14)
Discovery3430 Minutes to President's Club (18)
Quota and compensation25Pavilion (11)
Objection handling2230 Minutes to President's Club (12)
Fundraising and valuations20Pavilion (10)
Product-led growth18Winning by Design (10)
Cold email1430 Minutes to President's Club (11)

Phrase lists are in recipe-4-analysis.py and per-channel counts in topic-mentions.csv. "AI agents" includes the word "agents", which in this niche almost always means software.

Each channel has a clear lane. 30 Minutes to President's Club is the prospecting channel: cold calling, discovery, objections and cold email all peak there. SaaStr talks about AI agents in 44 of its 50 videos. Pavilion is about running a revenue team: hiring, compensation, fundraising. Winning by Design is about what happens after the sale, with retention and expansion in 27 of its 49 videos. If you plan content or sponsorships, that table says where a topic already has an audience and where it has none.

Head to head, by channel

The same counts, split by channel, for the pairs people ask about:

ChannelClaude / AnthropicChatGPT / OpenAISalesforceHubSpotGongClay
30 Minutes to President's Club4243132
SaaStr37294019415
Sales Gravy023110
Pavilion152024101010
Winning by Design81215843
Close423411

Videos per channel that name each one, ad reads excluded.

Gong is a 30 Minutes to President's Club name (13 of its 50 videos); Clay is a SaaStr name (15). Claude leads ChatGPT on SaaStr, ChatGPT leads on Pavilion and Winning by Design. Sales Gravy, a sales-training channel, barely names software at all.

What people actually say

Counts tell you where to look; the chunk timestamps take you to the moment. Four examples, each a few words long, each linked to the point in the video:

The links open at the start of the 300-word chunk that holds the quote, so the line itself is within the next two minutes.

The RAG-ready export

The same run gives you a search index over everything these channels said. Each chunk becomes one line of JSON, ready for any embedding model and vector store:

JSON
{"id": "4o8FJRULLi4-0", "videoId": "4o8FJRULLi4", "channel": "30 Minutes to President's Club", "title": "How I Use LinkedIn Sales Navigator to Find Warm Leads (Crash Course)", "publishedAt": "2026-10-13", "start": 0, "end": 85.4, "url": "https://www.youtube.com/watch?v=4o8FJRULLi4&t=0s", "text": "So, we're going to talk about search filters. How do you save them? ..."}

Our 299 videos made 6,968 chunks and about 2.05 million words with the overlap. The url field opens the video at the chunk's start, so an answer built from a chunk can cite the exact moment. The analysis script writes this file (chunks.jsonl) from the Actor's output in a few lines; we don't publish ours, because the text belongs to the channels.

For internal research that is a good use of captions: ask "what do revenue leaders say about replacing call-recording tools?" and get answers with links to the moments they said it. Republishing the transcripts is not.

If you work from Claude Code or another MCP client

With the Apify MCP server connected, this prompt builds the same counts for your own niche and keeps the chunks for questions later:

Prompt
Use the Apify Actor locaihost/youtube-transcripts on these channels: [your 5 to 10 channel handles].
maxVideosPerChannel 50, includeShorts false, languages ["en"], includeSegments false, chunkSize 300,
chunkOverlap 40. The price is $3 per 1,000 transcripts; tell me how many videos you expect first.
Save every chunk to chunks.jsonl with videoId, channel, title, publishedAt, start, end, a url with
&t=<start>s, and the text. Then, for these names: [your company and competitors], count how many
videos per channel mention each one, matching case. Before counting, remove any 12-word passage
that appears in three or more videos of the same channel (ad reads and intros) and tell me which
names were in those passages. Quote nothing longer than one sentence.

After that, questions like "which videos compare us with [competitor], and what did they say?" are answered from chunks.jsonl with timestamped links.

The weekly version: new mentions, in Slack

The useful form of this signal is a message every Monday listing each new video, from the channels you follow, that names your company or a competitor, with links that open the video at each mention.

We use an n8n workflow with five nodes for it:

  1. Schedule Trigger, every Monday at 08:00.
  2. Channels and terms (a Set node): channel handles, one per line, and the names to watch, one per line.
  3. Apify, Run actor and get dataset: runs youtube-transcripts with onlyNew: true, 120-word chunks for finer timestamps, and a $1 cap on the run.
  4. Code: finds each term in each new video's chunks, case included, and builds one message: the video, how often each term came up, up to three timestamped links, and a dozen words around the first mention. A week with no mentions sends nothing.
  5. Slack: posts it to the channel you pick.

Download content-signal-to-slack.json. It comes with this post's six channels and six sales tools as terms; replace them with yours.

Setup takes about five minutes:

  1. In n8n, open Workflows > Import from file and pick the JSON.
  2. The workflow uses the verified Apify node (@apify/n8n-nodes-apify). n8n Cloud installs it from the canvas; on self-hosted n8n, add it under Settings > Community nodes.
  3. In the Apify node, create an Apify API credential with your token from the Apify console (Settings > API & Integrations).
  4. In Post to Slack, pick your Slack credential and the channel.
  5. Edit Channels and terms, and run it once by hand. The first run reads up to 10 videos per channel; from the next Monday you only get new uploads.

What it costs: the first run over these six channels reads 60 videos ($0.18). After that, they upload about seven regular videos a week between them, so a weekly run is about 2 cents. On Apify's free plan a run reads up to 200 videos; any paid plan removes the cap.

Read the counts once

  • Captions mishear names. 295 of the 299 transcripts are automatic captions. "Replit" also came out as "Rapid" and "Replet", and the second is counted but the first is not. Check a sample of matches for every name you count, and add the misspellings you find.
  • Case matters both ways. Matching Clay with a capital keeps out the word clay, but it also misses the few places the captions wrote a name in lower case.
  • The windows differ. The 50 newest videos are four months of Sales Gravy and more than two years of Winning by Design. Compare channels on shares, not totals, and don't read a trend across them.
  • A mention is not an opinion. "We ripped out Gong" and "we love Gong" count the same. The timestamped links are there so you read the context before you quote anyone.

More ways to use the content signal

  • Product marketing. Put your company and three rivals in the terms. Over a quarter you see which channels mention you, next to whom, and whether the mentions are in conversation or in someone's ad.
  • Sponsorship buying. The topic table shows which channel already owns your topic. The repeated passages show who else sponsors it, and for how long.
  • Content planning. A topic that your buyers' favourite channels cover in half their videos is crowded; one they never cover is open.
  • Sales enablement. A searchable library of how practitioners handle an objection, with links to the minute, is a better training resource than another slide.
  • Other niches. Nothing here is about sales except the channel list and the names. Developer tools, marketing, finance, design: swap the handles and the terms.

Notes

  • The sample. Six YouTube channels about B2B sales and SaaS go-to-market, picked by us, and the newest 50 regular videos of each (49 with captions at Winning by Design). It is not a sample of all sales content.
  • The runs. Run jdvjhDvCxYLvyhM7Y on 15 October 2026 at 04:59 UTC, 69.5 seconds, 299 transcripts charged. Then run SD5gX8d64xTSuGidX with the same input, which skipped all 299 as already returned and charged nothing but the start fee.
  • Matching is evidence you can check. Every count comes from a regular expression in the analysis script, run on the captions. There is no model and no sentiment scoring.
  • Copyright. The transcripts belong to the channels. This post publishes counts, video metadata (title, date, length, views) and four short quotes with links; the chunk text stays in our own files.
  • Reproduce it. The channel list, the run script and the analysis script are next to this post, with the computed results and a list of the 299 videos with the names and topics found in each.

If you run this on your own niche, post two numbers in the comments: how many channels you followed, and how many of your competitors' mentions turned out to be in ads. That tells the next reader how much to trust a raw count.

Source: the public captions of 299 YouTube videos from six channels, read by locaihost data on 15 October 2026.