Description
Post Kinds for IndieWeb in Block Themes is a block-editor successor to the classic Post Kinds plugin.
A post kind is a label that describes what a post is — a note, a check-in, a song you listened to, a movie you watched — rather than what it’s about. The idea comes from the IndieWeb movement: publish your activity on your own site instead of (or in addition to) social networks and tracking apps.
The original Post Kinds plugin was built for the Classic Editor. This plugin is built for the block editor and block themes.
What you get
- 25 custom blocks — 22 editor blocks (card blocks for most kinds, plus utilities like Star Rating, Media Lookup, Check-in Dashboard, Check-ins Feed, and Venue Detail) and 3 server-rendered blocks (Now Playing, Media Stats, Recent Kinds)
- API-powered search — find music, movies, books, games, and venues directly from the editor
- Bulk import — pull in your history from Last.fm, Trakt, Hardcover, and more
- Real-time scrobbling — webhooks for Plex, Jellyfin, Trakt, and ListenBrainz. Scrobbling means automatically logging each song or show as you play it.
- microformats2 markup on every post. Microformats are standard HTML classes that let other IndieWeb sites and tools read your posts as structured data — a listen, an RSVP, a check-in — instead of plain text.
Post kinds
- Listen — music, podcasts, and audio (MusicBrainz, ListenBrainz, Last.fm)
- Watch — movies, TV shows, and videos (TMDB, Trakt, Simkl, TVMaze)
- Read — books and articles (Open Library, Google Books, Hardcover)
- Checkin — places and venues (Foursquare, OpenStreetMap), with per-post location privacy
- Play — video games and board games (RAWG, BoardGameGeek)
- Eat / Drink — food and beverages
- Jam — music you love, with oEmbed previews
- RSVP — event responses (yes, no, maybe, interested, remote)
- Like, Reply, Repost, Bookmark — IndieWeb interactions
- Favorite, Wish, Mood, Acquisition — personal tracking
Each kind gets its own archive page (for example /kind/listen/), and the kind is set automatically from the first card block in a post — or pick it yourself in the Post Kind editor panel.
Import and sync
- Bulk import from ListenBrainz, Last.fm, Trakt, Simkl, and Hardcover
- Webhooks for Plex, Jellyfin, Trakt, and ListenBrainz
- Background processing via WP-Cron for large imports, with duplicate prevention on re-imports
- Optional syndication (POSSE) — post on your own site first, then send a copy to Last.fm, Trakt, or Foursquare. Off by default; nothing is sent unless you enable it.
Works with
- Micropub — required for posting from Micropub apps. This plugin doesn’t implement the Micropub endpoint itself; install the Micropub plugin (plus IndieAuth for authentication), and this plugin converts incoming posts into the right card block and kind.
- IndieBlocks — detected and recommended, not required. It provides companion blocks (Facepile, Location, Syndication, Link Preview); this plugin doesn’t implement those features itself.
- Webmention — detected on the Integrations settings tab. Cross-site conversations come from that plugin, not this one.
- Syndication Links, Post Formats for Block Themes, Bookmark Card — detected and enhanced when present.
- ActivityPub — a recommendation only; this plugin contains no ActivityPub integration.
Conflicts
- Post Kinds (indieweb-post-kinds) — hard conflict. Both plugins register the same
kindtaxonomy, so this plugin refuses to run while the classic Post Kinds plugin is active and shows an admin notice instead. Deactivate one of them.
External services
This plugin integrates with external services for media metadata lookups, history imports, scrobbling, and syndication. Every connection is optional: nothing is contacted until you enable a service, save its credentials, use its lookup, or paste one of its links. What follows lists each service, what is sent and when, and its terms and privacy policy.
Media lookup services (used when you search from the editor, Quick Post, or the Media Lookup block)
Each lookup sends your search text (a title, artist, venue name, or similar) plus your stored API key or credentials for that service, only at the moment you run a search or refresh metadata.
- MusicBrainz — music metadata (albums, artists, recordings). Also sends the app name/contact you configure, per their API etiquette. Terms, Privacy.
- TMDB (The Movie Database) — movie and TV metadata and artwork. Terms, Privacy. This product uses the TMDB API but is not endorsed or certified by TMDB.
- TVMaze — TV show metadata. Terms, Privacy.
- Google Books — book metadata. Terms, Privacy.
- Open Library (Internet Archive) — book metadata and covers. Terms and privacy.
- Hardcover — book metadata and reading data. Terms, Privacy.
- Podcast Index — podcast and episode metadata. Terms, Privacy.
- RAWG — video game metadata. Terms, Privacy.
- BoardGameGeek — board game metadata. Terms, Privacy.
- Foursquare — venue search for check-ins (sends your search text and, when you allow it, coordinates to find nearby venues). Terms, Privacy.
Connected accounts (used for history imports, scheduled sync, scrobbling, and syndication)
When you connect an account, the plugin stores your token and, on import, scheduled sync, or when you publish a post with that service’s syndication toggle on, sends the data needed for that action (your listen/watch/check-in details, plus your token).
- Last.fm — listening history import and scrobbling your listen posts. Terms, Privacy.
- ListenBrainz — listening history import and scrobble submission. Terms, Privacy.
- Trakt — watch history import, sync, and check-ins. Terms, Privacy.
- Simkl — watch history import and sync. Terms, Privacy.
- Untappd — drink check-in import. Terms, Privacy.
- Foursquare/Swarm — check-in import via OAuth. Terms, Privacy.
- Readwise — reading highlights import. Terms, Privacy.
Geocoding and maps
- Nominatim (OpenStreetMap Foundation) — converts a check-in’s coordinates or place text into an address (and back). Sends the location you’re checking in to and the contact email you configure, only when you create or edit a check-in that needs geocoding. Usage policy, Privacy.
- OpenStreetMap embeds — when a published check-in shows a map, the visitor’s browser loads an embedded map from openstreetmap.org containing that check-in’s coordinates. Site visitors’ browsers connect to OpenStreetMap when viewing those posts. Terms, Privacy.
Link identification
- Letterboxd — when you paste a Letterboxd link into a watch post, the plugin fetches that page once to identify the film. Only the URL you pasted is requested. Terms, Privacy.
Book previews
- Amazon Kindle previews — when you paste an Amazon or Kindle book link into a read post (or a bulk import creates one), the post can embed that book’s preview from read.amazon.com. The preview frame is loaded by the editor’s and site visitors’ browsers directly from Amazon, with only the book’s ID in the URL; the plugin itself sends nothing to Amazon. Conditions of Use, Privacy Notice.
Inbound webhooks (no data sent)
Plex, Jellyfin, Trakt, ListenBrainz, and OwnTracks scrobbling works through webhooks: those services send data to your site at the secret URL you configure. The plugin makes no outbound request to them for this feature.
AI features
The optional AI enhancements use the WordPress AI Client bundled with WordPress 7.0+, which routes requests to whatever AI provider the site administrator has configured in WordPress itself. This plugin does not contact any AI service directly and sends nothing unless you invoke an AI action.
Privacy Policy
This plugin:
- Stores all post data locally in your WordPress database — no custom tables
- Makes API calls to external services only when you search for media, paste a media URL, run imports, or receive a webhook
- Does not track users or send analytics
- Stores API keys and OAuth tokens in the WordPress options table; they are removed when you uninstall the plugin
- Sends your activity to Last.fm, Trakt, or Foursquare only when you enable those syndication toggles
External services contacted (when you use the matching feature):
- MusicBrainz / ListenBrainz — music metadata (no API key required)
- Last.fm — music metadata and scrobbling history
- TMDB — movie and TV show metadata
- Trakt / Simkl / TVMaze — movie and TV tracking
- Open Library / Google Books / Hardcover — book metadata
- RAWG / BoardGameGeek — game metadata
- Podcast Index — podcast metadata
- Foursquare — venue information
- OpenStreetMap / Nominatim — geocoding and map data
- Letterboxd — fetched when you paste a Letterboxd URL into a Watch Card, to find the matching movie
- Amazon (read.amazon.com) — Kindle book previews embedded in read posts load in the browser directly from Amazon
Each external service has its own privacy policy. API calls retrieve public metadata for the items you look up.
Credits
- Author: Courtney Robertson
- Original plugin: Post Kinds
- Built for the IndieWeb community
- Uses open data from MusicBrainz, TMDB, Open Library, RAWG, OpenStreetMap, and other services
Screenshots







Installation
Requirements
- WordPress 7.0 or later
- PHP 8.2 or later
From your WordPress admin
- Go to Plugins > Add New
- Search for Post Kinds for IndieWeb in Block Themes
- Click Install Now, then Activate
From GitHub
- Clone or download from GitHub
- Run
composer installandnpm run build - Upload to
/wp-content/plugins/post-kinds-for-indieweb/and activate
After activation
- Go to Reactions > Settings to review defaults
- Add API keys under Reactions > API Connections for the services you want (TMDB, Last.fm, etc.)
- MusicBrainz and Open Library work without API keys
- Create a post and add a card block — the post kind is assigned automatically
FAQ
-
Can I use this alongside the original Post Kinds plugin?
-
No. Both plugins register the same
kindtaxonomy, so this plugin refuses to initialize while the classic Post Kinds plugin is active and shows an error notice. Deactivate the original before activating this one. -
Do I need IndieBlocks installed?
-
No, but it’s recommended and the plugin shows an admin notice suggesting it. IndieBlocks provides companion blocks for bookmarks, likes, replies, and reposts; this plugin detects it but doesn’t implement its features.
-
How do I post from my phone or a Micropub app?
-
Install the separate Micropub plugin and an IndieAuth setup (for example the IndieAuth plugin). Micropub is a standard API that lets mobile and third-party apps publish to your site. Once it’s active, this plugin converts incoming Micropub posts into the right card block and assigns the kind.
-
Why isn’t the media search finding anything?
-
Check your API keys under Reactions > API Connections — each service has a link to register for one, and MusicBrainz and Open Library need no key. Verify your server can make outbound HTTPS requests. Try different search terms.
-
Can I import my existing data?
-
Yes. Go to Reactions > Import to import from Last.fm, Trakt, Hardcover, and more. Large imports run in the background via WP-Cron, with duplicate prevention on re-imports.
-
Are my check-ins private?
-
Each check-in has a location privacy level: public (full address and coordinates), approximate (city and region only), or private (no location shown). The published markup redacts location details to match, and you can set a site-wide default in settings.
-
What data leaves my site?
-
Media lookups and imports contact the services you use them with (MusicBrainz, TMDB, Open Library, and so on — see the Privacy Policy section below). Syndication sends posts to Last.fm, Trakt, or Foursquare only when you enable those toggles. Nothing else is sent.
-
Does this work with the Classic Editor?
-
The custom blocks require the block editor. With the Classic Editor you can still assign kinds through the taxonomy box, but with limited UI and no card blocks.
-
Where can I read the full documentation?
-
Long-form guides — installation, settings, common tasks, troubleshooting, privacy — live at courtneyr-dev.github.io/post-kinds-for-indieweb.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“Post Kinds for IndieWeb in Block Themes” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “Post Kinds for IndieWeb in Block Themes” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.0.0
- Initial WordPress.org release: 24 post kinds with card blocks, media lookup, imports and webhook scrobbling, microformats2 markup, syndication, and Micropub support. Development history for the pre-release builds lives in CHANGELOG.md in the GitHub repository.
- Security: syndication handlers require the per-post
edit_postcapability, closing an IDOR where a user with genericedit_postscould syndicate another user’s post. - Security: Letterboxd lookups use
wp_safe_remote_getwithreject_unsafe_urls, so a redirect target can’t reach private or loopback hosts. - Fixed: like, reply, repost, bookmark, favorite, listen, watch, and read posts expose the correct microformats2 markup, so webmention receivers and feed readers recognize them as their kind.
