Skip to content

Microblogging

Emiel Kollof edited this page Mar 25, 2026 · 6 revisions

Microblogging (XEP-0277 / XEP-0472)

XMPP microblogging lets you publish short posts — analogous to Mastodon/Twitter toots/tweets — directly over XMPP via PubSub nodes. Posts are Atom entries stored on a PubSub service; contacts who subscribe to your urn:xmpp:microblog:0 PEP node receive them in real-time.

Status: XEP-0277 is Deferred; XEP-0472 is Experimental. Both are implemented in this plugin for the write side (post, reply, retract) and the receive side (incoming PEP push events are rendered automatically).


How it works

  • Posts live on a PubSub node (most commonly urn:xmpp:microblog:0 on a PEP service, or any XEP-0060 pubsub service).
  • Each post is an Atom entry (<entry xmlns='http://www.w3.org/2005/Atom'>).
  • XEP-0472 requires the publish-option pubsub#type=urn:xmpp:microblog:0 and the capability string urn:xmpp:pubsub-social-feed:1 to be advertised — both are handled automatically by this plugin.
  • Threaded replies use RFC 4685 thr:in-reply-to inside the Atom entry.

Compatible servers / clients

Software Role
Movim Full social feed — post, reply, retract, timeline
Libervia / Salut-à-Toi Full implementation
ejabberd PubSub mechanics work; no built-in social UI
Prosody + mod_pep PubSub node creation/subscription works

Commands

Publish a post

/feed post <service-jid> <node> <text>

Example — post to your own PEP microblog:

/feed post movim.eu urn:xmpp:microblog:0 Hello from WeeChat!

Example — post to a community node on a standalone pubsub service:

/feed post pubsub.example.com my.community.node Anyone else at the conf today?

The plugin creates the node if it does not already exist (send a pubsub#publish_model=open create IQ first if your server requires explicit node creation).


Reply to a post (threaded)

/feed reply <service-jid> <node> <item-id> <text>

First read the feed to find the item ID you want to reply to:

/feed movim.eu urn:xmpp:microblog:0

Then reply:

/feed reply movim.eu urn:xmpp:microblog:0 abc-1234 That's a great point!

The reply is a new Atom entry that contains a thr:in-reply-to ref="abc-1234" element (RFC 4685). Clients such as Movim render threaded conversations from these references.


Retract (delete) a post

/feed retract <service-jid> <node> <item-id>

Example:

/feed retract movim.eu urn:xmpp:microblog:0 abc-1234

Sends a PubSub retract IQ. Subscribers receive a retraction notification; supporting clients remove the post from their timeline.

Note: Retraction is best-effort. Contacts who already received the item may still have a local copy.


Reading a microblog feed

Use the standard /feed read commands:

/feed movim.eu urn:xmpp:microblog:0           # fetch last 20 posts
/feed movim.eu urn:xmpp:microblog:0 --limit 5 # fetch last 5 posts
/feed movim.eu urn:xmpp:microblog:0 --before <item-id>  # older page (RSM)

Each node opens in its own dedicated WeeChat buffer. The RSM cursor is persisted in LMDB so subsequent /feed calls continue from where you left off.


Receiving posts from contacts

When a contact publishes to their urn:xmpp:microblog:0 PEP node, the push event is delivered automatically and rendered in the WeeChat buffer for that contact:

alice@example.com  Just landed in Berlin! ✈️
  [microblog] 2026-03-25 14:32 UTC — urn:xmpp:microblog:0

Thread references (thr:in-reply-to) are shown inline so you can see which post is being replied to.


Capability advertisement

The plugin advertises the following in its entity caps (XEP-0115) and disco#info response so social-feed-aware servers and clients can discover support:

  • urn:xmpp:microblog:0+notify — subscribe to contacts' microblog PEP nodes
  • urn:xmpp:pubsub-social-feed:1 — XEP-0472 social feed capability

See also

Clone this wiki locally