<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[sblabs]]></title><description><![CDATA[Practical guides to getting clean data from the public web for AI and analysis: YouTube transcripts, app reviews, Shopify catalogs and Product Hunt launches. Wr]]></description><link>https://sblabs.hashnode.dev</link><image><url>https://cdn.hashnode.com/uploads/logos/6ad48e07bb1a79e7c59c543a/9c9caaee-360b-4a13-8a27-a0427fbab116.png</url><title>sblabs</title><link>https://sblabs.hashnode.dev</link></image><generator>RSS for Node</generator><lastBuildDate>Thu, 22 Oct 2026 07:53:47 GMT</lastBuildDate><atom:link href="https://sblabs.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[I read 13,674 YouTube comments about vibe coding. Here's what developers actually think]]></title><description><![CDATA[I analyzed 13,674 top YouTube comments on 22 vibe coding videos: skeptics vs fans, what senior devs say, the top worries and the tools people mention.]]></description><link>https://sblabs.hashnode.dev/i-read-13-674-youtube-comments-about-vibe-coding-here-s-what-developers-actually-think</link><guid isPermaLink="true">https://sblabs.hashnode.dev/i-read-13-674-youtube-comments-about-vibe-coding-here-s-what-developers-actually-think</guid><category><![CDATA[vibe coding]]></category><dc:creator><![CDATA[sblabs]]></dc:creator><pubDate>Wed, 21 Oct 2026 13:40:05 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6ad48e07bb1a79e7c59c543a/6bbdd89f-839b-4aba-9103-428b81e55775.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>Originally published on <a href="https://dev.to/sblabs/i-read-13674-youtube-comments-about-vibe-coding-heres-what-developers-actually-think-15eh">DEV</a>.</em></p>
<p>"Vibe coding" (building software by describing it to an AI and accepting whatever comes back) has been the loudest topic in programming YouTube for over a year. The videos are mostly hype or hot takes. The comment sections are where developers argue with each other, so I collected them and counted.</p>
<p><strong>The dataset:</strong> 13,674 top comments from 22 of the most-watched videos about vibe coding and AI coding: explainers, interviews (Karpathy, DHH, Anders Hejlsberg), "senior dev vs vibe coder" challenges, and the recent "company X vibe coded their product and it broke" stories. Together those comments collected 322,744 likes.</p>
<blockquote>
<p>Disclosure: I collected the comments with a tool I built, the <a href="https://apify.com/sblabs/youtube-comments-scraper">YouTube Comments Scraper</a> on Apify. The method and code are at the end so you can check or repeat it.</p>
</blockquote>
<h2>1. The crowd's verdict is a joke, not an argument</h2>
<p>The top 1% of comments (137 of them) collected <strong>78% of all the likes</strong>. And most of those winners aren't arguments at all. They're punchlines:</p>
<ul>
<li>"I just vibe-coded my entire repo. Now it commits to me." (9,300 likes, the most-liked comment in the whole dataset)</li>
<li>"We are finally learning what it feels like to be a manager: you have no understanding of how your product works…" (4,100 likes)</li>
</ul>
<p>Humor is how this community processes the topic. If you want to know what people believe, you have to look past the top 10.</p>
<h2>2. Skeptics outnumber fans, and collect twice the likes</h2>
<p>I tagged comments with two simple keyword lists: skeptical (bugs, security, tech debt, "slop", hype, skill loss, "won't replace") and positive (shipped, faster, productive, game changer, "the future"). Crude, but consistent across videos.</p>
<table>
<thead>
<tr>
<th></th>
<th>Share of comments</th>
<th>Share of likes</th>
</tr>
</thead>
<tbody><tr>
<td>Skeptical</td>
<td>8.3%</td>
<td>10.9%</td>
</tr>
<tr>
<td>Positive</td>
<td>5.7%</td>
<td>5.6%</td>
</tr>
<tr>
<td>Both / mixed</td>
<td>1.1%</td>
<td>2.4%</td>
</tr>
<tr>
<td>Neither (jokes, reactions, questions)</td>
<td>84.9%</td>
<td>81.1%</td>
</tr>
</tbody></table>
<p><img src="https://dev-to-uploads.s3.us-east-2.amazonaws.com/uploads/articles/hvm4xj9zn8zx4hgzbv9y.png" alt="Skeptical comments: 8.3% of comments and 10.9% of likes. Positive: 5.7% and 5.6%. Both: 1.1% and 2.4%." /></p>
<p>Skeptical comments are about 1.5× as common as positive ones, and together they collect about twice as many likes. The audience doesn't hate AI coding. It rewards people who point out what breaks.</p>
<h2>3. Experienced developers aren't the haters you'd expect</h2>
<p>321 comments start with some version of "as a senior engineer" or "I've been coding for 20 years". You'd expect them to be the most negative group. They're the most <strong>opinionated</strong> instead:</p>
<ul>
<li>10.9% skeptical (vs 8.3% overall)</li>
<li>9.3% positive (vs 5.7% overall)</li>
</ul>
<p>Senior developers are more likely to take a side, and the sides are nearly even. Many of the positive ones describe a narrow workflow rather than a revolution. One of the most-liked practical tips: start every prompt with "don't code anything, just explain to me…" (2,500 likes).</p>
<h2>4. What people worry about: understanding, then jobs, then bugs</h2>
<table>
<thead>
<tr>
<th>Theme (keyword match)</th>
<th>Share of comments</th>
</tr>
</thead>
<tbody><tr>
<td>Learning and understanding ("fundamentals", "skills", "lazy", "brain")</td>
<td>11.6%</td>
</tr>
<tr>
<td>Jobs and careers ("junior", "hire", "replace")</td>
<td>8.5%</td>
</tr>
<tr>
<td>Bugs and breakage</td>
<td>6.8%</td>
</tr>
<tr>
<td>Money and startups</td>
<td>3.4%</td>
</tr>
<tr>
<td>Maintenance and tech debt</td>
<td>2.7%</td>
</tr>
<tr>
<td>Security</td>
<td>2.0%</td>
</tr>
</tbody></table>
<p>The most common worry isn't losing a job. It's losing the ability to understand your own code. Security is rare as a topic but punches above its weight: one of the most-liked serious comments in the dataset says security is "the best thing to learn right now" because everyone will need to fix their vibe-coded apps (5,300 likes).</p>
<p>And from a video about AI on dev teams: "The bottleneck was never writing code. It is figuring out what the stakeholder wants…" (3,200 likes).</p>
<h2>5. The video frames the comments</h2>
<p>The share of skeptical comments ranged from 16% to 2% depending on the video:</p>
<ul>
<li><strong>Most skeptical:</strong> a reaction to everyone vibe coding their own software (16%), a team's "6 months of AI coding" retrospective (12.9%), and "I'm done coding with AI" (12.4%).</li>
<li><strong>Least skeptical:</strong> the Karpathy and DHH interviews (3.5% and 4.9%) and challenge videos where a vibe coder competes with a pro (3–4.5%).</li>
</ul>
<p>When a respected builder explains how they use AI, the comments discuss workflows. When a video shows something breaking, the comments pile on. Neither tells you much on its own; together they're a decent map of where the community is.</p>
<h2>6. Which tools come up</h2>
<p>Mentions across all 13,674 comments: <strong>Claude 295</strong>, ChatGPT 129, Cursor 87, Replit 49, Gemini 46, Copilot 32, Windsurf 18, Lovable 8, Bolt 6. Treat this as "what people bring up when they argue," not market share.</p>
<h2>Method (and how to repeat it)</h2>
<ul>
<li><strong>Videos:</strong> 22 popular English-language videos about vibe coding and AI coding from YouTube search, a mix of explainers, interviews, challenges and news.</li>
<li><strong>Comments:</strong> each video's Top comments, up to 1,500 per video for the first batch and 1,000 for the second, without replies. YouTube ends its Top list early on some videos, so counts per video range from 60 to 1,007. Collected October 21, 2026.</li>
<li><strong>Tagging:</strong> regular-expression keyword lists, not a language model. It misses sarcasm and counts some jokes as opinions, so read the percentages as rough.</li>
<li><strong>Cost:</strong> 13,674 comments at the Store price of $0.40 per 1,000 is about $5.50, and the two runs took about 8 minutes.</li>
</ul>
<pre><code class="language-python">from apify_client import ApifyClient
import pandas as pd

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("sblabs/youtube-comments-scraper").call(run_input={
    "videos": ["https://www.youtube.com/watch?v=Tw18-4U7mts", "https://www.youtube.com/watch?v=_2C2CNmK7dQ"],
    "maxComments": 1000,
    "sort": "top",
})
df = pd.DataFrame(client.dataset(run["defaultDatasetId"]).list_items().items)
df = df[df.status == "ok"]

skeptic = df.text.str.contains(r"\bbugs?\b|secur|tech debt|slop|hype|skill loss|won'?t replace", case=False)
print(f"{skeptic.mean():.1%} of comments, {df[skeptic].likes.sum() / df.likes.sum():.1%} of likes")
</code></pre>
<p>Want to try it without code? This <a href="https://apify.com/sblabs/youtube-comments-scraper/examples/top-200-comments-of-a-youtube-video-with-replies">one-click example</a> fetches the top 200 comments of a video. Paste your own link and click Start.</p>
<p>What would you measure next: replies (where the real arguments happen), or how the mood changes over time?</p>
<p><em>This article was created with the help of AI.</em></p>
]]></content:encoded></item><item><title><![CDATA[How to get YouTube transcripts for RAG and AI pipelines (with timestamps)]]></title><description><![CDATA[Originally published on DEV. If you're building anything with LLMs and video (search over a channel, a "chat with this podcast" bot, meeting-style…]]></description><link>https://sblabs.hashnode.dev/how-to-get-youtube-transcripts-for-rag-and-ai-pipelines-with-timestamps</link><guid isPermaLink="true">https://sblabs.hashnode.dev/how-to-get-youtube-transcripts-for-rag-and-ai-pipelines-with-timestamps</guid><category><![CDATA[AI]]></category><category><![CDATA[Python]]></category><category><![CDATA[RAG ]]></category><category><![CDATA[youtube]]></category><dc:creator><![CDATA[sblabs]]></dc:creator><pubDate>Sun, 18 Oct 2026 11:29:02 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6ad48e07bb1a79e7c59c543a/b7b06ab5-7d84-4e20-960c-0220940982b5.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>Originally published on</em> <a href="https://dev.to/sblabs/how-to-get-youtube-transcripts-for-rag-and-ai-pipelines-with-timestamps-24p6"><em>DEV</em></a><em>.</em></p>
<p>If you're building anything with LLMs and video (search over a channel, a "chat with this podcast" bot, meeting-style summaries of talks), the first problem is boring: getting clean transcripts out of YouTube in bulk.</p>
<p>The usual options all have a catch:</p>
<ul>
<li><p><strong>The official YouTube Data API</strong> only gives caption <em>files</em> for videos you own.</p>
</li>
<li><p><code>youtube-transcript-api</code> <strong>and similar libraries</strong> work great on your laptop, then start failing once you run them from a server, because YouTube blocks most datacenter IPs for transcript requests.</p>
</li>
<li><p><strong>Many tools pick the wrong language.</strong> Popular videos list volunteer translations first, so you ask for a TED talk and get the Arabic subtitles.</p>
</li>
</ul>
<p>I hit all three, so I built a small tool that handles them and runs in the cloud. This post shows how to use it from Python, and what the output looks like for a RAG pipeline.</p>
<blockquote>
<p>Disclosure: I'm the author of the tool below. It's pay-per-use on Apify, and you only pay for transcripts it actually delivers.</p>
</blockquote>
<h2>The tool</h2>
<p><a href="https://apify.com/sblabs/youtube-transcript-scraper">YouTube Transcript Scraper</a> on Apify. You give it video links or IDs, and for each video it returns:</p>
<ul>
<li><p><code>text</code>: the whole transcript as one string</p>
</li>
<li><p><code>chunks</code>: the transcript split into ~1,000-character pieces, <strong>each with start and end seconds</strong>, ready for a vector database</p>
</li>
<li><p><code>segments</code>: every caption line with its timestamp</p>
</li>
<li><p>optional <code>srt</code> / <code>vtt</code> subtitle files</p>
</li>
<li><p>video metadata (title, channel, duration, views) at no extra cost</p>
</li>
</ul>
<p>It reads the captions YouTube already has (creator-uploaded or auto-generated). In my release tests on 49 varied videos (talks, news, podcasts, Shorts, seven languages), 81 of 82 caption fetches succeeded across two runs. Videos with no captions come back as a <code>no_captions</code> row and aren't charged.</p>
<img src="https://dev-to-uploads.s3.us-east-2.amazonaws.com/uploads/articles/y5967r6fv7crq52f1tgj.png" alt="Output of one real run: three news videos in Romanian, German and Spanish, each with language, duration, line count and transcript" style="display:block;margin:0 auto" />

<p>Want to see the output before writing any code? This <a href="https://apify.com/sblabs/youtube-transcript-scraper/examples/transcripts-of-a-channel-s-latest-10-videos-as-ai-chunks">one-click example</a> is pre-filled to fetch the 10 newest TED talks as AI chunks. Open it, click Start, and look at the results.</p>
<h2>Getting transcripts from Python</h2>
<pre><code class="language-bash">pip install apify-client
</code></pre>
<pre><code class="language-python">from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")  # free account: Settings → API &amp; Integrations

run = client.actor("sblabs/youtube-transcript-scraper").call(run_input={
    "videos": [
        "https://www.youtube.com/watch?v=5MuIMqhT8DM",
        "https://youtu.be/arj7oStGLkU",
    ],
    "chunkSize": 1000,       # characters per chunk; 0 turns chunks off
    "includeSrt": False,
})

for video in client.dataset(run["defaultDatasetId"]).iterate_items():
    if video["status"] != "ok":
        print("skipped", video["url"], video["error"])
        continue
    print(video["title"], "-", len(video["chunks"]), "chunks")
</code></pre>
<h2>Putting the chunks into a vector store</h2>
<p>Because every chunk keeps its timestamps, you can link answers back to the exact moment in the video:</p>
<pre><code class="language-python">docs = []
for video in client.dataset(run["defaultDatasetId"]).iterate_items():
    if video["status"] != "ok":
        continue
    for c in video["chunks"]:
        docs.append({
            "text": c["text"],
            "metadata": {
                "title": video["title"],
                "channel": video["channel"],
                "url": f'{video["url"]}&amp;t={int(c["start"])}s',  # deep link to the moment
            },
        })

# then embed `docs` with your library of choice (OpenAI, Voyage, sentence-transformers…)
# and upsert into Chroma, pgvector, Pinecone, etc.
</code></pre>
<p>When your bot answers, it can cite "<em>TED, 4:31</em>" with a clickable link instead of a vague "somewhere in this video".</p>
<h2>Whole playlists and channels</h2>
<p><em>Update: added after this post first went out.</em> You can now pass a playlist or channel link instead of single videos. The Actor lists the videos for free and you only pay for the transcripts:</p>
<pre><code class="language-python">run_input = {
    "videos": [
        "https://www.youtube.com/@TED",                       # newest uploads first
        "https://www.youtube.com/playlist?list=PLlT0ph_Ig5Rc8xVBw47aZfLsOGw-lxRWb",
    ],
    "maxVideosPerSource": 20,      # per playlist or channel; 0 = all
    "channelContent": "videos",    # or "shorts", "streams", "all"
}
</code></pre>
<p>Each result says which playlist or channel it came from (<code>sourceType</code>, <code>sourceTitle</code>, <code>sourcePosition</code>).</p>
<h2>Picking a language</h2>
<p>By default it returns the captions in the video's <strong>spoken</strong> language, not whatever translation happens to be listed first. To prefer another language when the video has it:</p>
<pre><code class="language-python">run_input = {"videos": [...], "language": "de"}
</code></pre>
<h2>No-code option</h2>
<p>You can also run it from the Apify web UI (paste links, click Start, download CSV or JSON). It also works from n8n, Make or Zapier, or as a tool for AI agents through the Apify MCP server (<code>https://mcp.apify.com</code>). Then you can just ask Claude or Cursor: "<em>get the transcript of this video and summarize it</em>".</p>
<h2>Limits worth knowing</h2>
<ul>
<li><p>It only reads existing captions. Music videos and very short clips often have none.</p>
</li>
<li><p>Respect creators: use transcripts for search, analysis and summaries, not to republish someone's content as your own.</p>
</li>
</ul>
<p>If you try it and something breaks, open an issue on the Actor's page and I'll fix it.</p>
<p><em>This article was created with the help of AI.</em></p>
]]></content:encoded></item></channel></rss>