0+
August 24, 2026
July 20, 2026
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.
Along with Note, Article, Photo, Video, Review, and Recipe, that’s the full 36-kind vocabulary of the classic Post Kinds plugin. Kinds without a dedicated card block still render as cards on the Stream and carry correct microformats2 markup.
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.
pkiw-kind property; Outpost does.kind taxonomy, so this plugin refuses to run while the classic Post Kinds plugin is active and shows an admin notice instead. Deactivate one of them.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.
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.
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).
When you choose “Check this URL” on a bookmark, like, reply, repost, favorite, jam, or wish card, or a few seconds after you publish a post containing one, the plugin looks for a standard.site record published by the page you cited. Nothing about you or your site is sent, and no account or credential is involved: these are public, unauthenticated reads.
site.standard.document tag. Only the URL you already linked to is requested, the same as the Letterboxd fetch above. Terms and privacy are whatever that site publishes.did:web identifiers, which name their own host. Terms, Privacy.Results are cached for a day, including pages that publish no record, so a page is not re-fetched every time you save. The plugin only reads. It never publishes your posts to AT Protocol.
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.
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.
This plugin:
External services contacted (when you use the matching feature):
Each external service has its own privacy policy. API calls retrieve public metadata for the items you look up.
composer install and npm run build/wp-content/plugins/post-kinds-for-indieweb-in-block-themes/ and activateNo. Both plugins register the same kind taxonomy, 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.
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.
Some sites publish their posts’ metadata to AT Protocol using the standard.site schemas. When a page you cite does, that panel reads the author’s own title, description, and tags rather than guessing from the page, and tells you which publication it came from.
Choose “Check this URL” to look. Most of the web publishes no such record, and the panel says so plainly when that happens — it isn’t an error. Nothing is checked until you ask, and the panel stays hidden until the card has a URL.
The panel itself only reads — checking a URL sends nothing about you or your site. Publishing your own posts is separate and optional: install the ATmosphere companion plugin, connect an AT Protocol account there, and eligible posts publish as Standard.site documents when you publish them. Without ATmosphere, or until you connect, nothing is ever sent.
Public content and public logs publish by default once ATmosphere is connected — notes, articles, photos, videos, reviews, recipes, events, and your listens, watches, reads, plays, eats, drinks, and jams, plus replies, bookmarks, and RSVPs. Thin signals (likes, reposts, favorites, follows) and privacy-sensitive kinds (check-ins, moods, wishes, acquisitions, and the health and travel logs) stay off by default; turn any kind on under Settings Post Kinds Integrations, or per post with ATmosphere’s sharing toggle in the editor, which always has the final say. Posts published before you change a setting are never removed by it.
That’s ATmosphere’s choice, not this plugin’s: Bluesky cross-posting follows ATmosphere’s own settings unchanged. Standard.site documents and Bluesky posts are related but separate — see the plugin documentation for publishing documents without Bluesky companions.
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 assigns the kind and builds the content for every incoming Micropub post — each registered kind is reachable, whether the client sends the kind’s canonical property or names the kind directly with the pkiw-kind property.
For one-tap posting and bookmarklet-style sharing from any page or your phone’s share sheet, Outpost is a companion progressive web app that posts to your site over Micropub. This plugin doesn’t ship its own bookmarklet — Micropub and Outpost cover that.
Yes — every kind gets its own archive and RSS feed automatically. Visit /kind/listen/ (swap listen for any kind) to see all posts of that kind, and /kind/listen/feed/ — or /feed/?kind=listen — to subscribe to just that kind in a feed reader. This works as soon as the plugin is active and your permalinks are refreshed (visit Settings → Permalinks once if the links 404).
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.
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.
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.
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.
No. This plugin is built for block themes and the block editor — its card blocks and templates rely on them and won’t work as intended on a classic (non-block) theme or in the Classic Editor. If you’re on a classic theme or the Classic Editor, use the original Post Kinds plugin instead.
Long-form guides — installation, settings, common tasks, troubleshooting, privacy — live at courtneyr-dev.github.io/post-kinds-for-indieweb.
postKindsIndieweb.kindIcons JavaScript filter.pkiw-kind property.edit_post capability, closing an IDOR where a user with generic edit_posts could syndicate another user’s post.wp_safe_remote_get with reject_unsafe_urls, so a redirect target can’t reach private or loopback hosts.