diff --git a/source/_pages/404.html b/source/_pages/404.html
index 60830909b..9a80aae66 100644
--- a/source/_pages/404.html
+++ b/source/_pages/404.html
@@ -1,6 +1,7 @@
---
title: Page not found
permalink: /404.html
+exclude_from_sitemap: true
---
{% block javascripts %}
diff --git a/source/_pages/index.md b/source/_pages/index.md
index b49b01f8e..e6e343cbb 100644
--- a/source/_pages/index.md
+++ b/source/_pages/index.md
@@ -2,6 +2,7 @@
title: Oliver Davies - UK-based Lead Software Developer, PHP and Drupal specialist
permalink: /
is_front: true
+exclude_from_sitemap: true
---
diff --git a/source/sitemap.xml.twig b/source/sitemap.xml.twig
new file mode 100644
index 000000000..d7136bfdf
--- /dev/null
+++ b/source/sitemap.xml.twig
@@ -0,0 +1,44 @@
+---
+permalink: sitemap.xml
+use:
+ - pages
+ - posts
+ - talks
+---
+
+
+
+ {{ site.url }}
+ {{ site.calculated_date|date('Y-m-d') }}
+ monthly
+ 0.8
+
+
+ {% for page in data.pages if not page.exclude_from_sitemap %}
+
+ {{ site.url }}{{ page.url }}
+ {{ site.calculated_date|date('Y-m-d') }}
+ monthly
+ 0.8
+
+ {% endfor %}
+
+ {% for post in data.posts %}
+
+ {{ site.url }}{{ post.url }}
+ {{ post.date|date('c') }}
+ weekly
+ 1.0
+
+ {% endfor %}
+
+ {% for talk in data.talks if not talk.hide_page %}
+
+ {{ site.url }}{{ talk.url }}
+ {{ talk.date|date('c') }}
+ weekly
+ 1.0
+
+ {% endfor %}
+
+