Content
Blog posts, news pieces, web pages, help articles and social captions are one set of records here, in the kinds your brand decides it needs. One editor, one set of stages, a findability record on every piece that needs one, and translations linked as siblings rather than filed as strangers. A piece knows the files it uses, the accounts it is meant to reach and what happened when it got there.
Content, close up
What feeds a piece
The piece, and who lets it out
Where it ends up
What is travelling those lines
This is the same map as the one on the front of Solutions, zoomed into one surface. Everything a piece is made of arrives from the left, the piece and the people who move it sit in the middle, and almost nothing on the right happens until somebody in that middle column says so.
What it does
A brand defines what it writes: blog post, news post, web page, help article, help category, whatever the work actually is. Each kind carries its own publishing defaults and hands them to every piece written under it. One brand can have interviews while another has case studies, and both are native.
A long piece gets headings, tables, code blocks, checklists, images, links and a table of contents that keeps up as you write. A social piece gets a plain caption box with a live character count, because that is what a social post is. The writing is stored as a structured document rather than as markup, so it converts into a caption for an account or into markdown for your own site without anybody guessing.
The search title and description, the share title, description and image, the canonical address, the keywords, the crawl directives and the structured-data block sit on the piece, with a preview of how it will read in results and in a shared link, and warnings that turn amber then red as a field gets too long.
A piece is written in one language and joined to the others by a group. Each sibling shows the rest with a click-through, and the language has to be one the brand publishes in, checked against the brand the piece is landing in.
Attachments to accounts are reconciled on save rather than rewritten, so the outcome of a post, its identifier on the network and its likes, comments and shares survive every later edit to the piece.
A person, an agent and a queued job all write the same row. A save carries the version the editor started from, and one that would land on top of somebody else's work stops and shows you the choice instead of quietly winning.
It sorts by the order of the stages rather than by date, so what is nearly out sits where you expect it. Filter by tag, kind, stage, account or scheduled window, sort by any column, and flip priorities and stages in place without opening anything.
The delete only appears once a piece has been marked retired, and then it asks. It is its own permission, it carries the same refusal as a save if your copy is stale, and it takes the findability record, the attachments and the search entry with it. There is no agent tool that can reach it.
The kind is the argument
The reason a brand ends up with one page titled one way and the next page titled the other way around is never a disagreement. It is a handful of people in a handful of tools, each making a small decision that nobody ever wrote down.
A kind is where those decisions get written down once. You define the kinds your brand publishes, each one carries the defaults below, and every new piece of that kind arrives already holding them. Consistency is what happens by default; a deviation is something you did on purpose, on one piece, knowing you did it.
Kinds are defined per brand, so the kinds one brand needs never turn up in the pickers of another.
A default that overrules you is not a default. The limits below are what keep the list above useful.
The defaults are applied to empty fields only. A title you wrote yourself is never quietly replaced by a template, which is the difference between a default and a rule.
The button that rebuilds the findability fields from the kind is offered while the piece is still being created. Once it exists, those fields are yours and stay as you left them.
Your screens refuse to change the kind of a piece that already exists and tell you to write a new one instead, because the address, the defaults and the metadata underneath it were all derived from that kind.
A social kind is installed for you, so a brand can post on day one without configuring anything. It belongs to the platform rather than to you: it does not count against your own allowance and it is not yours to rewrite.
Two languages, two pieces
The usual answer is a field on one record holding a second version of the text, which works until one language needs its own address, its own images, its own stage and its own date. Here a translation is a piece in its own right, with everything a piece has, joined to its siblings by a group they share.
And it has to be one the brand actually publishes in. The check runs against the brand the piece is landing in, so moving a piece between brands cannot strand it in a language that brand does not use.
Siblings share a group key. Open any one of them and you see which languages the piece already exists in and which are missing, each one a click away.
The new piece opens with the same kind, the same slug, the same brand and the same group, and nothing else. The writing, the pictures, the tags and the search fields are yours. Nothing is translated behind your back.
A brand that publishes in a single language never meets any of this. The whole language surface leaves the editor rather than sitting there empty and asking to be understood.
When an article goes to the site your brand runs, its siblings can go in the same push.
Where this sits
A piece is rarely written from nothing, and it never ends on the screen it was written on. Each of these is a surface in its own right, and most of them have a page you can read.
An item that passes your scoring opens as a draft carrying the source name, the source address and the headline, with the original beside you while you write, so the credit is on the record rather than in your memory.
Read NewsThe accounts, the real limits each network enforces, the outcome of every attempt and the counts that come back. The picker on a piece only offers accounts that accept that kind of piece.
Read PublishingGeneration runs on instructions you wrote and can open, with the piece's tags handed over as context so a draft knows its topic.
Read PromptsA brief, a note or an open question can point straight at the draft it is about. Today that link is made from the note rather than from the piece, and once made it works from either side.
Read ArtifactsThe cover and the gallery are real files from the brand library, referenced rather than copied, and the gallery is what actually goes out with a social piece.
Lists, reads, creates and updates pieces, edits a batch in one call, and lays an ordered series onto evenly spaced dates. No publish, no delete.
Read Your agentYours to keep
Every one of these we would choose again.
Sending is its own permission, separate from writing, and no agent has a tool that can do it. An agent can prepare everything and a person lets it out.
Posts go out from accounts you connected, per brand. Nothing is published from an account of ours, and nothing is published on your behalf.
A piece can be pushed into the site you already run. This is where the writing happens, not where your pages are served from, so there is nothing new to keep alive at midnight.
The body is stored as a structured document and converted on the way out, into a plain caption for an account or into markdown for your own site. It is not a format only we can open.
A kind fills the fields you left empty and stops there. A translation is started, not cloned. What is on the piece is what somebody put there.
Marking a piece one thing or another never sends it anywhere. The path that sends does not read the stage at all, which is why moving a card across a board can never post anything.
Questions
Keep reading
Where a finished piece actually goes, and what comes back from each account.
Where a lot of these drafts start their life.
The instructions behind anything that was generated.
What an agent is allowed to do with all of it, and what it is not.
Open the workspace, do one real piece of work in it, and the joins will show you the rest.