LOUD OWL
Developers
Loud Owl can play question sets that you write. A set is one small text file. This page says what goes in the file and how to add it to the app. You don’t need to be a programmer, but you do need somewhere on the web to put a file.
How it works
- Write the file. It holds the set’s name and its questions.
- Put the file on a website, so it has a web address.
- Make a QR code of that web address.
- Scan the code in Loud Owl, and add the set to a Library.
Write the file
A question set is a JSON file. JSON is plain text with a few rules:
names and text go in straight double quotes, a list goes in square
brackets, and commas separate the items. Any text editor can write it.
Give the file a name that ends in .json, such as
family-quiz.json.
This is the smallest set the app takes:
{
"name": "Our Family Quiz",
"questions": [
{
"question": "What is the largest planet?",
"answer": "Jupiter"
}
]
}
A set needs a name and at least one question. Each
question needs a question and an answer.
Everything else on this page is optional, so leave out what you don’t
use.
Write each name exactly as it’s shown here, capitals included:
funFact, not funfact. The app skips a name
it doesn’t know and doesn’t warn you.
What a set can have
-
name(required): the set’s name, as your Library shows it. Up to 45 characters fits best. -
questions(required): the list of questions, one or more. The app shuffles them for each round unless the player turns shuffle off. -
description: a sentence or two about the set, up to about 250 characters. -
subjects: a list of the subjects the set is about. The first one gives the set its icon; without one, the set gets an owl. Use these words:animals-nature,science-space,tech-inventions,math-logic,world-places,history-people,books-words,arts-entertainment,sports-games, andeveryday-life. -
minAgeandmaxAge: the youngest and the oldest age the set is written for, as whole numbers from 0 to 99. Give either one, both, or neither. -
locale: the language the set is written in, such as"en-US"or"es-MX". It picks the voice that reads the cards aloud. Without it, the app uses U.S. English. -
createdByNameandcreatedByURL: who made the set, and their web page. Set details shows them as Created by. -
formatVersion: the version of this format, which is1. Leaving it out means 1 too.
What a question can have
-
question(required): the question, shown on the front of the card and read aloud. Up to 180 characters fits best. -
answer(required): the answer, shown when the card flips and read aloud. Short answers work best; 150 characters is plenty. -
funFact: one more fact, shown under the answer and read aloud after it. Up to 200 characters fits best. -
category: a short label on the card, such as"Planets". Up to 24 characters. -
difficulty:"easy","medium", or"hard", and nothing else. When a set has these, players can choose a difficulty before a round. -
deepDive: a longer read that opens from Dive in deeper on the answer. It can have a little formatting.deepDiveTitleis its heading; without one, the answer is the heading. -
references: a list of links shown under Learn more in the Deep Dive. Each one needs atitleand aurl, and can name itssource, such as"NASA". -
id: your own short name for the question. No two questions in a set can share one. Without it, the app makes one up.
Here is a set that uses most of them:
{
"formatVersion": 1,
"name": "Our Solar System",
"description": "Planets, moons, and the Sun.",
"subjects": ["science-space"],
"minAge": 8,
"createdByName": "The Rivera Family",
"questions": [
{
"question": "What is the largest planet?",
"answer": "Jupiter",
"category": "Planets",
"difficulty": "easy",
"funFact": "More than 1,000 Earths could fit inside it.",
"deepDiveTitle": "The giant next door",
"deepDive": "Jupiter is a **gas giant**.\n\n- It has no solid ground\n- It has more than 90 moons",
"references": [
{
"title": "Jupiter",
"source": "NASA",
"url": "https://science.nasa.gov/jupiter/"
}
]
},
{
"question": "Which planet is closest to the Sun?",
"answer": "Mercury",
"category": "Planets",
"difficulty": "easy"
}
]
}
Formatting a Deep Dive
All the text in a set is shown just as you write it, with one
exception: deepDive can use these marks.
## A headingon a line of its own.- A blank line starts a new paragraph.
-
- an itemon each line makes a bulleted list, and1. an itemmakes a numbered one. -
**bold**,*italic*, and[link text](https://example.com).
Nothing else works: no HTML, pictures, or tables. Inside JSON text,
write the end of a line as \n, so a blank line is
\n\n, as in the set above.
Narration and pictures
Without recordings, your device’s built-in voice reads each card. A question can name recordings and pictures of its own:
-
audioURL,answerAudioURL, andfunFactAudioURL: the web addresses of recordings of the question, the answer, and the fun fact. Use MP3 or AAC files with names that end in.mp3or.m4a. -
questionBannerandanswerBanner: a picture across the top of that side of the card, written as{ "url": "https://example.com/moon.jpg" }. Use a JPEG, PNG, or WebP file. A picture 1080 pixels wide and 566 tall fits exactly; other shapes are cropped from the center.
These addresses must start with https://. The app saves
the recordings and pictures when the set is added, so keep each
picture small, about 200 KB or less. The app has nowhere to show a
picture’s credit yet, so use pictures that don’t need one: your own,
or ones in the public domain.
Check the file
The full definition of the format is a JSON Schema at loudowl.app/content/schema/question-set-v1.json. It lists every name a file can use. An editor that reads JSON Schema, such as Visual Studio Code, checks your file as you type when the file names the schema:
{
"$schema": "https://loudowl.app/content/schema/question-set-v1.json",
"name": "Our Family Quiz",
"questions": [
{
"question": "What is the largest planet?",
"answer": "Jupiter"
}
]
}
These are the mistakes we see most:
-
Curly quotes (
“ ”) from a word processor. JSON needs straight ones (" "). - A missing comma between two items, or an extra comma after the last one.
-
A quote mark inside text. Write it as
\", or use curly quotes there. -
A
difficultythat isn’t easy, medium, or hard. -
A recording’s or picture’s address that starts with
http://.
Put the file on a website
The app downloads your file from the web, so the file needs a web address. Two things matter:
-
The address starts with
https://. The app won’t open one that starts withhttp://. - Anyone can open it without signing in, and it leads to the file itself. A sharing link from a cloud drive usually leads to a web page about the file, and that won’t work.
A school’s website, a personal website, or any host that serves files as they are will do. To check, open the address in a web browser: you should see the file’s text and nothing else.
Make a QR code
Make a QR code that holds the file’s web address and nothing more. Any QR code maker will do. Print the code, or show it on another screen.
Scan the code in Loud Owl
- Open Settings and tap Scan QR Code, under Import your own. It’s also at the bottom of Discover, under Bring your own.
- The first time, your iPhone or iPad asks whether Loud Owl may use the camera. Allow it.
- Point the camera at the code. The app downloads the file and shows the set: its name, its description, and its questions.
- Tap Add to Library. The set is ready to play.
- Scanning needs an internet connection. Once the set is in a Library, it plays without one.
- In a child’s profile, Scan QR Code asks for the grown-up’s PIN. A grown-up with children in the family chooses whose Library the set goes to.
- Loud Owl doesn’t review sets from other websites, and the screen says so before you add one.
- A set you scan stays on that iPhone or iPad. To have it on another one, scan the code there too.
- To change a set you’ve already added, change the file, delete the set from your Library, and scan the code again.
If the app can’t open your set
The scan screen says what went wrong, and nothing is added. When the file itself has a mistake, tap Details for set makers to see which one, such as “Question 3 is missing an answer.”
-
That code isn’t for Loud Owl. The code doesn’t hold
a web address that starts with
https://. - We couldn’t reach that set. The iPhone or iPad isn’t online.
- That set isn’t there anymore. There’s no file at that address. Check the address in a browser.
- That set’s website isn’t answering. The website sent back an error. Try again in a little while.
- That code doesn’t open a question set. The address leads to something that isn’t JSON, such as a web page, or the file has a JSON mistake such as a missing comma.
- This set has a mistake in it. The file is JSON, but it breaks one of the rules on this page.
-
This set needs a newer Loud Owl. The file’s
formatVersionis higher than your app reads. Update Loud Owl from the App Store.
Contact us
Stuck on a file? Email support@loudowl.app with the file’s web address and what the scan screen says.