A set of command-line utilities for working with Markdown + YAML files, specifically for novels and short stories.
Setup and usage
npm as a utility:
npm install --global markdowny
Basic usage is:
markdown verb *.markdown markdowny-wc *.markdown
Retrieves the version of the command-line utility and prints it out to the console.
Extract the content from one or more files.
markdowny content *.markdown
Counts the number of words excluding the YAML header and displays it.
markdowny count *.markdown [options]
--total: Add a total line to the bottom that combines.
--separator: Comma-separates the numbers in the total.
Extract the metadata (front matter) from one or more files.
markdowny extract *.markdown [options]
--no-list: Don't write out the extract data as a list/sequence of items (default).
--yaml: Extract the data as YAML instead of JSON (default).
--content PROPERTY: Extract the content as a property of the given name instead of just removing it. Defaults to not extracting the content.
Displays each file as a heading 1 section with the title and contents provided.
Assuming that a file has a
summary (which can be multiple lines) inside it, display a section for each file with the title as heading 1 and the contents of the
summary value as the text for that section.
markdowny sections *.markdown -t title -f summary
--title: The name of the property to put in for the section. May be nested such as
author.name.first. Defaults to
--field: The name of the property used for the contents of the section. Defaults to
Displays a table of one or more fields inside the summary.
To list every file, it's title, the number of words inside it, and the list of secondary characters inside a nested value. The
:rs makes the "Words" column right-aligned (
r) and comma-separated (
markdowny table *.markdown -f _basename title _words characters.secondary -t File Title Words:rs "Secondary Characters"
--fields: A parameter-separated list of YAML fields to list in the table, in the order they should be shown. Defaults to
_basename title. These may also have a format specifier, starting with
:(see below). This may be a nested value, such as
--titles: A parameter-separated list of titles for the columns. If there are more fields than titles, the field names will be used for the headers. These may have format specifiers.
--table-start: The characters to insert at the beginning of the row. Defaults to
--table-end: The characters to insert at the end of each row. Defaults to
--table-delimiter: The characters to insert between each field. Defaults to
--no-table-rule: Do not put a dashed line between the header and the various files.
--no-table-header: Do not display the header titles. The format of the headers is still parsed and used.
--list-delimiter: The characters to put between list items when inserted into a field. Defaults to
--prefix: The filename prefix that is trimmed from the
There are a number of special properties that are included in all files.
_filename: The full path of the filename, with the
_basename: The name of the file without a directory.
_words: The number of words in the file, excluding the YAML header.