Introducing KMFᴀᴄᴛs, a macro suite that makes it incredibly easy to build a knowledge base from posts here on the Keyboard Maestro forums by saving links to posts, forums, and attached macros in a browsable database.
Version 1.0 - February 16, 2025:
— KMFᴀᴄᴛs Macros.kmmacros (717 KB)
While the forums have a built-in bookmarking tool, it's quite limited in its features. You can also bookmark pages using your browser, or a third-party app like EagleFiler, etc. But to me, all those solutions add overhead. I wanted a method that was super fast, super easy, and always available when I was on the forums.
A note about AI assistance
This macro uses Javascript in a number of places, primarily when collecting data from posts. It needs to extract this data from either the page itself (using remote JavaScript in supported browsers), or by parsing a saved text file (for non-remote JavaScript browsers). There's also a fair bit of JavaScript in the HTML collection browser, as it manages all the interactivity.
None of this JavaScript is my work, at least not directly. I used Claude to develop all these JavaScripts, telling it what I wanted to accomplish, then working through multiple iterations of solutions until the script was doing what I needed it to do. This process was time consuming, but without the asssistance of an AI, this macro would work in a much clunkier manner (huge amounts of text processing to read through files looking for the data I wanted).
No AI was used for writing data to the database, though I did use it on a couple of occasions to format complicated SQL commands to extract data already formatted the way I needed it formatted.
Wherever Claude was involved, I have noted as such in the name of the action. If you have qualms about using macros that have AI-generated code, you probably shouldn't use KMFᴀᴄᴛs.
KMFᴀᴄᴛs is always ready when you're on the forums; as soon as you copy a link to a forum post, it goes to work:
An animated GIF showing the capture process
As the GIF shows, when you capture a post, you can choose how to handle any macros in that post—you can save their URLs to the database, download them, do both those things, or ignore them completely.
This is also how you set up the macro if you've never used it before: Just click a Copy Link icon on any post. You'll be asked to point to a folder where you want to save your data, so create that beforehand. There are just two questions in setup, and then you're done.
While browsing the forums, whenever you see a post you'd like to keep, just click the Copy Link icon and it will be quickly added to the database. While easy to use, KMFᴀᴄᴛs is quite full-featured, and as such, it's got help available online:
https://robservatory.com/macro_versions/kmfacts/kmfacts_help.html
Once you have a collection, you can browse it in a Prompt With List browser:
As shown in the info text at the top of the Prompt With List box, you can change what happens when you double-click an item by holding modifier keys:
- No modifier keys: Open item in browser.
- Command key: Edit item.
- Control key: Copy URL to clipboard.
- Shift key: Copy to clipboard as Markdown link.
- Shift and Control keys: Copy to clipboard as HTML link.
You can also browse your collection in a multi-column custom HTML Prompt view:
In this view, you can sort columns by clicking column headers, filter columns by typing in the boxes above each column, and control what you see with the boxes at top left. This view is also the only way to delete one (or more) entries from the database at this time; the help explains how that works.
Database files can be located on cloud drives; the macro takes steps to insure that two instances aren't writing to it at the same time. I've kept mine on iCloud without any issues.
This macro took a long time to come together, but it works incredibly well, and makes it really easy to build up an easily-browsed and filtered collection of Keyboard Maestro Forum facts for easy future reference. I use it multiple times a day, and haven't had any troubles with it as of yet.
Thanks to everyone who helped with the development, but especially @_jims who provided some great functionality changes and additions.
-rob.