I made a glitch over lunch to periodically check my own statuses for links, and dispatch webmentions accordingly. It’s still pretty crude, but works well so far. It works through old statuses and then new in batches, searches the content of each status for anchors, and dispatches webmentions for those which support them. Feel free to remix it!
Edit: Apologies. It was set to private, but public now.
...holy crap this stuff [IndieWeb] is great. When I started getting webmentions from social media using Bridgy I flipped. It's like we're in the future!!!
I remember the early days of Twitter when people were excited about what it was and what it could do. Even then I don’t think people were as excited as Chris Beckstrom was when he made what is certainly the IndieWeb quote of the week this morning.
This week, using the magic of open web standards, I was able to write an issue post on my own website, automatically syndicate a copy of it to GitHub, and later automatically receive a reply to the copy on GitHub back to my original post as a comment there. This gives my personal website a means of doing two way communication with GitHub.
This functionality is another in a long line of content types my website is able to support so that I’m able to own my own content, yet still be able to interact with people on other websites and social media services. Given the number of social sites I’ve seen disappear over the years (often taking my content with them), this functionality gives me a tremendously larger amount of control and ownership over my web presence and identity while still allowing me to easily communicate with others.
In this post I wanted to briefly sketch what I’ve done to enable this functionality, so others who are so inclined can follow along to do the same thing.
Setting up WordPress to syndicate to GitHub
I’ll presume as a first step that one has both a GitHub account and a self-hosted WordPress website, though the details will also broadly apply to just about any content management system out there that supports the web standards mentioned.
Register your GitHub account and your website with Bridgy
Ryan Barrett runs a fantastic free open sourced service called Bridgy. To use it you’ll need the microformat rel=“me” links on both your GitHub account and your website’s homepage that point at each other. GitHub will do most of the work on its side for you simply by adding the URL of your website to the URL field for your GitHub account at https://github.com/settings/profile. Next on your website’s homepage, you’ll want to add a corresponding rel=“me” link from your website to your GitHub account.
In my case, I have a simple widget on my homepage with roughly the following link: <a href="https://github.com/username">GitHub</a>
in which I’ve replaced ‘username’ with my own GitHub username. There are a variety of other ways to add a rel=“me” link to your webpage, some of which are documented on the IndieWeb wiki.
Now you can go to Brid.gy and under “Connect your accounts” click on the GitHub button. This will prompt you to sign into GitHub via oAuth if you’re not already logged into the site. If you are already signed in, Brid.gy will check that the rel=“me” links on both your site and your GitHub account reciprocally point at each other and allow you to begin using the service to pull replies to your posts on GitHub back to your website.
To allow Brid.gy to publish to GitHub on your behalf (via webmention, which we’ll set up shortly), click on the “Publish” button.
Install the Webmention Plugin
The underlying technology that allows the Bridgy service to both publish on one’s behalf as well as for the replies from GitHub to come back to one’s site is an open web standard known as Webmention. WordPress can quickly and easily support this standard with the simple Webmention plugin that can be downloaded and activated on one’s site without any additional configuration.
For replies coming back from GitHub to one’s site it’s also recommended that one also install and activate the Semantic Linkbacks Plugin which also doesn’t require any configuration. This plugin provides better integration and UI features in the comments section of one’s website.
Install Post Kinds Plugin
The Post Kinds Plugin is somewhat similar to WordPress’s Post Formats core functionality, it just goes the extra mile to support a broader array of post types with the appropriate meta data and semantic markup for interacting with Bridgy, other web parsers, and readers.
Download the plugin, activate it, and in the plugin’s settings page enable the “Issue” kind. For more details on using it, I’ve written about this plugin in relative detail in the past.
Install Bridgy Publish Plugin
One can just as easily install the Bridgy Publish Plugin for WordPress and activate it. This will add a meta box to one’s publishing dashboard that, after a quick configuration of which social media silos one wishes to support, will allow one to click a quick checkbox to automatically syndicate their posts.
Install the Syndication Links Plugin
The Syndication Links plugin is also a quick install and activate process. You can modify the settings to allow a variety of ways to display your syndication links (or not) on your website if you wish.
This plugin will provide the Bridgy Publish Plugin a place to indicate the permalink of where your syndicated content lives on GitHub. The Bridgy service will use this permalink to match up the original content on your website and the copy on GitHub so that when there are replies, it will know which post to send those replies to as comments which will then live on your own website.
You should now be ready to write your first issue on your website, cross post it to GitHub (a process known in IndieWeb parlance as POSSE), and receive any replies to your GitHub issue as comments back to your own website.
Create a new post.
In the “Kinds” meta box, choose the “Issue” option.
Type in a title for the issue in the “Title” field.
In the “Response Properties” meta box, put the permalink URL of the Github repopository for which you’re creating an issue. The plugin should automatically process the URL and import the repository name and details.
In the primary editor, type up any details for the issue as you would on GitHub in their comment box. You can include a relatively wide variety of custom symbols and raw html including
and with code samples which will cross-post and render properly.
In the GitHub meta box, select the GitHub option. You can optionally select other boxes if you’re also syndicating your content to other services as well. See the documentation for Bridgy and the plugin for how to do this.
Optionally set any additional metadata for your post (tags, categories, etc.) as necessary.
Publish your post.
On publication, your issue should be automatically filed to the issue queue of the appropriate GitHub repo and include a link back to your original (if selected). Your post should receive the syndicated permalink of the issue on GitHub and be displayed (depending on your settings) at the bottom of your post.
When Bridgy detects future interactions with the copy of your post on GitHub, it will copy them and send them to your original post as a webmention so that they can be displayed as comments there.
If you frequently create issues on GitHub like this you might want a slightly faster way of posting. Toward that end, I’ve previously sketched out how to create browser bookmarklets that will allow you one click post creation from a particular GitHub repo to speed things along. Be sure to change the base URL of your website and include the correct bookmarklet type of “issue” in the code.
The Post Kinds plugin will also conveniently provide you with an archive of all your past Issue posts at the URL http://example.com/kind/issue/, where you can replace example.com with your own website. Adding feed/ to the end of that URL provides an RSS feed link as well. Post Kinds will also let you choose the “Reply” option instead of “Issue” to create and own your own replies to GitHub issues while still syndicating them in a similar manner and receive replies back.
Given the general set up of the variety of IndieWeb-based tools, there are a multitude of other ways one can also accomplish this workflow (both on WordPress as well as with an infinity of other CMSes). The outline I’ve provided here is one of the quickest methods for beginners that will allow a relatively high level of automation and almost no manual work.
One doesn’t necessarily need to use the Post Kinds Plugin, but could manually insert all the requisite HTML into their post editor to accomplish the post side of things via webmention. (One also has the option to manually syndicate the content to GitHub by cutting and pasting it as well.) If doing things manually this way is desired, then one will need to also manually provide a link to the syndicated post on GitHub into their original so that Bridgy can match up the copy and the original to send the replies via webmention.
If you’ve followed many of these broad steps, you’ve given already given yourself an incredibly strong IndieWeb-based WordPress installation. With a minimal amount of small modifications you can also use it to dovetail your website with other social services like Twitter, Facebook, Flickr, Instagram, Google+ and many others. Why not take a quick look around on the IndieWeb wiki to see what other magic you can perform with your website!
I’ve documented many of my experiments, including this one, in a collection of posts for reference.
If you have questions or problems, feel free to comment below or via webmention using your own website. You can also find a broad array of help with these plugins, services, and many other pieces of IndieWeb technology in their online chat rooms.
I've had my site for quite some time now, the internet archive goes way back to 2002 even! To be fair, most of the content until 2007 wasn't that interesting (not sure what makes me think it is nowadays though, but okay ... ), but it was mostly the primary source of well .. me :). Apart from that, I also use Twitter, but I want to turn this around and let my site be the primary source. The IndieWeb movement is something I only recently discovered, but somehow, the philosophy was in my mind for the last few weeks, and I am not the only one that is talking about it.
So, as a first small step, to figure out who links to my content, I created a simple Drupal 8 module that can receive and store webmentions and pingbacks from Webmention.io. The source is available at https://github.com/swentel/webmention_io. I'll move this drupal.org at some point once it gets into a more polished state, but it also depends on further iterations of getting more interaction feedback to my site.
Next up is looking at https://brid.gy/ as the service has integration with social networks to post and retrieve replies from there.
This isn’t as direct a solution as I would have expected, but I suspect that it probably works pretty well. While reading it, I feel obliged more than usual to make a read post and send a webmention to it…
It’s interesting to see some of the great strides forward Drupal has been making in the IndieWeb arena since November .
Where to publish something has becoming a difficult decision for a lot of businesses. You read so many stories about using various channels to distribute content and grow traffic, it’s hard to know what does and doesn’t work. Medium, in particular, has become a major player in the world of startup content, but is it really that great?
The numbers just didn’t make sense. Yes, I could put more into Medium and try to build up readership even more. The guys at Basecamp regularly get 250k+ views on their content. But doing that helps Medium the most in the long run. They’ve been fumbling left and right trying to figure out how to make Medium sustainable, and I’m just not convinced they’ll always do what’s best for us and our business.
Now I didn’t want to throw out distribution on Medium entirely. There can definitely be some benefit to syndicating content there. It’s essentially another distribution channel to expose people to our content.
So we needed a game plan on how we could still make use of Medium as a distribution channel without cannibalizing our own readership or SEO work.
This is 100% on the mark, you should definitely own your own content. Syndicating it out to Medium is a great idea, particularly when you can get a rel=”canonical” tag for the original on Medium. Incidentally Medium has their own WordPress plugin that will allow you to quickly and easily syndicate your site’s content directly to Medium without needing to separately import it. It’s also available on a per post basis.
But, even with this, you’re only getting 50% of the value of having your own website because you’ve only got one way communication out. Next you’ll need communication back in. What if I said you could get a lot of the comments, likes, and interactions from those other silos back into your website too? This way the conversations others are having relating to your content also come back to your site and enrich it there? What if you could own all (or almost all) of the conversation around your content?
Think about it, what if there was an @mention functionality that worked from website to website instead of being stuck inside Twitter, Facebook, Google+, Instagram, Flickr etc.? Interestingly, it exists! And you can set it up for free with last year’s new W3C Webmention protocol which already has WordPress plugins ready to go. Roughly for WordPress you’ll need the Webmentions plugin, the Semantic Linkbacks plugin, the Syndication Links plugin, a few strategically placed rel=”me” tags on your site, (maybe some tweaks to your microformats on your theme), and a free Brid.gy account. Details for setting it up can be found on the WordPress pages of the indieweb.org website. I suspect if you’re strong enough to have figured out the tech for your article, you could probably have it up and running in under an hour or so. Then instead of feeding content from your blog to the black hole of social media, you could have actual two-way communication with many social silos! Now you won’t need to pay as much attention to those other sites as you can use your WordPress site as an “app” to interact with them instead.
I’m happy to help walk you through it if you’re interested and need help. My own personal site has some documentation of some of the above as well as examples of how it works.
In some sense, hopefully this post on my site will be an interesting exemplar. I own it and “loaned” or syndicated copies to Disqus and Twitter. Comments, likes and reposts you make to the Twitter copy will automatically be ported back here after the fact using Brid.gy. (Sadly, Disqus isn’t supported–yet.)
BookmarkedMicroblogging by Paul Robert Lloyd(paulrobertlloyd.com)
I stopped using Facebook because I didn’t trust the people behind Facebook. I had grown weary of the sly and underhand tactics used to grow their network and was unwilling to remain part of it. But if I’m honest, I couldn’t trust myself either. Visiting Facebook would elicit behaviour you could only describe as stalking; trawling through the feeds of my friends, seeking out people I vaguely knew. I had better things to do with my time.
Almost a decade later, I’m having similar thoughts about Twitter.
sub·men·tion (noun informal): 1. A post about someone or something on a personal website where one neglects (accidentally or on purpose) to either send a webmention and/or syndicate a copy out to an appropriate social silo. 2. Such a post which explicitly has the experimental microformat rel=”nomention” which prevents webmention code from triggering for the attached URL. 3. Any technologically evolved form of apophasis (Greek ἀπόφασις from ἀπόφημι apophemi, “to say no”) which sends no notifications using standard Internet or other digital protocols.
Early 21st century: a blend or portmanteau of subliminal and webmention.
Your post reminded me of a challenge I see every time Couros posts about students having those three aspects of a digital identity: no matter how much we as educators may encourage this, ultimately it is up to the students to make it part of their lives. I have been blogging with my students for some years now, and when it is not a class requirement, they stop posting. I think part of this digital presence that we want students to establish – the \”residency,\” as Robert Schuetz said in the recent blog post that led me here (http://www.rtschuetz.net/2016/02/mapping-our-pangea.html) – is not always happening where we suggest. I know my students have an online presence – but it\’s on Instagram and Snapchat, not the blogsphere. Perhaps instead of dragging kids on vacation to where we think they should set up shop, we need to start following them to their preferred residences and help them turn those into sturdy, worthy places from which to venture out into the world.
This is certainly an intriguing way to look at it, but there’s another way to frame it as well. Students are on sites like Instagram and Snapchat because they’re connecting with their friends there. I doubt many (any?) are using those platforms for learning or engagement purposes, so attempting to engage with them there may not translate for educators. It may have the colloquial effect of “I’m on Snapchat because my parents aren’t; if my parents join I’m either going to block them or move to another platform they’re not on.” Something similar to this was seen in cultural teen use of Facebook as parents swarmed to the platform over the past decade. To slightly reframe it, how many high school teachers in the past have seen students in the hallways between classes socializing and thought to themselves, “I should go out and teach in the hallway, because that’s where the students are and they seem alert?”
It might also shed some light on our perspectives to look at what happens at the end of a quarter or semester in most colleges. I always remember book sellback time and a large proportion of my friends and colleagues rushed to the bookstore to sell their textbooks back. (I’ll stipulate the book market has changed drastically in the past two decades since I was in University, but I think the cultural effect is still roughly equivalent.) As a bibliophile I could never bring myself to sell books back because I felt the books were a significant part of what I learned and I always kept them in my personal collection to refer back to later. Some friends I knew would keep occasional textbooks for their particular area of concentration knowing that they might refer back to them in later parts of their study. But generalizing to the whole, most students dumped their notes, notebooks, and even textbooks that they felt no longer had value to them. I highly suspect that something similar is happening to students who are “forced” to keep online presences for coursework. They look at it as a temporary online notebook which is disposable when the class is over and probably even more so if it’s a course they didn’t feel will greatly impact their future coursework.
I personally find a huge amount of value in using my personal website as an ongoing commonplace book and refer back to it regularly as I collect more information and reshape my thoughts and perspectives on what I’ve read and learned over the years. Importantly, I have a lot of content that isn’t shared publicly on it as well. For me it’s become a daily tool for thinking and collecting as well as for searching. I suspect that this is also how Aaron is using his site as well. My use of it has also reached a fever pitch with my discovery of IndieWeb philosophies and technologies which greatly modify and extend how I’m now able to use my site compared to the thousands of others. I can do almost all of the things I could do on Facebook, Twitter, etc. including interacting with them directly and this makes it hugely more valuable to me.
The other difference is that I use my personal site for almost everything including a wide variety of topics I’m working on. Most students are introduced to having (read: forced to maintain) a site for a single class. This means they can throw it all overboard once that single class is over. What happens if or when they’re induced to use such a thing in all of their classes? Perhaps this may be when the proverbial quarter drops? Eventually by using such a tool(s) they’ll figure out a way to make it actively add the value they’re seeking. This kernel may be part of the value of having a site as a living portfolio upon graduation.
Another issue I often see, because I follow the space, is that many educational technologists see some value in these systems, but more often than not, they’re not self-dogfooding them the same way they expect their students to. While there are a few shining examples, generally many teachers and professors aren’t using their personal sites as personal learning networks, communications platforms, or even as social networks. Why should students be making the leap if their mentors and teachers aren’t? I can only name a small handful of active academic researchers who are heavily active in writing and very effectively sharing material online (and who aren’t directly in the edtech space). Many of them are succeeding in spite of the poor quality of their tools. Rarely does a day go by that I don’t think about one or more interesting thought leaders who I wish had even a modicum of online space much less a website that goes beyond the basic functionality of a broken business card. I’ve even offered to build for free some incredibly rich functional websites for researchers I’d love to follow more closely, but they just don’t see the value themselves.
I won’t presume to speak for Aaron, but he’s certainly become part of my PLN in part because he posts such a rich panoply of content on a topic in which I’m interested, but also in larger part because his website supports webmentions which allows us a much easier and richer method of communicating back and forth on nearly opposite sides of the Earth. I suspect that I may be one of the very few who extracts even a fraction of the true value of what he publishes through a panoply of means. I might liken it to the value of a highly hand-crafted trade journal from a decade or more ago as he’s actively following, reading, and interacting with a variety of people in a space in which I’m very interested. I find I don’t have to work nearly as hard at it all because he’s actively filtering through and uncovering the best of the best already. Who is the equivalent beacon for our students? Where are those people?
So the real question is how can we help direct students to similar types of resources for topics they’re personally interested in discovering more about? It may not be in their introduction to poetry class that they feel like it’s a pain doing daily posts about on a blog in which they’re not invested. (In fact it sounds to me just like the the online equivalent of a student being forced to write a 500 word essay in their lined composition book from the 1950’s.) But it’ll be on some topic, somewhere, and this is where the spark meets the fuel and the oxygen. But the missing part of the equation is often a panoply of missing technological features that impact the culture of learning. I personally think the webmention protocol is a major linkage that could help ease some of the burden, but then there’s also issues like identity, privacy, and all the other cultural baggage that needs to make the jump to online as seamlessly (or not) as it happens in the real world.
…perhaps we’re all looking for the online equivalent of being able to meld something like Maslow’s Hierarchy of Needs with Bloom’s Taxonomy?
I’ll have to expand upon it later, but perhaps we’re all looking for the online equivalent of being able to meld something like Maslow’s Hierarchy of Needs with Bloom’s Taxonomy? It’s certainly a major simplification, but it feels like the current state of the art is allowing us to put the lower levels of Bloom’s Taxonomy in an online setting (and we’re not even able to sell that part well to students), but we’re missing both its upper echelons as well as almost all of Maslow’s piece of the picture.
With all this said, I’ll leave you all with a stunningly beautiful example of synthesis and creation from a Ph.D. student in mathematics I came across the other day on Instagram and the associated version she wrote about on her personal website. How could we bottle this to have our students analyzing, synthesizing, and then creating this way?
Without all the jargon, we’re actually using our own websites to carry on a back and forth threaded conversation in a way that completely makes sense.
In fact, other than that our conversation is way over the 280 character limit imposed by Twitter, the interaction was as easy and simple from a UI perspective as it it is on Twitter or even Facebook. Hallelujah!
This is how the internet was meant to work!
A hearty thanks to those who’ve made this possible! It portends a sea-change in how social media works.
Given Livefyre‘s origin as a commenting platform along the lines of Disqus and Intense Debate, this photo of their current offerings from Adobe makes it sound a lot like what the Webmention Open Spec does for my WordPress-based website.
We are proud to bring you the first alpha release of Linkback, an interesting suite of modules which can help integrate your website with the wider internet. Linkback provides the backend functionality to save both outgoing and incoming pings and webmentions involving remote sites.
Drupal 8, now (along with platforms like WithKnown, Perch, WordPress, Craft, Kirby, ProcessWire, Elgg, and Django) has Webmention support. Congratulations to Dan Feidt (aka HongPong) and everyone involved!
This means that more websites can communicate directly with each other on the open and decentralized web. (Wouldn’t you like to “@mention” someone from your own website to theirs?) It’s a rapidly growing reality on the internet.
Aaron, there are a couple of different ways to set up IndieWeb replies in WordPress (or even on other platforms like Known).
Known has a simple reply mechanism, but isn’t always good at including the original context for the reply making the individual post as stand-alone as one might like. Known includes the URL of the post it’s a reply to, but that’s about it. It’s contingent upon the user reading the reply clicking on the link to the original post to put the two together. This is pretty simple and easy when using it to reply to posts on Twitter, but isn’t always as flexible in other contexts.
One of the added values of replies in WordPress is that there’s a bit more flexibility for including a reply context to the post. You’ll note that this reply has some context at the top indicating exactly to what it is I’m replying.
The first way to generically set up a reply on almost any platform that supports sending Webmentions is to write your reply and and include some simple semantic HTML along with the URL of the post you’re replying to that includes a class “u-in-reply-to” within the anchor tag like so: <div class="h-entry">
<a class="u-in-reply-to" href="http://example.com/note123">The post you're replying to</a>
<div class="p-name p-content"> Good point! Now what is the next thing we should do?</div>
If you’re using WordPress, you can do this manually in the traditional content block, though you likely won’t need the div with h-entry as your theme more likely than not already includes it.
More automated replies
If you’d like a quicker method for WordPress, you can use a few simple plugins to get replies working. Generally I recommend David Shanske’s excellent and robust Post Kinds Plugin which handles both reply contexts as well as all of the required markup indicated in the manual example above. Naturally, you’ll also want to have the Webmention Plugin for WordPress installed as well so that the reply is sent via Webmention to the original post so that it can display your reply (if it chooses to–many people moderate their replies, while others simply collect them but don’t display them.)
A few weeks ago I wrote about configuring and using the Post Kinds Plugin in great detail. You should be able to follow the example there, but just choose the “reply” kind instead of the “read” example I’ve used. In the end, it will look a lot like this particular reply you’re reading right now, though in this case, I’ve manually included your original tweet in the body of my reply. A more native Post Kinds generated reply to a tweet can be seen at this example: http://boffosocko.com/2016/08/17/why-norbert-weiner/
Naturally, your next question may be how to POSSE your replies to other services like Twitter. For that, there’s a handful of methods/plugins, though often I suggest doing things manually a few times to familiarize yourself with the process of what’s happening. Then you can experiment around with one or more of the methods/plugins. In general the easier the plugin is to set up (example: JetPack), the less control you have over how it looks while the more complicated it is (example: SNAP), the more control you have over how the output looks.
If you’d like, feel free to experiment sending replies back to this post while you try things out. If you need additional help, do join one or more of us in the IndieWeb chat.
A WordPress plugin that allows you to easily create a huge variety of social media post types to own your social media life online.
Within the broader social media world there are a huge variety of types of posts. These range from common articles to status updates to likes or favorites to more varied post types like photos, bookmarks, RSVPs, checkins, videos, reviews, jams, reads, audio, exercise, food, recipes, and even an exotic and rare chicken post type. While this list barely scratches the surface, the IndieWeb wiki has an almost exhaustive list along with examples.
Many social platforms sub-specialize in only one specific post type while others provide support for multiple types. Here are some common examples:
Twitter: status updates
Instagram: photos, videos
Facebook: status updates, articles, photos, videos, links, events, life events, checkins, emotions
LinkedIn: status updates, articles, résumés
Tumblr: text, photo, quote, link, chat, audio and video
Last.fm: listens (aka scrobbles)
Wouldn’t it be better to have a single personal website where you could post all these types of content easily and quickly?!
For a few years now, I’ve been posting these and many other types of posts on my personal website. When it’s appropriate I crosspost many of them to the social media silos that support these types so that friends, family, and colleagues can subscribe to them in the way that’s easiest for them.
Post Kinds Plugin
The Post Kinds Plugin for WordPress attempts to make it much easier to create customized displays for and format each of these types of posts (and many more). It leverages the flexibility and power of WordPress to be your single social media hub while, along with other IndieWeb friendly plugins, still allowing you to interact with other social networks.
Post Kinds Plugin not only indicates in the metadata what each post type is, but provides each post with some contextualization as well as the appropriate microformats classes to make it easier for other sites or parsers to interpret these posts. In short it helps to make status updates look like status updates; favorites appear like favorites; (schnozzberrys look like schnozzberrys); and RSVPs look like RSVPs in keeping with common user interfaces on many social platforms. (And in case you didn’t know, you can now post an RSVP on your own website and send a notification to posts elsewhere on the web of your intention!)
Post Kinds Plugin is different from WordPress’s Post Formats functionality
This sounds a little bit like the WordPress theme specific functionality of Post Formats, doesn’t it? Yes and resoundingly no!
Post Formats was a WordPress feature introduced in version 3.1, ostensibly to compete with other social platforms like Tumblr which offers the explicit post types of text, photo, quote, link, chat, audio and video.
Within WordPress, post formats are available for users to choose from if the theme enables support for them. And typically if they do support them they often provide specific display outputs and CSS styling that are controlled by the theme, often to make them look like what users have come to expect these post types to look like on other social media platforms. As an example, a “Status” post would typically display a short update which doesn’t include a title. Each theme that supports post formats chooses which ones they support, how to display them, and they can vary quite a bit from one theme to the next.
Below is the list of the nine supported formats with brief descriptions of their purpose taken from the WordPress codex:
aside – Typically styled without a title. Similar to a Facebook note update.
gallery – A gallery of images. Post will likely contain a gallery shortcode and will have image attachments.
link – A link to another site. Themes may wish to use the first <a href=” “> tag in the post content as the external link for that post. An alternative approach could be if the post consists only of a URL, then that will be the URL and the title (post_title) will be the name attached to the anchor for it.
image – A single image. The first <img /> tag in the post could be considered the image. Alternatively, if the post consists only of a URL, that will be the image URL and the title of the post (post_title) will be the title attribute for the image.
quote – A quotation. Probably will contain a blockquote holding the quote content. Alternatively, the quote may be just the content, with the source/author being the title.
status – A short status update, similar to a Twitter status update.
video – A single video or video playlist. The first <video width=”300″ height=”150″> tag or object/embed in the post content could be considered the video. Alternatively, if the post consists only of a URL, that will be the video URL. May also contain the video as an attachment to the post, if video support is enabled on the blog (like via a plugin).
audio – An audio file or playlist. Could be used for Podcasting.
chat – A chat transcript
There is anecdotal evidence that the WordPress Post Format functionality is slowly falling out of favor and there hasn’t been much, if any, change in how the feature works in the past several years.
The Post Kinds Plugin in many respects picks up where Post Formats left off, extends them significantly, and also builds a stronger platform for more modern website to website interactions.
The Post Kinds Plugin out of the box generally does an excellent job of styling with some generic CSS to make these various post types look and behave as one expects without any changes or modifications to one’s theme. However, designers are more than welcome to either customize their CSS to their hearts’ content, or, if they prefer, they can manually code specific template views to override the plugin’s original views within their theme or child theme.
Because, in part, the Post Kinds Plugin is designed for use with IndieWeb philosophies in mind, it has built in microformats support. What are microformats? They’re simple semantic classes added to the HTML of one’s site that allow parsers or other programs to read the data on your posts and pages to provide extended or increased functionality. WordPress’s core functionality already includes some microformats version 1 support; Post Kinds Plugin extends this quite a bit and uses the more modern version 2 specifications. Because Post Kinds takes care of these additional microformats, some older themes will have a leg up in the IndieWeb space despite having either limited or no theme support.
As an example using the reply post kind, the context from the site for which the particular post is actually a reply to is wrapped with the semantic class “p-in-reply-to”. As an example of the extended functionality provided by microformats, if one is using the Webmentions Plugin to send a webmention to the post that is being replied to, that remote site can parse the reply and display it properly as a reply in their comments section. (For WordPress sites receiving these webmentions, they can utilize the parser built into the Semantic Linkbacks Plugin.)
Similarly, bookmarklets, feed readers, or other programs could utilize these microformats and the data on your page to create customized views and displays.
Plugin Installation and Configuration
Installation of the plugin is relatively straightforward. From the Plugin tab in the WordPress admin interface, one can click the Add New button at the top of the page and either search for the plugin within the repository and install and activate it, or they can use the Upload Plugin button and install it from a prior download from either the WordPress repository or from the GitHub repository.
Configuration can be done from the Settings tab within the WordPress admin interface or, if the IndieWeb Plugin is installed, the settings can be found under IndieWeb » Post Kinds tabs in the admin interface.
Within the settings you can choose the post kinds you wish to enable on a particular site–not all sites will necessarily need or even want all types. I recommend only enabling the specific kinds you will actively be using; you can always come back and add additional types in the future. Some types may be enabled by other specific plugins that work in conjunction with Post Kinds Plugin.
Not having a post kind enabled will not disable the functionality on existing posts, it only hides the selection in adding new posts. This way if you enable favorites as a type and only use it a few times before deciding to disable it, the old posts will still exist and display properly.
You can also enable a Default Kind for New Posts. Most people will likely choose Article which is the default, but if your site is primarily used like a microblog for short status updates, then obviously Note may be your best default. Are you building a linkblog? Then you could enable the Bookmark kind.
How to use Post Kinds in practice
So how does this all actually work for creating posts?
Let’s start with a simple example. Let’s say I read a lot online and I’d like to have a linkblog of all of the articles I read. Let’s say I’m reading the article Lyme Disease’s Worst Enemy? It Might Be Foxesin the New York Times. I’d like to start out by creating a read post to indicate to those following me that I’ve read this particular article.
While I could do it manually, typically I’ll use a custom bookmarklet (more on how to do this shortly), which I click on in my browser bar as I read the article. The bookmarklet will create a new WordPress post and automatically fill in the URL of the article into the “Post Properties” metabox created by the Post Kinds Plugin in the admin UI of my WordPress site.
Then, I will click on the blue Retrieve button (pictured above) just under the post’s URL. The Post Kinds Plugin will parse the New York Times article page for either explicit metadata or Open Graph data to fill in some context about the article I’m reading in the Post Properties meta box. The main tab will autofill with the Name/Title of the article, a Summary/Quote of the article, and Tags if available. Similarly the other tabs in the Post Properties meta box including Details, Author, and Other will fill in with any available metadata about the Lyme disease post I’m reading.
In this particular example, the Times didn’t do a good job on the author data, so I’ll go to that tab and manually cut/paste the author’s name into the Author/Artist Name field, their URL into the Author/Artist URL field, and (optionally) the URL for their photo image as well. If other fields are improperly filled out or you would like to change them, one can manually adjust them if necessary. Not all kinds need (or show) all theses metadata fields when they’re ultimately published.
The retrieve button will also attempt to fill in an appropriate post Title into the posts’ field for that, but it can be modified manually if necessary. On many post kinds, though one may fill in an explicit (traditional WordPress post) title, it may not display on the final post because an explicit title isn’t really needed and the Post Kinds Plugin won’t display it. The note kind is a particular example of this behaviour.
Now that the contextual part of the post I’m reading is handled, I can, if I choose, add any notes, quotes, thoughts, or other personal data about what I’ve read into the main text box for the particular post.
The bookmarklet should have automatically set the post kind selector in the Kind metabox to Read and, if available, the older WordPress post format to link. (These can be changed or overridden manually if necessary.) Post Kinds does its best to properly and appropriately map Post Kinds to Post Formats, but the relationship isn’t always necessarily one-to-one and there are obviously many more kinds available than there are post formats.
Finally, the article can be published (unless you want to add any additional metadata to your post for other plugins or needs.)
Now I can also go to the URL of my personal site at http://example.com/kind/read/ where I can find an archive of this and all the posts I’ve read in the past.
Other post kinds work relatively similarly, though some may take advantage of other appropriate metadata fields in the Post Property meta box. (For example RSVPs use the RSVP dropdown field within the Other tab in the Post Property box.)
Custom feeds for Post Kinds
For sites adding lots of different post kinds all at once, the extra possible “noise” in one’s RSS feeds may have the potential to turn a site’s subscriber’s off. Fortunately the plugin also has custom RSS feeds for each of the particular post kinds which follows a particular format. As an example, the RSS feed for all the posts marked as “Note”, could be found at either the URL http://www.example.com/kind/note/feed
or http://www.example.com/feed/?kind=note (if one doesn’t have pretty permalinks enabled). Other feeds can be obtained by replacing “note” with the base names of the other kinds (reply, article, etc.).
Post Kinds Plugin also handles the display of archives for individual post kinds. To view all the posts marked as notes, for example, one could visit the URL http://www.YOURSITE.COM/kind/note/. Simply replace YOURSITE.COM with your particular site name and the particular post kind name to access the others. In some areas of the social media world, this particular archive display of notes might be considered a personal Twitter-like microblog.
For Post Kinds Plugin users who like the simplicity and ease of use of bookmarklets, one can add ?kindurl=URL to their post editor URL and it will automatically fill this into the URL box in post properties. Adding ?&kind=like to the post editor URL will automatically set the kind.
As a full example, the URL pattern https://www.example.com/wp-admin/post-new.php?kindurl=URL&kind=like will automatically create a new post, set the post kind as like and auto-import the permalink URL for the page into the URL field of the Post Properties meta box.
The following code could also be used as a template to create a full set of browser bookmarklets. (Keep in mind the base URL example.com will need to be changed to the base URL of your personal site for it to work properly. One would also change the word bookmark in the code to any of the other types.)
Now that we’ve seen a few examples and gotten things set up, let’s take a brief look at all of the Post Kinds that are available. To make things a bit easier, we’ll break them up into four groups based on some shared qualities.
The Non-Response Kinds
These kinds have an analog in WordPress’s original post formats. Adding context to one of these may make it a passive kind.
Article – traditional long form content – a post with an explicit post title
Note – short content or status update – a post with just plain content and usually without an explicit post title
Photo – a post with an embedded image as its primary focus. This uses either the featured image or attached images depending on the theme.
Video – a post with an embedded video as its primary focus
Audio – a post with an embedded sound file as its primary focus
The Response Kinds
Response kinds differ from the non-response in that they are usually intended to be interactions with other external sites. For the best experience and improved functionality with these post kinds, it is recommended, but not required, that one have the Webmentions and the Semantic Linkbacks Plugins installed and activated. Doing so will send notifications of the replies and other interactions to those external sites which often display them. (These help your site work just like replies and mentions do on many other social media platforms, they just do so in distributed ways, so that neither you nor your friends necessarily need to be on the same platform or content management system to communicate.)
Reply – used for replying to someone else’s post
Repost – a complete repost of someone else’s content
Like – compliments to the original post/poster
Favorite – content which is special to the favoriter
Bookmark – this is basically sharing/storing a link/bookmark.
Quote – quoted content
RSVP – a specific type of reply regarding attendance of an event
The Passive Kinds
To “Scrobble” a song is to make a related post on your website when listening to it. This is the most well-known example of a passive kind of post. These kinds are formed by having content in the context box on one of these types of posts.
Listen – scrobble – listening to an audio post
Jam – Indicates a specific personally meaningful song
Watch – watching a video
Play – playing a game
Read – reading a book, magazine, or other online material
The following kinds are reserved for future use within the plugin but will not currently show up in the interface unless enabled directly within the code. In some cases, these kinds don’t have the appropriate metadata fields within the plugin to make them user friendly without significant work.
Wish – a post indicating a desire/wish. The archive of all of these posts would be a wishlist, such as a wedding, birthday, or gift registry.
Weather – a weather post would be about current weather conditions
Exercise – represents some form of physical activity
Trip – represents a trip or journey and would require location awareness
Itinerary – refers to scheduled transit, plane, train, etc. and does not generally require location awareness
Check-In – identifying you are at a place. This would use the extended WordPress Geodata. It will require the Simple Location Plugin or something equivalent to add location awareness to posts. Some people are beginning to use this with the OwnYourSwarm application, which may require further configuration of your site to work properly.
Tag – allows you to tag a post as being of a specific tag, or person tagging.
Eat – for recording what you eat, perhaps for a food diary
Drink – similar to Eat, but for beverages
Follow – a post indicating you are now following someone’s activities (online)
Mood – feelings or emotions you’re having at the time of posting
Recipe – ingredients and directions for preparing food or other items
Issue – an article post that is typically a reply to some source code, though potentially anything at a source control repository
Event – a post kind that in addition to a post name (event title) has a start datetime, (likely an end datetime), and a location.
If you’re reading this on my personal website, you can click on and view a variety of these post kinds described above to give you an idea of what they look like (and how they function with respect to Webmentions and other IndieWeb functionalities).
I’ve tried to cover as much of the basics of the plugin and provide some examples and screenshots to make things easier, but as always, there are ways to do additional custom configuration under the hood. I’m sure there are also off-label uses of the plugin to get it to do things the creator didn’t intend.
For additional details, one is certainly encouraged to skim through the code. If you have specific questions or problems, you can usually find the developer of the plugin and many of its users in the IndieWeb chat (web chat, IRC, Slack, etc.) for possible real-time help or support, or you can post questions or issues at the GitHub repo for the project.
Special thanks to David Shanske for creating and doing a stellar job of maintaining the Post Kinds Plugin. Additional thanks to those in the IndieWeb community who continue to refine and revise the principles and methods which make it constantly easier for people to better own and control their social lives online by owning their own websites and data.