diff --git a/CHANGELOG.md b/CHANGELOG.md
index a55283a75b6168eab8efd2765cf09ca38fd091f7..8db1a9ffbc189111312e734c436bb41e52db1038 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,6 +3,9 @@
 ## 1.0.2
 
 * Fixed bad id in `/followers` ActivityPub endpoint.
+* Created activity and status pages for each page independent from the outbox.
+    This should enable searches for specific posts to work rather than simply
+    pointing to the main user.
 
 ## 1.0.1
 
diff --git a/config/_default/hugo.toml b/config/_default/hugo.toml
index cfa243db2272540ab55df978d0b6382371b0a030..ba3f25d0217e6ec5f77c4fd271bc19db62aee6f2 100644
--- a/config/_default/hugo.toml
+++ b/config/_default/hugo.toml
@@ -12,8 +12,11 @@ enableRobotsTXT = true
 [services.rss]
 limit = 50
 
-[permalinks]
-post = "/:title/"
+# [permalinks]
+# [permalinks.page]
+# news = "/:section/:slug/"
+# projects = "/:section/:slug/"
+# resource = "/:section/:slug/"
 
 [taxonimies]
 tag = "tags"
@@ -39,11 +42,15 @@ baseName = "outbox"
 mediaType = "application/json"
 notAlternative = true
 baseName = "manifest"
+[outputFormats.ACTIVITY_STATUS]
+mediaType = "application/activity+json"
+notAlternative = true
+baseName = "status"
 
 [outputs]
 home = ["HTML", "RSS", "ACTIVITY", "ACTIVITY_OUTBOX", "MANIFEST"]
 section = ["HTML", "RSS"]
-page = ["HTML"]
+page = ["HTML", "ACTIVITY_STATUS", "ACTIVITY"]
 
 [related]
 # Only include matches with rank >= threshold. This is a normalized rank between 0 and 100.
diff --git a/layouts/_default/single.activity.ajson b/layouts/_default/single.activity.ajson
new file mode 100644
index 0000000000000000000000000000000000000000..2497ee7c4721220e4542d425ceec4040067547e5
--- /dev/null
+++ b/layouts/_default/single.activity.ajson
@@ -0,0 +1 @@
+{{ partial "activity.ajson" . }}
diff --git a/layouts/_default/single.activity_status.ajson b/layouts/_default/single.activity_status.ajson
new file mode 100644
index 0000000000000000000000000000000000000000..d907084b2cb46d4c9bce07dc26ebf162d0cfc791
--- /dev/null
+++ b/layouts/_default/single.activity_status.ajson
@@ -0,0 +1 @@
+{{ partial "status.ajson" . }}
diff --git a/layouts/index.activity_outbox.ajson b/layouts/index.activity_outbox.ajson
index 0ebe9780e477317732e9b7c9a08a11e9a3b6b0b9..1bced6bf14000c76f57deff4e7b1f99e464438e5 100644
--- a/layouts/index.activity_outbox.ajson
+++ b/layouts/index.activity_outbox.ajson
@@ -16,46 +16,7 @@
   "orderedItems": [
   {{ range $index, $element := $all  }}
     {{- if ne $index 0 }}, {{ end }}
-    {
-      "@context": "https://www.w3.org/ns/activitystreams",
-      "id": "{{.Permalink}}-create",
-      "type": "Create",
-      "actor": "{{ .Site.BaseURL }}{{ site.Params.apUser | lower}}",
-      "object": {
-        "id": "{{ .Permalink }}",
-        "type": "Note",
-        "content": {{ printf "\"" | safeHTML }}<b>{{.Title}}</b>{{ if .Summary }}<br>{{ replace (replace .Summary "\n" "<br>") "\r" "" | safeHTML}}{{ end }}<br><br>Read more here:<br><a href='{{.Permalink}}'>{{.Permalink}}</a><br><br>{{ if .Site.Params.renderArticleHashtags }}{{ if .Params.tags }}{{ range $indexArticleTags, $elementArticleTag := .Params.tags }}{{ if ne $indexArticleTags 0 }} {{ end }}<a href='{{ site.BaseURL }}tags/{{ $elementArticleTag | lower }}' class='mention hashtag' rel='tag'>#<span>{{ $elementArticleTag }}</span></a>{{ end }}{{ end }}{{ end }} {{ if .Site.Params.renderDefaultHashtags }}{{ if .Site.Params.postHashtags }}{{ range $indexTags, $elementTag := .Site.Params.postHashtags }}{{ if ne $indexTags 0 }} {{ end }}<a href='#' class='mention hashtag' rel='tag'>#<span>{{ $elementTag }}</span></a>{{ end }}{{ end }}{{ end }}{{ printf "\"" | safeHTML }},
-        "url": "{{.Permalink}}",
-        "attributedTo": "{{ .Site.BaseURL }}{{ site.Params.apUser | lower}}",
-        "to": "https://www.w3.org/ns/activitystreams#Public",
-        {{ if (or (and .Site.Params.postHashtags .Site.Params.renderDefaultHashtags) (and .Params.tags .Site.Params.renderArticleHashtags)) }}
-        "tag": [
-          {{- if (and .Site.Params.postHashtags .Site.Params.renderDefaultHashtags) }}
-          {{- range $indexTags, $elementTag := .Site.Params.postHashtags }}
-          {{- if ne $indexTags 0 }}, {{ end }}
-          {
-            "type": "Hashtag",
-            "href": "{{ site.BaseURL | safeHTML }}tags/{{ $elementTag | lower }}",
-            "name": "#{{ $elementTag }}"
-          }
-          {{- end }}
-          {{- end }}
-          {{- $hasTagContent := (and .Site.Params.postHashtags .Site.Params.renderDefaultHashtags) }}
-          {{- if (and .Params.tags .Site.Params.renderArticleHashtags) }}
-          {{- range $indexTags, $elementTag := .Params.tags }}
-          {{- if (or (ne $indexTags 0) $hasTagContent) }}, {{ end }}
-          {
-            "type": "Hashtag",
-            "href": "{{ site.BaseURL | safeHTML }}tags/{{ $elementTag | lower }}",
-            "name": "#{{ $elementTag }}"
-          }
-          {{- end }}
-          {{- end }}
-          ],
-        {{- end }}
-        "published": {{ dateFormat "2006-01-02T15:04:05-07:00" .Date | jsonify }}
-      }
-    }
+    {{ partial "activity.ajson" . }}
   {{end}}
   ]
 }
diff --git a/layouts/index.html b/layouts/index.html
index 9eb2d04994d287fa1aff5a151c29ff2f8d91468b..6ba1fb76d9e3a5129f3965378d5e4a34454d044f 100644
--- a/layouts/index.html
+++ b/layouts/index.html
@@ -1,3 +1,3 @@
-{{ partial "top_home.html" }}
+{{ partial "top_home.html" . }}
 {{ .Content }}
-{{ partial "bottom_home.html" }}
+{{ partial "bottom_home.html" . }}
diff --git a/layouts/partials/activity.ajson b/layouts/partials/activity.ajson
new file mode 100644
index 0000000000000000000000000000000000000000..983943f598c8094528363c205279bce2dcb7f87c
--- /dev/null
+++ b/layouts/partials/activity.ajson
@@ -0,0 +1,10 @@
+{
+  "@context": "https://www.w3.org/ns/activitystreams",
+  "id": "{{.Permalink}}activity",
+  "type": "Create",
+  "actor": "{{ .Site.BaseURL }}{{ site.Params.apUser | lower}}",
+  "published": {{ dateFormat "2006-01-02T15:04:05-07:00" .Date | jsonify }},
+  "to": [ "https://www.w3.org/ns/activitystreams#Public" ],
+  "cc": [ "{{ .Site.BaseURL }}followers" ],
+  "object": {{ partial "status.ajson" . }}
+}
diff --git a/layouts/partials/status.ajson b/layouts/partials/status.ajson
new file mode 100644
index 0000000000000000000000000000000000000000..2240051077de7137a22249cadf474b4c8046eddb
--- /dev/null
+++ b/layouts/partials/status.ajson
@@ -0,0 +1,41 @@
+{
+  "id": "{{ .Permalink }}",
+  "type": "Note",
+  "summary": null,
+  "inReplyTo": null,
+  "published": {{ dateFormat "2006-01-02T15:04:05-07:00" .Date | jsonify }},
+  "url": "{{.Permalink}}",
+  "attributedTo": "{{ .Site.BaseURL }}{{ site.Params.apUser | lower}}",
+  "to": [ "https://www.w3.org/ns/activitystreams#Public" ],
+  "cc": [ "{{ .Site.BaseURL }}followers" ],
+  "sensitive": false,
+  "atomUri": "{{ .Permalink }}",
+  "inReplyToAtomUri": null,
+  "content": {{ printf "\"" | safeHTML }}<b>{{.Title}}</b>{{ if .Summary }}<br>{{ replace (replace .Summary "\n" "<br>") "\r" "" | safeHTML}}{{ end }}<br><br>Read more here:<br><a href='{{.Permalink}}'>{{.Permalink}}</a><br><br>{{ if .Site.Params.renderArticleHashtags }}{{ if .Params.tags }}{{ range $indexArticleTags, $elementArticleTag := .Params.tags }}{{ if ne $indexArticleTags 0 }} {{ end }}<a href='{{ site.BaseURL }}tags/{{ $elementArticleTag | lower }}' class='mention hashtag' rel='tag'>#<span>{{ $elementArticleTag }}</span></a>{{ end }}{{ end }}{{ end }} {{ if .Site.Params.renderDefaultHashtags }}{{ if .Site.Params.postHashtags }}{{ range $indexTags, $elementTag := .Site.Params.postHashtags }}{{ if ne $indexTags 0 }} {{ end }}<a href='#' class='mention hashtag' rel='tag'>#<span>{{ $elementTag }}</span></a>{{ end }}{{ end }}{{ end }}{{ printf "\"" | safeHTML }},
+  "attachment": [],
+  {{ if (or (and .Site.Params.postHashtags .Site.Params.renderDefaultHashtags) (and .Params.tags .Site.Params.renderArticleHashtags)) }}
+  "tag": [
+    {{- if (and .Site.Params.postHashtags .Site.Params.renderDefaultHashtags) }}
+    {{- range $indexTags, $elementTag := .Site.Params.postHashtags }}
+    {{- if ne $indexTags 0 }}, {{ end }}
+    {
+      "type": "Hashtag",
+      "href": "{{ site.BaseURL | safeHTML }}tags/{{ $elementTag | lower }}",
+      "name": "#{{ $elementTag }}"
+    }
+    {{- end }}
+    {{- end }}
+    {{- $hasTagContent := (and .Site.Params.postHashtags .Site.Params.renderDefaultHashtags) }}
+    {{- if (and .Params.tags .Site.Params.renderArticleHashtags) }}
+    {{- range $indexTags, $elementTag := .Params.tags }}
+    {{- if (or (ne $indexTags 0) $hasTagContent) }}, {{ end }}
+    {
+      "type": "Hashtag",
+      "href": "{{ site.BaseURL | safeHTML }}tags/{{ $elementTag | lower }}",
+      "name": "#{{ $elementTag }}"
+    }
+    {{- end }}
+    {{- end }}
+    ]
+  {{- end }}
+}
diff --git a/vercel.json b/vercel.json
index 231d0635469d5ad63bdd406ef82e7991d42171c6..3132c1573b7332a52c1c41a0db1eb205986b92f8 100644
--- a/vercel.json
+++ b/vercel.json
@@ -59,6 +59,32 @@
     {
       "source": "/send-note",
       "destination": "/api/activitypub/sendNote.js"
+    },
+    {
+      "source": "/:pathSection/:pathPage/",
+      "has": [
+        {
+          "type": "header",
+          "key": "Accept",
+          "value": "application/activity+json"
+        }
+      ],
+      "destination": "/:pathSection/:pathPage/status.ajson"
+    },
+    {
+      "source": "/:pathSection/:pathPage/",
+      "has": [
+        {
+          "type": "header",
+          "key": "Accept",
+          "value": "application/json"
+        }
+      ],
+      "destination": "/:pathSection/:pathPage/status.ajson"
+    },
+    {
+      "source": "/:pathSection/:pathPage/activity",
+      "destination": "/:pathSection/:pathPage/activity.ajson"
     }
   ],
   "functions": {