You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
@🕸️🕸️🕸️🕸️🕸️ cd033e2363 add video preview 2 years ago
01-YT-map fix typos 3 years ago
02-YT-viz add posters 2 years ago
03-YT-traces add video preview 2 years ago
_data re-organsie repo for better documentation 3 years ago
_graphics modified posters 2 years ago
.gitignore ignore vscode settings 3 years ago
BBCTV_env.yml add old conda environment 3 years ago
LICENSE Add LICENSE 2 years ago
Pipfile remove bs4 from env 3 years ago
Pipfile.lock remove bs4 from env 3 years ago rename readme screenshot png 3 years ago

Architectures of Choice - Vol.1: Youtube

Any interface to a vast catalog of media is, explicitly or not, an ordering of choices. This project presents a series of experiments in mapping recommendations on the YouTube platform. It acts as a starting point towards a visual understanding of how choice is directed, generated, and controlled by algorithmic systems.

This project was initially commissioned as a partnership between Supra Systems Studio and BBC R&D for Everything Happens So Much, an exhibition at the London College of Communication (London Design Festival, Sept. 2018). The last section on traces is the result of further development and reflection in collaboration with Betti Marenko for the Research Through Design conference (March 2019).

for further information see my website and our Research Through Design paper:

Marenko, B. and Benqué, D. (2019) ‘Speculative diagrams: Experiments in mapping Youtube’, in Method & Critique; frictions and shifts in RTD. Research Through Design, TU Delft. doi:

Structure of the repository

Scraping 01-YT-map

Three probes gather Youtube recommendation data, using headless web-browser Selenium. The data are written to a Neo4j graph database (see _data). attempts to map all recommendations for n levels logs all recommendations but only follows one random link only follows one random link

Visualisation 02-YT-viz

Attempts to visualise data from the graph using tools such as:

  • Neo4j browser
  • Python: matplotlib, networkx, datashader
  • Mermaid.js
  • Gephi

Traces 03-YT-traces

Focused visualisations of single paths through Youtube, showing details of each video such as title, author, and views. These are shown as static images of short traces, and animations of much longer ones.



Most of this project works with a Neo4j graph database (Community Edition 3.5.1). To install see their manual.

If you do not want to install Neo4j, try the web visualisation in the Traces section which only stores data in .csv files.


The Conda environment provided: BBCTV_env.yml was used for early experiments with various software and is therefore bloated with unused packages. I then moved to Pipenv after failing to replicate the Conda env on a new machine. Pipfile is much leaner but may be missing some packages depending on which scripts you are trying to run.

To install using Pipenv run the following from the repository root:
pipenv install adding --dev to also install an iPython kernel

Most of the Python code is the result of explorations using the Hydrogen package for Atom. This accounts for some of the spaghetti coding style and for the # %% markers that separate notebook cells. The code should still run in other IDEs or from the command line.


Please see the data directory for instructions on how to load the graph database in Neo4j.