JanusNode Reborn

Generate useful nonsense.

Choose a script, set the number of lines, and sift for gold.

The original JanusNode icon: a glowing figure with two raised hands.

Old icon, new machinery

Rule-based nonsense, rebuilt around the one part that mattered.

This page keeps the old JanusNode center of gravity: named rules, reusable word lists, weighted choices, and a few handy text transforms. No Markov machinery. No side systems. Just TextDNA's useful core in a cleaner browser-native form.

Outputs

Last seed: - ยท Lines: 0

Generate something.

Selected

Saved lines: 0

Save promising lines here.

JanusNode Notes

Script

Use !start:, rule: blocks, {rule}, and pipelines like {noun|a}.

Mini DSL

  • !start: poem picks the entry rule. Omit it and the app uses start.
  • rule: starts a block. Every following non-empty line becomes one weighted option.
  • Hello {noun} expands another rule. Script rules can override built-in library rules.
  • {noun -> hero} stores a generated value, and {hero} reuses it later in the same output.
  • {set(hero, noun)} stores a value without printing anything, so you can initialize variables before the visible line.
  • {repeat(adjective, 1, 3)} rerolls a source 1 to 3 times. Add a separator with {repeat(noun, 2, 4, ", ")}.
  • {number(3, 180)} prints a random whole number in that range.
  • {space(8)} and {tab(2)} insert protected runs of spaces or tabs.
  • {adjective|maybe}, {verb|ed}, {noun|plural}, {artifact|a}, {phrase|title}, {phrase|cap:all}, {name|cap} apply transforms.
  • :: 3 at the end of a line makes that option three times as likely as a plain line.
  • \n inserts a line break. Comments begin with #.

Built-in Lexicon