To give my mind a rest from writing words, last night I noodled around with Charty and Shortcuts to create an iOS widget showing my words… šŸ¤¦šŸ»ā€ā™€ļø

btw @nanowrimo, can you please open the word count API again?

#nanowrimo #nanowrimo2020

I read a lot of web series, whether they are webcomics or web novels, so I created this Shortcut script to keep track of which chapter/episode I’m up to.
I also created a subsequent script that would extract and load the latest chapter from your reading log.
I’m sure you can tweak this to keep track of your web TV shows too.

How To Use

  1. You need to have both the Shortcuts app and the Drafts app on your phone (it is not necessary to have Drafts Pro)
  2. Download the following three scripts (you need all three for it to work properly):

To Record Your Progress

  1. When you’re reading your favourite web series and want to record your progress, open Share Sheet on Safari and select the “Log Web Reading” script

  1. Select “^New Reading”2 and in the prompt, enter the name of the web series you’re reading3

  1. Wait for a little bit, it would show two notifications. First, to tell you when your new reading log has been created, and second when your current progress has been logged.

  1. The next time you run the “Log Web Reading” script, you can select your previously created log in the drop-down menu to update your progress

To Load Your Latest Chapter

  1. To load your latest chapter, activate the “Load Web Reading” Script – I have it on my home screen, but you can activate it from Safari Share Sheet if you want.
  2. Select the web series you want to read
  3. Safari would load up the latest chapter you were reading
  4. When you’re done reading, remember to run “Log Web Reading” to mark down your latest chapter
Click on the image to see the full-sized image

How It Works

An individual Drafts note is created for each web series you want to track.
When you run the “Log Web Reading” script and select “^New Reading”, Shortcuts creates a new Drafts note for the web series you want to log.
The Shortcut script would extract the URL of the website you were on when you activated the Safari Share Sheet and save it to the Drafts note4.

The next time you run “Log Web Reading” and select an existing web series log, Shortcuts would find the original Drafts note it had created and append the latest URL to the note.

When you run the “Load Web Reading” script and select the web series you want to read, Shortcuts would find the latest entry in the Drafts note, extract the URL and load it in Safari.

How the Drafts Notes Work

For every web series you track, a Drafts note is created with the following properties:
– Titled with the name you entered in the prompt (name of the web series)
– tagged with “bookmark” and “log”
– is flagged
– is archived

Every time you run the “Log” and “Load” scripts, they would search for all the notes that match the above criteria and extract the titles to populate the web series drop-down menu.

In fact, when you run “Log Web Reading” for the first time, a note is created with the title “^New Reading” and all the above properties – which is why you have the “^New Reading” option in the drop-down menu.5 So don’t delete that note.

I create a Drafts Workspace that shows me all my reading logs – this makes it easy to manage my logs (see below)

How to Remove a Series

When you’re finished with a web series and you don’t want to it to show up on the drop-down menu anymore, simply remove the flag from the Drafts note6.

Edit: I’ve updated the workflow because I realised there was an actual book links field that I could use instead of trying to extract the book ID to build the link.

I also realise that my workflow was built using iOS 13’s Shortcuts app, so a lot of people won’t be able to use it. I will build one using iOS 12 asap and will post a link to that as soon as that’s done.

Lastly, you might find that the workflow doesn’t populate some start/finish dates. This is not an error with the workflow, instead, it seems that Goodreads doesn’t provide the dates for some of the books. The date fields are just missing, I’m not sure why. I’ve tried re-adding the dates on some of my books but they still don’t show up, although the modify dates changed, so I know something has been recorded. I will keep looking into this and will report back if I find anything.


So I forgot where I’d read it, but I saw that some people were creating a “read/reading” page1; listing all the books they’ve read/reading this year.

I’ve also created my own page, but – being the nerd that I am – I decided to create a Shortcuts workflow to help me create and maintain this list.

I use Goodreads to keep track of my books and I thought I would use Goodreads’ API to help gather the books I’ve read/currently reading, and create a markdown list with all the pertinent information (ie. title, author, date started, date finished, rating, and whether this is a re-reading of a book).

I can then prepend that list to my previously mentioned page.

I know my workflow is not very polished – my method of processing XML files probably needs work – but for now it does the job.

Installing the workflow

You can download the Shortcuts workflow here.

When you first import the script, it’ll ask you for your Goodreads ID and your API key.

You can find your Goodreads ID by going to your bookshelf after you’ve logged into Goodreads and looking at the URL; it should be the string of numbers and letters between “list/” and “?”.
eg. https://www.goodreads.com/review/list/USERNAME?shelf=read

The workflow would ask that you save your Goodreads ID in a dictionary that the workflow would then refer to.

To get a Goodreads API key, you’d need to register here. It’s free and doesn’t require more than your name and your application name (I just used “Shortcuts”).

I save my API key in a text file in my Shortcuts folder and reference it in the script.

How to use the workflow

Now for how to use the workflow.

When you run it, it’ll ask for which bookshelf you want to list. I’ve put in two options, read and currently-reading. You can add any other bookshelf you currently use.2

Then the script will ask for the number of books you want to list.

When I ran the script the first time, I entered in 200 – I knew I’ve only read about 30 books this year, but I wanted to create pages for previous years as well.

For on going maintenance of my books list, I’d probably run the script once a month and then only need to request info on 1 to 2 books.

The script would then produce a markdown list with the requested books (sorted by read date) and copy them to the clipboard. I would then paste them into my reading page.

Final words

As I’ve mentioned, my workflow is not the most polished, but I hope it helped some people. If you customised it in any quirky way or figured out a more elegant way to deal with XML files, please comment and let me know. I would love to see how people use this.


  1. So if you have a ā€œread/reading pageā€, please let me know so I can retroactively add links to your page. 
  2. Remember that the shelf name uses “-” in place of spaces and is all lower case, ie. Currently Reading is rendered as currently-reading 

I’ve always been slightly annoyed that iOS Reminder has no way to purge completed items.
Well, not unless you are willing to sit there swiping to delete each item one by one. Like an animal. šŸ˜œ

After seeing my “Completed Items” reach a couple of hundreds, I decided to turn to Google to see if anyone else has come up with a solution.

The results were quite disheartening. It seems that some people are just deleting the whole list and starting from scratch.

However, I did find a Six Colors article that provided instructions on how you could bulk delete completed items from iCloud’s version of Reminders. It also made mention of an AppleScript written by Dr. Drang that, when run, would delete completed items older than 30 days.

These were all well and good, but I wanted something to run automatically every month. Or at the very least sent me a reminder to run the script.
I was thinking about setting a Due Item, or maybe even setting up a cronjob… but then I remembered the Shortcuts app.

Maybe I could create a Shortcut workflow that could find and delete completed reminder items older than 30 days?

Well, apparently I can.

Click to enlarge

Itā€™s a very simple shortcut workflow actually:

I specify all the lists that I would like to have purged – there may be some lists that you donā€™t want to have all the item deleted without first reviewing them. When you install the script, Shortcuts would ask you to input your own list names.

Here I specify that items completed over 30 days ago are eligible for deletion. Change this if according to your own preferences.

Then for each of the lists specified above, the filter would find items completed older than 30 days…

and remove them.

When you run the script, Shortcut would ask you three times if you are sure you want to remove the reminders, telling you that this is a permanent action. Just click ā€œRemoveā€ each time and presto, the items are gone.

Now, earlier on I mentioned that I want to automate this. Thereā€™s no way for Shortcut scripts to be run automatically on a schedule, but you can create a Launch Centre Pro item set to run monthly and have it run this Shortcut script. So every month a notification would pop up, you click on it, and the Shortcut script would go about removing all the old Reminder items.

If you have your own way of removing old Reminder items leave me a comment or send me an email, Iā€™d love to know how others solve this problem.

So the link to the Shortcut script again: Deleting Old Completed Reminders Items

I was going to write up this how-to in a Google doc to share with a Facebook group I was a part of, but I figured I might as well share it.

Prep-work

  1. Create an account on Google Drive – if you have Gmail, you just need to activate Google Drive
  2. Create a folder called “shared”
  3. Create an account on IFTTT
  4. Download Workflow (app) onto your iPhone

Google Spreadsheet

  1. Open up the mail tracker spreadsheet

Do not just use this sheet (otherwise, you’d be logging your mail directly into the template everyone else would be using).

2. Make a duplicate by selecting File –\> Make a copy
3. Rename it to “Mail Tracker” (instead of “Copy of Mail Tracker”)
4. In the “Folder” field, select the “Shared” folder you’ve previously created.
5. (you can put it somewhere else, but then you’d need to remember the folder path and change it in the Workflow script)

Workflow

  1. Open this link on your iPhone
  2. Click on the “Get Workflow” button, this would open the Workflow app and save the workflow/script to the app.

  1. To activate the workflow, you just double-click the “Logging Mail” icon twice in the app. But do this after you’ve set up the IFTTT script (next section). There’s another, quicker, way to do this and I’ll show you how later.

IFTTT

  1. Click on this link to save the IFTTT rule into your account.
  2. Assuming you’re logged into your account, you should be able to add and turn on the IFTTT script

Creating a Button

To activate the Workflow script, you currently need to open the Workflow app and double-click the “Logging Mail” icon.

To make this quicker, can create an icon on your home screen that immediately activates the Workflow script.

So let’s make the icon.
1. Open Workflow app
2. Open “Logging Mail”, but clicking the icon once.
3. Click on the share sheet button:

  1. Click “Add to Home Screen” button:

  1. Follow the instructions on the screen.