Metadata evolution

I thought I’d post this publicly so that others could comment, but I originally wrote it in a private message to Jeff.

I love the idea of what metadata can do, and what I would like to see is the following:

  • Instead of having a limited number of special metadata fields that can be referred to by tags - eg: <$projecttitle> and <$fullname> - which will be replaced during compile with the value of those tags
  • Make ALL custom metadata tags have this capacity
  • ALSO allow their scope to be limited to various sections of the project
  • So IF I were to create a metadata tag called <$protagonist>, I can give that tag a value in 1 location - eg: outside the draft folder, I could create a folder called “metadata tag values”, inside which is a document called “character metadata”, and I could then create a file of various metadata tags on a per character basis
  • THEN when writing, I could start typing a tag, have the software suggest autocompletions as I type, according to stored metadata that matches the pattern so far, and so if I start typing <?prot - I would then get <?protagonist> as a possible tag to complete …
  • AND IF I THEN select that tag, it will insert the value of that tag into the text, and keep it linked to the source
  • THEREFORE IF I later decide to change the name of the protagonist, I can change it in one location, and have that change flow through the entire document … OR if I change the actor playing a particular part, this change can again flow through the entire document, by selecting an associated tag like <?prot-actor>
  • IN THE SAME WAY - I could also create tags like <$series_name> <$book_name>, and use them in page header/footer formatting, so that each page of a book might be topped with the name of the series, and the name of the book within the series … that kind of thing
  • … the point being, it adds a lot more power to the usage of metadata, by allowing all custom metadata to have a tag of the same name for text replacement in any document in the project, or in any document formatting for compilation
  • When I create a metadata tag, I could perhaps also attach it to a particular section of the book, such that unless the value is overwritten in a subsection, all child folders and items would hold the same value … and this in turn allows for even better formatting capabilities.

Extra note:

This would be really valuable if a character for example is referred to by different names according to whom they’re interacting with in a story - ie: they may have a name, a public nickname, a private ( relationship exclusive ) nickname, an alias, and so on … and all such things can be incorporated into metadata values, which can be changed in a single location, then flow through the entire project if changed, so long as you use the metadata tags for them.

You can already do project-wide metadata substitutions during compile using the “Replacements” section. Just set it to replace <$protagonist> with “Miriam”, and you’re done.

For per-document metadata replacements, you can also do that with the <$custom:> tag. Ex: If you have a PoV custom metadata field, <$custom:PoV> will be replaced with that document’s custom meta-data “PoV” value.

I understand that this is meant to help you, as the author, to remember which names you chose and to be consistent. But if you, being the author of it all, can’t remember e.g. the names of your characters without using special meta tags, how do you expect the reader to be able to follow your story and understand who is who?

I have lately read books in which the author introduced anwhole bunch of characters, alternative names, parallell timelines, alternating POVs, etc, maybe using the fantastic abilities of Scrivener. Common for the books was that as a reader you quickly get lost because it is impossible to remember and understand all of that, without the help of something like Scrivener.

You have entirely missed the point … it’s not about remembering what I have called characters, and had you properly read or contemplated what I wrote for even half a second, you’d know that … it was about ( to repeat the bleeding obvious ) automating a task that could be laborious, because there’s no way to remember every single time and on which pages you’ve used which references to the same object … and to predict your next response, yes I could use “find and replace”, but this does not also come with the bonus of being able to associate other things with that metadata item.

Is what you’re talking about here only in the Mac version? I couldn’t see it in the windows version.

The “replacements” technique can be done in version 1 of Scrivener for Windows. When you start a compile, the window that pops up has a “Replacements” section, where you can add project-wide replacements using whatever place holders you want. I suggest using the “Project Replacements” tab within the Replacements section, as that will stick with your project and will not be wiped out if you select a different “Format As:” compile preset from the drop-down.

As far as the per-document <$custom:PoV> Custom Metadata tags are concerned, I believe that’s only available in version 3. Unfortunately, they’re not done implementing compile features in the v3 beta for Windows, but hopefully in the next couple of months, they’ll have something to experiment with.

I knew about Scrivener’s replacement capability, but had never really thought through the implications until reading rdale’s feedback to the OP. Very cool.

So, galacticpresident, thank you for making the metadata suggestion, and rdale, thank you for enlightening me!


GA, While it may all be ‘bleeding obvious’ to you, not necessarily to everyone else. I have to confess to needing a re-read. Perhaps a polite additional explanation rather than a put-down might encourage discussion.