#story #file #points #stories #plot #narrative #refactoring

bin+lib gatherbrained

gatherbrained is a suite of story-writing tools

1 unstable release

0.1.0 Feb 25, 2024

#190 in Visualization


410 lines


gatherbrained is a tool for helping organize written works. It provides a command-line interface to maintain and refactor stories. The general idea is that one file, the "gatherbrained" file captures individual plot points to be included in the story, while another file, the "narrative" organizes the gatherbrained thoughts into a coherent story.

The format of a gatherbrained file is a series of short text snippets separated by lines consisting solely of '-' characters. For eaxmple, the following is a valid gatherbrained file:

This would be the first entry.  #first
This would be the second entry.  #second #gatherbrained

The corresponding narrative file could look like this:

#second #gatherbrained.

In this way one person can brain dump for days, months, or years, adding plot points and details to the story as they go. The narrative will automatically adapt to include new gatherbrained entries that match the search terms. In this way, entire stories can be written and reworked without losing the plot points, and without having to edit actual text.

The interactive shell is self-documenting with the in-built "help command":

gatherbrained> help

gatherbrained is a tool for telling stories.

Invoke gatherbrained with the name of a gatherbrained file.

First, use the add, edit, and search functions to gather ideas in a file.  This
file should contain one concrete thought---approximately a paragraph worth---per
entry.  Once equipped with the components of a story, create the narrative in a
second file that corresponds to searches in the first file.  Each line in this
second file constitutes a story arc or a chapter; a set of related ideas.

The general idea is to enable progressive refinement of a story by adding
entries to the gatherbrained, and searching for them by key word in the
narrative.  The whole story can be reworked quickly and efficiently by shuffling
entries in the narrative file or by editing entries that match a search in the
gatherbrained file.  Together these two mechanisms allow refactoring of stories.

help .... display this help menu
add ..... add an entry to the gatherbrained file.
edit .... perform a search and edit the retrieved entries in $EDITOR
search .. search the story by hash tag
narrate . output the story according to a narrative file
missing . output the gatherbrained entries missing from the narrative

It's possible to get help with the individual commands as well:

gatherbrained> help add

Add an entry to the gatherbrained.

gatherbrained will spawn an editor in which to construct a new entry.  Upon exit
of the editor, it will parse the entry and add it to the gatherbrained file.

A typical entry will look something like:

    Under heaven all can see beauty as beauty only because there is ugliness.
    All can know good as good only because there is evil.

    Therefore having and not having arise together;
    Difficult and easy complement each other;
    Long and short contrast each other;
    High and low rest upon each other;
    Voice and sound harmonize each other;
    Front and back follow each other.

    #taoteching #taoism

This entry will appear in searches and narratives for taoteching or taoism.


Maintained. gatherbrained is in active use, but will likely see no further major updates.


The latest documentation is always available at docs.rs.


~63K SLoC