Docs / Content / Content library
Content library and brand voice
The Content library is where you keep the documents a draft should stand on — pricing sheets, product docs, brand guides, case studies — so drafts use your facts and sound like you. It is searched, not read: each document is split into sections when you upload it, and a draft receives the few sections that match what it is writing about. This guide covers uploading, what each status means, how those sections are chosen, and how to write your brand voice.
1 · What the library is for
Content Studio can ground a draft in three kinds of material: documents you attach to a single piece, live web research, and the library. The library is the one that persists — you upload once, and every future piece can be written from it without re-uploading or paying for research.
- It exists before any article does. You can fill the library from
/content-librarywithout opening a draft, which is the point: the account's own product facts become the standing basis for the pieces the agent writes. - Scope is explicit. A document belongs to one brand, or is shared across every brand on the account. "No brand chosen" is never accepted silently — a missing choice would make one brand's file ground every brand.
- A document is identified by its content. Re-uploading the same file under a second name returns the existing row instead of a duplicate.
2 · Upload a document
Open Content library (sidebar) and pick the brand in the toolbar. Tick Share with every brand on this account if the document is account-wide instead.
Click Upload documents. You can select several files at once; each is uploaded and reported separately.
Read the row. A readable document shows a Ready chip; a refused one shows Failed to read with the reason and a Retry action. Nothing is silently dropped.
| Rule | Value | Why |
|---|---|---|
| Formats | PDF (text layer), TXT, MD / Markdown, CSV | Text formats must be valid UTF-8. A Windows-1252 CSV is refused with a message telling you to re-save as UTF-8 — silently "decoding" it is what used to store mojibake. |
| Word documents | Not supported | There is no Word extractor, so a .docx is refused rather than read as garbage. Export to PDF or text first. |
| Size | 2 MB per file | Enforced on both upload paths. A larger file is a bad request, not a stored row. |
| Extracted text | Up to 100,000 characters | A longer document is stored truncated, not rejected. |
| Scanned PDFs | Refused | No text layer means nothing to read; OCR is not built in. The reason says so and suggests exporting text or adding the page as a URL. |
3 · What the status means
| Status | What it means | What you can do |
|---|---|---|
| Ready | The file was stored and its text extracted. Sections may still be produced on first use. | Use it as grounding, set its type, rename it, remove it. |
| Reading… | Extraction is in flight. You will normally only see this if the request was interrupted. | Wait, or reload the list. |
| Failed to read | The extractor refused the file. The row carries its own sentence, verbatim — the real reason, not a generic error. | Retry with a different file. A failed row cannot be used as grounding, so it offers no auto-grounding toggle. |
4 · Document types
Each row carries a type — Blog post, Case study, Brand guide, Product docs or Other — chosen by you from the row's dropdown. It describes what the file is. It is deliberately not the same as the source kind the platform derives (where a claim came from, such as first-party or academic), and editing one never changes the other. Renaming a document leaves its type untouched.
5 · Open a document
Clicking a document's name (or Preview) opens the detail panel. Its address is part of the URL — /content-library, with ?id= naming the document and ?chunk= naming the section — so a link can be bookmarked, pasted, or pointed at a specific section.
- What we extracted — the first 1,500 characters of the stored text, exactly as extracted and deliberately not "cleaned". If the parse mangled something, this is where you see it. When the preview is capped, the panel states both numbers.
- Sections — every section the document was split into, with its heading trail and size.
?chunk=3scrolls to and highlights section 3, which is how a draft's source link opens the passage it came from. - "No section headings detected" is normal for PDFs. Recognising a heading needs a blank line after the title, and PDF extraction does not produce one. The text is still split into sections and is still searchable — those sections just have no names to show.
6 · How a draft uses the library — and what "N of M characters used" means
When a draft is generated, the platform searches the library for the sections that match the piece's topic and injects those sections. It does not read the document from the top.
| Rule | Value |
|---|---|
| Unit of grounding | A section of at most 1,800 characters — small enough that it is never cut short on the way into the prompt |
| Sections per document | At most 2, so one long file cannot crowd out the rest of your library |
| Total per draft | A character budget (about 2,500 tokens by default); the agent's own budget is configurable |
| Small libraries | Under roughly 48,000 characters the whole library is used in reading order — ranking could only remove good context |
| Opting out | A document switched off for Grounds new pieces is never used automatically (it can still be attached by hand) |
"2,400 of 42,000 characters used"
The number on a row answers one question: how much of this document can reach a draft? Each source that enters a prompt is capped at 2,000 characters as a safety limit, so a 42,000-character document shows the smaller figure next to its real size. It is not a claim that the whole document is used, and it is not a count of sections — the sections are what retrieval selects from. When the two numbers are equal, only one is shown.
7 · Write the brand voice
The brand voice is found on the Brand settings page (/brand-settings, account menu), next to the rest of the brand's configuration — not on the library page. It has four parts, all optional:
| Field | What it does |
|---|---|
| Style guide | Your voice in your own words — tone, vocabulary, formality. Capped at 2,000 characters |
| Audience | Who the pieces are written for |
| Do / Don't | Rules the draft must follow. The "Don't" list is also what the voice check scans the finished draft for |
| Examples | Short passages of your own published prose, stored as text (not links), so deleting a document cannot break the profile |
| House anti-AI-tells | On by default: removes em-dash tics, "Not X, Y" constructions and robotic transitions. Switch it off if your brand uses those deliberately — the editor is then told to preserve your punctuation |
Draft my voice from the library writes a first version from a small sample of your own documents (one model call). If you have edited the voice by hand, it asks for confirmation before replacing your wording and changes nothing if you decline.
8 · What the agent uses when nobody is there
Agent-created drafts (approved suggestions, the autopilot loop, the public API) read defaults from the same brand settings:
| Default | Options | Built-in default |
|---|---|---|
| Voice | On/off, plus an optional writing preset | On, no preset |
| Library scope | Search the whole library · only chosen documents · off | Whole library (documents with auto-grounding on) |
| Source budget | 1,000–5,000 tokens | 2,500 tokens |
| When nothing matches | Skip and tell you · draft anyway, flagged ungrounded | Skip |
"Skip" means exactly that: the draft is not written, nothing advances, and the reason is recorded — the agent tells you the library has no answer to the topic yet instead of writing from nothing or quietly falling back to something else.
9 · What this costs
- Uploading and retrieving cost no credits. Searching the library is a database query, not a model call.
- A skipped agent draft costs nothing, because no draft is generated.
- Generating the draft does — that is the normal Content Studio generation charge, unchanged by this feature.
- "Draft my voice from the library" is one model call, made only when you press it.
