Tana Paste

Tana Paste is a way of generating rich Tana structures like fields, tags, dates, checkboxes etc, through a simple plain text paste. It is a bit slow, and not designed for inputting large amounts of information. In the future, Tana will offer proper plugin support. See video intro: https://www.loom.com/share/6fd81ff1ab364acf9f448ffdedfeb57f.

A Tana Paste is a plain text paste that begins with the string '%%tana%%'. The easiest way to put this on the clipboard on a Mac is to cat a text file or run a command and pipe to pbcopy, for example `node github.mjs myrepo | pbcopy`. With your cursor on the block where you want the contents inserted, simply paste, and it will be transformed into Tana data structures and inserted.

The syntax is loosely modeled on Markdown and Roam. Nodes are prepended by '- ', and indentation indicates children.

Links use [[]]. This will look for a node in the Library of the current workspace matching that name. If none exists, a new node will be created and linked to. Multiple links with the same string will always point at the same node. You can also specify a node target using [[link name^uid]]. If the uid does not exist, it will fall back to using the link name. If you only supply a uid, and it does not exist, it will create a link to "undefined", which you can later rename.

Fields use :: between the field name and the value. Fields will look up by string, but if they are nested underneath a supertag which has any fields with that name, will prefer the field from the supertag definition. Like for links, you can specify a specific field using uid, like URL^uid:: value, which will also fall back to the string value, or an undefined field if no string name has been provided.

Tags use #, and multi-word tag names can optionally be wrapped in [[]], so either #bug or #[[my ideas]]. If no tag exists, a new one will be created. If you want to specify a specific tag, use ^ (#bug^uid). It will fall back to the string name, and if no string is provided and the uid doesn't match, the tag will not be created.

Fields with multiple values can be specified through a field name:: and then the values nested indented underneath

Nodes consisting only of a single link, with no children, will be converted to references. To keep these as inline references, you can add a - directly after the link (for example [[Thoughts]]- ).

Images use the syntax ![](https://image.url)

Formatting: **bold** ^^highlighted^^ __italic__

Checkboxes use [ ] and [x] at the beginning of a node to indicate checked or unchecked. For fields/nodes which already have a checkbox, providing the [ ] will not change anything, but for other nodes/fields it will insert a checkbox. In all cases, [x] will correctly set the checkbox as checked.

You can find examples of scripts that output text in the Tana Paste format here https://github.com/tanainc/tana-paste-examples