Introducing Kinscript

I’ve been working on some academic-style genealogy writing. Mostly I’ve been writing family summaries for an eventual book, but I’ve also been writing various research and analysis documents. I don’t know how many of these will ever be seen publicly, but I’d like them to look nice for my own use nonetheless.

I try to write almost everything using Markdown, the format invented by John Gruber which has gradually taken over as the most popular text-based markup format on the web.

I’m also a big Obsidian user – it has good capabilities for linking between notes and an impressive array of community-supported plugins. I find it useful for genealogy note-taking and research. But maybe most important is that it stores its notes as plain text Markdown files on disk. Because of this it’s effectively future-proof. Even if Obsidian goes away, my computer can still read text files from disk.

If I want to print or share my writing, I don’t really want to share a text file full of markup symbols–I want it to look nice. And being that this is genealogical writing, I think that the National Genealogical Society Quarterly (NGSQ) is pretty much the standard bearer for how that writing should look. You can download some complimentary articles if you sign up for free at their website to see what this format looks like. The free articles are pretty good, too.

So I set out to emulate the NGSQ style and build a toolchain to produce it from Markdown files. The result is Kinscript. I heavily iterated on the toolchain and the formatting using both ChatGPT and Claude Code. The output is focused on keeping footnotes on the same page as the content, so that the writing can’t be easily separated from the sources which it cites.

There’s also a custom syntax to support creating the numbered and formatted child lists that are commonly in use when publishing descending genealogies.

There are a few prerequisites: Some pretty common and easily attainable unix tools and a couple of fonts to install.

Kinscript requires some special YAML headers in the markdown file (you can find the details in the README), and then you can generate the document like so:

./kinscript.sh <source_markdown_file> <output_directory>

I have a separate custom tool that monitors the source directory and initiates kinscript if it detects a change in one of the markdown files–perhaps I’ll have a separate post about that.

Here’s some sample output:

Preview of the family summary PDF

Migrating to Gramps

Recently I’ve started to become concerned about my genealogy software. I’ve used the same software for over 20 years and I really like it. But it’s made by a small, family-run company, and it really hasn’t evolved very much over that timeframe. I’ve become more and more concerned that at some point it will shut down when the family has retired or just decides the effort is no longer worth it. I’m not naming the software because I’m not trying to fault them, and it really has been one of my favorite apps for a couple decades. I was already thinking about this potential end-of-life issue when a similar issue arose with Nisus Writer, and that pushed me over the edge to being proactive about this.

Introducing Photocite

Recently I’ve been processing a number of family history photos or scans of old family artifacts such as letters. For images that are historic which I may share or distribute as a part of my research, I want to be sure that I have a good citation for the image and I want to embed it in the image itself so that the sourcing information is less likely to be lost as the image gets distributed or passed around. I started off using Pixelmator Pro to painstakingly add text citations to the images, but this seemed arduous and somewhat inconsistent after a while, and if I needed to tweak the citation it got a bit fiddly.

PDF Slurping

I’ve been using Advantage Archives for looking at the newspaper archives of a number of different libraries as a part of genealogy research.

The trouble is that each library has a slightly different UI for browsing these newspapers, and the experience can be fairly cumbersome. Ultimately, you can download a PDF if you want, but all the clicking around still makes the process slow and frustrating.

Of course the built-in MacOS Preview tool can show you PDFs, too, and it’s navigation/zoom interface is easier, too (especially using pinch-to-zoom, etc).

TextExpander Citations

In my research I’ve been finding a lot of newspaper articles and transcribing them using automation. But when I’m documenting those articles and linking them to people, I also need to create a source citation. I try to use Evidence Explained-style citations to the best of my ability, but there’s a lot of repeated boilerplate text when writing these up – and there is formatting! Some parts of italicized, so that gets tedious, too.

Automating Transcription with ChatGPT

I recently discovered a trove of online newspaper archives for an region where a branch of my family research is focused. Advantage Archives partners with mostly small-town libraries, especially in the midwestern USA, to digitize old newspaper archives and put them online.

The discovery of all these newpaper archives has led me to want to transcribe and write source citations for hundreds of articles. You know what’s tedious? Transcribing and citing hundreds of articles! This is a job for automation!

Hello World

Welcome to Pedigree Pipeline, a place for me to share tips and techniques for automating genealogy and family history research — along with other insights or discoveries from my research itself. Much of my work is computer-centric these days, and I often find myself repeating the same tasks. As a software engineer, I’m always thinking about how to automate these workflows — primarily on a Mac, using the Unix command line and Mac-centric automation tools.