# Poetry Generator > A poem generator for named verse forms - sonnet, villanelle, ballad stanza, > blank verse, free verse, ghazal, limerick - that checks the form it claims > rather than asserting it. https://poetry-generator.skillsafe.ai/ ## What it is You give it a subject, a mood and a form. It writes an original poem in that form and shows the structure: the rhyme scheme, the syllable count per line, the metre, and where the turn or the refrain falls. The part worth knowing about is the scanner. It runs entirely in the browser, needs no account and costs nothing, and it runs on two things: any poem you paste in, and every poem the model writes. The model's own claims about its output - "this is a sonnet", "the scheme is ABABCDCDEFEFGG", "the turn is at line 9" - are reconciled against what the scanner actually finds, and disagreements are shown on the page as findings. An app that takes a model's word for its own form has failed at the one thing it exists to do. ## What is genuinely checkable, and what is not This is the substance, and it is worth quoting accurately because most tools in this category quietly overclaim. **Counting is reliable.** Line count, stanza shape, and which lines repeat are simply counted. Syllables come from a curated word list of about 1,200 entries plus rules over vowel groups. The words English genuinely says two ways - fire, flower, hour, every, heaven, quiet, poem - are never given a single number; the line is reported as a RANGE, and a poem that meets its form on only one of those readings is labelled as meeting it on only one reading. **Rhyme needs pronunciation, not spelling.** Love and move do not rhyme. Cough, bough, though, through and tough are five sounds in one spelling. So rhyme here is decided from a curated table of 172 rhyme families covering about 1,497 words, plus suffix rules, plus an explicit refusal list of endings whose pronunciation spelling does not settle. When a word is not in the table and its ending is on that list, the app returns "could not check" - a third verdict kept separate from "rhymes" and "does not rhyme", and rendered as its own badge. Measured: on the words in its own table, the spelling rules alone never contradict the curated pronunciation. On a held-out set of 62 pairs the table had never seen, it answered 38 and refused 24, and none of the 38 answers was wrong in either direction. The refusals are the price of that and they are deliberate. **Metre is stress, and stress is the hardest of the three.** Iambic pentameter is not ten syllables; it is a pattern of alternating stress across them. A word of two or more syllables has its stress fixed by the dictionary, so it is evidence. A ONE-SYLLABLE WORD IS NOT: English assigns monosyllabic stress from the sentence and the metre, which is why "the cat sat on the mat" reads as an iambic line and also as a trochaic one. So monosyllables are excluded from the metre score entirely - not counted as agreeing, not counted as disagreeing - and metre is reported as a fraction: how many fixed-stress positions agreed, out of how many there were. A line built entirely of short words reports that its length is right and its stress could not be checked. That is the scanner declining to score its own guess, which is the correct behaviour and not a limitation to be fixed. Two licensed substitutions are allowed before a position counts as a conflict: an inverted first foot and a feminine ending. A stressed syllable in a weak position is a conflict; an unstressed syllable in a strong position is recorded separately, because a pyrrhic foot is a substitution rather than a fault. The stress table is cross-checked against the syllable counter when it loads: any word where the two modules disagree about the number of syllables is used by neither, because a pattern of the wrong length would silently shift every later syllable in the line. ## Forms - sonnet - 14 lines, iambic pentameter, a turn. Shakespearean, Petrarchan and Spenserian schemes are all recognised and the closest one is named. - villanelle - 19 lines, five tercets and a quatrain, two rhymes, refrains at lines 1/6/12/18 and 3/9/15/19. A refrain that returns changed is flagged as a note rather than a failure, because varying a refrain is a real tradition. - ballad stanza - quatrains alternating four and three beats, rhyming the second and fourth. Judged as a syllable range, because ballad metre is accentual. - blank verse - unrhymed iambic pentameter. Here rhyme is the fault, and the scanner reports any line endings that do rhyme. - free verse - nothing is required; the scan reports what the poem does. - ghazal - couplets with a repeated closing phrase (radif) and a rhyme before it. The radif is derived from the poem's own line endings, then checked to hold. - limerick - five lines, AABBA, three beats then two. ## Originality Every poem is written for the request. The system prompt forbids reproducing an existing poem, quoting one at length, or presenting a known work as generated output, and asks the model to offer an original poem instead if that is what is requested. ## Using it from code Full HTTP reference: https://poetry-generator.skillsafe.ai/api.html The API returns the model's claims. The scanner does not run server-side - it is in prosody.js and forms.js on the page, plain JavaScript with no dependencies and no network calls. If you want the checking, take those two files. One API note that has cost people real time: /estimate performs no validation of the request body. A bare string, null and [] all return ok:true with a correct model binding and the same hold as a well-formed object. A successful estimate therefore tells you nothing about whether your input was shaped correctly. Validate before you send. ## Pricing The scanner is free and needs no account. Writing a poem is metered and needs a SkillSafe account; the page shows the credit hold before you run and charges only for what the run uses.