explaingit

cianmcnally/youtuberecs-neo4j

Analysis updated 2026-05-18

25RustAudience · developerComplexity · 3/5Setup · moderate

TLDR

A Rust crawler that follows YouTube's related-video sidebars and stores what it finds as a Neo4j graph, mapping out an entire topic's interest space.

Mindmap

mindmap
  root((YoutubeRecs Neo4j))
    What it does
      Crawls related videos
      Builds interest graph
      Detects communities
    Tech stack
      Rust
      Neo4j
      Docker
    Use cases
      Map a topic space
      Find video clusters
      Resume crawl anytime
    Audience
      Developers
      Data explorers

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Build a graph map of a YouTube topic space by crawling related-video sidebars.

USE CASE 2

Track which channels and videos cluster together within a subject area.

USE CASE 3

Resume a long-running crawl at any time without losing progress.

What is it built with?

RustNeo4jDocker

How does it compare?

cianmcnally/youtuberecs-neo4jasync-herald/herald-enginechrichuang218/claude-desktop-zh
Stars252525
LanguageRustRustRust
Setup difficultymoderatemoderateeasy
Complexity3/53/52/5
Audiencedeveloperdevelopergeneral

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · moderate Time to first run · 30min

Requires Rust and a running Neo4j database, easiest to start via Docker.

In plain English

YoutubeRecs-Neo4j, whose command line tool is called raquel, is a crawler written in Rust that explores YouTube's related-videos sidebar and saves what it finds into a Neo4j graph database. Every YouTube watch page shows a list of related videos chosen by YouTube's recommendation system. By visiting enough of these pages and following the related videos they suggest, the tool builds up a map of an entire topic area, showing which channels and videos cluster together and which sit on the edges. The crawler calls the same internal API that a real YouTube watch page uses, so it does not need an official API key or quota, and it does not scrape the page's HTML directly. For each video it visits, it records the video's title, view count, likes, publish date, and its channel's name and subscriber count, then creates a link in the graph to every video shown in that sidebar, keeping track of the position each one held in the list. Videos that show up in a sidebar but have not been visited yet are stored as unscraped placeholders, and the database itself acts as the queue of what to visit next: there is no separate task list, no cache, and no memory that could be lost if the program stops. You can stop the crawler at any time and restart it, and it will pick up exactly where it left off. The walk is guided by keywords and includes some randomness: at each step it picks an unvisited video whose title matches a chosen topic, whose channel is not blocked, and that was ranked highly in some sidebar, then waits a random five to fifteen seconds before the next request to stay polite to the site. To run it, you need Rust installed and a Neo4j database, which can be started quickly with Docker or Neo4j Desktop. Once set up, you can fetch a single video, do a dry run with no database, or start a full crawl seeded with one video and a set of keywords. A separate stats command reports how large the graph has grown and how much unexplored frontier remains. The finished graph can be explored visually in Neo4j Bloom or exported for other graph visualization tools.

Copy-paste prompts

Prompt 1
Use raquel to crawl YouTube's related videos starting from a given video ID and keyword.
Prompt 2
Explain how the graph-as-queue crawl resume logic works in this Rust project.
Prompt 3
Set up a local Neo4j database and run this YouTube sidebar crawler against it.
Prompt 4
Query the Neo4j graph this crawler builds to find the most connected videos in a topic.

Frequently asked questions

What is youtuberecs-neo4j?

A Rust crawler that follows YouTube's related-video sidebars and stores what it finds as a Neo4j graph, mapping out an entire topic's interest space.

What language is youtuberecs-neo4j written in?

Mainly Rust. The stack also includes Rust, Neo4j, Docker.

How hard is youtuberecs-neo4j to set up?

Setup difficulty is rated moderate, with roughly 30min to a first successful run.

Who is youtuberecs-neo4j for?

Mainly developer.

Open on GitHub → Explain another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.