πŸš€ The Loreto Skills Generator API is live! Learn how to get started β†’

The most powerful way to turn any content into Claude Code skills.

Feed any YouTube video, article, PDF, or image into the Loreto API and receive production-ready skill packages β€” complete with SKILL.md, test scripts, and reference stubs.

Get API Key
Sources
YouTube, Articles, PDFs, Images
Output
Up to 5 skills per source
Quality
Built-in quality gates & validation

How it works

1

Send any source

POST a YouTube URL, article link, PDF upload, or image to the API. We handle extraction automatically.

2

AI extracts skills

Claude identifies every generalizable principle β€” not just one obvious topic, but the full spectrum of teachable insights.

3

Get skill packages

Receive ranked, production-ready skill packages with SKILL.md, README.md, reference stubs, and runnable test scripts.

Simple, powerful API

One endpoint. Any source. Complete skill packages in a single response.

POST /api/v1/skills/generate
source
string, required
YouTube URL, article URL, or public file URL
source_type
enum, auto
auto | youtube | article | pdf | image
test_language
enum, python
python | typescript | javascript
include_visuals
bool, true
Include Mermaid diagrams in SKILL.md
POST /api/v1/skills/generate
curl -X POST https://api.loreto.io/api/v1/skills/generate \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "source": "https://youtube.com/watch?v=example", "source_type": "auto", "test_language": "python", "include_visuals": true }'
import requests response = requests.post( "https://api.loreto.io/api/v1/skills/generate", headers={"Authorization": "Bearer YOUR_API_KEY"}, json={ "source": "https://youtube.com/watch?v=example", "source_type": "auto", "test_language": "python", "include_visuals": True } ) skills = response.json() print(f"Generated {len(skills['skills'])} skill(s)")

Example Response

β–Ό
{ "skills": [ { "skill_name": "designing-zero-downtime-database-cutovers", "rank": 1, "theme_summary": "Patterns for safely migrating production databases...", "files": { "SKILL.md": "---\nname: designing-zero-downtime-database-cutovers\n...", "README.md": "# Designing Zero-Downtime Database Cutovers\n...", "tests/test_designing_zero_downtime_database_cutovers.py": "..." } } ], "theme_plan": { "total_detected": 5, "processed": [{"rank": 1, "skill_name": "designing-zero-downtime-database-cutovers"}], "queued": [{"rank": 2, "skill_name": "building-on-call-culture-for-platform-teams"}], "follow_up_hint": "To process remaining themes, use themes_to_process param." }, "source_analysis": { "source_type": "youtube", "total_themes": 5, "abstraction_level": "medium", "processing_time_seconds": 58.3 } }

Supported sources

▢️

YouTube Videos

Extract skills from talks, tutorials, and presentations. Up to 60 minutes.

πŸ“„

Articles & Web Pages

Turn blog posts, documentation, and long-form articles into skills. Up to 50,000 words.

πŸ“‘

PDF Documents

Upload research papers, guides, and reports. Up to 100 pages.

πŸ–ΌοΈ

Images

Extract insights from diagrams, screenshots, and visual content. Up to 20MB.

See what the API produces

This complete skill was generated from a single YouTube video about building AI knowledge systems. Truncated for brevity β€” the full output includes additional sections, reference stubs, and test scripts.

S
SKILL.md
synthesizing-institutional-knowledge · 161 lines · 6.2 KB
Rank #1 of 5 detected
---
name: synthesizing-institutional-knowledge
description: >
Builds organizational memory systems that capture decision provenance,
causal chains, and institutional context beyond document embeddings. Use
when designing knowledge bases for AI agents that must answer questions
about why decisions were made, how situations evolved over time, or what
historical context drives current organizational state.
---

Synthesizing Institutional Knowledge

Why Embedding-Based Retrieval Loses Institutional Context

When a document is chunked and embedded, the resulting vector captures semantic content β€” what the document says. It does not capture:

  • Who decided this and under what authority
  • Why β€” the constraints, alternatives considered, and trade-offs made
  • When β€” and what was happening organizationally at the time
  • What it superseded β€” the decision it replaced and why the old one failed
  • What it caused β€” decisions and events that followed from it

This lost provenance is exactly what makes questions like "why are we doing it this way?" impossible to answer from a standard RAG system. The documents exist; the institutional reasoning does not.


The Three Knowledge Types

1. Declarative Knowledge β€” "What is true now"

Facts, policies, configurations, documentation.

  • Appropriate storage: Vector RAG (Layer 1)
  • Examples: API docs, runbooks, policy documents, current architecture diagrams

2. Causal Knowledge β€” "Why it is this way"

Decision rationale, trade-off analysis, rejected alternatives, constraints that shaped outcomes.

  • Appropriate storage: Knowledge Graph (Layer 2)
  • Examples: ADRs, design docs, RFC discussions, post-mortem root causes

3. Episodic Knowledge β€” "What happened, in order"

Events with actors, timestamps, causal chains, and outcomes β€” the institutional timeline.

  • Appropriate storage: Event Store / Timeline DB (Layer 3)
  • Examples: Incident timelines, migration journals, org change histories

Institutional Event Schema

{
  "id": "evt_2024_03_15_oauth2_migration",
  "type": "architecture_decision",
  "timestamp": "2024-03-15T00:00:00Z",
  "summary": "Migrated auth from session-based to OAuth2",
  "actors": ["eng-lead-alice", "cto-bob"],
  "affected_entities": ["auth-service", "api-gateway", "mobile-app"],
  "causal_predecessors": ["evt_2024_02_01_auth_breach_incident"],
  "rationale": "OAuth2 selected over SAML due to mobile SDK support",
  "alternatives_considered": ["SAML 2.0", "Custom JWT"],
  "outcome": "Reduced auth incidents by 60% in following quarter"
}

Event Relationship Model

Predecessor Events
β†’
Event Node
id Β· type Β· timestamp
actors Β· affected_entities
rationale Β· constraints
β†’
Successor Events
causal_predecessors  β†’  Institutional Event Node  β†’  causal_successors
⚑ Showing key sections β€” full output includes ingestion protocol, query patterns, testing criteria, README.md, reference stubs, and a runnable test script. Get your API key to generate complete skill packages.

Pay per call

$0.50
per API call
Up to 5 themes detected per source
Up to 3 skills scaffolded per call
Complete SKILL.md + README + tests
Follow-up calls for remaining themes
Full token usage transparency

Start building with the Loreto Skills API

Turn any content into production-ready Claude Code skills.

Get API Key Explore docs

Frequently Asked Questions

Everything you need to know about Loreto

Loreto is a hosted multi-skill generation API service. It turns any supported content sourceβ€”YouTube videos, articles, PDFs, or imagesβ€”into ranked lists of complete Claude Code skill packages. Each skill package includes SKILL.md (the executable definition), README.md (documentation), reference stubs, and a runnable test script. One API call can extract up to 5 themes and scaffold up to 3 complete skills.

Loreto supports four content sources:

  • YouTube videos β€” up to 60 minutes
  • Articles β€” up to 50,000 words
  • PDFs β€” up to 100 pages
  • Images β€” up to 20 MB (uploaded) or 10 MB (via URL)

Each API call detects up to 5 distinct themes or principles from the source content. However, we scaffold up to 3 complete skill packages per call. If more themes are detected, they are returned in the theme_plan.queued section with a follow-up hint. You can make additional requests with the themes_to_process parameter to generate the remaining skills.

Each skill package includes:

  • SKILL.md β€” The complete skill definition with executable claims and validation logic
  • README.md β€” User-facing documentation with usage examples
  • Reference stubs β€” Links and citations to supporting materials
  • Test script β€” Runnable test file in your chosen language (Python, TypeScript, or JavaScript)
  • Optional diagrams β€” Mermaid diagrams embedded in SKILL.md if include_visuals is enabled

Processing time typically ranges from 30 to 120 seconds, depending on the length and complexity of the source content. For example, a 10-minute YouTube video typically takes 30–50 seconds, while a 50,000-word article may take 90–120 seconds. The overall pipeline has a hard timeout of 8 minutes (480 seconds), which is enforced before returning a result.

Loreto costs $0.50 per API call, regardless of source type or number of skills scaffolded. You pay only for successful extraction and scaffolding. Billing is handled through Stripe with a pay-as-you-go modelβ€”no monthly commitments. Every response includes detailed token usage and USD cost breakdown by pipeline stage, so you have complete transparency into what you're paying for.

Getting started with Loreto is straightforward:

  1. Sign up and get your API key from the dashboard
  2. Read the documentation and review the API reference
  3. Make your first POST /api/v1/skills/generate request with a YouTube URL, article link, or PDF
  4. Receive up to 3 complete skill packages as JSON with all files
  5. Download, integrate, or deploy the skills to your Claude Code environment

Loreto enforces quality gates to ensure extracted themes are concrete and code-executable. If a source is too vague, episodic, or lacks extractable principles, extraction fails and a 422 QUALITY_GATE_FAILED response is returned with a detailed explanation. You are not charged for failed extractions. Partial failures are also possible: if only some themes fail quality gates, passing themes are returned normally with failures listed in the warnings[] array.

Yes. You own the output generated by Loreto and can use skills commercially without restriction. This includes deploying them in production systems, integrating them into your products, selling them to customers, or any other commercial use. Loreto is a tool that generates new intellectual property for you.

Loreto can generate test scripts in three languages:

  • Python β€” default
  • TypeScript
  • JavaScript

Specify your preferred language using the test_language parameter in your API request.