A Metacrap Problem
It’s metacrap–I know, I know–but I’ve been thinking about easy ways to use Open Graph Protocol meta data to add contextual Twitter cards to some of my content when syndicating posts to Twitter. My goal is to leverage the speed and ease-of-use of Micropub clients while doing as little as possible manually, but achieving as much parity between posts on multiple sites.
I’m particularly keen to do this to syndicate/share more of the articles I read and post about on my site without adding additional manual work on my own part.
Outline of Some Resources
The Post Kinds plugin for WordPress parses URLs for me and pulls in data to create reply contexts for a variety of posts like bookmarks, reads, watches, listens, etc. Since Post Kinds doesn’t display featured images (yet), I’ve also been using the External Featured Image plugin to display the featured images from the original to add to the reply context of my posts as well.
In addition to all these I’ve been using the All in One SEO plugin to easily add an SEO layer to posts without having to do much thinking about it. AIOSEO recently upgraded their UI and features in the last year, and yesterday I upgraded to the newest v4.0+. One of the new features it’s got is the ability to add default fields or pull in pre-existing custom fields to output OGP meta data.
Start of a Solution
So I got the idea that since Post Kinds and External Featured Image plugins are pulling in and displaying the sort of data I’d like to show in Twitter cards, I figured why not use them? While metacrap is a DRY violation, the fact that it’s automated for me and is based on data I’m actually showing visually on my website makes it feel much less dirty. It also has the benefit that it helps make some of my syndicated content look and feel on Twitter, more like it does on my website. This is also a problem since Twitter hampers how much data I can syndicate in a single post.
I’ve still got some issues about how to deal with the Post Kinds data, but after a bit of digging around, I discovered the image URL for External Featured Image plugin is hiding in the
_dcms_eufi_img field. So I can make the default Twitter settings in AIOSEO pull the external image by setting
Default Post Image Source to
Image from Custom Field and set the
Post Custom Field Name to
Since a lot of my posts are reads, bookmarks, etc., this works well, but I can easily override the settings for articles or other custom posts which I make less frequently.
Hopefully I can figure out the settings for Post Kinds to get the rest of the default fields to map across. I’m happy to hear ideas on what field names I’d need to use to get the Post Kinds
Summary/Quote fields to map over for the
og:description respectively. Ideally I can manage to get it done without needing to get a subscription to the pro version of AIOSEO which also has support for custom taxonomies which is how Post Kinds works.
Since my theme has relatively solid microformats support, and I have plugin infrastructure to allow easy syndication from my website to Twitter through micropub clients, this last bit for creating Twitter reply contexts helps close some of the loop for me in my syndication workflow while keeping as much context across platforms.
Here’s a visual example of a native post on my site and the corresponding syndicated copy on Twitter. There are some differences, mostly because I don’t have as much control of the appearance on Twitter as I do on my own site, but they’re about as close as I can get them with minimal work.
Similar to something like webhooks, these endpoints can be used to send a wealth of data from one place to another. Right now I can see a great use case for going from almost any target that’s currently supported to a variety of endpoints that are currently built for websites or blogging use cases.
Leveraging Micropub may also make it easier to target a simpler common “surface” instead of dovetailing with hundreds of individual CMS platforms and their APIs.
I’ve been able to use Micropub with Webhooks to get around the current IFTTT limitations, but there is a lot more you might be able to do with it as a company while making it easier for customers as well.
Nine: Micropub for collecting data
The Micropub plugin helps me by creating an endpoint on my site for quickly and easily capturing lots of data. IFTTT, Zapier, Integromat, n8n can all help to aggregate this data too.
Here are some more in-depth details about how I use some of these tools and recipes/walk-throughs so you can too: Using IFTTT to syndicate (PESOS) content from social services to WordPress using Micropub.
One can use a zero-width space (using something like
​in their HTML) between the @ and a twitter user name on the original post and the syndicated copy will not have the traditional @mention link or notification functionality.
Here’s an example
- Original post: https://boffosocko.com/2020/09/17/55777062/
- Syndicated copy: https://twitter.com/ChrisAldrich/status/1306748549233815553
This reply can also serve as a test for the functionality within Github where I’ll “tag” both @kylewm and @snarfed, but if it works, Ryan shouldn’t be auto-linked or notified.
Distributor is a WordPress plugin that makes it easy to syndicate and reuse content across your websites — whether in a single multisite or across the web.
This month, start engaging your site visitors with two exciting new tools! The Newsletter Sign-up form and Donations Block will help you grow your subscriber and supporter base. Jetpack 8.9 is also proud to support v2.0 of the official AMP plugin for WordPress. Convert visitors into subscribers wit...
There are lots of ways to syndicate content, some dependent on which platform(s) you’re using and where you’re syndicating to/from. Your best bet is to swing by the IndieWeb Dev chat and ask that very question.
Theorem: Syndication is easy.
Proof: “It’s easy to show” (I’m waving my hands here) that there are a lot of assumptions and baggage that go with the word “easiest.” ∎
I’ve personally found there’s generally an inverse relationship between ease/simplicity of syndication and control over exact display for most platforms. You could go low-fi and pipe your feed into something like IFTTT/Zapier for cross-posting all the way up to customized integration with available APIs for each platform. Many take a middle-of-the-road approach that I notice Jeremy recommended as I’m writing this.
The cross-posting wiki page will give you some useful terminology and definitions which may help you decide on how to syndicate what/where. Based on the context of the URL in your Twitter profile, the IndieWeb wiki pages for static site generator and syndication will give you some ideas and options to think about and explore.
Some of the pages about specific static site generators will give you some code and ideas for how to implement syndication. For example Max Böck has an article Indieweb pt1: Syndicating Content to Twitter, which is Eleventy and Twitter specific, but which could likely be modified for your purposes. SSGs may have some specific peculiarities for syndication that I’m not as familiar with coming from the more dynamic side of the fence.
Since you indicate a language preference for your current site, there’s also a page for Flask with a few users noted there. You might ask Fluffy (usually around in chat) for some advice as I know she syndicates to a few platforms and may have some ideas or even tools/code to share from the Flask perspective.
(p.s.: Great Twitter handle!)
I’m waiting for people to start documenting examples of owning their knitting on their websites and syndicating to/from Ravelry. #IndieWebKnittingChallenge
read-statusvalues of “to-read”, “reading”, and “finished”. I’ve managed to tweak my with Goodreads.com to also include these experimental pieces using the following additional snippets of code appended to the “Body” fields I’ve described before:
I’ve added one of the three snippets to the appropriate IFTTT.com recipes for Goodreads feeds to create the appropriate output. Here’s the first post I’ve made using the new recipe for bookmarking a book I’d like to read: https://boffosocko.com/2020/02/15/meditations-marcus-aurelius/.
Previously I’ve been using simple notes to create read posts for books and just adding a “read” category to give me more control over the data in the posts. (I only used read posts previously for online articles.) Now that I’ve got the ability to provide some better differentiation for my progress, I think I’ll switch to using read posts for all my reading (books and articles).
Incidentally following IndieBookClub.biz and Indigenous for Android which added support for these earlier today, my method may be the third to use these microformats in the wild. Thanks to gRegor Morrill, Kristof De Jaeger, David Shanske, Ryan Barrett, and Charlotte Allen for their prior work, experimentation, code, and examples for allowing me to get this working on my website.
In addition to all of this, since you’re a coder, you might also appreciate some of the more advanced feed discovery code David has written into the Yarns Microsub Server for WordPress (code on Github). You may be able to build some of the discovery bits into some of your syndication hubs/planets in the future.
Of course, like FeedWordPress and the relatively similar PressForward plugin, you might also be able to bend Yarns into an aggregator in similar ways.