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.
{
"@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'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's cool {mapgl} <a href=\"https://masto.machlis.com/tags/RStats\" class=\"mention hashtag\" rel=\"tag\">#<span>RStats</span></a> 📦 . And it's been pretty fun so far.</p><p>1) I uploaded mapgl help files and vignettes to both ChatGPT & 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'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's cool {mapgl} <a href=\"https://masto.machlis.com/tags/RStats\" class=\"mention hashtag\" rel=\"tag\">#<span>RStats</span></a> 📦 . And it's been pretty fun so far.</p><p>1) I uploaded mapgl help files and vignettes to both ChatGPT & 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
}
}