• Stars
    star
    442
  • Rank 94,741 (Top 2 %)
  • Language
    PHP
  • License
    MIT License
  • Created almost 6 years ago
  • Updated 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

ActivityPub for WordPress

ActivityPub

Contributors: pfefferle, mediaformat, akirk, automattic
Tags: OStatus, fediverse, activitypub, activitystream
Requires at least: 4.7
Tested up to: 6.2
Stable tag: 0.17.0
Requires PHP: 5.6
License: MIT
License URI: http://opensource.org/licenses/MIT

The ActivityPub protocol is a decentralized social networking protocol based upon the ActivityStreams 2.0 data format.

Description

This is BETA software, see the FAQ to see the current feature set or rather what is still planned.

The plugin implements the ActivityPub protocol for your blog, which means that your readers will be able to follow your blog posts on Mastodon and other federated platforms that support ActivityPub. In addition, replies to your posts on Mastodon and related platforms will automatically become comments on your blog post.

The plugin works with the following tested federated platforms, but there may be more that it works with as well:

Here’s what that means and what you can expect.

Once the ActivityPub plugin is installed, each author’s page on your WordPress blog will become its own federated instance. In other words, if you have two authors, Jane and Bob, on your website, example.com, then your authors would have their own author pages at example.com/author/jane and example.com/author/bob. Each of those author pages would now be available to Mastodon users (and all other federated platform users) as a profile that can be followed. Let’s break that down further. Let’s say you have a friend on Mastodon who tells you to follow them and they give you their profile name @[email protected]. You search for her name, see her profile, and click the follow button, right? From then on, everything Jane posts on her profile shows up in your Home feed. Okay, similarly, now that Jane has installed the ActivityPub plugin on her example.com site, her friends can also follow her on Mastodon by searching for @[email protected] and clicking the Follow button on that profile.

From now on, every blog post Jane publishes on example.com will show up on your Home feed because you follow her @[email protected] profile. Of course, if no one follows your author instance, then no one will ever see the posts - including you! So the easiest way to even know if the plugin is working is to follow your new profile yourself. If you already have a Mastodon profile, just follow your new one from there.

Some things to note:

  1. Many single-author blogs have chosen to turn off or redirect their author profile pages, usually via an SEO plugin like Yoast or Rank Math. This is usually done to avoid duplicate content with your blog’s home page. If your author page has been deactivated in this way, then ActivityPub won’t work for you. Instead, you can turn your author profile page back on, and then use the option in your SEO plugin to noindex the author page. This will enable the page to be live and ActivityPub will now work, but the live page won’t cause any duplicate content issues with search engines.
  2. Once ActivityPub is installed, only new posts going forward will be available in the fediverse. Likewise, even if you’ve been using ActivityPub for a while, anyone who follows your site, will only see new posts you publish from that moment on. They will never see previously-published posts in their Home feed. This process is very similar to subscribing to a newsletter. If you subscribe to a newsletter, you will only receive future emails, but not the old archived ones. With ActivityPub, if someone follows your site, they will only receive new blog posts you publish from then on.

So what’s the process?

  1. Install the ActivityPub plugin.
  2. Go to the plugin’s settings page and adjust the settings to your liking. Click the Save button when ready.
  3. Make sure your blog’s author profile page is active.
  4. Go to Mastodon or any other federated platform, search for your author’s new federated profile, and follow it. Your new profile will be in the form of @[email protected], so that is what you’ll search for.
  5. On your blog, publish a new post.
  6. From Mastodon, check to see if the new post appears in your Home feed.

Please note that it may take up to 15 minutes or so for the new post to show up in your federated feed. This is because the messages are sent to the federated platforms using a delayed cron. This avoids breaking the publishing process for those cases where users might have lots of followers. So please don’t assume that just because you didn’t see it show up right away that something is broken. Give it some time. In most cases, it will show up within a few minutes, and you’ll know everything is working as expected.

Frequently Asked Questions

tl;dr

This plugin connects your WordPress blog to popular social platforms like Mastodon, making your posts more accessible to a wider audience. Once installed, your blog's author pages can be followed by users on these platforms, allowing them to receive your new posts in their feeds.

Here's how it works:

  1. Install the plugin and adjust settings as needed.
  2. Ensure your blog's author profile page is active.
  3. On Mastodon or other supported platforms, search for and follow your author's new profile (e.g., @[email protected]).
  4. Publish a new post on your blog and check if it appears in your Mastodon feed.

Please note that it may take up to 15 minutes for a new post to appear in your feed, as messages are sent on a delay to avoid overwhelming your followers. Be patient and give it some time.

What is the status of this plugin?

Implemented:

  • profile pages (JSON representation)
  • custom links
  • functional inbox/outbox
  • follow (accept follows)
  • share posts
  • receive comments/reactions

To implement:

  • signature verification
  • better WordPress integration
  • better configuration possibilities
  • threaded comments support

What is "ActivityPub for WordPress"

ActivityPub for WordPress extends WordPress with some Fediverse features, but it does not compete with platforms like Friendica or Mastodon. If you want to run a decentralized social network, please use Mastodon or GNU social.

What if you are running your blog in a subdirectory?

In order for webfinger to work, it must be mapped to the root directory of the URL on which your blog resides.

Apache

Add the following to the .htaccess file in the root directory:

RedirectMatch "^\/\.well-known/(webfinger|nodeinfo|x-nodeinfo2)(.*)$" "\/blog\/\.well-known$1$2"

Where 'blog' is the path to the subdirectory at which your blog resides.

Nginx

Add the following to the site.conf in sites-available:

location ~* /.well-known {
	allow all;
	try_files $uri $uri/ /blog/?$args;
}

Where 'blog' is the path to the subdirectory at which your blog resides.

Changelog

Project maintained on GitHub at automattic/wordpress-activitypub.

Next

  • Add: Signature Verification: https://docs.joinmastodon.org/spec/security/ .
  • Update: Complete rewrite of the Follower-System based on Taxonomies.
  • Compatibility: add a new conditional, \Activitypub\is_activitypub_request(), to allow third-party plugins to detect ActivityPub requests.
  • Compatibility: add hooks to allow modifying images returned in ActivityPub requests.
  • Compatibility: indicate that the plugin is compatible and has been tested with the latest version of WordPress, 6.2.

0.17.0

  • Fix type-selector
  • Allow more HTML elements in Activity-Objects

0.16.5

  • Return empty content/excerpt on password protected posts/pages

0.16.4

  • Remove scripts later in the queue, to also handle scripts added by blocks
  • Add published date to author profiles

0.16.3

  • "cc", "to", ... fields can either be an array or a string
  • Remove "style" and "script" HTML elements from content

0.16.2

  • Fix fatal error in outbox

0.16.1

  • Fix "update and create, posts appear blank on Mastodon" issue

0.16.0

  • Add "Outgoing Mentions" (#213) props @akirk
  • Add configuration item for number of images to attach (#248) props @mexon
  • Use shortcodes instead of custom templates, to setup the Activity Post-Content (#250) props @toolstack
  • Remove custom REST Server, because the needed changes are now merged into Core.
  • Fix hashtags (#261) props @akirk
  • Change priorites, to maybe fix the hashtag issue

0.15.0

  • Enable ActivityPub only for users that can publish_posts
  • Persist only public Activities
  • Fix remote-delete

0.14.3

  • Better error handling. props @akirk

0.14.2

  • Fix Critical error when using Friends Plugin and adding new URL to follow. props @akirk

0.14.1

  • Fix "WebFinger not compatible with PHP < 8.0". props @mexon

0.14.0

0.13.4

  • fix webfinger for email identifiers

0.13.3

  • fix: Create and Note should not have the same ActivityPub ID

0.13.2

  • fix Follow issue AGAIN

0.13.1

  • fix Inbox issue

0.13.0

  • add Autor URL and WebFinger health checks
  • fix NodeInfo endpoint

0.12.0

0.11.2

  • fix inconsistent %tags% placeholder

0.11.1

  • fix follow/unfollow actions

0.11.0

0.10.1

  • fix inbox activities, like follow
  • fix debug

0.10.0

  • add image alt text to the ActivityStreams attachment property in a format that Mastodon can read. props @BenLubar
  • use the "summary" property for a title as Mastodon does. props @BenLubar
  • support authorized fetch to avoid having comments from "Anonymous". props @BenLubar
  • add new post type: "title and link only". props @bgcarlisle

0.9.1

  • disable shared inbox
  • disable delete activity

0.9.0

  • some code refactorings
  • fix #73

0.8.3

  • fixed accept header bug

0.8.2

  • add all required accept header
  • better/simpler accept-header handling
  • add debugging mechanism
  • Add setting to enable AP for different (public) Post-Types
  • explicit use of global functions

0.8.1

  • fixed PHP warnings

0.8.0

  • Moved followers list to user-menu

0.7.4

0.7.3

  • refactorings
  • fixed PHP warnings
  • better hashtag regex

0.7.2

0.7.1

  • fixed inbox problems with pleroma

0.7.0

  • finally fixed pleroma compatibility
  • added "following" endpoint
  • simplified "followers" endpoint
  • fixed default value problem

0.6.0

  • add tags as hashtags to the end of each activity
  • fixed pleroma following issue
  • followers-list improvements

0.5.1

  • fixed name-collision that caused an infinite loop

0.5.0

  • complete refactoring
  • fixed bug #30: Password-protected posts are federated
  • only send Activites when ActivityPub is enabled for this post-type

0.4.4

  • show avatars

0.4.3

  • finally fixed backlink in excerpt/summary posts

0.4.2

  • fixed backlink in excerpt/summary posts (thanks @depone)

0.4.1

  • finally fixed contact list

0.4.0

  • added settings to enable/disable hashtag support
  • fixed follower list
  • send activities only for new posts, otherwise send updates

0.3.2

  • added "followers" endpoint
  • change activity content from blog 'excerpt' to blog 'content'

0.3.1

  • better json encoding

0.3.0

  • basic hashtag support
  • temporarily deactivated likes and boosts
  • added support for actor objects
  • fixed encoding issue

0.2.1

  • customizable backlink (permalink or shorturl)
  • show profile-identifiers also on profile settings

0.2.0

  • added option to switch between content and excerpt
  • removed html and duplicate new-lines

0.1.1

  • fixed "excerpt" in AS JSON
  • added settings for the activity-summary and for the activity-object-type

0.1.0

  • added basic WebFinger support
  • added basic NodeInfo support
  • fully functional "follow" activity
  • send new posts to your followers
  • receive comments from your followers

0.0.2

  • refactoring
  • functional inbox
  • nicer profile views

0.0.1

  • initial

Installation

Follow the normal instructions for installing WordPress plugins.

Automatic Plugin Installation

To add a WordPress Plugin using the built-in plugin installer:

  1. Go to Plugins > Add New.
  2. Type "activitypub" into the Search Plugins box.
  3. Find the WordPress Plugin you wish to install.
    1. Click Details for more information about the Plugin and instructions you may wish to print or save to help setup the Plugin.
    2. Click Install Now to install the WordPress Plugin.
  4. The resulting installation screen will list the installation as successful or note any problems during the install.
  5. If successful, click Activate Plugin to activate it, or Return to Plugin Installer for further actions.

Manual Plugin Installation

There are a few cases when manually installing a WordPress Plugin is appropriate.

  • If you wish to control the placement and the process of installing a WordPress Plugin.
  • If your server does not permit automatic installation of a WordPress Plugin.
  • If you want to try the latest development version.

Installation of a WordPress Plugin manually requires FTP familiarity and the awareness that you may put your site at risk if you install a WordPress Plugin incompatible with the current version or from an unreliable source.

Backup your site completely before proceeding.

To install a WordPress Plugin manually:

  • Download your WordPress Plugin to your desktop.
  • If downloaded as a zip archive, extract the Plugin folder to your desktop.
  • With your FTP program, upload the Plugin folder to the wp-content/plugins folder in your WordPress directory online.
  • Go to Plugins screen and find the newly uploaded Plugin in the list.
  • Click Activate to activate it.

More Repositories

1

mongoose

MongoDB object modeling designed to work in an asynchronous environment.
JavaScript
26,581
star
2

wp-calypso

The JavaScript and API powered WordPress.com
JavaScript
12,349
star
3

_s

Hi. I'm a starter theme called _s, or underscores, if you like. I'm a theme meant for hacking so don't use me as a Parent Theme. Instead try turning me into the next, most awesome, WordPress theme out there. That's what I'm here for.
CSS
10,849
star
4

node-canvas

Node canvas is a Cairo backed Canvas implementation for NodeJS.
JavaScript
9,820
star
5

kue

Kue is a priority job queue backed by redis, built for node.js.
JavaScript
9,434
star
6

simplenote-electron

Simplenote for Web, Windows, and Linux
TypeScript
4,517
star
7

juice

Juice inlines CSS stylesheets into your HTML source.
JavaScript
3,037
star
8

pocket-casts-android

Pocket Casts Android 🎧
Kotlin
2,440
star
9

cli-table

Pretty unicode tables for the CLI with Node.JS
JavaScript
2,243
star
10

expect.js

Minimalistic BDD-style assertions for Node.JS and the browser.
JavaScript
2,098
star
11

simplenote-ios

Simplenote for iOS
Swift
1,976
star
12

monk

The wise MongoDB API
JavaScript
1,845
star
13

knox

S3 Lib
JavaScript
1,738
star
14

simplenote-android

Simplenote for Android
Java
1,688
star
15

jetpack

Security, performance, marketing, and design tools — Jetpack is made by WordPress experts to make WP sites safer and faster, and help you grow your traffic.
PHP
1,550
star
16

pocket-casts-ios

Pocket Casts iOS app 🎧
Swift
1,464
star
17

simplenote-macos

Simplenote for macOS
Swift
1,420
star
18

antiscroll

OS X Lion style cross-browser native scrolling on the web that gets out of the way.
JavaScript
1,079
star
19

wp-desktop

WordPress.com for Desktop
981
star
20

WP-Job-Manager

Manage job listings from the WordPress admin panel, and allow users to post jobs directly to your site.
PHP
874
star
21

browser-repl

Launch a repl on your command line to any browser in the cloud.
JavaScript
728
star
22

themes

Free WordPress themes made by Automattic for WordPress.org and WordPress.com.
CSS
693
star
23

legalmattic

Democratizing WordPress.com legalese since 2014!
672
star
24

wpcom.js

WordPress.com JavaScript API client designed for Node.js and browsers
JavaScript
658
star
25

Picard

A prototype theme that uses React and WP-API
CSS
631
star
26

fb-instant-articles

Archived (see Readme). Enable Facebook Instant Articles on your WordPress site.
PHP
628
star
27

sensei

Sensei LMS - Online Courses, Quizzes, & Learning
PHP
497
star
28

developer

In your WordPress, developing locally
PHP
470
star
29

theme-components

A collection of patterns for creating a custom starter WordPress theme.
PHP
404
star
30

wp-super-cache

WP Super Cache: A fast caching engine for WordPress
PHP
399
star
31

Edit-Flow

WordPress plugin to accelerate your editorial workflow
PHP
341
star
32

o2

The o2 plugin for WordPress — blogging at the speed of thought
JavaScript
332
star
33

newspack-plugin

An advanced open-source publishing and revenue-generating platform for news organizations.
PHP
310
star
34

liveblog

Liveblogging done right. Using WordPress.
PHP
304
star
35

batcache

A memcached HTML page cache for WordPress.
PHP
278
star
36

Co-Authors-Plus

Multiple bylines and Guest Authors for WordPress
PHP
275
star
37

newspack-theme

A theme for Newspack.
PHP
265
star
38

vip-quickstart

Retired
PHP
265
star
39

Iris

A(n awesome) Color Picker
JavaScript
257
star
40

babble

Multilingual WordPress done right.
PHP
244
star
41

syntaxhighlighter

WordPress plugin that makes it easy to post syntax-highlighted code snippets.
CSS
237
star
42

VIP-Coding-Standards

PHP_CodeSniffer ruleset to enforce WordPress VIP coding standards.
PHP
210
star
43

underscores.me

PHP
209
star
44

isolated-block-editor

Repackages Gutenberg's editor playground as a full-featured multi-instance editor that does not require WordPress.
CSS
192
star
45

custom-metadata

A WordPress plugin that provides an easy way to add custom fields to your object types (post, pages, custom post types, users)
PHP
191
star
46

camptix

Moved to https://github.com/WordPress/wordcamp.org/
PHP
182
star
47

newspack-blocks

Gutenberg blocks for the Newspack project.
PHP
179
star
48

browserbuild

JavaScript
170
star
49

woocommerce-payments

Accept payments via credit card. Manage transactions within WordPress.
PHP
162
star
50

vip-go-mu-plugins

The development repo for mu-plugins used on the WordPress VIP Platform.
PHP
158
star
51

Documattic

WordPress presentations and resources shared by WordPress.com VIP
JavaScript
156
star
52

google-docs-add-on

Publish to WordPress from Google Docs
JavaScript
152
star
53

mydb

JavaScript
150
star
54

vip-scanner

Deprecated: Scan all sorts of themes and files and things! Use PHPCS and the VIP coding standards instead
PHP
140
star
55

wp-memcached

Memcached Object Cache for WordPress.
PHP
139
star
56

Genericons

A public mirror of changes to the Genericon release.
CSS
136
star
57

regenerate-thumbnails

WordPress plugin for regenerating thumbnails of uploaded images. Over 1 million active users and counting.
PHP
131
star
58

media-explorer

With Media Explorer, you can now search for tweets and videos on Twitter and YouTube directly from the Add Media screen in WordPress.
PHP
124
star
59

Rewrite-Rules-Inspector

WordPress plugin to inspect your rewrite rules.
PHP
123
star
60

PhpStorm-Resources

PhpStorm is making inroads at Automattic. Here you'll find various helpful files we've made.
123
star
61

wordbless

WorDBless allows you to use WordPress core functions in your PHPUnit tests without having to set up a database and the whole WordPress environment
PHP
122
star
62

vip-go-mu-plugins-built

The generated repo for mu-plugins used on the VIP Go platform.
PHP
120
star
63

social-logos

A repository of all the social logos we use on WordPress.com
JavaScript
119
star
64

Cron-Control

A fresh take on running WordPress's cron system, allowing parallel processing
PHP
116
star
65

block-experiments

A monorepo of Block Experiments
JavaScript
114
star
66

genericons-neue

Genericons Neue are generic looking icons, suitable for a blog or simple website
HTML
114
star
67

nginx-http-concat

WordPress plugin to perform CSS and JavaScript concatenation of individual script files into one resource request.
PHP
114
star
68

php-thrift-sql

A PHP library for connecting to Hive or Impala over Thrift
PHP
113
star
69

wp-e2e-tests

Automated end-to-end tests for WordPress.com
JavaScript
112
star
70

ad-code-manager

Easily manage the ad codes that need to appear in your templates
PHP
112
star
71

gridicons

The WordPress.com icon set
PHP
108
star
72

woocommerce-services

WooCommerce Services is a feature plugin that integrates hosted services into WooCommerce (3.0+), and currently includes automated tax rates and the ability to purchase and print USPS shipping labels.
JavaScript
104
star
73

es-backbone

ElasticSearch Backbone library for quickly building Faceted Search front ends.
JavaScript
103
star
74

syndication

Syndicate your WordPress content.
PHP
102
star
75

theme-tools

Tools for making better themes, better.
JavaScript
99
star
76

mShots

Website Thumbnail/Snapshot Service
JavaScript
94
star
77

prefork

PHP class for pre-loading heavy PHP apps before serving requests
PHP
94
star
78

phpcs-neutron-standard

A set of phpcs sniffs for PHP >7 development
PHP
93
star
79

newspack-newsletters

Author email newsletters in WordPress
PHP
89
star
80

musictheme

A theme for bands and musicians that uses an experimental Gutenberg layout.
CSS
89
star
81

gutenberg-themes-sketch

A set of Sketch files to help you design block-driven WordPress themes.
88
star
82

zoninator

Curation made easy! Create "zones" then add and order your content straight from the WordPress Dashboard.
PHP
85
star
83

cloudup-cli

cloudup command-line executable
JavaScript
83
star
84

go-search-replace

🚀 Search & replace URLs in WordPress SQL files.
Go
81
star
85

lazy-load

Lazy load images on your WordPress site to improve page load times and server bandwidth.
JavaScript
77
star
86

gutenberg-ramp

Control conditions under which Gutenberg loads - either from your theme code or from a UI
PHP
75
star
87

auto-update

Objective-C
73
star
88

wpes-lib

WordPress-Elasticsearch Lib
PHP
73
star
89

vip-go-skeleton

The base repository structure for all VIP Go sites
PHP
72
star
90

msm-sitemap

Comprehensive sitemaps for your WordPress VIP site. Joint collaboration between Metro.co.uk, WordPress VIP, Alley Interactive, Maker Media, 10up, and others.
PHP
70
star
91

jurassic.ninja

A frontend to launching ephemeral WordPress instances that auto-destroy after some time
PHP
69
star
92

gutenberg-block-styles

An example of a simple plugin that adds a block style to Gutenberg.
PHP
68
star
93

atd-chrome

After the Deadline extension for Chrome
JavaScript
66
star
94

wp-api-console

WordPress (.com and .org) API Console written in React/Redux
JavaScript
66
star
95

eventbrite-api

The Eventbrite API plugin brings the power of Eventbrite to WordPress, for both users and developers.
PHP
65
star
96

mongo-query

mongo query API component
JavaScript
65
star
97

site-logo

Add a logo to your WordPress site. Set it once, and all themes that support it will display it automatically.
PHP
65
star
98

vip-go-nextjs-skeleton

A Next.js boilerplate for decoupled WordPress on VIP.
TypeScript
65
star
99

newspack-popups

AMP-compatible popup notifications.
PHP
61
star
100

components.underscores.me

I run the components.underscores.me website and I generate pretty cool WordPress themes.
CSS
60
star