Ideas
These are all the things I wish existed.
Feel free to steal any of them (and please tell me if you build one! I'll definitely use it)
Sync 1Password with GitHub Actions secrets
I use 1Password as my source of truth for sensitive information. When I regenerate a token, I store it in 1Password for future use.
Some of these tokens are used by GitHub Actions as part of a suite of automations. I currently go through each repository/org and manually update the value.
What I'd like to be able to do, is run a script that pulls the value from 1Password and uses the GitHub API to update the secret value. Something like this:
bash
sync-1p-gh-secrets --vault <vault> --item <item> --secret <secret_name> --org <org>
For example:
bash
sync-1p-gh-secrets --vault ops --item "DockerHub" --secret DOCKERHUB_PASSWORD --org michael-test-org
Email auto-forwarder
There are certain emails that I always want to automatically forward on to another address, and am currently forwarding manually. e.g:
- Emails from booking.com should be forwarded to TripIt
- Emails from the nursery should be forwarded to my wife
I'd like to be able to filter on:
- Addresses in To, CC and BCC
- Email subject
- Email body
- Attachments (presence + file type)
I should be able to use any combination of To, CC and BCC when forwarding on the emails, and choose if I want to also forward on attachments.
eInk Calendar
Our house runs on digital calendars, but sometimes it's nice to see what's coming up on a shared surface.
This usually means transcribing major events on to a paper calendar periodically.
I'd like to be able to automatically show events on a shared screen
Unsubscribe dashboard
A UI that reads all emails in a folder and shows all emails with an unsubscribe
link.
Provide a way to group by sender / subject / unsubscribe URL
I'd like to be able to choose which folder this runs in (minimum Inbox + Trash, but ideally any folder/label)
GitHub CLI Extension - Download Artifact
Download an artifact from the most recent run of a GitHub Actions workflow to the current directory.
bash
gh fetch-artifact <workflow> <name>
Sample usage:
bash
gh fetch-artifact "Build Docs PDF" pdfs.zip
You'll need to use the workflows API and fetch the
workflow id
where the name
field matches the provided workflow name.
Update AUR on Release using GitHub Actions
Updating an AUR package for a node based tool could be automated using GitHub Actions.
Each time a release is tagged, the pkgver
and sha512sums
fields in the PKGBUILD
need updating, and the repo needs pushing to the https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD
The sha512sum
needs to be calculated from the published NPM package, so we'd need to wait until the version is available, download it from the registry and then calculate the checksum.
Google Contacts <-> Social Images
Automatically update your contact's profile image based on social media.
Use the following data sources:
- Gravatar (email)
Strip clipboard UTM parameters with Hammerspoon
Friends don't let friends share links with UTM parameters on them.
Hammerspoon provides tools to run code in response to the clipboard contents changing. It also provides tools to update the contents of the clipboard.
Putting these two things together we should be able to copy a link with UTM parameters, and by the time we paste again they should have been stripped from the clipboard.
Kindle Highlights to `sqlite`
I'd like to browse my Kindle highlights using Datasette, which means getting them in to a sqlite
database somehow.
My intention would be to build a kindle-highlights-to-sqlite
CLI following the pattern that Simon W has started in the Dogsheep org
This tool must work for highlights on personal documents in addition to purchased books, which means we'll likely have to use My Clippings.txt
as the data source. This can be accessed by connecting the Kindle with a USB cable and browsing the documents
folder.
ListenToTaxman CLI
Make ListenToTaxman usable from the CLI.
Output formats:
- JSON
- TSV
Also configure .listentotaxmanrc
to configure values that rarely change e.g. "Repay Student Loan", "Pension Contribution"
Proposed usage:
bash
# Show the gross + net wage per year, month and week on an income of £123,000listentotaxman --time 'year,month,week' --fields 'gross,net' --output json 123000
Stretch goal: Runs 2 incomes through ListenToTaxman with the same inputs and calculates a % change for each row
Newsletter Link Aggregator
A tool to find the most popular links within a set of newsletter subscriptions.
Requirements:
- Specify the timeframe to search for newsletters (default 7 days)
- Ability to specify a list of senders / subjects to match
Steps:
- Log in to email and fetch all newsletters based on the provided matching rules
- Extract all URLs from the newsletter (excluding unsubscribe + "read in a browser" links)
- Resolve the final URL of each URL
- Strip any tracking parameters (UTM source)
- Sort the URLs by number of occurances
- Display URLs, highest count first
Stretch goal: Also show which newsletters the link was in, along with any comment provided by the newsletter author
oas-component-extractor
Look for identical schemas in an OpenAPI document and automatically extract a component and rewrite the schema to use it.
It should be context aware, which means extracting requestBody
, responseBody
etc into the correct components section rather than using components.schemas
for everything
Automatic Password Changes
A tool for automatically rotating passwords. Uses Puppeteer to log in through a browser and update your credentials.
My use case is for 1Password, but ideally it would work with any password manager that has a programmatic interface.
Requirements:
- Read a single/all vaults from 1Password
- Log in to a site and update the password with a generated password
- Support OTP codes provided via 1Password
- Adding a new site should be self contained in a single file
Initially I thought that each site would be a JavaScript file to execute, but if there are enough similarities we could make this YAML driven
Plex Share/Unshare CLI
A CLI for sharing and unsharing specific libraries with users on Plex. Intended to disable sharing at specific times / when bandwidth is limited.
The script shown below looks like it works, but I'd like to package it up into a CLI:
bash
# Share a specific library (defaults to all libraries) with a userplex-library share [--library 1234567] <user_id>
Plex token, Server ID and libraries will be read from .plex.yml
Run Alex using Spectral
Automatically check your JSON schema documents for inclusive language
Check any field that can contain text (including path, summary, description, examples, field names etc)
Run spellcheck using Spectral
Automatically spellcheck your JSON schema documents
Check any field that can contain text (including path, summary, description, examples, field names etc)
Create CBZ from Webcomic
Download and package webcomics into CBZ format for reading with ComicZeal
yargs options generator
Generate Yargs options + argument definitions with a UI. Output the following configuration:
javascript
const packageDetails = require(path.join(__dirname, "package.json"));program.version(packageDetails.version).option("-a, --allow <actions>","comma separated list of actions to allow e.g. mheap/debug-action. May be a glob e.g. mheap/*").option("-v, --verbose",).parse(process.argv);