ActivityPub Viewer

A small tool to view real-world ActivityPub objects as JSON! Enter a URL or username from Mastodon or a similar service below, and we'll send a request with the right Accept header to the server to view the underlying object.

Open in browser →
{ "@context": [ "https://www.w3.org/ns/activitystreams", { "ostatus": "http://ostatus.org#", "atomUri": "ostatus:atomUri", "inReplyToAtomUri": "ostatus:inReplyToAtomUri", "conversation": "ostatus:conversation", "sensitive": "as:sensitive", "toot": "http://joinmastodon.org/ns#", "votersCount": "toot:votersCount", "blurhash": "toot:blurhash", "focalPoint": { "@container": "@list", "@id": "toot:focalPoint" }, "Hashtag": "as:Hashtag" } ], "id": "https://masto.machlis.com/users/smach/statuses/114643437616658253", "type": "Note", "summary": null, "inReplyTo": null, "published": "2025-06-07T18:13:51Z", "url": "https://masto.machlis.com/@smach/114643437616658253", "attributedTo": "https://masto.machlis.com/users/smach", "to": [ "https://www.w3.org/ns/activitystreams#Public" ], "cc": [ "https://masto.machlis.com/users/smach/followers" ], "sensitive": false, "atomUri": "https://masto.machlis.com/users/smach/statuses/114643437616658253", "inReplyToAtomUri": null, "conversation": "tag:masto.machlis.com,2025-06-07:objectId=2902377:objectType=Conversation", "content": "<p>Rainy day here, so I&#39;m using <a href=\"https://masto.machlis.com/tags/GenerativeAI\" class=\"mention hashtag\" rel=\"tag\">#<span>GenerativeAI</span></a> to help teach me more about Kyle Walker&#39;s cool {mapgl} <a href=\"https://masto.machlis.com/tags/RStats\" class=\"mention hashtag\" rel=\"tag\">#<span>RStats</span></a> 📦 . And it&#39;s been pretty fun so far.</p><p>1) I uploaded mapgl help files and vignettes to both ChatGPT &amp; Claude.<br />2) I used the CustomGPT AI Tutor Blueprint <a href=\"https://chatgpt.com/g/g-1rlItjngn-ai-tutor-blueprint\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" translate=\"no\"><span class=\"invisible\">https://</span><span class=\"ellipsis\">chatgpt.com/g/g-1rlItjngn-ai-t</span><span class=\"invisible\">utor-blueprint</span></a> to create a good prompt for a mapGL tutor.<br />3) I added that prompt to Claude, and my tutor was ready!<br />Prompt: <a href=\"https://gist.github.com/smach/4c08c4d93836f0b63c17a5f1b077dac9\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" translate=\"no\"><span class=\"invisible\">https://</span><span class=\"ellipsis\">gist.github.com/smach/4c08c4d9</span><span class=\"invisible\">3836f0b63c17a5f1b077dac9</span></a></p><p>The {pkgprompt} and {rdocdump} <a href=\"https://masto.machlis.com/tags/R\" class=\"mention hashtag\" rel=\"tag\">#<span>R</span></a> 📦s help turn R docs into text.</p><p><a href=\"https://masto.machlis.com/tags/RSpatial\" class=\"mention hashtag\" rel=\"tag\">#<span>RSpatial</span></a></p>", "contentMap": { "en": "<p>Rainy day here, so I&#39;m using <a href=\"https://masto.machlis.com/tags/GenerativeAI\" class=\"mention hashtag\" rel=\"tag\">#<span>GenerativeAI</span></a> to help teach me more about Kyle Walker&#39;s cool {mapgl} <a href=\"https://masto.machlis.com/tags/RStats\" class=\"mention hashtag\" rel=\"tag\">#<span>RStats</span></a> 📦 . And it&#39;s been pretty fun so far.</p><p>1) I uploaded mapgl help files and vignettes to both ChatGPT &amp; Claude.<br />2) I used the CustomGPT AI Tutor Blueprint <a href=\"https://chatgpt.com/g/g-1rlItjngn-ai-tutor-blueprint\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" translate=\"no\"><span class=\"invisible\">https://</span><span class=\"ellipsis\">chatgpt.com/g/g-1rlItjngn-ai-t</span><span class=\"invisible\">utor-blueprint</span></a> to create a good prompt for a mapGL tutor.<br />3) I added that prompt to Claude, and my tutor was ready!<br />Prompt: <a href=\"https://gist.github.com/smach/4c08c4d93836f0b63c17a5f1b077dac9\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" translate=\"no\"><span class=\"invisible\">https://</span><span class=\"ellipsis\">gist.github.com/smach/4c08c4d9</span><span class=\"invisible\">3836f0b63c17a5f1b077dac9</span></a></p><p>The {pkgprompt} and {rdocdump} <a href=\"https://masto.machlis.com/tags/R\" class=\"mention hashtag\" rel=\"tag\">#<span>R</span></a> 📦s help turn R docs into text.</p><p><a href=\"https://masto.machlis.com/tags/RSpatial\" class=\"mention hashtag\" rel=\"tag\">#<span>RSpatial</span></a></p>" }, "attachment": [ { "type": "Document", "mediaType": "image/jpeg", "url": "https://cdn.masto.host/mastomachliscom/media_attachments/files/114/643/430/379/810/155/original/b15fb49e37ceee43.jpg", "name": "Instead of starting with data and aesthetics, mapgl thinks like this:\n\nMap canvas first - you create a base map (like a Google Maps background)\nAdd data as \"sources\" - your sf objects become data sources\nAdd \"layers\" that reference those sources - these are like geoms but work differently\nStyle with expressions - not aesthetics, but JavaScript-style expressions\n\nThis is more like how a web developer builds an interactive map, which is why it's so powerful for complex visualizations.\nBefore I show you the syntax, let me test your intuition: If you had to guess, how do you think you'd start building a mapgl map differently than a ggplot? What do you think comes first - the data or something else?\nAnd here's a follow-up: Given that mapgl creates interactive web maps, what do you think might be the equivalent of choosing your x and y variables in ggplot2?\n", "blurhash": "U8QvwN9F?bt7~qRjazWBxaj[t7WB%MWBofof", "focalPoint": [ 0, 0 ], "width": 1000, "height": 609 } ], "tag": [ { "type": "Hashtag", "href": "https://masto.machlis.com/tags/generativeai", "name": "#generativeai" }, { "type": "Hashtag", "href": "https://masto.machlis.com/tags/rstats", "name": "#rstats" }, { "type": "Hashtag", "href": "https://masto.machlis.com/tags/r", "name": "#r" }, { "type": "Hashtag", "href": "https://masto.machlis.com/tags/rspatial", "name": "#rspatial" } ], "replies": { "id": "https://masto.machlis.com/users/smach/statuses/114643437616658253/replies", "type": "Collection", "first": { "type": "CollectionPage", "next": "https://masto.machlis.com/users/smach/statuses/114643437616658253/replies?only_other_accounts=true&page=true", "partOf": "https://masto.machlis.com/users/smach/statuses/114643437616658253/replies", "items": [] } }, "likes": { "id": "https://masto.machlis.com/users/smach/statuses/114643437616658253/likes", "type": "Collection", "totalItems": 4 }, "shares": { "id": "https://masto.machlis.com/users/smach/statuses/114643437616658253/shares", "type": "Collection", "totalItems": 5 } }