Moin Julian.
Ich hatte mich letztes Jahr schon einmal mit Deinem "WebFinger Split-Domain Canary"-Aufbau beschÀftigt, um meine Implementation darauf abzuklopfen.
https://correct.webfinger-canary.fietkau.software/
Leider habe ich Dich seinerzeit nicht kontaktiert, daher versuche ich gerade, mein GedÀchtnis wieder aufzufrischen.
Geht es Dir im Wesentlichen darum, daĂ man bei einem Webfinger-Lookup das "subject"-Feld vergleicht und ggf. einem Redirect folgt und ein zweites Webfinger-Lookup durchfĂŒhrt? Oder noch etwas anderes?
Irgendwie scheine ich Dein Setup nicht vollstÀndig zu durchschauen...
Ich nutze zur manuellen ĂberprĂŒfung jetzt schlicht einmal https://webfinger.net/
Ein #Webfinger auf canary[at]correct.webfinger-canary.fietkau.software liefert ein passendes Subject, hier wĂ€ren also die Informationen zu entnehmen, d.h. fĂŒr #ActivityPub der Eintrag unter dem Typ "application/activity+json".
Ein Webfinger auf canary[at]wrong.webfinger-canary.fietkau.software liefert eine abweichende Subject-Angabe, so daĂ man canary[at]correct.webfinger-canary.fietkau.software abfragt, wenn man dem Redirect folgt.
Auch canary[at]webfinger-canary.fietkau.software zeigt im Subject auf die correct-Subdomain.
Allerdings zeigen alle drei Webfinger-EintrÀge im Self auf https://wrong.webfinger-canary.fietkau.software/canary - wie soll die Abfrage auf https://correct.webfinger-canary.fietkau.software als Ergebnis landen?
Und nebenbei, wie hast Du den Implementationsstatus geprĂŒft? Mit einem Testaccount auf entsprechenden Instanzen?
Freue mich ĂŒber Feedback... :-)
A Guide to Implementing ActivityPub in a Static Site (or Any Website) - Part 9: Quote Posts
Summary:
Find the index and earlier parts of this series here.
Quote Posts for Static Sites: A Practical Guide to FEP-044f Implementation
Transform your static blog into a consent-respecting quote-enabled node in the fediverse. This guide shows you how to implement quote post support that works with Mastodon, GoToSocial, and other ActivityPub servers while respecting author preferences.
In this guide: Youâll learn to build quote-enabled blog posts that can be responsibly shared across the fediverse
Find the index and earlier parts of this series here.
Quote Posts for Static Sites: A Practical Guide to FEP-044f Implementation
Transform your static blog into a consent-respecting quote-enabled node in the fediverse. This guide shows you how to implement quote post support that works with Mastodon, GoToSocial, and other ActivityPub servers while respecting author preferences.
In this guide: Youâll learn to build quote-enabled blog posts that can be responsibly shared across the fediverse
Why Quote Posts Matter (And Why Theyâre Controversial)
The User Experience Problem
Picture this: Someone finds your blog post fascinating and wants to share it with their followers, but they also want to add their own perspective or why is important. Without quote posts, they have two unsatisfying options:
Neither option creates the rich, attributed conversations that make social media engaging.
The Solution: Consent-First Quote Implementation
Weâre implementing FEP-044f: Consent-respecting quote posts in our federated blog.
What this means for your readers:
What this means for you:
Implementation Overview
We are going to:
1. Modifying the Notes: Enhanced ActivityPub Context
What We Changed:
Extended the @context from a simple string to a rich object array supporting the GoToSocial namespace.
Before:
"@context": "https://www.w3.org/ns/activitystreams"
After:
"@context": [
"https://www.w3.org/ns/activitystreams",
{
"gts": "https://gotosocial.org/ns#",
"interactionPolicy": {"@id": "gts:interactionPolicy", "@type": "@id"},
"canQuote": {"@id": "gts:canQuote", "@type": "@id"},
"automaticApproval": {"@id": "gts:automaticApproval", "@type": "@id"}
}
]
We are also adding this section at the end of the Note:
"interactionPolicy": {
"canQuote": {
"automaticApproval": "https://www.w3.org/ns/activitystreams#Public"
}
}
If you want to be specific about who can quote your post, this is where you do it, read more in here.
You can see an example of the implementation in RssUtils.cs - in the GetNote method.
2: Quote Request Processing
Now we need to add the quote request handling system that processes incoming quote requests and automatically approves them based on our interaction policy.
New Components:
The Quote Request Flow:
sequenceDiagram participant Requester as Fediverse User participant Inbox as Our Inbox participant QRS as QuoteRequestService participant Target as Target Instance Requester->>Inbox: QuoteRequest for our post Inbox->>QRS: Process quote request QRS->>QRS: Check interaction policy QRS->>QRS: Generate authorization stamp QRS->>Target: Send Accept + Authorization Target->>Requester: Quote approvedCheckout the implementation in the QuoteRequestService.cs.
Key Takeaways
By implementing FEP-044f, weâre not just adding quote functionality - weâre building consent-respecting social interactions into the protocol level.
Why This Matters:
This implementation shows how static sites can participate in modern social web standards while keeping their simplicity and performance benefits. Right now, weâre automatically allowing all public quotes, but this foundation sets us up for more granular consent controls in the future - like requiring approval for specific users or implementing follower-only quoting.
The consent-respecting approach means our content can be shared thoughtfully across the fediverse, with the infrastructure already in place to handle more sophisticated permission systems as they evolve.
Next Steps: The Quote Visualization Challenge
Now that weâve successfully implemented the backend infrastructure for consent-respecting quote posts, we face an equally important question: How should we display these quotes on our website?
Treat quoted posts as special reply types? Quotes have different semantic meaning than replies - theyâre more like âshared with commentaryâ So maybe create a separate âQuoted Byâ section similar to how we handle likes and shares?
Any ideas?
Also readable in: https://maho.dev/2026/02/a-guide-to-implementing-activitypub-in-a-static-site-or-any-website-part-9-quote-posts/ by @mapache:
#fediverse #activitypub #static-sites #hugo #azure #mastodon #web-development #social-web #webfinger #http #quote-posts #fep-044f

Hi! I have created this index for easy navigation. In Part 1, we will discuss why it is important to bring your site to the Fediverse. In Part 2, we will delve into an overview of the design of my implementation. In Part 3, we will make your blog discovereable in the fediverse. In Part 4, we will generate our notes and outbox, which contains posts ready to be shared in the Fediverse. Part 5, is an interlude to implement a subscribing to your site feature with fediverse accounts.
blog.futtta.be on the fediverse
Pretty sure no-one is waiting for this, but after having spent a couple of years on the Fediverse (Mastodon in my case) I decided to add ActivityPub support to my WordPress installation via the ActivityPub plugin. I have the WP Rest Cache plugin active, so I'm expecting things to gently hum along, without (most likely) or with these posts gaining traction. Kudo's to Stian and Servebolt for assisting me to get the webfinger endpoint to work, which is ... not self-explanatory on hosts that [âŠ]https://blog.futtta.be/2026/01/15/blog-futtta-be-on-the-fediverse/
Found this helpful resource by Ben Boyter (@boyter): a collection of sequence diagrams explaining how #ActivityPub/#WebFinger works in practiceâcovering post creation, follows, boosts, deletions, and user migration.
If you're trying to implement ActivityPub, the spec can be frustratingly vague, and different servers do things differently. This aims to be a âclean roomâ reference for getting federation right.
â.well-known/webfingerrel="canonical"rel="alternate" type="application/activity+json"I've configured static webfinger and host-meta files, so you can now find me on Mastodon simply by searching for @bexelbie. This is done by mapping my domain to my Fediverse identity without needing to host a full server.
Huge thanks to:
@shanselman for the excellent webfinger guide.
@maartenballiauw for the tip on including the .well-known directory in Jekyll.
@osma for the pointer to the host-meta file.
#Fediverse #WebFinger #Mastodon #Jekyll #SelfHost #AlmostSortaMaybe