diff --git a/contrib/sitemap/main.php b/contrib/sitemap/main.php
new file mode 100644
index 00000000..bdd350ab
--- /dev/null
+++ b/contrib/sitemap/main.php
@@ -0,0 +1,54 @@
+<?php
+/**
+ * Name: XML Sitemap
+ * Author: Sein Kraft <mail@seinkraft.info>
+ * License: GPLv2
+ * Description: Adds sitemap.xml on request.
+ * Documentation:
+ */
+
+class XMLSitemap extends SimpleExtension {
+	public function onPageRequest($event) {
+		if($event->page_matches("sitemap.xml")) {
+			$images = Image::find_images(0, 50, array());
+			$this->do_xml($images);
+		}
+	}
+	
+	private function do_xml($images) {
+		global $page;
+		$page->set_mode("data");
+		$page->set_type("application/xml");
+
+		$data = "";
+		foreach($images as $image) {
+			$link = make_http(make_link("post/view/{$image->id}"));
+			$posted = date("Y-m-d", $image->posted_timestamp);
+			
+			$data .= "
+			<url>
+			<loc>$link</loc>
+			<lastmod>$posted</lastmod>
+			<changefreq>monthly</changefreq>
+			<priority>0.8</priority>
+			</url>
+			";
+		}
+
+		$base_href = make_http(make_link("post/list"));
+
+		$xml = "<"."?xml version=\"1.0\" encoding=\"utf-8\"?".">
+				<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">
+				<url>
+				<loc>$base_href</loc>
+				<lastmod>2009-01-01</lastmod>
+				<changefreq>monthly</changefreq>
+				<priority>1</priority>
+				</url>
+				$data
+				</urlset>
+				";
+		$page->set_data($xml);
+	}
+}
+?>