Bonus Drop #90 (2025-07-13): A Very Utilitarian Drop

urltomarkdown; utiluti; Small Utilities

No Drop last Friday, as my new e-bike came and I was incredibly distracted. Saturday was a day spent at the ER (not for me), so I had quite a bit of time to ponder which resources would make it into today’s Drop. Some highly useful resources await!


TL;DR

(This is an LLM/GPT-generated summary of today’s Drop using Ollama + Qwen 3 and a custom prompt.)

  • urltomarkdown converts any web page into Markdown format using its API, which can be used with a Dockerfile and docker-compose.yml for local deployment (https://github.com/macsplit/urltomarkdown?tab=readme-ov-file)
  • utiluti provides direct command-line control over default app associations for file types/extensions and URI schemes, including a launchd configuration to regularly force-assign R script files to Zed (https://github.com/scriptingosx/utiluti)
  • Small Utilities features a collection of scripts/wrappers that perform various useful tasks, such as converting media files to WAV, creating backup copies, and extracting URLs from text files (https://dbohdan.com/small-utils)

urltomarkdown

Often times a trigger for adding a resource to a Drop is seeing increased interest in the tool/service/etc. from others I keep an eye on (just because I like/use something does not mean it will be interesting/useful to others). That’s the case with urltomarkdown, a web service designed to convert any web page into Markdown format. It operates as an API that fetches the content of a given URL and returns a simplified Markdown version of the page.

The README has many solid examples, so I won’t just steal from it, but what I will do is provide some helpers for the tool.

This Dockerfile is slightly more optimized than the one in the repo. I’m fairly done with doing anything but reading content from GitHub (Microsoft barely deserves that), so I’m not going to be submitting a pull request. Just sub the one out in the repo for it. I also prefer using Docker Compose for services, so this docker-compose.yml should help others who do the same. Just put it in the same directory as the Dockerfile and docker compose up -d it.

Once you have it running locally mdurl.sh and mdurl-cross-platform.sh may come in handy. The first is a macOS-only script that takes a URL from the clipboard, attempts to use the local service to markdownify it, and puts the contents on the clipboard if successful. It issues a notification either way to let you know when it is done. I attempted to make that cross-platform in the other script but will rely on feedback to let me know if that works (I have no GUI interactive Linux or Windows systems).

I was reading this Foreign Affairs post in Arc so decided to try it out using the service. This is the output, and it is incredibly clean Markdown.

We’ve discussed Jina.AI in previous Drops, but the TL;DR for new folks is that it’s a pseudo-free service for making Markdown content from URLs for use in LLM/“AI” contexts. This is the output, and it’s almost completely useless.

Back in January I wrote my own, personal markdownifier that I have not open-sourced yet. It relies heavily on Postlight’s “reader” and Mozilla’s “reader” to do what urltomarkdown does. This is the output from running the URL through it, and it’s almost identical to the one today’s resource created. My personal service also has an “API” version that returns JSON with additional fields. The only reason for not open sourcing it is that it’s very, very lazy Deno JS code. But if that output format is useful, let me know and I’ll add it to the TODO, but urltomarkdown does a fine job. So, if you’re in the market for curlable HTML conversion, this is lightweight and will do the trick.


utiluti

Around two years ago I tossed together its-mine.swift after the regular frustration of Xcode stealing ownership of various filetypes hit some new highs. While I did put it on GitHub, it was not fully feature complete; and, while it has been working fine in my launchd setup, I discovered a much more robust utility — utiluti — which has taken its place.

This tool gives you direct command-line control over default app associations for both file types/extensions and URI schemes. So, instead of clicking through menus, you can simply type commands to see what’s currently set and change it instantly. Want to see what app handles email links? Just ask utiluti. Want to make all your text files open in Zed instead of Xcode? One command does it. Need to see what file types Safari can handle? utiluti will list them all.

Like urltomarkdown it has a fine README, so let’s make this resource a tad more useful with a launchd configuration to regularly force-assign R script files to Zed (since every REDACTED new install of Xcode — which I have to do every new macOS beta release — steals ownership). This is the launchd property list that should be saved to ~/Library/LaunchAgents/.

It will run when you enable it with launchctl load ~/Library/LaunchAgents/com.user.zed-r-files.plist, and every hour after that. Logs are in /tmp/ , but you can just remove logging if desired.

Check if it’s running with launchctl list | grep zed-r-files. Uninstall with launchctl unload ~/Library/LaunchAgents/com.user.zed-r-files.plist and rm ~/Library/LaunchAgents/com.user.zed-r-files.plist.


Small Utilities

I was looking up some quotes in Kagi, and this URL was in the search results. While it did not have the quote I was looking for, I usually poke around a site a bit, as you never know what you might find. This particular site has a bunch of goodies, but we’ll feature this page of “small utilities” today. It has a nice set of scripts/wrappers that do some very useful things:

  • 2wav: Converts media files to 16 kHz WAV for speech recognition using FFmpeg.
  • 7z-max: A wrapper around 7-Zip that applies maximum compression settings.
  • bak: Creates backup copies of files by appending .bak to their names.
  • copy & paste-clip: A pair of scripts for interacting with the X clipboard, a little more convenient than using xclip(1) directly.
  • dl: A cURL wrapper for easy file downloads that works on various systems, including NetBSD to Ubuntu.
  • exts: Lists unique file extensions in the current directory.
  • mtime: Prints file modification times in the Unix timestamp format.
  • t: A shortcut for the tmux session manager that attaches to existing sessions or creates new ones.
  • trim: Removes trailing whitespace from files.
  • ungrab: Releases grabbed keyboard/mouse input in X11.
  • urls: Extracts URLs from text files using John Gruber’s URL regex patterns.
  • utcdate: A UTC wrapper for date(1).
  • ytdl: A yt-dlp wrapper optimized for highly compatible H.264 YouTube downloads.

Alas, with more folks just letting VC-funded “AI” tools do the searching for them, it’ll be up to the rest of us to continue to hunt and poke the old-fashioned way to surface up micro-treasures like this one.

Oh, I should note that I used the shell script I made for the first section to get the Markdown version of that page and then had Ollama + llama3.2 locally create that bullet list for me.


FIN

Remember, you can follow and interact with the full text of The Daily Drop’s free posts on:

  • 🐘 Mastodon via @dailydrop.hrbrmstr.dev@dailydrop.hrbrmstr.dev
  • 🦋 Bluesky via https://bsky.app/profile/dailydrop.hrbrmstr.dev.web.brid.gy

☮️

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.