diff --git a/README.md b/README.md
index c9a0edc5fd30ba9ab3c4a1120e38e3df197ef15c..78830b10e474bf58b6f7d8fbaa147444246c8d54 100644
--- a/README.md
+++ b/README.md
@@ -9,7 +9,7 @@ A Karaoke player made to replace the old bash scripts on Sakura.
 
 ## Table of content
 
-- [lektor mk7](#lektor-mk7)
+- [Lektor mk7](#lektor-mk7)
   - [Table of content](#table-of-content)
   - [Building the player](#building-the-player)
     - [Prerequisites](#prerequisites)
@@ -55,16 +55,9 @@ cargo install diesel_cli --no-default-features --features sqlite
 cargo install cargo-depgraph
 ```
 
-To visualize dependencies of the rust part of lektor, you can write the
-following commands from the root of each rust workspaces:
+To visualize dependencies of the rust part of lektor, you can call the script
+`utils/scripts/print-cargo-deps.bash` from the workspaces.
 
-```sh
-cargo depgraph --all-deps --dedup-transitive-deps | dot -Tpng > dependencies.png
-cargo depgraph --all-deps --dedup-transitive-deps --filter-platform x86_64-unknown-linux-gnu | dot -Tpng > dependencies.linux.png
-cargo depgraph --all-deps --dedup-transitive-deps --filter-platform x86_64-pc-windows-msvc   | dot -Tpng > dependencies.win32.png
-cargo depgraph --all-deps --dedup-transitive-deps --filter-platform aarch64-apple-darwin     | dot -Tpng > dependencies.macos.png
-cargo depgraph --all-deps --dedup-transitive-deps --filter-platform x86_64-apple-darwin      | dot -Tpng > dependencies.macos-arm.png
-```
 
 ### Building instructions
 
diff --git a/src/rust/dependencies.linux.png b/src/rust/dependencies.linux.png
deleted file mode 100644
index 9648fb40c4aa30ca447f7e7a6dc1d2193971545d..0000000000000000000000000000000000000000
Binary files a/src/rust/dependencies.linux.png and /dev/null differ
diff --git a/src/rust/dependencies.macos-arm.png b/src/rust/dependencies.macos-arm.png
deleted file mode 100644
index 019ae6935a9d170596f8180d17400dd33a50a88e..0000000000000000000000000000000000000000
Binary files a/src/rust/dependencies.macos-arm.png and /dev/null differ
diff --git a/src/rust/dependencies.macos.png b/src/rust/dependencies.macos.png
deleted file mode 100644
index 9772d3ba9c861a9ec08445589f35160bd41a989d..0000000000000000000000000000000000000000
Binary files a/src/rust/dependencies.macos.png and /dev/null differ
diff --git a/src/rust/dependencies.png b/src/rust/dependencies.png
deleted file mode 100644
index cbba9501e2847021966aad3b260d291085b923c6..0000000000000000000000000000000000000000
Binary files a/src/rust/dependencies.png and /dev/null differ
diff --git a/src/rust/dependencies.win32.png b/src/rust/dependencies.win32.png
deleted file mode 100644
index dca27a90344c725ae3f223b35115dc7c302fe5ac..0000000000000000000000000000000000000000
Binary files a/src/rust/dependencies.win32.png and /dev/null differ
diff --git a/utils/rust-deps/dependencies.aarch64-apple-darwin.png b/utils/rust-deps/dependencies.aarch64-apple-darwin.png
new file mode 100644
index 0000000000000000000000000000000000000000..379ecc16d8f239306c0b568f120023f4cbd9b31d
Binary files /dev/null and b/utils/rust-deps/dependencies.aarch64-apple-darwin.png differ
diff --git a/utils/rust-deps/dependencies.all.png b/utils/rust-deps/dependencies.all.png
new file mode 100644
index 0000000000000000000000000000000000000000..3eb83e6438f4671a39b23adeba93f014025ed697
Binary files /dev/null and b/utils/rust-deps/dependencies.all.png differ
diff --git a/utils/rust-deps/dependencies.workspace.png b/utils/rust-deps/dependencies.workspace.png
new file mode 100644
index 0000000000000000000000000000000000000000..6195b14de55fd434e90ea00b501e3fd4a61115bd
Binary files /dev/null and b/utils/rust-deps/dependencies.workspace.png differ
diff --git a/utils/rust-deps/dependencies.x86_64-apple-darwin.png b/utils/rust-deps/dependencies.x86_64-apple-darwin.png
new file mode 100644
index 0000000000000000000000000000000000000000..7170a1b40f1c4937e79bb23e8b58a69aa3ccb14d
Binary files /dev/null and b/utils/rust-deps/dependencies.x86_64-apple-darwin.png differ
diff --git a/utils/rust-deps/dependencies.x86_64-pc-windows-msvc.png b/utils/rust-deps/dependencies.x86_64-pc-windows-msvc.png
new file mode 100644
index 0000000000000000000000000000000000000000..6c7228ef46c0109ee69cbb09b6fd41ce54975eab
Binary files /dev/null and b/utils/rust-deps/dependencies.x86_64-pc-windows-msvc.png differ
diff --git a/utils/rust-deps/dependencies.x86_64-unknown-linux-gnu.png b/utils/rust-deps/dependencies.x86_64-unknown-linux-gnu.png
new file mode 100644
index 0000000000000000000000000000000000000000..1ea13e612f78a87c9df3488ed32ca163ca606ca5
Binary files /dev/null and b/utils/rust-deps/dependencies.x86_64-unknown-linux-gnu.png differ
diff --git a/utils/scripts/print-cargo-deps.bash b/utils/scripts/print-cargo-deps.bash
new file mode 100755
index 0000000000000000000000000000000000000000..2ff64d1e4cc0b9d39ae0759269e5cee2e115d4d3
--- /dev/null
+++ b/utils/scripts/print-cargo-deps.bash
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+set -ex
+_ROOT="$(git rev-parse --show-toplevel)"
+_OUT="$_ROOT/utils/rust-deps"
+TARGET_LIST="x86_64-unknown-linux-gnu x86_64-pc-windows-msvc aarch64-apple-darwin x86_64-apple-darwin"
+cd "$_ROOT/src/rust"
+mkdir -p "$_OUT"
+rm -f "$_OUT/*.png"
+
+cargo install cargo-depgraph
+cargo depgraph --all-deps --dedup-transitive-deps                  | dot -Tpng > "$_OUT/dependencies.all.png"
+cargo depgraph --all-deps --dedup-transitive-deps --workspace-only | dot -Tpng > "$_OUT/dependencies.workspace.png"
+
+for TARGET in $TARGET_LIST
+do
+    cargo depgraph \
+        --all-deps --dedup-transitive-deps --no-default-features \
+        --filter-platform "$TARGET" \
+        | dot -Tpng -x -Gcompound=true -Gconcentrate=true > "$_OUT/dependencies.$TARGET.png"
+done
\ No newline at end of file