+
+
+
+
+
+$for(include-after)$
+$include-after$
+$endfor$
+
+
diff --git a/tutorials.py b/tutorials.py
new file mode 100644
index 00000000000..4365da5cf1a
--- /dev/null
+++ b/tutorials.py
@@ -0,0 +1,41 @@
+#
+# Copyright (C) 2021 The ESPResSo project
+#
+# This file is part of ESPResSo.
+#
+# ESPResSo is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# ESPResSo is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+#
+"""
+This script generates the landing page for tutorials.
+"""
+
+import re
+
+marker_begin = '[comment]: # (Begin of tutorials landing page)'
+marker_end = '[comment]: # (End of tutorials landing page)'
+
+with open('build/doc/tutorials/Readme.md') as f:
+ content = f.read()
+
+assert marker_begin in content, f'Readme.md is missing "{marker_begin}"'
+assert marker_end in content, f'Readme.md is missing "{marker_end}"'
+tutorial_descriptions = content.split(marker_begin)[1].split(marker_end)[0]
+tutorial_descriptions = tutorial_descriptions.replace('.ipynb', '.html')
+tutorial_descriptions = re.sub(r"\]\((?!https?://)", '](tutorials/', tutorial_descriptions)
+
+with open('tutorials_header.md', 'r') as f:
+ tutorial_header = f.read()
+
+with open('tutorials.md', 'w') as f:
+ f.write(tutorial_header + tutorial_descriptions)
diff --git a/tutorials_header.md b/tutorials_header.md
new file mode 100644
index 00000000000..0ff547becb4
--- /dev/null
+++ b/tutorials_header.md
@@ -0,0 +1,4 @@
+# Tutorials
+
+All tutorials are available as Jupyter notebooks and can be found in `doc/tutorials/` in the
+source code and [on GitHub](https://github.com/espressomd/espresso/tree/python/doc/tutorials).
diff --git a/videos.py b/videos.py
new file mode 100644
index 00000000000..b138d6e75c8
--- /dev/null
+++ b/videos.py
@@ -0,0 +1,37 @@
+#
+# Copyright (C) 2021 The ESPResSo project
+#
+# This file is part of ESPResSo.
+#
+# ESPResSo is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# ESPResSo is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+#
+"""
+This script generates the landing page for video lectures.
+"""
+
+marker_begin = '[comment]: # (Begin of videos landing page)'
+marker_end = '[comment]: # (End of videos landing page)'
+
+with open('build/doc/tutorials/Readme.md') as f:
+ content = f.read()
+
+assert marker_begin in content, f'Readme.md is missing "{marker_begin}"'
+assert marker_end in content, f'Readme.md is missing "{marker_end}"'
+video_descriptions = content.split(marker_begin)[1].split(marker_end)[0]
+
+with open('videos_header.md', 'r') as f:
+ video_header = f.read()
+
+with open('videos.md', 'w') as f:
+ f.write(video_header + video_descriptions)
diff --git a/videos_header.md b/videos_header.md
new file mode 100644
index 00000000000..8cf07502e31
--- /dev/null
+++ b/videos_header.md
@@ -0,0 +1,5 @@
+# Online videos
+
+Video lectures about **ESPResSo** are available on YouTube.
+Follow [ESPResSo Simulation Package](https://www.youtube.com/channel/UC6yzqhq2KrT-aDhPjcL-VNw/)
+channel to get the latest updates!