Skip to content

A universal digital creative specification via json-schema

Notifications You must be signed in to change notification settings

broadstreetads/creative.json

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

creative.json

A standard for rich creative definitions.

Overview

The goal of this project is to create a standard for defining rich media objects including, but not limited to, digital ad creatives. The reasons that a universal standard may be desirable include:

  • Simplified, manual or automated exachange of creatives between agencies and digital platforms. Eg, answer "what are the specs?" for both people and machines.
  • Defined creative properties, or viewed from another angle, inputs, which allow manual or automatic reconfiguration of a creative's properties, perhaps machine learning or artificial intellligence. For example, a product ad could be dynamically reconfigured to display different products depending on any number of contextual hints or user traits. Platforms today achieve this through closed, clumsy, and proprietary means.
  • The ability to validate and verify limits on a creative's final file size, perhaps ameliorating one of several the major concerns of digital ad industry critics.

Thoughts on Separation of Concerns

Delivery of rich creatives can be divided into several major components

  • Delivery (Adserver or CDN)
  • Creative Compilation / Configuration
  • Reporting / Analytics

Broadstreet attempted all three. Paper G / Thunder attempted creative compilation AND reporting. Of course, they're criticised for reporting that can't be customized.

Creatives must eventually allow pluggability. How far this system goes toward pluggability requires thought, but:

  • Delivery mechanism should be pluggable (maybe simple CDN delivery?)
  • Reporting / analytics mechanism should be pluggable

Offload all non-core and risk/time-suck/cost-creating requirements to third parties who want to play that game. Make formats as pluggable as possible.

Usage

creative

Validate and compile creatives defined in JSON

Example

> const creative = require('creative-json')

> let impl = JSON.parse(fs.readFileSync('sample-creatives/simple.json' ,'utf-8'))
> creative.validate(impl)
true

> creative.validateFile('sample-creatives/simple.json')
true

> creative.validateRemote('https://parkavegarage.com/some-valid-creative.json', function (err, valid) {
 if (!err && valid)
     console.log (valid)
 else
     console.log (`Error: ${err}`)
})
true

> const inputs = { name: 'Broadstreet Ads' }
> const impl = JSON.parse(fs.readFileSync('sample-creatives/simple.json' ,'utf-8'))
> creative.compile(impl, inputs)
<style>/* CSS: Broadstreet Ads *\/</style><div><!-- HTML:Broadstreet Ads --></div><script>// JS:Broadstreet Ads</script>

creative~validate(creative) ⇒ boolean

Validate a creative implementation against the creative.json schema

Kind: inner method of creative

Param Type Description
creative creative The input creative object

creative~validateFile(file) ⇒ boolean

Validate a creative stored in a file and specified via creation.json format

Kind: inner method of creative

Param Type Description
file string The path to the creative file

creative~validateRemote(url, cb)

Validate a remote creative specified via creative.json format

Kind: inner method of creative

Param Type Description
url string A URL to a creative specified in creative.json format
cb function A callback (err, result:boolean)

creative~compile(creative, inputs) ⇒ string

Compile a creative to HTML given inputs

Kind: inner method of creative
Returns: string - - HTML

Param Type Description
creative creative the creative
inputs inputs the input hash

creative~getTemplate() ⇒ object

Get a minimally valid creative. Useful as a template for new creatives

Kind: inner method of creative

Schema Definition

%%schema%%

Interesting

Article, comments are good too: https://adexchanger.com/data-driven-thinking/everyone-trying-kill-rich-media/ https://www.makethunder.com/about


© 2018 Broadstreet Ads <[email protected]>.

About

A universal digital creative specification via json-schema

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published