{"id":41115657,"url":"https://github.com/morteng/media-engine","last_synced_at":"2026-01-22T16:31:47.725Z","repository":{"id":329184424,"uuid":"1117472418","full_name":"morteng/media-engine","owner":"morteng","description":"Agent-based media production framework. Document management, video generation with voiceover \u0026 captions, diagram generation, professional HTML/PDF/PPTX output with theming.","archived":false,"fork":false,"pushed_at":"2025-12-28T14:08:33.000Z","size":48190,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-28T18:30:39.435Z","etag":null,"topics":["cli","document-generation","media-production","python","video-generation"],"latest_commit_sha":null,"homepage":"https://github.com/morteng/media-engine#readme","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/morteng.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-12-16T11:08:47.000Z","updated_at":"2025-12-26T21:27:31.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/morteng/media-engine","commit_stats":null,"previous_names":["morteng/media-engine"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/morteng/media-engine","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/morteng%2Fmedia-engine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/morteng%2Fmedia-engine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/morteng%2Fmedia-engine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/morteng%2Fmedia-engine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/morteng","download_url":"https://codeload.github.com/morteng/media-engine/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/morteng%2Fmedia-engine/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28666690,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-22T14:01:31.714Z","status":"ssl_error","status_checked_at":"2026-01-22T13:59:23.143Z","response_time":144,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","document-generation","media-production","python","video-generation"],"created_at":"2026-01-22T16:31:46.925Z","updated_at":"2026-01-22T16:31:47.719Z","avatar_url":"https://github.com/morteng.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Media Engine\n\n**Agent-operated media production framework for automated content generation.**\n\nWrite content once in Markdown. Generate professional documents, presentations, videos, and interactive demos automatically.\n\n[![CI](https://github.com/morteng/media-engine/actions/workflows/ci.yml/badge.svg)](https://github.com/morteng/media-engine/actions/workflows/ci.yml)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n\n---\n\n## See It In Action\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/morteng/media-engine/raw/main/demo/output/en/videos/walkthrough.mp4\"\u003e\n    \u003cimg src=\"https://github.com/morteng/media-engine/raw/main/docs/images/walkthrough-preview.png\" width=\"720\" alt=\"Media Engine Walkthrough\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cem\u003e120-second walkthrough: Dashboard, content hierarchy, quality, brand system, build \u0026 publish, AI workspace, and video production\u003c/em\u003e\u003cbr\u003e\n  \u003cstrong\u003eThis video was built with Media Engine\u003c/strong\u003e - from YAML script to AI voiceover to motion graphics\n\u003c/p\u003e\n\n---\n\n## What It Does\n\nMedia Engine transforms your Markdown content into multiple output formats:\n\n| Input | Outputs |\n|-------|---------|\n| Markdown chapters | HTML documents, PDF reports |\n| YAML scripts | Voiceover audio, captions, video |\n| YAML slide definitions | PowerPoint presentations |\n| YAML data files | Excel spreadsheets with charts |\n| YAML demo configs | Interactive HTML demos |\n| YAML diagram specs | SVG/PNG diagrams |\n\nAll outputs are styled consistently using your theme configuration.\n\n---\n\n## Features\n\n### Content Management\n- **Markdown + YAML frontmatter** - Version tracking, status workflow, dependency graphs\n- **Multi-language support** - Translation tracking with outdated detection\n- **Full-text search** - Indexed search with relevance scoring\n\n### Document Generation\n- **HTML** - Responsive design, syntax highlighting, dark mode\n- **PDF** - Print-ready documents\n- **PowerPoint** - Slide decks from YAML definitions\n- **Excel** - Spreadsheets with formulas and charts\n- **Diagrams** - Multi-engine (matplotlib, d2, excalidraw) with theming\n\n### Publications System\n- **Deliverable-centric** - Define publications (book, deck, video, report, website, package)\n- **Component-based** - Compose from chapters, slides, data sources\n- **Multi-format** - Build to PDF, HTML, PPTX, XLSX per publication\n- **Validation** - Automatic status tracking and freshness monitoring\n\n### Brand System\n- **Single source** - Colors, typography, logos in brand.yaml\n- **Voice guidelines** - Tone profiles by document type and audience\n- **Design tokens** - Semantic colors, spacing, borders, shadows\n- **Dark mode** - Full support throughout all outputs\n\n### Video Production\n- **Voiceover** - ElevenLabs TTS with smart caching\n- **Captions** - Auto-generated WebVTT\n- **Motion graphics** - Remotion React components\n- **Browser capture** - Playwright-based screen recording\n\n### Quality Assurance\n- **Readability scoring** - Flesch, Fog, SMOG indexes\n- **Link validation** - Internal and external URL checking\n- **Reference checking** - Cross-document reference validation\n- **Schema validation** - Frontmatter structure enforcement\n- **Security scanning** - API keys, PII, secrets detection\n\n### AI Workspace\n- **Session tracking** - Track AI agent work with progress and changes\n- **Task queue** - Structured tasks with priorities\n- **Research store** - Persist findings across sessions\n- **Notes \u0026 decisions** - Human-AI collaboration with reasoning capture\n\n### Integrations\n- **CLI** - Full command-line interface (25+ command modules)\n- **MCP Server** - 26 tool modules with 100+ tools for AI agents\n- **Web Dashboard** - Real-time project management UI (7 pages, 15+ tabs)\n- **GitHub Actions** - CI/CD workflow templates\n- **Python API** - Programmatic access to all features\n\n---\n\n## Quick Start\n\n```bash\n# Clone and install\ngit clone https://github.com/morteng/media-engine.git\ncd media-engine\nuv sync\n\n# Or with pip\npip install -e \".[all]\"\n\n# Initialize project\nmedia-engine init my-project\ncd my-project\n\n# Build all outputs\nmedia-engine build\n\n# Launch dashboard\nmedia-engine dashboard\n```\n\n---\n\n## CLI Reference\n\n```bash\n# Project status\nmedia-engine status              # Full dashboard\nmedia-engine status docs         # Document status\nmedia-engine status videos       # Video production status\n\n# Build outputs\nmedia-engine build               # Build all formats\nmedia-engine build --only html   # HTML only\nmedia-engine build --force       # Force rebuild\n\n# Quality \u0026 validation\nmedia-engine quality             # Run quality checks\nmedia-engine validate            # Schema + reference validation\nmedia-engine security            # Scan for secrets/PII\nmedia-engine links               # Validate all links\n\n# Translation tracking\nmedia-engine translation status    # All translation pairs\nmedia-engine translation outdated  # Outdated translations\nmedia-engine translation missing   # Missing translations\n\n# Content analysis\nmedia-engine readability         # Readability scores\nmedia-engine gaps                # Content gap analysis\nmedia-engine search \"query\"      # Full-text search\n\n# Interactive demos\nmedia-engine demos list          # List available demos\nmedia-engine demos build         # Build to HTML\n\n# Publishing\nmedia-engine publish             # Self-contained package\nmedia-engine pack investor       # Curated audience pack\n\n# Dashboard\nmedia-engine dashboard           # Launch web UI\n```\n\n---\n\n## Project Structure\n\n```\nmy-project/\n├── project.yaml          # Project configuration\n├── brand.yaml            # Brand identity (colors, typography, voice)\n├── theme.yaml            # Design tokens\n├── schema.yaml           # Frontmatter validation\n├── content/\n│   ├── en/\n│   │   ├── chapters/     # Markdown documentation\n│   │   ├── publications/ # Publication definitions (book, deck, video)\n│   │   ├── scripts/      # Video script YAML\n│   │   ├── slides/       # Presentation YAML\n│   │   ├── diagrams/     # Diagram definitions\n│   │   ├── demos/        # Interactive demo configs\n│   │   └── data/         # Spreadsheet data\n│   └── no/               # Norwegian translations\n├── assets/               # Images, fonts, media\n└── output/               # Generated files\n```\n\n---\n\n## Configuration\n\n### project.yaml\n\n```yaml\nproject:\n  name: \"My Project\"\n  description: \"Project description\"\n\nlocalization:\n  source_language: \"en\"\n  languages:\n    en:\n      name: \"English\"\n      locale: \"en-US\"\n      voice_id: \"your-elevenlabs-voice-id\"\n    \"no\":  # Quote \"no\" - YAML interprets bare 'no' as false\n      name: \"Norwegian\"\n      locale: \"nb-NO\"\n\nvoiceover:\n  provider: \"elevenlabs\"\n  stability: 0.5\n  similarity_boost: 0.75\n\nvideo:\n  width: 1920\n  height: 1080\n  fps: 30\n\npaths:\n  content: \"content\"\n  assets: \"assets\"\n  output: \"output\"\n```\n\n### theme.yaml\n\n```yaml\nname: \"My Theme\"\n\ncolors:\n  primary: \"#1a365d\"\n  accent: \"#3182ce\"\n  background: \"#ffffff\"\n  text: \"#1a202c\"\n\ntypography:\n  heading: \"Inter\"\n  body: \"Source Sans 3\"\n  code: \"JetBrains Mono\"\n```\n\n---\n\n## Python API\n\n```python\nfrom media_engine import find_project, run_quality_checks\n\n# Load project\nproject = find_project()\n\n# List documents\nfor doc in project.list_chapters(\"en\"):\n    print(f\"{doc.stem}: v{doc.metadata.get('version', '?')}\")\n\n# Run quality checks\nreport = run_quality_checks(project)\nprint(f\"Found {report.error_count} errors, {report.warning_count} warnings\")\n\n# Build outputs\nfrom media_engine.builders import HTMLBuilder\nbuilder = HTMLBuilder(project)\nbuilder.build_all()\n```\n\n---\n\n## MCP Server (AI Agent Integration)\n\nConnect Claude Desktop or any MCP-compatible agent:\n\n```bash\n# Run MCP server\nmedia-engine-mcp --project /path/to/project\n```\n\n**Claude Desktop config** (`~/.claude/claude_desktop_config.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"media-engine\": {\n      \"command\": \"media-engine-mcp\",\n      \"args\": [\"-p\", \"/path/to/project\"]\n    }\n  }\n}\n```\n\n**Key tool categories:**\n- **Project** - `project_status`, `get_project_context`, `refresh_project`\n- **Documents** - `list_chapters`, `read_document`, `create_document`, `update_document_content`\n- **AI Context** - `get_ai_context`, `start_ai_session`, `record_session_progress`, `add_ai_note`\n- **Quality** - `quality_check`, `quality_report_summary`, `publish_readiness`\n- **Build** - `build_html`, `build_pptx`, `build_diagram`, `list_publications`\n- **Translation** - `translation_status`, `outdated_translations`, `sync_all_translations`\n- **Search** - `search_content`, `find_relevant_documents`, `natural_language_query`\n\nFull list: 26 modules with 100+ tools for comprehensive AI agent integration.\n\n---\n\n## Web Dashboard\n\n```bash\nmedia-engine dashboard\n# Opens http://localhost:8080\n```\n\n**Navigation:**\n- **Overview** - Dashboard (health score, publications, AI workspace), Build \u0026 Publish\n- **Content** - Documents, Hierarchy (4 view modes), Translations, Video, Media\n- **Quality** - Overview (health score), Analysis (knowledge graph), Activity (audit log)\n- **Brand** - Design System (colors, typography, logos), Voice \u0026 Guidelines\n- **AI Workspace** - Sessions, Notes, Queue, Research, Decisions\n- **Settings** - Theme, Project, Quality, Video, Paths\n\nFeatures:\n- Real-time updates via WebSocket\n- Hierarchy visualization (panel, tree, flow, graph views)\n- Publication management with format/language selection\n- AI session tracking and task queue\n- Brand system editor with live preview\n\n---\n\n## Video Production Pipeline\n\nDefine video scripts in YAML:\n\n```yaml\nid: product-demo\ntitle: \"Product Demo\"\nduration: 120\nscenes:\n  - type: title\n    text: \"Welcome to Our Product\"\n    duration: 5\n  - type: demo\n    action: \"Show the dashboard\"\n    voiceover: \"Let me show you the main dashboard.\"\n    duration: 10\n```\n\nBuild with voiceover and captions:\n\n```bash\nmedia-engine build --only video\n```\n\nGenerates:\n- `output/en/videos/product-demo.mp3` - Voiceover audio\n- `output/en/videos/product-demo.vtt` - Captions\n- `output/en/videos/product-demo/props.json` - Remotion render props\n\n---\n\n## Interactive Demos\n\nCreate 9 types of interactive demos: `calculator`, `code_playground`, `comparison`, `timeline`, `quiz`, `data_viz`, `form_demo`, `api_explorer`, `interactive_diagram`:\n\n```yaml\n# content/en/demos/pricing.yaml\nid: pricing-calc\ntype: calculator\ntitle: \"Pricing Calculator\"\ndata:\n  formula: \"(users * 10) + (storage * 0.05)\"\n  variables:\n    - name: users\n      label: \"Number of Users\"\n      default: 100\n    - name: storage\n      label: \"Storage (GB)\"\n      default: 500\n```\n\nBuild demos:\n\n```bash\nmedia-engine demos build\n# Creates interactive HTML in output/demos/\n```\n\n---\n\n## Security Scanning\n\nDetect sensitive content before publishing:\n\n```bash\nmedia-engine security\nmedia-engine security --include-assets\n```\n\nDetects:\n- API keys (AWS, GitHub, OpenAI, Anthropic, Stripe)\n- PII (emails, phone numbers, SSN patterns)\n- Internal URLs and private IPs\n- Credentials and secrets\n\n---\n\n## Installation\n\n```bash\n# Clone repository\ngit clone https://github.com/morteng/media-engine.git\ncd media-engine\n\n# Install with uv (recommended)\nuv sync\n\n# Or with pip (editable install)\npip install -e \".\"              # Core only\npip install -e \".[web]\"         # With dashboard\npip install -e \".[mcp]\"         # With MCP server\npip install -e \".[pdf]\"         # With PDF generation\npip install -e \".[all]\"         # Everything\n```\n\n---\n\n## Demo Project\n\nThe `demo/` directory is a comprehensive, self-documenting reference project:\n\n- **17 chapters** covering all Media Engine features\n- **4 publications** (documentation, presentation, quickstart, feature matrix)\n- **Complete brand system** with Capy the Capybara mascot\n- **Video scripts, diagrams, slides, and data files**\n- **The walkthrough video** - built entirely with Media Engine\n\n```bash\ncd demo\nmedia-engine dashboard    # Explore the demo project\nmedia-engine build        # Build all outputs\n```\n\n---\n\n## Repository Structure\n\n```\nmedia-engine/\n├── python/\n│   └── media_engine/        # Main Python package\n│       ├── core/            # Config, Project, Theme, Hashing\n│       ├── brand/           # Brand system\n│       ├── cms/             # Document management\n│       ├── video/           # Video production\n│       ├── builders/        # Output generators (HTML, PDF, PPTX, XLSX)\n│       ├── diagrams/        # Multi-engine diagrams (matplotlib, d2, excalidraw)\n│       ├── publications/    # Publication registry, builder, tracker\n│       ├── ai/              # AI context, sessions, research, notes, queue\n│       ├── relationships/   # Unified document relationships\n│       ├── quality/         # Quality checks\n│       ├── security/        # Secret/PII detection\n│       ├── web/             # Dashboard (FastAPI, 24 route files)\n│       ├── mcp/             # MCP server (26 tool modules)\n│       └── cli/             # CLI interface (25+ command modules)\n├── dashboard/               # React dashboard (Vite + React 19)\n├── remotion/                # Motion graphics (React)\n├── demo/                    # Reference project\n└── pyproject.toml\n```\n\n---\n\n## License\n\nMIT\n\n---\n\n## Contributing\n\nContributions welcome! Please read our contributing guidelines and submit PRs.\n\n```bash\n# Run tests\nuv run pytest\n\n# Lint\nuv run ruff check python/\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmorteng%2Fmedia-engine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmorteng%2Fmedia-engine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmorteng%2Fmedia-engine/lists"}