bellingcat / bellingcat/wayback-google-analytics

feat: export findings to GraphML extension

Open
#22 0 comments 1 reaction 0 assignees View on GitHub
enhancement good first issue
Dominant language
Python
Stars
240
Forks
26
PR merge metrics
No merged PRs in 30d

Description

# Overview

Several investigations focused on Google Analytics IDs have visualized the relationships between UA codes and websites. Lawrence Alexander's [2015 Bellingcat piece](https://www.bellingcat.com/resources/how-tos/2015/07/23/unveiling-hidden-connections-with-google-analytics-ids/) comes to mind as a great example of this: he uses GraphML files and the yEd graph editor to neatly display the connections between websites.

It would be great to add support for the GraphML filetype to the project and allow users to export their findings to `.graphml`.

# Solution

We would need to add `.graphml` as an export option then write the appropriate code to generate the file. `networkx` is a popular Python library for building `.graphml` files that might be a good choice for this feature.

While building out this feature it might be a good idea to group UA codes together even if the final digit doesn't match. For example: `UA-12345-1` and `UA-12345-2` are currently treated as different, but if we're mapping websites visually it likely best to have `UA-12345` as its own node and each website sharing that part of the code be connected nodes. There is an example of this in the linked article above.

Contributor guide

Open the contributing guide

Research direction

No files, tests, or entry points are named. Start by tracing the existing export options and the project's findings representation, then check how GraphML output could fit the command-line workflow. Done means users can select `.graphml`, receive a valid GraphML file, and the proposed UA-code grouping behavior is addressed.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
cli, data-visualization
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.