postreef
All schemas

Coding Tutorial

vidextract.predefined.coding.v1

A programming or software-development tutorial extracted from a video — what is built or taught, the tech stack, prerequisites, the ordered steps, key code concepts, and resources. Optional fields are omitted when the creator does not state them — do not infer.

Fields

titlerequired
string

Title of the tutorial, e.g. 'Build a REST API with FastAPI'.

summaryrequired
string

Two or three sentences on what the viewer will learn or build.

primaryLanguage
string

Main programming language, lowercased, e.g. 'python', 'javascript'. Omit if not applicable or unclear.

technologies
string[]

Languages, frameworks, libraries, and tools used, lowercased, e.g. 'fastapi', 'docker', 'postgresql'.

level
enum

Target skill level if stated or clearly implied. Omit if unclear.

projectType
enum

What kind of tutorial this is. Pick the single best fit. Omit if unclear.

prerequisites
string[]

Knowledge or setup the creator says the viewer should already have.

learningObjectives
string[]

Concrete skills or outcomes the viewer should gain, each a short phrase.

setup
string[]

Installation or environment-setup actions mentioned, e.g. 'install Python 3.12', 'pip install flask', 'create a virtual environment'.

stepsrequired
object[]

Ordered tutorial steps in the order taught. Each step is one logical chunk of building or explaining.

keyConcepts
object[]

Important programming concepts, patterns, or APIs explained, each with a brief definition.

commonMistakes
string[]

Pitfalls, gotchas, or mistakes the creator warns against.

resources
string[]

External resources mentioned — docs, repos, packages, courses, links — by name or URL.

tips
string[]

Practical tips or best practices mentioned outside the per-step flow.

JSON Schema

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "vidextract.predefined.coding.v1",
  "title": "Coding Tutorial",
  "description": "A programming or software-development tutorial extracted from a video — what is built or taught, the tech stack, prerequisites, the ordered steps, key code concepts, and resources. Optional fields are omitted when the creator does not state them — do not infer.",
  "type": "object",
  "required": [
    "title",
    "summary",
    "steps"
  ],
  "additionalProperties": false,
  "properties": {
    "title": {
      "type": "string",
      "description": "Title of the tutorial, e.g. 'Build a REST API with FastAPI'."
    },
    "summary": {
      "type": "string",
      "description": "Two or three sentences on what the viewer will learn or build."
    },
    "primaryLanguage": {
      "type": "string",
      "description": "Main programming language, lowercased, e.g. 'python', 'javascript'. Omit if not applicable or unclear."
    },
    "technologies": {
      "type": "array",
      "description": "Languages, frameworks, libraries, and tools used, lowercased, e.g. 'fastapi', 'docker', 'postgresql'.",
      "items": {
        "type": "string"
      }
    },
    "level": {
      "type": "string",
      "enum": [
        "beginner",
        "intermediate",
        "advanced"
      ],
      "description": "Target skill level if stated or clearly implied. Omit if unclear."
    },
    "projectType": {
      "type": "string",
      "enum": [
        "concept-explainer",
        "build-along-project",
        "crash-course",
        "code-walkthrough",
        "debugging",
        "interview-prep",
        "tooling-setup"
      ],
      "description": "What kind of tutorial this is. Pick the single best fit. Omit if unclear."
    },
    "prerequisites": {
      "type": "array",
      "description": "Knowledge or setup the creator says the viewer should already have.",
      "items": {
        "type": "string"
      }
    },
    "learningObjectives": {
      "type": "array",
      "description": "Concrete skills or outcomes the viewer should gain, each a short phrase.",
      "items": {
        "type": "string"
      }
    },
    "setup": {
      "type": "array",
      "description": "Installation or environment-setup actions mentioned, e.g. 'install Python 3.12', 'pip install flask', 'create a virtual environment'.",
      "items": {
        "type": "string"
      }
    },
    "steps": {
      "type": "array",
      "description": "Ordered tutorial steps in the order taught. Each step is one logical chunk of building or explaining.",
      "minItems": 1,
      "items": {
        "type": "object",
        "required": [
          "title"
        ],
        "additionalProperties": false,
        "properties": {
          "title": {
            "type": "string",
            "description": "Short label for this step, e.g. 'Define the database model'."
          },
          "explanation": {
            "type": "string",
            "description": "What is done and why in this step. Omit if the title is self-explanatory."
          },
          "codeSnippet": {
            "type": "string",
            "description": "A short representative code snippet for this step if one is clearly dictated or shown. Omit if none."
          },
          "commands": {
            "type": "array",
            "description": "Terminal/shell commands run in this step, e.g. 'npm install', 'git init'. Omit if none.",
            "items": {
              "type": "string"
            }
          },
          "videoTimestamp": {
            "type": "string",
            "description": "Start timestamp of this step in the source video, 'mm:ss' or 'h:mm:ss'. Omit if unknown.",
            "pattern": "^(\\d{1,2}:)?\\d{1,2}:\\d{2}$"
          }
        }
      }
    },
    "keyConcepts": {
      "type": "array",
      "description": "Important programming concepts, patterns, or APIs explained, each with a brief definition.",
      "items": {
        "type": "object",
        "required": [
          "concept"
        ],
        "additionalProperties": false,
        "properties": {
          "concept": {
            "type": "string",
            "description": "Name of the concept, e.g. 'list comprehension', 'async/await', 'dependency injection'."
          },
          "explanation": {
            "type": "string",
            "description": "Brief explanation as given in the video. Omit if only named."
          }
        }
      }
    },
    "commonMistakes": {
      "type": "array",
      "description": "Pitfalls, gotchas, or mistakes the creator warns against.",
      "items": {
        "type": "string"
      }
    },
    "resources": {
      "type": "array",
      "description": "External resources mentioned — docs, repos, packages, courses, links — by name or URL.",
      "items": {
        "type": "string"
      }
    },
    "tips": {
      "type": "array",
      "description": "Practical tips or best practices mentioned outside the per-step flow.",
      "items": {
        "type": "string"
      }
    }
  }
}

Use it via the API

Pass schemaId: "vidextract.predefined.coding.v1" when you submit an extraction. The call returns an id immediately. Poll GET /v1/extractions/{id}/result (or register a webhook) for the structured result.

curl -s -X POST https://postreef.com/v1/extractions \
  -H "x-api-key: $VIDEXTRACT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
       "inputs": ["transcript", "comments"],
       "schemaId": "vidextract.predefined.coding.v1"}'

Full request/response shape in the API reference; copy-paste poll loops in the API quickstart.

Pass schemaId: "vidextract.predefined.coding.v1" in your request to extract with this schema.