SkillSafe

Short Story Generator

A premise in, a finished original short story out, with the promise, the turn, the payoff and what is left unresolved named.

What this genre and tone change
This run
How it avoids writing one story in many costumes

A short-story generator's characteristic failure is one story in N costumes: the premise changes, the names change, and the machine underneath does not - the same entry angle, the same place for the turn, the same withheld ending, the same narrating temperament whatever was asked for. It is invisible in any single output and obvious across six. The model cannot see its own previous outputs, so it cannot fix this. The page does it instead, before the run is sent.

The coordinate space. Every run draws a position from an explicit space declared in axes.js. Engine axes are what the story is - the pressure, the bind, the cost, the blind spot, the witness - and two stories with the same bind are the same story even when every noun differs, so the bind carries the heaviest weight. Telling axes are how it reaches the page: entry angle, where the turn falls, how it closes, narrative distance, time shape, the carrier, what is left open. Distance is weighted highest there, because two stories told from the same distance sound alike whatever happens in them.

The draw is not random. Each run scores a batch of candidate coordinates against everything already on your screen, per axis and at family level, and keeps the farthest - two options in the same family cost most of what the same option costs, because a deadline and a threshold are both pressures of the clock and a reader experiences them as the same story twice.

Three specific defences. There are no example stories anywhere in the system prompt, because an exemplar is instruction rather than illustration: shapes are described, never demonstrated. Openings are compared at two depths, since a whole-sentence comparison reports variety that is not there and a word-level check misses a frame that persists through completely different words, so each opening is also classified into a frame independently of its vocabulary. And every tone names the one house rule it is entitled to break, with register then verified structurally - mean sentence length, length variance, evaluative-word rate - never by adjective.

What it will and will not write

Fiction handles dark material. Crime, grief, violence, betrayal and cruelty are the substance of literature and are all in scope. The line is register, not subject: a story may put a character in front of something terrible; it may not become a manual for causing it.

Out of scope whatever the framing: reproducing or closely paraphrasing existing published work; fan fiction of characters or settings somebody else owns; real living people as characters; sexual content; anything sexualising a minor; operational detail such as doses, quantities, reagents or step-by-step methods; and identifiable private individuals written to be exposed or humiliated.

How well the browser filter actually works. Three layers, weakest first: a browser-side pattern filter, then the system prompt, then a review of the generated text. The filter exists to save a wasted paid run and to show where the line is, not to be the enforcement point. Measured against a 210-item adversarial corpus written by an independent author who never saw the patterns, it recalls 50.5% of the whole blind corpus and 32.7% of the held-out half, at a 0.0% false-positive rate across 105 legitimate dark-fiction premises. That last number matters most here: a guard that refuses genuine literary work about murder, grief, addiction or war has failed this app's purpose more badly than one that misses an evasion the prompt then catches. The two weakest rules are the two needing knowledge a pattern cannot have - which people are alive, and which characters are owned - and those are carried by the prompt, which understands paraphrase.

What a run costs, and what is free

Writing a story is metered. The figure beside the button is a reserve - the most a run can draw - and you are charged the actual cost, which is usually lower. Prices are shown in US dollars; the platform meters in credits at 10,000 credits to the dollar. The reserve moves with the length you choose, so it is re-quoted whenever you change a setting.

Free, with no account and no charge: the premise scanner, the boundary filter, the bundled example - rendered by exactly the code that renders a paid story, so a broken renderer breaks the example too - every measurement on the results page, and the actions that copy a story to your clipboard or download it as Markdown, plain text or JSON.

Your stories