# MetaPrompt: a tool for telling yourself what to do.

post by abramdemski · 2021-03-16T20:49:19.693Z · LW · GW · 12 comments

## Contents

  The Vision
Three Failures
Success
Making Your Own MetaPrompt with TiddlyWiki
Secure your data with a method of saving.
Install a randomization plugin.
Make Basic MetaPrompt Tiddlers
First Prompt
You can also add some more specific prompts to start things off.

This tiddler is a bit of code which the prompt randomizer needs. It will not work correctly without it. Make sure the title is as above: $:/metap/setcurrentprompt Here's what you need to put into the body: \define weirdaction() <$action-setfield $tiddler="CurrentPrompt" text={{$(currentTiddler)$}} originaltitle="""$(currentTiddler)$""" /> \end <<weirdaction>> ### Random Prompt Call this tiddler "Random Prompt" (or any title you wish, really) and paste the following code into its body: <$button>
<$action-setfield$tiddler="$:/temp/shuffle/randomprompts"$field="state" $value=<<now "0hh:0mm:0ss">>/> Shuffle <$list filter="[tag[prompt]] +[shuffle{$:/temp/shuffle/randomprompts!!state}first[1]]" template="$:/metap/setcurrentprompt" />
</$button> |<$link to={{CurrentPrompt!!originaltitle}} />|
|<$transclude field="text" tiddler="CurrentPrompt" mode="block" />| This tiddler is going to be our workhorse, which we will return to again and again. We don't want to have to search for it. So, you should add this to the list of default prompts which open whenever you open the wiki. You do this by opening a tiddly called "Control Panel" (which you can find via the search bar, or by clicking the gear icon in the sidebar), and under the "info" tab on that tiddler, modify the "default tiddler" field. Mine looks like this: Note that Random Prompt has [[double brackets]] around it. This is because the tiddler name contains a space, so it needs to be given with double brackets. Now everything should be working. You can click the button on Random Prompt to draw a random prompt from your set. Time to get building. ## 5: Set Up a System MetaPrompt is a foundation, but it's not a house. You need to develop your own system of prompts, tags, and so on. This will depend on what you are using MetaPrompt to do. I'll talk about how to set MetaPrompt up for creative writing, since that's what I've done myself. The "prompt" tag adds a tiddly to the list of prompts, so that Random Prompt can find it and shuffle it into the rest. In a similar way, you probably want to create other tags, so that you can randomly draw things from those groups when you want to. I have tags for characters, settings, and many other objects. MetaPrompt can facilitate both top-down and bottom-up writing styles. In top-down, first you come up with a basic story idea, then you flesh out the characters, setting, plot, and so on until you have an outline detailed enough that you can write individual scenes. In bottom-up writing, you just write whatever comes to mind and keep moving forward. I've read that top-down writing is basically a necessity for real authors, because otherwise you get stuck and don't know what to do next. However, I think bottom-up writing is a better place to start for creative writing in MetaPrompt. I've tried both, and bottom-up writing is just a lot easier. It sets my creative wheels spinning, and generates a lot of ideas which can then be developed in a more top-down way. So, I have a tag "snippet". A snippet is a tiddler where I write the creative text in the title, and don't even worry about filling in the body. (This somehow feels psychologically important to me -- if I put the text in the body, I'd have to come up with a title. But titling a little snippet of creative writing puts too much pressure on it, to be something meaningful!) Snippet prompts can be any sort of creative writing prompt, but you're just asking for a sentence or a few. For example: Write a snippet about someone going somewhere. Write a snippet in which someone encounters something. Write a snippet involving sensory descriptions -- sounds, smells, etc. Once you have a tag, you can draw random members, just like Random Prompt draws random prompts. For example, we can write a prompt asking to continue a snippet: Write a snippet inspired by the following snippet: |<$list filter="[tag[snippet]] +[shuffle{$:/temp/shuffle/randomprompts!!state}first[1]]"/>| (If snippets continue each other, you might want to put links to each other in their bodies, or organize them in some other way. I'm not currently doing this, though, because I'm treating snippets as fodder and keeping more organized stuff elsewhere.) I also have a 'character' tag, and prompts which ask me to create or elaborate characters. Similarly for 'setting', 'plot', and a few other things. Here's an example of a prompt which uses characters: Write a scene in which the following two characters interact. Don't forget to tag it 'scene'. |<$list filter="[tag[character]] +[shuffle{$:/temp/shuffle/randomprompts!!state}first[1]]"/>| |<$list filter="[tag[character]] +[shuffle{\$:/temp/shuffle/randomprompts!!state}last[1]]"/>|

Note that I use "last" rather than "first" in the second copy of the randomizer. This ensures that the two characters are different. (There's a more subtle problem with the randomization, above, but I leave it to the reader to discover and fix. I don't want to make this post too complicated.)

I'm sure my setup for creative writing is far from ideal (which is part of why I've only explained little pieces of it). I would be excited if, one day, there's a whole community of MetaPrompt users who talk about their systems, exchange prompts, and so on.

# Limitations / Future Work

1. This falls short of the basic idea of original MetaPrompt: (A) The system doesn't have a text box directly below the prompt, where you submit your answer by hitting enter. Instead you have to create, name, and save a new prompt. This is unnecessary friction. (B) The system doesn't select a new prompt for you as soon as you submit your answer to the previous prompt. You have to click the "shuffle" button again. This is, again, a bit of unnecessary friction. Shaving off these bits of friction would make the system more engaging.
2. TiddlyWiki offers a lot of flexibility and power, but due to #1 above and some other reasons, it's in some ways less fun than my original command-line version. In particular, the fact that everything has to have a title field in addition to its body. I worked around this with "snippets" by only using the title field, but it would be nicer to only worry about text + tag, not text + tag + title. This would generally create better flow.
3. When commanding your future self, it's easy to give yourself a task that's too difficult, which will cause your future self to either click the "shuffle" button again to get something different, or stop using MetaPrompt in frustration. One of my original feature ideas for MetaPrompt was that there would be a "break task into parts" button for the user to hit in such circumstances. This would create a new task for splitting up the task into a list of subtasks (somewhat like factored cognition!), along with a special task for putting the pieces back together once they'd been individually answered. It would be interesting to try and implement something like this (perhaps taking inspiration from tools people have created for facilitating factored cognition).

Some of this could be addressed by hacking TiddlyWiki. I'd love to see people improving the TiddlyWiki version; I think a lot could be possible. On the other hand, TiddlyWiki will always create a certain barrier to entry; it requires figuring out saving, and some scripting to work out stuff like randomization. There's definitely still room to make a more streamlined version of MetaPrompt.

Another thing I'd like to see would be people trying MetaPrompt for something other than creative writing or drawing. Can this apply fruitfully to research? Or other nonfiction intellectual labor? I don't know.

Also note: you can create a perfectly serviceable pen-and-paper MetaPrompt, although it'll be less fully-featured than TiddlyWiki.

• Use index cards, blank playing cards, or similar.
• Rather than using tags to sort objects, you can now keep separate decks for different types of things. When you want a random character, for example, simply shuffle your 'character' deck and pull one out.

I tried this recently and it seemed fine, although I didn't use it for long because TiddlyWiki is just so much more convenient. (However, paper has a big advantage when it comes to drawing, and could even handle painting.)

# Footnotes

## 1:

This is a hyperspace pun. The two hyperspace directions, augmenting 3d-space directions (up, down, north, south, east, and west), have been named ana and kata. I named the prompt file "kata" after WriterKata, so it was only natural to name the response file "ana".

comment by Austin Chen (austin-chen) · 2021-03-17T07:36:57.173Z · LW(p) · GW(p)

I took a couple hours and hacked together a very simple prototype, just to see how MetaPrompt would play out! Try it out here.

Doesn't support multiple users yet, but it wouldn't be that much harder to build out. Here's the rough source code.

(And since your post led to an implementation of MetaPrompt, that would make your post a... MetaMetaPrompt)

comment by MSRayne · 2021-03-18T01:57:17.602Z · LW(p) · GW(p)

This STRONGLY resembles an old idea of mine that I have, naturally, never actually managed to make - it's called Pique, and it would be a collaborative art-making site, where one person can make an outline, another person can fill in some highlights and shadows, another can add details, etc.

In Pique, you randomly get assigned an unfinished picture and you can draw on it whatever you want, making a fork of it, or you can skip it - the more work has already gone into a picture, the more likely it is to show up (because people would skip it if it seemed low quality), until finally some number of people agree that this version of the artwork (there might be MANY branches, of course) is complete, and it gets added to some kind of archive.

Possibly copies of finished images would be sold, the money split between the company running the site and the users who worked on it, in proportion to how much they added to it. This could also be done with writing, though it would be more difficult and probably involve a lot more factored cognition components, but essentially it's a way to crowdsource art.

Like all my ideas (I am walking feature creep) this ended up becoming an idea for a grand unified system of crowdsourced cognition which would ultimately become a hive mind, and so I've never actually had any idea how to make it. But it resembles MetaPrompt fantastically (and the two could perhaps be merged... maybe as part of that grand unified hive mind... :P)

Replies from: abramdemski
comment by abramdemski · 2021-03-18T15:05:12.723Z · LW(p) · GW(p)

this ended up becoming an idea for a grand unified system of crowdsourced cognition which would ultimately become a hive mind,

Yep sounds like the same idea ;p

comment by Austin Chen (austin-chen) · 2021-03-17T02:14:41.353Z · LW(p) · GW(p)

This is really cool! It reminds me a lot of a game we're actually building right now, Storytime. Storytime is a creative-writing game where a group of players are writing a story together, each competing to write the most interesting story continuation in 2 minutes & 280 characters; and you get bonus points for using certain random words, madlib-style.

In Storytime, we have a few default starting prompts (an isekai themed one; a rhyming one; etc) written by hand, One idea we had to increase our pool of prompts was to draw them from responses that our players have created. But maybe an actual meta-prompt, aka having our players explicitly compete to write prompts, would be another way of generating great prompts... Thanks for the idea!

Replies from: abramdemski
comment by abramdemski · 2021-03-17T12:49:38.899Z · LW(p) · GW(p)

Ah, cool game! Are you familiar with the "story games" genre (EG Fiasco, Apocalypse World, Swords Without Master, Ironsworn, A Quiet Year, Dungeon World, Norwegian Style, Microscope, ...)? I have a weekly story game group; maybe we'll try your game out.

Replies from: austin-chen
comment by Austin Chen (austin-chen) · 2021-03-17T17:54:06.949Z · LW(p) · GW(p)

Not super familiar, actually -- we came to this from another direction of gaming (party games, word games like Codenames and Decrypto). Thanks for the recs, though, I'd love to check these out. And definitely LMK if you have any feedback!

comment by AllAmericanBreakfast · 2021-03-17T20:34:34.353Z · LW(p) · GW(p)

I have a Google doc where I write down my business, blog post, and project ideas. I have more than I have time to articulate, and when I get an idea, it just has to come out. So I have to give myself ways to do it where I won't get too perfectionistic, which is why I am trying to shift from writing things into a Google doc rather than into a LW post. I'm also slowly trying to develop some routine formatting processes to help shape the ideas, both so that it's easier to write them and so that I can develop a sort of "brand."

In general, it seems like there's a progression here from the bottleneck being brainstorming, to the idea being prioritization and efficiency. Understanding where your bottleneck is seems like a key piece of self-understanding for productivity purposes.

Replies from: abramdemski
comment by abramdemski · 2021-03-18T15:11:35.171Z · LW(p) · GW(p)

One could totally add prioritization features to MetaPrompt, eg, putting weights on things to determine frequency of sampling, making it easy to update the weight later (eg you can easily lower the weight of things when they show up, to say "I want to see this less often"), adding spaced rep type formulae to dynamically adjust the weights according to some goals, ...

But yeah, by using metaprompt for creative writing I'm implicitly saying I have particular bottlenecks.

Do you have the code for the failed attempts?

Replies from: abramdemski
comment by abramdemski · 2021-03-17T02:35:38.839Z · LW(p) · GW(p)

So, my brother's command line attempt that refused to work for me:

https://github.com/dranorter/metaprompt_command

Of the other two, I can probably get you at least the first one if you want access. It's written in ELM.

Replies from: caleb-sparks
comment by Caleb Sparks (caleb-sparks) · 2021-03-17T15:22:03.644Z · LW(p) · GW(p)

What operating system do you use?

Replies from: abramdemski
comment by abramdemski · 2021-03-17T15:27:40.349Z · LW(p) · GW(p)

Mac. I think my brother was using Linux at the time.