Brand kit
The file format the Studio imports.
Updated 2026-10-05
A brand kit is what makes a reel or a carousel built “From an article” yours: your name, your colours, your logo, your voice, and the editorial line you hold. There is one kit per identity — your personal account, and each of your business accounts.
You can fill it in by hand in the app. But an editorial line of two pages is not something you paste into a phone field: a kit can also be prepared on a computer as a single JSON file, then imported. This page describes that file.
Importing a kit
In the app: new post → Studio → From an article → Brand kit → Import a kit, then pick the .json file (from Files, iCloud Drive, AirDrop…). Check the result, then tap Done — nothing is saved before that.
- The kit lands on the identity you are currently publishing as. Switch identity first to fill a business account's kit.
- It stays on the device. A kit is never sent to Mishkan and is not synchronised between your devices: import the file on each of them.
- Importing a file is available on iPhone for now. On Android, the kit is filled in by hand.
The file
One JSON object, UTF-8, with the extension .json. Every field is optional: what the file does not say is left as it is. A file holding only the line does not touch the colours.
{
"line": "We write for parents of the community: concrete, warm, never alarmist."
}Unknown fields are ignored. A field of the wrong type (a number where text is expected, a gradient that is not a list) makes the whole file unreadable — the app says so and changes nothing.
Brand
| Field | Type | Meaning |
|---|---|---|
| wordmark | string | the name set on the visuals |
| handle | string | the account, recalled on the last slide (@…) |
| ink | string | the ink: the dark veil under the text, #rrggbb. Default #0b0b0b |
| accent | string | the warm colour, in small touches — the word being spoken, the rules. Default #f2c14e |
| gradient | string[3] | the slides' background, from lightest to darkest. Exactly three colours, otherwise ignored |
Editorial line
| Field | Type | Meaning |
|---|---|---|
| language | string | fr | en | he — the language you publish in. Any other value is ignored |
| line | string | the editorial line, free text: who speaks, to whom, with what outlook. Empty: a neutral line |
| registers | string | the registers to rotate from one publication to the next (society, culture…) |
| cta | string | the carousel's last line: where to read the rest |
| searches | object[] | saved searches: { "query", "edition" }. edition is the Google News edition, fr | en | he; absent, the kit's language |
The line is your instruction to the model, in your own words, and it can be as long as it needs to be. The format rules and the factual safeguards (accuracy, source always shown, no hatred) are added on top of it in every case: a kit cannot switch them off.
Searches are added, never replaced: importing a kit does not erase those you saved by hand, and a search already present is not duplicated.
Illustrations and voice
| Field | Type | Meaning |
|---|---|---|
| artStyle | string | how to draw the illustrations. Empty: a screen-printed poster in your colours |
| imageModel | string | google/<model id> or openai/<model id>, e.g. openai/gpt-image-1. Empty string: back to automatic |
| voiceID | string | the ElevenLabs voice id of the account |
These fields only name a choice: the work is done with YOUR keys, kept on the device. A model your key has no access to falls back to the automatic choice; without an image key the slides use your brand cards, and without an ElevenLabs key the reel is silent and subtitled.
Logo, font, music
The three files travel inside the JSON, each as an object carrying its bytes in base64:
{ "name": "Kontora-Bold", "mime": "font/otf", "data": "<base64>" }| Field | Type | Meaning |
|---|---|---|
| name | string | optional. The font's family name, or the title shown for the music |
| mime | string | required. The MIME type of the file |
| data | string | required. The bytes, in standard base64, on one line. Empty: the file is ignored |
| Field | Type | Meaning |
|---|---|---|
| logo | file | image/png (transparent, preferably) or image/svg+xml. Drawn as is, at the size the layout needs |
| font | file | the titles' font: font/otf, font/ttf, font/woff or font/woff2. Absent: the system font |
| music | file | audio/mpeg (mp3), audio/wav or audio/mp4 (m4a). Looped and mixed under the voice |
An imported logo, font or music replaces the one in place. Only use a font and a piece of music you have the right to publish.
What a file never touches
- The account's memory — what it has already produced, recalled to the model so that it repeats neither a subject nor an angle. It tells what THIS phone published, not what a file claims.
- Your keys (Anthropic, OpenAI, Google AI Studio, ElevenLabs). A kit file contains no secret and can be passed from one person to another.
- The kits of your other identities.
A complete example
{
"wordmark": "Beit Yaakov",
"handle": "@beityaakov",
"ink": "#0b0b0b",
"accent": "#f2c14e",
"gradient": ["#5b5b5b", "#333333", "#141414"],
"language": "fr",
"line": "Qui parle, à qui, avec quel regard…",
"registers": "vie de la communauté, fêtes, étude, entraide",
"cta": "La suite sur beityaakov.example",
"artStyle": "flat screen-printed poster, thick grain, two inks",
"imageModel": "google/gemini-3.1-flash-image",
"voiceID": "<ElevenLabs voice id>",
"searches": [
{ "query": "communauté juive Lyon", "edition": "fr" },
{ "query": "site:timesofisrael.com education", "edition": "en" }
],
"logo": { "mime": "image/png", "data": "<base64>" },
"font": { "name": "Kontora-Bold", "mime": "font/otf", "data": "<base64>" },
"music": { "name": "Morning theme", "mime": "audio/mpeg", "data": "<base64>" }
}To build the file from a folder, with jq:
jq -n \
--arg line "$(cat line.txt)" \
--arg logo "$(base64 < logo.png | tr -d '\n')" \
--arg font "$(base64 < Title.otf | tr -d '\n')" \
--arg music "$(base64 < theme.mp3 | tr -d '\n')" \
'{
wordmark: "Beit Yaakov",
accent: "#f2c14e",
line: $line,
logo: { mime: "image/png", data: $logo },
font: { name: "Title", mime: "font/otf", data: $font },
music: { name: "Theme", mime: "audio/mpeg", data: $music }
}' > kit.json