Announce
(Reblog) Functionality via ActivityPub#1715Description
What
Based on your provided content, here’s a structured request summary for implementing WordPress-to-WordPress Announce
functionality via the ActivityPub protocol.
📌 Core Request:
Enable a native "Reblog" function between WordPress sites using the ActivityPub protocol’s Announce
activity — replacing simple oEmbed-based embedding with true federation-based content sharing.
📌 Current Situation & Issues:
-
Limitations of Jetpack Reblog:
Jetpack’s current reblog function does not consider ActivityPub. It simply embeds the original post’s URL as an oEmbed/OpenGraph-based preview.
→ For example, when reblogging a post fromkowporg.wordpress.com
(with ActivityPub enabled) totravel-in-busan.com
(self-hosted with ActivityPub plugin installed), it embeds via oEmbed rather than issuing anAnnounce
. -
Incompatibility with Fediverse:
The embed approach differs from how the Fediverse handles content sharing viaAnnounce
(Boost, Renote, Repost).
This leads to duplicated or awkward post appearances within timelines on platforms like Mastodon and Misskey. -
Visual Issues with Embeds:
WordPress’s oEmbed sometimes fetches the full page layout (including headers and sidebars) or suffers from layout/font conflicts (e.g. Avada theme, Font Awesome rendering issues), breaking post appearance.
📌 Expected Benefits (if implemented):
-
Native Federation:
When reblogging fromkowporg.wordpress.com
using an account ontravel-in-busan.com
, it should trigger an ActivityPubAnnounce
activity from the local actor — seamlessly distributing the post to followers' timelines. -
Avoiding Duplicate/Redundant Posts:
Prevents redundant embed-card posts and creates a more natural Fediverse user experience. -
Flexible Content Sharing by Post Type:
- WordPress to WordPress (
Article
type): Share the full post viaAnnounce
in a native reblog manner. - WordPress to Microblogging Platforms (
Note
type): Share as a link card with a post summary and source link — optimized for each platform’s UX (optional feature).
- WordPress to WordPress (
📌 Implementation Proposal & Considerations:
-
Prioritize
Announce
Handling:
When both WordPress instances have ActivityPub enabled, detect a reblog action and generate anAnnounce
activity instead of embedding.Example ActivityPub JSON:
{ "@context": "https://www.w3.org/ns/activitystreams", "type": "Announce", "actor": "https://travel-in-busan.com/users/username", "object": "https://kowporg.wordpress.com/2025/05/17/wordpress-useful-links/" }
-
Integrate with Jetpack Reblog:
Detect when Jetpack’s reblog feature is used and optionally replace (or supplement) the current embed method with ActivityPubAnnounce
logic. -
Image Handling Options (User-Configurable):
Provide options for how images in reblogged posts are handled (similar to Naver Blog’s “본문 스크랩(full content scrap)” / “링크 스크랩(link scrap)” options or Mastodon/Misskey’s media caching settings).-
Full Content Announce (Image Local Save):
Fetch and store both text and images on the local server. Ensures content persistence even if the source is deleted. (like Naver "본문 스크랩") -
Summary/Link Announce (Image Remote Link):
Share a summary or excerpt with images linked from the source server. Reduces local server load but risks broken images if the source disappears. -
Link Card Announce:
Show only the post title, thumbnail, and link in a card layout. (like Naver "링크 스크랩") -
(Optional) Disable Announce:
Fall back to the current embed method only.
-
-
Internal Server Handling:
When reblogging within the same WordPress installation, instead of embedding the source post via oEmbed, refer to the Announced post’s ID and display it cleanly as a native post.
📌 Conclusion:
By implementing the ActivityPub Announce
function into WordPress’s reblogging system, we can bring WordPress sites closer to seamless Fediverse integration, improving both content federation and user experience.
It’s crucial to evolve from simple embedding to true social federation when sharing content between WordPress instances.
Why
Sure — here’s your detailed conversation flow translated into natural, structured English while preserving technical accuracy:
Alright, I’ll reorganize the content you provided in the order it appeared during our conversation:
1. Defining "Reblog" and "Reply" in ActivityPub
-
Reblog: Implemented as an
Announce
activity in ActivityPub.
Examples: Boost in Mastodon, Renote in Misskey, Repost in Threads, Boost in PixelFed, Announce in Pleroma/Akkoma.
Example ActivityPub JSON:{ "@context": "https://www.w3.org/ns/activitystreams", "type": "Announce", "actor": "https://example.com/users/jiwoon", "object": "https://example.com/users/someone/statuses/123" }
-
Reply: Implemented using the
inReplyTo
field.
Example ActivityPub JSON:{ "@context": "https://www.w3.org/ns/activitystreams", "type": "Create", "actor": "https://example.com/users/jiwoon", "object": { "type": "Note", "content": "Great post — thanks for sharing!", "inReplyTo": "https://example.com/users/someone/statuses/123" } }
In the WordPress ActivityPub plugin, this is mapped to a comment.
2. How Jetpack Reblog Currently Works and the Problem Raised
-
Scenario:
Attempted to reblog a post fromkowporg.wordpress.com
totravel-in-busan.com
using Jetpack’s reblog function. -
Result:
Instead of anAnnounce
, it embedded the post as a link card (oEmbed/OpenGraph style preview). -
How Jetpack Reblog Works:
It generates a card-style preview using OpenGraph + oEmbed. It doesn’t copy the original post content — it only embeds a link preview. -
Problem:
This differs from an ActivityPubAnnounce
, which would natively share the original post into the reblogging account’s timeline. Jetpack’s method only creates a visual card. -
Current Workaround:
If you want it as a standalone post, you must manually create a new post and add the original link.
3. Expected Behavior When Linking WordPress.com and Self-Hosted WordPress via ActivityPub
-
Current Setup:
kowporg.wordpress.com
: ActivityPub enabled (address: @[kowporg.wordpress.com@kowporg.wordpress.com](mailto:kowporg.wordpress.com@kowporg.wordpress.com)).travel-in-busan.com
: Self-hosted WordPress site with the ActivityPub plugin installed and connected (address assumed as @[travel-in-busan.com@travel-in-busan.com](mailto:travel-in-busan.com@travel-in-busan.com)).
-
Desired Behavior:
When thetravel-in-busan.com
account boosts (Announces) a post fromkowporg.wordpress.com
, it should federate as an ActivityPubAnnounce
— not as an embed card — to avoid content duplication. -
Key Question:
When both sites support ActivityPub, can Jetpack Reblog be handled as anAnnounce
activity in the ActivityPub protocol?
4. Federation Handling Between WordPress 'Article' and Microblog 'Note' Types
-
Context:
The ActivityPub protocol treats 'Note' and 'Article' types differently during federation. -
WordPress ActivityPub Plugin:
By default, posts are federated asArticle
types. -
Microblogging Platforms (Misskey, Mastodon, etc.):
Primarily use theNote
type. -
Suggestion:
- Between WordPress sites: Use
Announce
forArticle
type posts. - From WordPress to microblogging platforms:
Share as a link card + excerpt + page link for a smoother UX.
In short: prioritize ActivityPub
Announce
between WordPress sites, and publish in a separate, compatible format for microblogs. - Between WordPress sites: Use
5. Comparison with Naver Blog’s 'Share' Function and the Importance of ActivityPub Announce
-
Naver Blog Share Function:
- Link Scrap: A link preview card (thumbnail + title + description + URL), similar to oEmbed.
- Content Scrap: Copies the full post content (text, images, etc.) to your own blog.
-
Limitation of WordPress’s oEmbed Method:
No concept of federation. It feels out of place in federated social network ecosystems where ActivityPub’sAnnounce
is the native approach.
6. Image Handling Options When Announcing
-
Full Announce (Content + Images Stored Locally):
Similar to Naver’s “Content Scrap” — download and save images to your server. Ensures preservation even if the original source is lost. -
Summary Announce (Excerpt + Link + Original Image Link):
Like a renote. Uses the original server image URL. Risk: broken images if the source server goes down. -
Link Card Announce (Title + Thumbnail + Link):
Minimal server load, similar to Naver’s “Link Scrap.” -
Disable Announce (Embed Only):
Keep the current behavior. -
Suggestion:
Just like Mastodon/Misskey’s “media cache” option, WordPress ActivityPub could benefit from configurable image caching for Announce actions — improving both server management and federation UX consistency.
7. Core Objective and Internal Handling Proposal
-
Primary Goal:
Prefer ActivityPubAnnounce
federation over embed cards. -
WordPress-to-WordPress Federation:
Implement directAnnounce
behavior for reblogs between WordPress instances.
If you'd like, I can help you translate the remaining part or draft a spec proposal for your WordPress ActivityPub setup as well. Would you like me to do that too?
How
No response