If you want a peak at my current reading notes management workflow, you might find this video interesting (Craft, Bear 2, Omnivore, Readwise).
🔗
As detailed by the company in a press release, mobivention’s App Marketplace will let developers distribute B2B and B2C apps to their customers outside the iOS App Store. “The mobivention App marketplace is primarily aimed at business customers who are looking for an alternative solution for distributing their apps,” mobivention explains.
Tired: there is an app for that. Wired: There is a marketplace for that. 🤓
How Do I Read and Process an Article
Let’s say I stumble on an article I wish to read and process. I’ll follow the following steps, covering the collection and archival stages.
- Save the article in Omnivore1,2.
- Set tags in Omnivore.
- Read the article, highlight text as needed and write comments if required.
- Summarize the article using Raycast AI. I have a Keyboard Maestro macro for that.
- Copy and paste the summary into the Omnivore notebook accompanying the article.
- Archive the article in Omnivore.
- Export the Readwise highlights (done automatically from Omnivore syncing).
- Import the created markdown files into Bear.
- Adjust tags if required.
I realize this workflow is essentially for the Mac. Nothing like this can be done on the iPad without a major tweak or two.
You can find this article on the “My Micro-Workflows Explained” website.
Each week, I use this template in Things 3 to help me out with my planning. Each Sunday, I duplicate the whole project and rename it accordingly. I love Things 3[^1].
[^1] I tried to do this in Apple Reminders but I prefer Things 3 experience.

Today I added a new global changelog1 page to my metablog. The changelog will cover all the changes applied to my digital publishing space.
-
A changelog is a document or record that details the changes made in a software project. It typically includes information about new features, enhancements, bug fixes, and any modifications made to the software between different versions or updates. ↩︎
Some Hurdles to Fix Already
I encountered my first few hurdles in transposing my content from a Craft document to a Micro.blog. Craft enables rich document content and supports block types like JSON output or command line examples. Posts containing these need special Markdown attention. Thanks to some help1, I figured that out, so the output looks ok. Next up are documents with images like screenshots. When exporting from Craft to Ulysses, images are inserted in Ulysses as references to Craft’s backend storage. When posting on Micro.blog, the images are not uploaded on Micro.blog’s backend. I need to manually download each image and insert them in Ulysses so they get uploaded to Micro.blog and be self-contained there. If I ever drop Craft, I want the images in my post to stay valid and display correctly.
-
I want to thank MacGPT here for the hint. 😅 ↩︎
Browsing Past Published Articles on Ghost
Circumventing Ghost’s limited posts management capabilities.
I recently decided to spend some time editing past articles published on my Numeric Citizen Space website. I first thought that by going to my Ghost admin page, I could quickly browse past published articles by month. I couldn’t be more wrong. In fact, Ghost offers limited post management capabilities, thanks to its limited content browsing capabilities. I cannot go back, say, list articles published early in 2023. I can sort by ascending or descending order, but from there, I have to scroll through a long, dynamically created list of posts. It’s not very effective for a website with 600-plus posts. I had to find a different option to locate a post for an update. This is where Ghost’s content APIs come into play.
The following API request doesn’t do the job (API key voluntarily removed!):
curl -H "Accept-Version: v5.0" "https://numeric-citizen-introspection.ghost.io/ghost/api/content/posts/?key={APIkeygoeshere}&fields=title,url,published_at,updated_at&filter=published_at:>2024-01-01%2Bpublished_at:<2024-02-01" | json_pp
Let me explain what is this API request.
First, I’m going to the request using the macOS command line, hence the curl command. Next, the whole query follows in quotes. I query the content/posts API endpoint. Next, I pass my API key, followed by a field selection (&fields), and next with the filter using the published date between two dates. Finally, I pipe the results in the pretty JSON print macro (is this a macro?) so the output looks like this:
jfm@CraftingMAChine ~ % curl -H "Accept-Version: v5.0" "https://numeric-citizen-introspection.ghost.io/ghost/api/content/posts/?key={API-key-goes-here}&fields=title,id,url,published_at,updated_at&filter=published_at:>2024-01-01%2Bpublished_at:<2024-02-01" | json_pp
{
"meta" : {
"pagination" : {
"limit" : 15,
"next" : null,
"page" : 1,
"pages" : 1,
"prev" : null,
"total" : 9
}
},
"posts" : [
{
"id" : "65b6a09840566000015b0d37",
"published_at" : "2024-01-28T13:50:19.000-05:00",
"title" : "My Weekly Creative Summary for the Week of 2024/03",
"updated_at" : "2024-01-28T13:50:19.000-05:00",
"url" : "https://numericcitizen.me/my-weekly-creative-summary-for-the-week-of-2024-03/"
},
{
"id" : "65b6540640566000015b0cf7",
"published_at" : "2024-01-28T08:23:26.000-05:00",
"title" : "Special Message to Paying Subscribers",
"updated_at" : "2024-01-28T08:23:26.000-05:00",
"url" : "https://numericcitizen.me/special-message-to-paying-subscribers/"
},
{
"id" : "65b16e25bc7fde0001314ccb",
"published_at" : "2024-01-24T15:09:24.000-05:00",
"title" : "The Mac Turns 40",
"updated_at" : "2024-01-24T15:09:24.000-05:00",
"url" : "https://numericcitizen.me/the-mac-turns-40/"
},
{
"id" : "65ad35418532ae000169ddd2",
"published_at" : "2024-01-21T10:22:33.000-05:00",
"title" : "My Weekly Creative Summary for the Week 2024/02",
"updated_at" : "2024-01-21T10:22:33.000-05:00",
"url" : "https://numericcitizen.me/my-weekly-creative-summary-for-the-week-2024-02/"
},
]
}
Next, I copy the post ID of one article and paste it my browser for edition using this special URL:
https://numeric-citizen-introspection.ghost.io/ghost/#/editor/post/652e6eedb8a2650001ad9c5b
This URL brings me directly into the Ghost editor, provided that i was already authenticated with my account. That’s pretty much it. It could be much simpler. For this, I miss WordPress.
You can find the Ghost API document right here.
Let's start something new. Again.
This blog is a Micro.blog hosted version of the Craft-hosted version. I’m currently in the slow process of copying my content over here.
Browsing Past Published Articles on Ghost
I recently decided to spend some time editing past articles published on my Numeric Citizen Space website. I first thought that by going to my Ghost admin page, I could quickly browse past published articles by month. I couldn’t be more wrong. In fact, Ghost offers limited post management capabilities, thanks to its limited content browsing capabilities. I cannot go back, say, list articles published early in 2023. I can sort by ascending or descending order, but from there, I have to scroll through a long, dynamically created list of posts. Not very effective for a 600-plus posts website. I had to find a different option to locate a post up for an update. This is where Ghost’s content APIs come into play.
The following API request doesn’t the job (API key voluntarly removed!):
curl -H "Accept-Version: v5.0" "https://numeric-citizen-introspection.ghost.io/ghost/api/content/posts/?key={APIkeygoeshere}&fields=title,url,published_at,updated_at&filter=published_at:>2024-01-01%2Bpublished_at:<2024-02-01" | json_pp
Let me explain what is this API request.
First, I’m going the request using macOS command line, hence the curl command. Next, the whole query follows in quotes. I query the content / posts API endpoint. Next, I pass my API key, followed by a fields selection (&fields), next with the filter using the published date between two dates. Finally, I pipe the results in the pretty JSON print macro (is this a macro?) so the output looks like this:
jfm@CraftingMAChine ~ % curl -H "Accept-Version: v5.0" "https://numeric-citizen-introspection.ghost.io/ghost/api/content/posts/?key={API-key-goes-here}&fields=title,id,url,published_at,updated_at&filter=published_at:>2024-01-01%2Bpublished_at:<2024-02-01" | json_pp
{
"meta" : {
"pagination" : {
"limit" : 15,
"next" : null,
"page" : 1,
"pages" : 1,
"prev" : null,
"total" : 9
}
},
"posts" : [
{
"id" : "65b6a09840566000015b0d37",
"published_at" : "2024-01-28T13:50:19.000-05:00",
"title" : "My Weekly Creative Summary for the Week of 2024/03",
"updated_at" : "2024-01-28T13:50:19.000-05:00",
"url" : "https://numericcitizen.me/my-weekly-creative-summary-for-the-week-of-2024-03/"
},
{
"id" : "65b6540640566000015b0cf7",
"published_at" : "2024-01-28T08:23:26.000-05:00",
"title" : "Special Message to Paying Subscribers",
"updated_at" : "2024-01-28T08:23:26.000-05:00",
"url" : "https://numericcitizen.me/special-message-to-paying-subscribers/"
},
{
"id" : "65b16e25bc7fde0001314ccb",
"published_at" : "2024-01-24T15:09:24.000-05:00",
"title" : "The Mac Turns 40",
"updated_at" : "2024-01-24T15:09:24.000-05:00",
"url" : "https://numericcitizen.me/the-mac-turns-40/"
},
{
"id" : "65ad35418532ae000169ddd2",
"published_at" : "2024-01-21T10:22:33.000-05:00",
"title" : "My Weekly Creative Summary for the Week 2024/02",
"updated_at" : "2024-01-21T10:22:33.000-05:00",
"url" : "https://numericcitizen.me/my-weekly-creative-summary-for-the-week-2024-02/"
},
{
"id" : "65ac3aa68532ae000169ddb6",
"published_at" : "2024-01-20T16:28:20.000-05:00",
"title" : "New IT Rules at the Office Prompts Me to Revisit My Mac Usage at Home",
"updated_at" : "2024-01-20T16:28:20.000-05:00",
"url" : "https://numericcitizen.me/new-it-rules-at-the-office-prompts-me-to-revisit-my-mac-usage-at-home/"
},
{
"id" : "65a3ed6e8532ae000169dbe0",
"published_at" : "2024-01-14T09:24:25.000-05:00",
"title" : "My Weekly Creative Summary for the Week of 2024/01",
"updated_at" : "2024-01-14T09:24:25.000-05:00",
"url" : "https://numericcitizen.me/my-weekly-creative-summary-for-the-week-of-2024-01/"
},
{
"id" : "659e86018532ae000169dbbf",
"published_at" : "2024-01-10T06:58:44.000-05:00",
"title" : "Adobe Lightroom 2016-2024 RIP â How To Migrate From Adobe Lightroom to Photomator",
"updated_at" : "2024-01-10T06:58:44.000-05:00",
"url" : "https://numericcitizen.me/adobe-lightroom-2016-2024-rip-how-to-migrate-from-adobe-lightroom-to-photomator/"
},
{
"id" : "659d32eb8532ae000169dba7",
"published_at" : "2024-01-09T06:53:21.000-05:00",
"title" : "Apple Vision Pro â The Missing Apple Keynote Case",
"updated_at" : "2024-01-09T06:53:21.000-05:00",
"url" : "https://numericcitizen.me/apple-vision-pro-the-missing-apple-keynote-case/"
},
{
"id" : "659953468532ae000169db6d",
"published_at" : "2024-01-06T08:27:04.000-05:00",
"title" : "A Tough Year Ahead for Apple",
"updated_at" : "2024-01-06T16:52:59.000-05:00",
"url" : "https://numericcitizen.me/a-though-year-for-apple/"
}
]
}
Next, I copy the post ID of one article and paste it my browser for edition using this special URL:
https://numeric-citizen-introspection.ghost.io/ghost/#/editor/post/652e6eedb8a2650001ad9c5b
This URL brings me directly into the Ghost editor, provided that i was already authenticated with my account. That’s pretty much it. It could be much simpler. For this, I miss WordPress.
You can find the Ghost API document right here.
https://ghost.org/docs/content-api/
This article is also available here.
My Content Creator Workflow as of 2023-11
My creative workflow as of 2023-11. You can download an higher resolution here.
This 2023-11 version has a few changes and a cleaner and more focused workflow. Before going into specific details, I wanted to remind readers that I support the " POSSE " idea. You can read one post about it here. This workflow presented reflects this. As a reminder, here is one definition of the POSSE principle according to ChatGPT:
“POSSE” is an acronym that stands for “Publish (on your) Own Site, Syndicate Elsewhere.” It’s a content publishing model that first encourages publishing content on your own website, and then syndicating (or sharing) that content on other platforms or websites. This approach is often recommended in digital marketing and personal branding strategies, as it allows individuals to maintain control over their original content while still benefiting from the audience and engagement found on larger, established platforms. The POSSE model is particularly relevant in the context of blogging, social media, and online content creation.
Welcome AI, welcome ChatGPT, Dall-E, Midjourney
AI is making an official entry in my creative workflow. I wrote a long piece stating my guidelines for using AI in my creative work. You should read those and maybe get some inspiration out of them. The header image of this article was generated using Dall-E.
A new setup to share files easily
Dropshare coupled with Short.io enables me to share files like screenshots or other things. The setup was documented in detail in a previous article on this meta blog. Behind the scene, Dropshare is configured to use Backblaze to store files in a S3 bucket.
Bye bye to my Digital Garden
I came to the conclusion that a digital garden isn’t something for me. I decided to move some portions into my official about page. You can still access the remains of the garden, here.
A fun experience with Tinylytics
I’ve been using Plausible for my analytics needs but a cool guy (the same who’s also working with Manton Reece on Micro.blog hosting service, developed a lightweight version which I decided to support.
The Tinylytics dashboard
Google Sheets is out too
I was using Google Sheets to save links to every post on Micro.blog via an IFTTT automation. I no longer feel the need to key this in place.
Brief
Brief is now part of my workflow because they also took over Mailbrew, both are forming a powerful content consumption enabler duo. Some of my Mailbrew newsletters contain Brief as a source for news, which is heavily using AI for summarization.