An Index for My Digital Commonplace Book

In reading about the history of commonplace books, I figured it’d be nice to have a full listing of all the categories and tags on my website for public reference. So I’ve now added an Index page.

I must admit that with a tiny amount of research and set up, I’ve now got something that even John Locke could be jealous of.

For my future self or others interested, I’m using Multi-column Tag Map which has a variety of short codes for implementing various forms of output. Sadly it wasn’t tagged with the word index, so it took some time to find it.

I’ve always had my own administrative interface for this data as well as search and even programmatic tag completion which makes writing and posting easier. However since a lot of what I do is in the public, perhaps it will be useful for readers to have access to the same full list instead of the abbreviated ones that appear as tag clouds or in various sidebars on the site?

Currently I’ve got over 9,000 different tags on the site. Perhaps displaying them publicly will help motivate me to curate and manage them a bit better. I already see a handful of repeated versions based on spelling, spacing, or typos that could be cleaned up. Let’s go crazy!

Couple of quick updates for my website, potentially for Homebrew Website Club tonight.

I’ve updated my footer so the copyright dates include 2021. I’ve also updated the Webmention button so that it now points at my standalone endpoint for those who may not see or want to use the input box on individual posts. Finally I modified the text that appears on both the standalone endpoint as well as the individual post boxes on each post so that the same text works to properly describe both cases.

I also spent some time trying to fix my fragmention/fragmentioner, but I’m not quite there yet.

My poor little website passed 23,000 comments/replies/reactions yesterday. This is in tremendous part due to webmentions and the ability to collect the conversation about my content across social spaces.

I’m wondering when comments will pass the number of posts (currently 27,648)?

It’s annoyed me a bit since I did it, so I’ve finally gotten around to changing my username on micro.blog from @c to @chrisaldrich. This brings my identity there in line with much of the rest of my digital accounts which have the same username/handle/screen name.

I still have control of the separate @c account, but don’t plan on posting there actively. Maybe I’ll use it with another site?

Automating syndication of reply contexts in Twitter Cards using OGP metacrap and plugins in WordPress

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 _dcms_eufi_img

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 Name and Summary/Quote fields to map over for the og:title and 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.

Example

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.

screen capture of a tweet with my thought at the top and a Twitter card underneath it including the reply context of the article I'm responding to

screencapture of a read post on my website for a Slate article with a reply context at the top and my response to it just below

I wasn’t seeing it before, but after upgrading to All in One SEO to 4.0.9 from 3.7ish, the Twitter plugin was throwing in some Twitter card metacrap that was causing a conflict. I’ve turned off the Twitter plugin which shouldn’t affect much since I wasn’t really using much of it’s additional functionality.

Hooray for one less plugin in the stack!

Crediting your own website when syndicating to Mastodon with WordPress plugins

I’ve been tinkering around with methods to automatically syndicate (POSSE) content from my personal website to Mastodon. I’ve been working at making a custom plugin which is far from finished. But a test post I made the other day, caught a few people’s attention[1][2]

I was trying to syndicate from my website so that the post on Mastodon would credit my website for the post and link back to my homepage as the application that made the post. You’ll notice at the bottom of the post there’s the post date and a globe icon, which indicates the post is public, followed by my website name ‘BoffoSocko.com’ and details about replies, reposts, and favorites.

screen capture of a Mastodon post which gives credit to Boffosocko.com at the bottom of the post.

I assuredly won’t release a public plugin for WordPress that does this. But since some have asked how I did it, I thought I’d share some of the internals of a few WordPress plugins that one can quickly modify to achieve the same thing.

That I can currently see, there are three plugins in the repository that will allow one to syndicate content to a variety of Mastodon instances. They are Mastodon Autopost, Mastodon Auto Share, and Share on Mastodon. The first two are closely related and essentially replicate the same codebase.

Similar to using Twitter’s API to crosspost, Mastodon is looking for two bits of information when an application is registered: a client name and a website URL. 

Mastodon Autopost and Mastodon Auto Share, both have a file called client.php which define these two variables. 

public function register_app($redirect_uri) {
  $response = $this->_post('/api/v1/apps', array(
    'client_name' => 'Mastodon Share for WordPress',
    'redirect_uris' => $redirect_uri,
    'scopes' => 'write:statuses write:media read:accounts',
    'website' => $this->instance_url
  ));

You can edit this file with a text editor to change the 'client_name' from 'Mastodon Share for WordPress' to 'Anything You Want'. If you’re in a joking mood, maybe change it to 'Twitter'?

To change the URL so that the link on the client_name directs to your website, you’ll want to change the line 'website' => $this->instance_url.

In particular change $this->instance_url to 'https://example.com' where example.com would be your website. I’ll note that $this->instance_url on this line in the original plugin is a bug. If left alone, it points the URL to your home Mastodon instance instead of to the more logical https://wordpress.org/plugins/autopost-to-mastodon/ where the plugin lives. 

If you prefer using Jan Boddez‘ excellent plugin, you’ll want to do something similar, except in that case you’ll want to change a file named class-options-handler.php in the includes folder.

Here you’ll want something like:

'client_name'   => __( 'Example.com' ),

But note that Boddez doesn’t have a similar bug, so the website line

'website' => home_url(),

is already correctly defined so that your website will automatically be linked without any changes to it.

If you’re already using one of these plugins and manually modify them, note that you’ll probably need to re-authorize the plugin so that the changes propagate.

Syndicating my IndieWeb Wiki edits to my personal website

I don’t have a specific “Edit” post kind on my website (yet!), but I’ve set things up–using a prior recipe–so that edits I make to the IndieWeb wiki are syndicated (via PESOS) to the Micropub endpoint on my website to create draft posts on my personal website!

Presently they were easiest to map to my website as bookmarks until I can create the UI to indicate edits, but changing the UI piece, and retroactively modifying some data for posts, should be fairly simple and straightforward for me.

I’m not sure I’ll keep the entire diff content in the future, but may just keep the direct text added depending on the edit and the potential context. We’ll play around and see what comes of it. It’s reasonably sure that I may not post everything publicly either, but keep it as either a draft or private post on my website. In some cases, I may just add the edit syndication link on an original bookmark, read, watch, or other post type, a pattern which I’ve done in the past for articles I’ve read/bookmarked in the past and simply syndicated manually to the wiki.

I’ll also need to tinker with how to save edits I make directly in the chat channels via Loqi, though I think that is straightforward as well, now that the “easy” part has been done.

I only wish I had thought to do this before I made the thousands of edits to the wiki earlier this week. Both IndieWebCamp West 2020 and the edits for part of organizing that were the inspiration for finally getting around to doing this.

This isn’t as slick as the process Angelo Gladding recently did a demo of and is doing to syndicate his edits to the wiki from his website using a POSSE syndication workflow, but I’ll guarantee my method was way less work!

Also, since my edits to the wiki are made as CC0 contributions, the POSSE/PESOS flow doesn’t make as much difference to me as it might on other social silos.

I don’t edit Wikipedia incredibly often, but perhaps I set that functionality up shortly too.

Here’s the first example (public) post: https://boffosocko.com/2020/06/30/55772818/

I’ll get around to fixing the remainder of the presentation and UI shortly, but it’s not a horrific first pass. It’s at least allowing me to own copies of the data I’m putting out on the Internet.

I just automated my creating stars on Github to syndicate that intent and data (by PESOS) back to my website as bookmarks. Here’s an example on my site.

This is done using a variation of Using IFTTT to syndicate (PESOS) content from social services to WordPress using Micropub.

As part of this I used the feed pattern https://github.com/{{username}}.atom to input a feed which I’m filtering with my username and the word “starred” to pull out the correct items to syndicate.

I couldn’t find a permalink URL for the star itself, so I’m adding a syndication link that points to the page of “stargazers” for the individual repo that I’m bookmarking. 

While GitHub calls these stars and I might have mapped them to “likes” on my website, I’ve always thought of my intent as more of a bookmark. In practice I often use my stars as bookmarks for things I want to come back to visit on their site anyway. Since it’s my website and I have the control, I get to choose.  Of course I also have the facility to create a star post kind on the site too, but the semantic difference just doesn’t warrant the work.

Now to figure out how I might extract out all of my prior data to backfill old bookmarks like this…

I’ve now got about 20 webhooks set up to pull back data out of silos like this including ones for GoodReads, GitHub, Hypothes.is, Last.fm, Spotify, Untappd, Twitter, Letterboxd, Diigo, Reading.am, Huffduffer, Google Calendar, Meetup.com, YouTube and Pocket.