The Open Stories format.

Overview

Open Stories

Open Stories is a syndication format for distributing stories to friends and families.

Stories are small pieces of media – such as images and video clips – with a 9:16 aspect ratio.

OpenStories is a superset of JSON Feed version 1.1, that means every valid OpenStories feed is a valid v1.1 JSON Feed.

You can validate a OpenStoriesFeed with its TypeScript definitions in openstories-types.

Clients

  • <open-stories>: A custom element that will display a single OpenStoriesFeed's content.

Example

A minimal OpenStoriesFeed may look like the following; note, specifically the required _open_stories object for each item.

{
  "version": "https://jsonfeed.org/version/1.1",
  "title": "Valid feed",
  "_open_stories": {
    "version": "0.0.8"
  },
  "items": [
    {
      "id": "a1",
      "content_text": "Text",
      "authors": [{"name": "muan"}],
      "_open_stories": {
        "mime_type": "image/jpg",
        "url": "https://example.com/a1.jpg",
        "alt": "Sky"
      }
    },
    {
      "id": "a2",
      "content_text": "Text 2",
      "authors": [{"name": "muan"}],
      "_open_stories": {
        "mime_type": "image/jpg",
        "url": "https://example.com/a2.jpg",
        "alt": "Sky"
      }
    }
  ]
}

An Open Stories feed

Top-level

The top level object of the feed matches that of a JSON Feed with the following additions:

  • _open_stories (required, Open Stories Metadata): The Open Stories Metadata of this feed.
  • items: (required, an array of Open Stories Items): The items of the feed.

Open Stories Metadata

Metadata that identifies an Open Stories feed

  • preview (optional, Preview): Data that helps clients display a preview of the feed while loading its items.
  • version: (required, String): The version of the Open Stories used for this feed. Currently, only 0.0.8 is supported.

Items

Items represent stories in the feed. Items in an Open Stories feed match Items of a JSON Feed with the following additions:

  • _open_stories (required, either Image Story or Video Story): The story this item represents.
  • authors: (optional, an array of Open Stories Authors): The authors that created this item.

Addtionally, authoring software of Open Stories is encouraged to populate the content_html field of the Item with an approximation of the stories contents, e.g. an <img> point at the same url as the Item's _open_stories.url, with an alt attribute matching _open_stories.alt.

<!-- TODO: Example -->

Image Story

Common fields between Image Stories and Video Stories:

  • url: (required, String): The URL of the image. Expected to be in a 9:16 aspect ratio.
  • date_expired (optional, String): The date at which the story did or will expire. Clients are encouraged not to display stories after this date.
  • preview (optional, Preview): Data that helps the client display a preview while this image is loading.
  • reactions (optional, Reactions): Data that describes how clients can react to this image.
  • senstivity_warning (optional, String): If present, clients should display this warning before showing the story to the user.
  • duration_in_seconds (optional, Number): How long the story should be displayed for. Clients are free to adjust this number.
  • mime_type (required, String beginning with image/${string}): the mime-type of the image.
  • alt (required, String): The alt text of the image.
  • caption (optioal, String): The caption of the image.

Fields unique to Image Story:

  • mime_type (required, String beginning with image/${string}): the mime-type of the image.
  • alt (required, String): The alt text of the image.
  • caption (optioal, String): The caption of the image.

Video Story

Common fields between Image Stories and Video Stories:

  • url: (required, String): The URL of the video. Expected to be in a 9:16 aspect ratio.
  • date_expired (optional, String): The date at which the story did or will expire. Clients are encouraged not to display stories after this date.
  • preview (optional, Preview): Data that helps the client display a preview while this video is loading.
  • reactions (optional, Reactions): Data that describes how clients can react to this video.
  • senstivity_warning (optional, String): If present, clients should display this warning before showing the story to the user.
  • duration_in_seconds (optional, Number): How long the story should be displayed for. Clients are free to adjust this number.
  • mime_type (required, String beginning with video/${string}): the mime-type of the video.
  • alt (required, String): The alt text of the video.
  • caption (optioal, String): The caption of the video.

Fields unique to Video Story:

  • mime_type (required, String beginning with image/): the mime-type of the video.
  • webvtt (optional, String beginning with WEBVTT\n): The VTT of the video.

Authors

Authors represent people that created the stories in the feed. Authors in an Open Stories feed match Authors of a JSON Feed with the following additions:

  • name (required, String): Unlike in JSON Feed, name is a required field in Open Stories feeds.

Preview

A Preview is a light-weight representation that allows clients to construct a more pleasant preview image while the actual story is loading.

  • blurhash (optional, String): A blurhash representation of this item, at a 9:16 aspect ratio.
  • color (optional, String): A solid color that can be used as a placeholder to this story.

Reactions

Reactions allow a client to communicate back to the authors of a story.

  • open_heart_urls (optional, String): A Open Heart URL.
You might also like...

Chrome extension to change from 12 hour to 24 hour format.

WhatsappTime Chrome extension to change from 12 hour to 24 hour format. There might be some JavaScript errors thrown, but it seems to be working good

Jun 22, 2022

A command-line tool to convert Project Zomboid map data into Deep Zoom format

A command-line tool to convert Project Zomboid map data into Deep Zoom format

pzmap2dzi pzmap2dzi is a command-line tool running on Windows to convert Project Zomboid map data into Deep Zoom format. Features Supports both python

Dec 31, 2022

🔨 A more engineered, highly customizable, standard output format commitizen adapter.

🔨 A more engineered, highly customizable, standard output format commitizen adapter.

cz-git Github | Installation | Website | 简体中文文档 Introduction A more engineered, highly customizable, standard output format commitizen adapter. What i

Dec 31, 2022

The quickest way to format code!

Only Formats The quickest way to format code! ✨ The live Instance Tech Stack Next.js with TypeScript Chakra UI Prettier to format code Monaco editor f

Nov 29, 2022

A generative engine that takes various png layers on a sprite sheet format, combines them and then converts them into a .gif file

A generative engine that takes various png layers on a sprite sheet format, combines them and then converts them into a .gif file

Welcome to the Generative GIF Engine v2.0.4 🐤 [8 minute read] This python and node app generates layered-based gifs to create NFT gif art! It is fast

Jan 2, 2023

ltp is a parseless copyfree binary encoding format

ltp is a parseless copyfree binary encoding format. This means that you can read a field out of ltp encoded data without

Aug 10, 2022

A generative engine that takes various png layers on a sprite sheet format, combines them and then converts them into a .gif file

A generative engine that takes various png layers on a sprite sheet format, combines them and then converts them into a .gif file

Welcome to the Generative Animated Engine v3.0.1 🐤 [8 minute read] This repo used to be called jalagar/Generative_Gif_Engine but because it now suppo

May 24, 2022

The original SSB feed format, for ssb-db2

ssb-classic This module is a plugin for ssb-db2 which implements the classic SSB feed format. You can use this module as an ssb-db2 plugin, or you can

Jun 18, 2022
Comments
Releases(v0.0.9)
  • v0.0.9(Nov 24, 2022)

    • #3, #4, #5
    • https://github.com/dddddddddzzzz/OpenStories/compare/75000ebe44bd0442c1b7d77edf046d9af3f91922...df83f040933b97d2292ba39f1b64b2e89cfc1eb7
    Source code(tar.gz)
    Source code(zip)
Owner
ddddddddʣzzz
ddddddddʣzzz
An npm package for demonstration purposes using TypeScript to build for both the ECMAScript Module format (i.e. ESM or ES Module) and CommonJS Module format. It can be used in Node.js and browser applications.

An npm package for demonstration purposes using TypeScript to build for both the ECMAScript Module format (i.e. ESM or ES Module) and CommonJS Module format. It can be used in Node.js and browser applications.

Snyk Labs 57 Dec 28, 2022
Simple Rest API to retrieve medium stats of a user's stories.

Advanced Medium API Contents Overview API Details Medium feed in JSON Medium Advanced Data Medium Customized Data Medium Customized Advanced Data Miss

Sathananthan Sabesan 5 Jun 5, 2022
Twine, a tool for telling interactive, nonlinear stories

twinejs by Chris Klimas, Leon Arnott, Daithi O Crualaoich, Ingrid Cheung, Thomas Michael Edwards, Micah Fitch, Juhana Leinonen, Michael Savich, and Ro

Chris Klimas 1.3k Jan 4, 2023
Create beautiful interactive stories using Sutori formtted XML.

Sutori Studio An IDE for creating beautiful interactive stories powered by sutori-js. This project is still in an early state, and has a number of kno

Sutori Project 4 Jul 4, 2022
Small (fragile) script for migrating comments from dev.to posts to Wordpress format (WXR/XML)

dev-to-wxr Small (fragile) script for migrating comments from dev.to posts to Wordpress format (WXR/XML). Useful for importing in tools like disqus. U

Fahad Hossain 2 Jan 29, 2022
Babel-plugin-amd-checker - Module format checking plugin for Babel usable in both Node.js the web browser environments.

babel-plugin-amd-checker A Babel plugin to check the format of your modules when compiling your code using Babel. This plugin allows you to abort the

Ferdinand Prantl 1 Jan 6, 2022
Simple format that serves it's one and only purpose and that's creating simple task list everywhere where you can write plain text

SWTF (Simple Worklog Task Format) Simple format that serves it's one and only purpose and that's creating simple task list everywhere where you can wr

null 4 Apr 4, 2022
TypeScript playground plugin to save on format

TypeScript Playground Plugin TypeScript Playground plugin to save on format Running this plugin Click this link to install or Open up the TypeScript P

Anurag Hazra 8 Apr 11, 2022
A fixed-width file format toolset with streaming support and flexible options.

fixed-width A fixed-width file format toolset with streaming support and flexible options. Features Flexible: lot of options Zero dependencies: small

Evologi Srl 6 Jul 14, 2022
Dynamically resize, format and optimize images based on url modifiers.

Local Image Sharp Dynamically resize, format and optimize images based on url modifiers. Table of Contents ✨ Features ?? Installation ?? Usage Contrib

Strapi Community 30 Nov 29, 2022