Social and Content

News Article

/extract/json

Structured news article for LLM pipelines and media monitoring.

Download the schemasocial-content/news-article.json

news-article.schema

// names marked ? are optional

headline:string// Main headline of the article.
subheadline?:string// Secondary headline or deck of the article.
author_name?:string// Name of the article's author.
author_url?:string// URL to the author's profile or bio page.
publication_name:string// Name of the publication or outlet.
publication_domain?:string// Domain of the publication (e.g., 'techcrunch.com').
published_at:string// ISO 8601 datetime when the article was first published.
updated_at?:string// ISO 8601 datetime when the article was last updated.
article_url:string// Direct URL to the article.
canonical_url?:string// Canonical URL as declared by the article page.
body_text?:string// Full body text of the article.
summary?:string// Short summary or abstract of the article.
word_count?:number// Approximate word count of the article body.
language?:string// BCP-47 language code of the article (e.g., 'en').
section?:string// Publication section or category the article appears in.
tags?:string[]// List of tags or topic labels applied to the article.
entities_mentioned?:object[]// Named entities mentioned in the article.
name:string// Name of the entity.
type:string// Category of the entity. One of: company, person, product, location, other.
url?:string// Optional URL associated with the entity.
sentiment?:string// Overall sentiment of the article. One of: positive, negative, neutral, other.
paywall?:boolean// Whether the article is behind a paywall.
image_url?:string// URL to the article's featured image.
page_title?:string// Title of the source page. Tabstack auto-fills this from page metadata when left empty.
favicon?:string// Favicon URL of the source page. Tabstack auto-fills this from page metadata when left empty.

Try it live

A sample News Article document, generated from the schema. Edit it, or paste a real response, and see it checked against the schema instantly. It runs in your browser, nothing is sent anywhere.

your-output.json
validation

Valid, matches News Article

Every required field is present and each value matches its type. Extra fields are allowed. A field the page does not carry is not guaranteed to come back as null, so check values rather than only checking for null.

/extract/json

Copy-paste usage

The same call in TypeScript, Python, and curl. Point it at your own URL and go. The schema drives the response, so you get back the fields you asked for instead of a page to parse.

Features

  • Typed TypeScript and Python SDKs
  • One call, no parsing code and no second LLM pass
  • The same field names on every request, even when the page layout changes
news-article.ts
// curl -sfLO https://raw.githubusercontent.com/Mozilla-Ocho/tabstack-schemas/main/social-content/news-article.json
import Tabstack from '@tabstack/sdk'
import schema from './news-article.json' with { type: 'json' }

const client = new Tabstack() // reads TABSTACK_API_KEY from the environment

try {
  const data = await client.extract.json({
    url: 'https://example.com/article',
    json_schema: schema,
    effort: 'standard', // 'min' | 'standard' | 'max'
  })

  console.log(data)
} catch (err) {
  console.error('Extraction failed:', err)
}

Ship this schema in one call.

Pass a URL, get matching JSON back. Free to start, no extraction layer to maintain.