{"id":50933032,"url":"https://github.com/wesleysimplicio/simplicio-marketing-engine","last_synced_at":"2026-06-25T22:30:24.527Z","repository":{"id":356651886,"uuid":"1233199772","full_name":"wesleysimplicio/simplicio-marketing-engine","owner":"wesleysimplicio","description":"Provider-agnostic AI marketing engine. CLI that drops into any host project. Pipeline: brief -\u003e script -\u003e creative -\u003e caption -\u003e compliance -\u003e publish -\u003e metrics -\u003e ads. Switch LLM/image/video provider via env, never via skill rewrite.","archived":false,"fork":false,"pushed_at":"2026-05-22T22:31:58.000Z","size":70219,"stargazers_count":6,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-17T06:28:02.634Z","etag":null,"topics":["ai","apache-2","claude","codex","content-pipeline","deepseek","instagram","linkedin","llm","marketing","multi-platform","npm-package","ollama","pinterest","provider-agnostic","shorts","threads","tiktok","x-twitter","youtube"],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wesleysimplicio.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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":"2026-05-08T17:44:03.000Z","updated_at":"2026-06-15T03:44:39.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/wesleysimplicio/simplicio-marketing-engine","commit_stats":null,"previous_names":["wesleysimplicio/marketing-engine"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/wesleysimplicio/simplicio-marketing-engine","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wesleysimplicio%2Fsimplicio-marketing-engine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wesleysimplicio%2Fsimplicio-marketing-engine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wesleysimplicio%2Fsimplicio-marketing-engine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wesleysimplicio%2Fsimplicio-marketing-engine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wesleysimplicio","download_url":"https://codeload.github.com/wesleysimplicio/simplicio-marketing-engine/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wesleysimplicio%2Fsimplicio-marketing-engine/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34795436,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-25T02:00:05.521Z","response_time":101,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["ai","apache-2","claude","codex","content-pipeline","deepseek","instagram","linkedin","llm","marketing","multi-platform","npm-package","ollama","pinterest","provider-agnostic","shorts","threads","tiktok","x-twitter","youtube"],"created_at":"2026-06-17T06:04:03.564Z","updated_at":"2026-06-25T22:30:24.522Z","avatar_url":"https://github.com/wesleysimplicio.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Marketing Engine\n\n\u003e 🇺🇸 English. Leia em português: [README.pt-BR.md](README.pt-BR.md).\n\n\nProvider-agnostic AI marketing engine. Drop into any project, scan it, generate posts, publish across 9 platforms — all configurable via .env.\n\n[![CI](https://github.com/wesleysimplicio/marketing-engine/actions/workflows/ci.yml/badge.svg)](https://github.com/wesleysimplicio/marketing-engine/actions/workflows/ci.yml)\n\n## Repository visuals\n\nThese visuals stay near the top of the README on purpose, so the repository always has a fast visual map for humans and coding agents.\n\n![Marketing Engine hero](./assets/readme/marketing-engine-hero.svg)\n\n![Marketing Engine routing matrix](./assets/readme/marketing-engine-router.svg)\n\n## Watch the skills explainer (90s)\n\nA Remotion-rendered walkthrough of the pipeline and every skill in `.skills/`. Rendered in English; a [Portuguese version](./README.pt-BR.md#veja-o-explainer-das-skills-90s) is also available.\n\n\u003c!--\n  GitHub auto-renders a bare https://github.com/\u003cowner\u003e/\u003crepo\u003e/raw/\u003cbranch\u003e/...\n  URL on its own line as an inline \u003cvideo controls\u003e player. The URL must\n  point at a real branch — using HEAD or a relative path disables the embed.\n  Forks should rewrite this URL to their own owner/repo (or remove it and\n  rely on the \u003cdetails\u003e fallback below).\n--\u003e\nhttps://github.com/wesleysimplicio/marketing-engine/raw/main/video/out/marketing-engine-skills-en.mp4\n\n\u003cdetails\u003e\n  \u003csummary\u003ePlayer not loading? Click for the fallback thumbnail / direct download\u003c/summary\u003e\n\n  \u003cp align=\"center\"\u003e\n    \u003ca href=\"./video/out/marketing-engine-skills-en.mp4\"\u003e\n      \u003cimg src=\"./video/out/cover-en.png\" alt=\"Marketing Engine — skills explainer cover\" width=\"720\" /\u003e\n    \u003c/a\u003e\n  \u003c/p\u003e\n\n  \u003cp align=\"center\"\u003e\n    \u003ca href=\"./video/out/marketing-engine-skills-en.mp4\"\u003e\u003cb\u003e▶︎ Open marketing-engine-skills-en.mp4\u003c/b\u003e\u003c/a\u003e\n    \u0026nbsp;·\u0026nbsp;\n    \u003ca href=\"./video/README.md\"\u003ehow it was built\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/details\u003e\n\n### Visual tour of each scene\n\n| Stage | Scene |\n|---|---|\n| `pipeline` | \u003cimg src=\"./video/out/02-pipeline-en.png\" alt=\"brief → script → creative → caption → compliance → publish → metrics → ads\" width=\"520\" /\u003e |\n| `provider-agnostic` | \u003cimg src=\"./video/out/03-provider-agnostic-en.png\" alt=\"llm-router orbited by claude, codex, deepseek, higgsfield, topview, wavespeed\" width=\"520\" /\u003e |\n| `llm-router` | \u003cimg src=\"./video/out/04-llm-router-en.png\" alt=\"task_type resolved into a concrete provider\" width=\"520\" /\u003e |\n| `copywriter-curto` | \u003cimg src=\"./video/out/05-copywriter-curto-en.png\" alt=\"hook, caption, headline typewriter with character counter\" width=\"520\" /\u003e |\n| `revisao-humanizada` | \u003cimg src=\"./video/out/06-revisao-humanizada-en.png\" alt=\"before/after diff stripping AI fingerprints\" width=\"520\" /\u003e |\n| `caption-multi-platform` | \u003cimg src=\"./video/out/07-caption-multi-platform-en.png\" alt=\"one base copy fanned out to Instagram, TikTok, LinkedIn, X\" width=\"520\" /\u003e |\n| `higgsfield-prompt-builder` | \u003cimg src=\"./video/out/08-higgsfield-en.png\" alt=\"cinematic viewport with lens, motion, mood parameters\" width=\"520\" /\u003e |\n| `topview-prompt-builder` | \u003cimg src=\"./video/out/09-topview-en.png\" alt=\"UGC avatar with spoken script tokens\" width=\"520\" /\u003e |\n| `wavespeed-batch` | \u003cimg src=\"./video/out/10-wavespeed-en.png\" alt=\"3x2 A/B variant grid with winner glow\" width=\"520\" /\u003e |\n| `gpt-image-prompt-builder` | \u003cimg src=\"./video/out/11-gpt-image-en.png\" alt=\"quote-card carousel slides\" width=\"520\" /\u003e |\n| `video-prompt-builder` | \u003cimg src=\"./video/out/12-video-prompt-builder-en.png\" alt=\"brief routed to higgsfield, topview, or wavespeed\" width=\"520\" /\u003e |\n| `compliance-generic` | \u003cimg src=\"./video/out/13-compliance-en.png\" alt=\"shield blocking medical claims and financial guarantees\" width=\"520\" /\u003e |\n| `qa-tech-specs` | \u003cimg src=\"./video/out/14-qa-tech-specs-en.png\" alt=\"aspect, duration, codec, safe-area checks\" width=\"520\" /\u003e |\n| `definition-of-done` | \u003cimg src=\"./video/out/15-dod-outro-en.png\" alt=\"6 gates that must pass before a piece ships\" width=\"520\" /\u003e |\n\n### Visual tour of each scene\n\n| Stage | Scene |\n|---|---|\n| `pipeline` | \u003cimg src=\"./video/out/02-pipeline.png\" alt=\"brief → script → creative → caption → compliance → publish → metrics → ads\" width=\"520\" /\u003e |\n| `provider-agnostic` | \u003cimg src=\"./video/out/03-provider-agnostic.png\" alt=\"llm-router orbited by claude, codex, deepseek, higgsfield, topview, wavespeed\" width=\"520\" /\u003e |\n| `llm-router` | \u003cimg src=\"./video/out/04-llm-router.png\" alt=\"task_type resolved into a concrete provider\" width=\"520\" /\u003e |\n| `copywriter-curto` | \u003cimg src=\"./video/out/05-copywriter-curto.png\" alt=\"hook, caption, headline typewriter with character counter\" width=\"520\" /\u003e |\n| `revisao-humanizada` | \u003cimg src=\"./video/out/06-revisao-humanizada.png\" alt=\"before/after diff stripping AI fingerprints\" width=\"520\" /\u003e |\n| `caption-multi-platform` | \u003cimg src=\"./video/out/07-caption-multi-platform.png\" alt=\"one base copy fanned out to Instagram, TikTok, LinkedIn, X\" width=\"520\" /\u003e |\n| `higgsfield-prompt-builder` | \u003cimg src=\"./video/out/08-higgsfield.png\" alt=\"cinematic viewport with lens, motion, mood parameters\" width=\"520\" /\u003e |\n| `topview-prompt-builder` | \u003cimg src=\"./video/out/09-topview.png\" alt=\"UGC avatar with spoken script tokens\" width=\"520\" /\u003e |\n| `wavespeed-batch` | \u003cimg src=\"./video/out/10-wavespeed.png\" alt=\"3x2 A/B variant grid with winner glow\" width=\"520\" /\u003e |\n| `gpt-image-prompt-builder` | \u003cimg src=\"./video/out/11-gpt-image.png\" alt=\"quote-card carousel slides\" width=\"520\" /\u003e |\n| `video-prompt-builder` | \u003cimg src=\"./video/out/12-video-prompt-builder.png\" alt=\"brief routed to higgsfield, topview, or wavespeed\" width=\"520\" /\u003e |\n| `compliance-generic` | \u003cimg src=\"./video/out/13-compliance.png\" alt=\"shield blocking medical claims and financial guarantees\" width=\"520\" /\u003e |\n| `qa-tech-specs` | \u003cimg src=\"./video/out/14-qa-tech-specs.png\" alt=\"aspect, duration, codec, safe-area checks\" width=\"520\" /\u003e |\n| `definition-of-done` | \u003cimg src=\"./video/out/15-dod-outro.png\" alt=\"6 gates that must pass before a piece ships\" width=\"520\" /\u003e |\n\n## What it does\n\n- Scans the host project (package.json, README, source tree, existing brand assets) and drafts brand, persona, and content-pillar specs you can review and edit.\n- Generates copy through a routed LLM layer (Claude, Codex, DeepSeek, Copilot, Ollama) chosen per task type.\n- Generates images and videos through routed providers (gpt-image, Higgsfield, TopView, Wavespeed) selected by content format.\n- Runs a compliance audit before any publish action and blocks pieces that fail the gate.\n- Publishes the 4-platform caption set through AdaptlyPost (Instagram, TikTok, Facebook, LinkedIn, X, Threads, Pinterest, Shorts, YouTube — 9 platforms total).\n- Pulls analytics on a schedule, classifies top performers, and drafts Meta Ads campaigns from the winners.\n\n## Quick start\n\n```\ncd /path/to/your-project\nnpx marketing-engine init\ncp .marketing-engine/.env.example .marketing-engine/.env\n# fill ANTHROPIC_API_KEY at minimum\nnpx marketing-engine check\nnpx marketing-engine generate    # DRY_RUN by default\n```\n\n## Why provider-agnostic\n\nNo provider is hardcoded. `PROVIDERS.md` plus `.env` decide which LLM, image, or video service handles each task. Switching providers is one env change, not a refactor. Skills declare an abstract `task_type` (`copy-short`, `image-carousel`, `video-reel`); the router resolves the concrete vendor at runtime and applies fallback automatically.\n\n## Stack supported\n\n| Layer | Providers (default first) |\n|---|---|\n| LLM | claude, codex, deepseek, copilot, ollama |\n| Image | gpt-image, higgsfield, topview, wavespeed |\n| Video | higgsfield, topview, wavespeed |\n| Publishing | adaptlypost (9 platforms) |\n| Ads | meta-ads |\n\nRouting rules and rationale live in [.specs/architecture/PROVIDERS.md](./.specs/architecture/PROVIDERS.md).\n\n## CLI commands\n\n| Command | What it does |\n|---|---|\n| `init` | Scaffold `.marketing-engine/` in host project |\n| `scan` | Re-scan host project to refresh draft specs |\n| `check` | Validate provider env keys |\n| `generate` | Run generation loop (DRY_RUN-safe) |\n| `promote` | Run promotion loop |\n\n## Architecture\n\nPipeline: `brief → script → creative → caption → compliance → publish → metrics → ads`. The router brokers every external call so vendor swaps stay configuration-only.\n\n```mermaid\nflowchart LR\n    brief[Brief / piece.md] --\u003e router[lib/router.ts]\n    router --\u003e llm[LLM]\n    router --\u003e media[Image / Video]\n    llm --\u003e compliance[Compliance Gate]\n    media --\u003e compliance\n    compliance --\u003e|pass| publish[AdaptlyPost / 9 platforms]\n    publish --\u003e metrics[Analytics]\n    metrics --\u003e ads[Meta Ads draft]\n```\n\nFull design: [.specs/architecture/DESIGN.md](./.specs/architecture/DESIGN.md).\n\n## Project mapping\n\nThis repository now ships with an applied [llm-project-mapper](https://github.com/wesleysimplicio/llm-project-mapper) overlay so agents and contributors get an operational map by default.\n\n- Entry docs: [AGENTS.md](./AGENTS.md), [PRD.md](./PRD.md), [PROGRESS.md](./PROGRESS.md), [GOAL_RESULT.md](./GOAL_RESULT.md)\n- Mapper-owned operational docs: [docs/local-setup.md](./docs/local-setup.md), [docs/domain-map.md](./docs/domain-map.md), [docs/architecture-map.md](./docs/architecture-map.md), [docs/troubleshooting.md](./docs/troubleshooting.md)\n- Agent overlays: [.agents/README.md](./.agents/README.md), [.claude/settings.json](./.claude/settings.json), [INIT.md](./INIT.md)\n\n## Repo layout\n\n```\n.specs/        # product, architecture, workflow, sprints — canonical docs\n.skills/       # reusable skills (provider-neutral)\n.ralph/        # operational scripts (loops, sync, checks)\nlib/           # router + provider adapters + publish + ads\nbin/           # CLI entry (marketing-engine.mjs)\ne2e/           # Playwright specs\n```\n\nSetup details: [SETUP.md](./SETUP.md). Agent contract and Definition of Done: [AGENTS.md](./AGENTS.md).\n\n## Develop\n\n```\nnpm install\nnpm run typecheck\nnpm run test:e2e\nnode bin/marketing-engine.mjs help\n```\n\n## Contributing\n\nSee [CONTRIBUTING.md](./CONTRIBUTING.md). Issues and PRs welcome. Conventional commits required. CI must pass DoD checks before merge.\n\n## License\n\nApache-2.0. See [LICENSE](./LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwesleysimplicio%2Fsimplicio-marketing-engine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwesleysimplicio%2Fsimplicio-marketing-engine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwesleysimplicio%2Fsimplicio-marketing-engine/lists"}