Experimental readonly ActivityPub endpoint for Pelican
				https://s3lph.me/activitypub-static-site.html
			
		| pelican/plugins/activitypub | ||
| .gitignore | ||
| LICENSE | ||
| pyproject.toml | ||
| README.md | ||
ActivityPub Pelican Plugin
Warning: This is an experimental plugin, which most likely does not do what you'd expect it to do. Please read https://s3lph.me/activitypub-static-site.html for details.
Configuration
Add the following to your pelicanconf.py:
# Enable the plugin
PLUGINS = ['activitypub']
# Configure the author's profiles:
ACTIVITYPUB_AUTHORS = {
    # This user will be known as @alice@{{ SITEURL }} in the Fediverse
    'alice': {
        'name': 'Alice',
        'movedTo': 'https://fedi.example/users/alice',
        'movedToName': '@alice@fedi.example',
        'alsoKnownAs': ['https://fedi.example/users/alice'],
        'summary': 'Hi, I\'m Alice!  Please follow me at @alice@fedi.example.',
        'attachment': [
            {
                'type': 'PropertyValue',
                'name': 'Mastodon',
                'value': '<a href="https://fedi.example/@alice">@alice@fedi.example</a>'
            }
        ],
        'icon': {
            'type': 'Image',
            'mediaType': 'image/png',
            'url': SITEURL + 'authors/alice.png'
        }
    }
}
Apart from the ActivityPub resources, this plugin will also generate the following resources:
- .well-known/host-meta
- .well-known/nodeinfo
- .well-known/webfinger
If your Pelican site has multiple autors, you need to redirect /.well-known/webfinger?resource=acct:alice@example.org to /.well-known/_webfinger/alice.  This can e.g. be achieved with Apache .htaccess:
RewriteEngine on
RewriteRule ^/.well-known/webfinger?resource=acct:([^@]+)@example.org$ /.well-known/_webfinger/$1 [L]
Apart from that, the following Content-Types have to be overwritten (again in Apache config):
<Location /activitypub>
    Header set Content-Type "application/activity+json; charset=utf-8"
</Location>
<Location /.well-known/host-meta>
    Header set Content-Type "application/xrd+xml; charset=utf-8"
</Location>
<Location /.well-known/webfinger>
    Header set Content-Type "application/json; charset=utf-8"
</Location>
<Location /.well-known/nodeinfo>
    Header set Content-Type "application/json; charset=utf-8"
</Location>