story object modelan open standard

The story context layer for content production.

A layer under the tools you already have, carrying what is true about a story at any moment in time, and over time.

story.context · abridged
{
  "som_version": "1.0.0",
  "message_type": "story.context",
  "payload": {
    "story_id": "story-8f2c",
    "lifecycle": { "phase": "BREAKING" },
    "editorial_gates": [ {
      "gate_type": "CASUALTY_FIGURE",
      "status": "PENDING",
      "assigned_to": "standards_desk"
    } ],
    "assets": [ 3 items ],
    "assertions": [ 2 items ]
  }
}
The problem

Every system in the newsroom holds a fragment of the story, and every fragment is accurate. No system holds the story. The decisions that matter travel by phone, by chat, by a word across the desk. Everything talks. Nothing understands.

The opportunity

Write the story down once, where every tool can read it, and a decision made once is obeyed everywhere and provable afterwards. Buy a tool and one job gets smarter. Build this layer and everything you plug in gets smarter.

The idea

The Story Object Model: an open standard for what a story is, carried on an ordinary publish and subscribe bus. Tools stop talking to each other. They talk to a shared, live description of the story. Nothing sits in charge above them: each tool reads the story and decides for itself.

developed through the IBC Accelerator programme as the project SMART STORIES open specification · version 1.0
som.site / 01the gap

The most important knowledge app in the newsroom is a messaging app.

A hold on a casualty figure, issued in chat; the seen counter is the only record that exists. Two script versions, nobody sure which is current. Chat is where newsroom knowledge is fast. It is not where newsroom knowledge is durable.

And chat is only the visible part. Trace a story from wire to air and every hop between systems is a person carrying it by hand: a rebrief, a phone call, a word across the desk, a note in somebody's head. A human API, copying, pasting and relaying between a growing list of tools. The decisions that shaped the story never reach the tools that act on it, and they do not survive the handoff either: from one shift to the next, from Tuesday to Friday, or when the story comes back three weeks later. People are the glue, and always have been. Now the machines working alongside them are kept in the dark too, and a tool with AI in it cannot act on what it cannot see.

# breaking-output
14 members · 6 online
+11
OE
output editor22:41
Wire is in. Are we running the number?
SD
standards desk22:47
HOLD the casualty figure. Two sources say 40,000, agency says unconfirmed. Do not run until I clear it.
seen by 1
GA
gallery22:48
seen
SO
social22:52
Which version is FINAL_FINAL?
GR
graphics23:04
Sorry, missed this. Strap already went out with the number.
DE
duty editor23:06
Can someone check the website?
A story's path from wire to air: wire, planning, rundown, graphics, web, social, with a person carrying it by hand between every pair of systems

The context was never missing. It is stranded where no system can read it.

som.site / 02the idea

The story carries its own context.

Anyone whose AI became useful the day they managed what it could see already knows the principle: the right context, at the right time. Now scale it to a newsroom. Fifty tools, hundreds of stories, every decision moving by the minute. You cannot hand-feed a building. So the story carries its own context, and publishes it to everything at once.

Tools subscribe to a shared story object over a bus; a rulebook of Skills says what each tool does with it. No orchestrator and no central application: each tool reads the story and decides for itself.

One decision, made once, obeyed everywhere, provable afterwards.

We wrote down the thing that was missing: the story itself, as an object every tool can read. It carries what the newsroom knows: what the story is about, what is decided, what is cleared, what is held. Everything that cares subscribes, reads the story, decides for itself, and what it did goes on the record.

Nothing in the standard is wired to anything else, so change your mind about any tool later and lose nothing. The knowledge lives in the layer, not the tool.

story · asset · tellingwhat a story carries

Story, Asset, Telling.

Defining what a story is, and the decisions that shape it. A story is the real world event: the thing happening out there, to people, in places, across time. It grows, splits and changes direction, and you do not know its shape until it is over. Mapping that onto a schema came down to three words.

story.context

Story

The thing that is happening. What it is about, the sources and how far they are trusted, where it has got to, the time pressure, the premise the newsroom expects, and the claims being made and whether editorial has confirmed them.

assets[]

Asset

What the newsroom gathers and makes to tell it: video, audio, scripts, graphics, transcripts. References only; the media never travels the bus. Each asset carries where it came from, who or what made it, and its evidential standing.

telling.event

Telling

The moment an asset meets an audience: which outlet, which version, who saw it. One story, a pool of assets, any number of tellings. The compliance position belongs to the telling, not to the media, and the human judgement that sits between content and audience has a place in the schema.

We might not usually call it that, but this is how journalists already think. We did not invent this. We just wrote it down.

skill.warning.raisedthe rulebook

SOM carries context. Skills carry knowledge.

Rules written down once, in a place every tool can read. Written by editorial, readable by machines, in the open agentskills.io shape. Skills are passive: a Skill declares what is true, and the tool that owns the executor acts on it. If a rule cannot be evaluated, the output it guards stays held and a person decides.

as your standards desk already writes it
Casualty figures are not broadcast until confirmed by two independent sources, both named, or an official statement. Until then, hold the figure on every output and route to the standards desk.
the same rule, once, for every tool · illustrative
skill: casualty-figure-hold
declares: GATE
scope: story.context.editorial_gates
when: confirming_sources < 2 and no official_statement
then: hold · route: standards_desk
authored_by: standards desk
silence: valid

Same author, same scope, one copy. Nobody translated it into six products, because there is nothing to translate it into. Your policy stays yours, and no vendor needs a copy of it to work for you. Ten Skills are published with the authoring guide. Skills declare. Executors act.

The framework is open. Your workflow is yours.

som.site / 05watch it happen

Two breaking news scenarios. One story bus.

Different stories, different vendors, real production tools, all reading and writing the same story. Nothing in either scenario sends a command to anything.

watch the demos
som.site / 06when the human decided

10:47 at night. Breaking news. The duty editor makes a call: hold the casualty figure.

Today

The decision spreads by hand

  • The rundown gets it. The producer rebriefs graphics; a misunderstanding, and the graphic with the figure goes to air.
  • Web and breaking news both heard from the group chat. One person saw it and one did not. Held on one outlet, not the other.
  • Nobody told the ticker. It is still scrolling the wrong figure sixty minutes later, and by tomorrow the trail is memory.
With SOM

The same editor, the same call, published to the bus

  • She uses the tools she always uses. They write her decision to the story, and every other tool sees it at once.
  • Each tool applies the rules it knows. The clip cannot run, the graphic does not play, the ticker loses the figure. Withheld everywhere, simultaneously.
  • The decision, who made it, why and when are on the record, and so is what every tool did about it. Nobody kept that log.

The human was not replaced. The human was promoted, from carrying the state to making the call.

tams.source + timerangeone new standard, plus smart junctions

It replaces nothing.

Every era needed a new standard. Hardware had GPIs. Software had MOS, designed by engineers from broadcasters and vendors on behalf of their industry, and nobody owns it. Intelligence is the third era, and SOM meets the standards that already do their jobs brilliantly where they are. Your MOS lines stay, with a bridge that makes them smarter. What you built with MCP and agents stays.

TAMS, the BBC R&D Time Addressable Media Store, holds the frames; SOM holds what they mean to the story. At the junction, a hold pins to the exact frames it blocks, a quote knows its own in and out points, and which frames reached which audience becomes a query. Binding happens at the editorial act, never at ingest.

What SOM is not

  • the media
  • the rundown
  • a MAM
  • a product
  • software
  • a replacement for anything you run
  • owned by any vendor

A standard owned by one vendor is a product. A standard owned by an industry is infrastructure.

som.site / 08credits

Built by the industry. Published for the industry.

Argued into shape in the open: two hackathons, a weekly working group, and six months from kickstart to a working bus.

authors

Jon Roberts, Morag McIntosh, Alex Bassett and John Boucklos. Jon Roberts, Morag McIntosh and Alex Bassett conceived the Story Object Model and led the project that developed it, alongside Brian Hopman of AP. John Boucklos co-wrote the specification, led the schema from its first ratified version to 1.0, and built the validators and the repository.

developed through

The IBC Accelerator Media Innovation Programme 2026, as the project SMART STORIES, with fourteen champion organisations and seventeen participants.

14champions, including both global wire services
ITNNBCUniversalAPChannel 4Al JazeeraThe Washington PostITVBBCSkyEBUSMPTEReutersScrippsGC-SC
17participants, on the bus
ShureEVSCuezMoments LabPerspective Media GroupGoogle CloudTrintCognizantAmazon Web ServicesElectric SheepNuvelicsOctopusFonn GroupThe Weather CompanyHyperContent AILiveUVizrt

With BBC R&D on the TAMS junction. Supported by Google Cloud as title sponsor of the Accelerator project; reference bus, dashboard and TAMS store provided by Amazon Web Services; data provided by The Associated Press and The Weather Company.

version 1.0published, not finished

The specification is published, open, and free to implement.

And not just the specification, because a specification on its own is homework. The open register lists what is not yet settled, and the working group is where it changes.

The specificationSeven message families as JSON Schema, each served at its stable URL under storyobjectmodel.com/schema/1.0/. Conformance, compatibility policy, migration note, open register, glossary./schema · /spec
The Skills libraryTen published Skills and one proposed, the authoring guide, the lookup table and the template./skills
Tools and examplesLinter, differ, validator and sequence check, pure Python. Seventeen worked messages, including one story across seven snapshots. And the emulator: a dashboard on a live bus you can run yourself./tools · /examples · /emulator
How it is looked afterOpen and unowned. Governance, contributing and the contributors record. Every change arrives as a pull request, and anyone may open one./GOVERNANCE.md

No fee and nothing to sign. Schemas, examples, tools and skills are licensed Apache 2.0; the specification prose CC BY 4.0. Those licences are the whole of the terms.

som.site / 10get involved

The work continues as an open consortium project.

Read it. Build a basic integration. Tell us what breaks, and what is missing. If you would like to know more, including how you can join, fill in this form.

Get involved.

Tell us who you are and what you want to do: build against it, write Skills, run a Story Archaeology session, join the working group, or just follow the work.

Name, organisation, email, what you are and what you want to do. One consent line: occasional news about SOM, the working group and releases. Nothing else.