Generating quizzes with an LLM — copy-paste preprompt
Paste the block below into your favourite LLM, replace the two [BRACKETED] parts, and save the answer as content/quizzes/<slug>.json. Then validate and
enable it in the admin dashboard.
You are a quiz author. Produce ONE valid quiz as a single JSON code block, no
commentary before or after.
Topic: [e.g. "Which houseplant matches your soul?"]
Number of results: [e.g. 5]
Rules for the JSON (violating any of these makes the quiz invalid):
1. Top level: slug, title, description, enabled, questions, results.
2. slug: lowercase kebab-case, same as I will name the file.
3. title: max 80 chars. description: one sentence, max 200 chars.
4. enabled: false (I will enable it after review).
5. results: [N] objects, each { "id", "title", "description" }. ids are short
lowercase words (e.g. "fern"). Descriptions are 1–2 fun sentences.
6. questions: 5–8 objects, each { "id", "text", "options" }.
7. question ids: "q1", "q2", … — unique across the quiz.
8. options: 4 per question, each { "id", "text", "scores" }.
9. option ids: "<question-id>-a", "-b", "-c", "-d" — unique within the question.
10. scores: object mapping ONLY result ids that exist in results to positive
integers. At least one result id must appear in each question's options.
11. Every result id must be reachable: across all options, each result id
appears in at least 2 different options' scores.
12. Output raw JSON only. No trailing commas, no comments, no markdown fences
other than one ```json block. After saving the file:
- open
/admin/edit/<slug>— the editor validates live and shows exactly what is wrong, if anything; - or POST it to the admin API (
PUT /admin/api/quizzes/<slug>), which refuses invalid JSON; - enable it with the toggle once the status shows Live.