@julioventura/opensquad 0.1.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +433 -0
- package/_opensquad/config/playwright.config.json +11 -0
- package/_opensquad/core/architect.agent.yaml +112 -0
- package/_opensquad/core/best-practices/_catalog.yaml +126 -0
- package/_opensquad/core/best-practices/blog-post.md +132 -0
- package/_opensquad/core/best-practices/blog-seo.md +127 -0
- package/_opensquad/core/best-practices/brand-resolution-checklist.md +172 -0
- package/_opensquad/core/best-practices/copywriting.md +441 -0
- package/_opensquad/core/best-practices/data-analysis.md +401 -0
- package/_opensquad/core/best-practices/email-newsletter.md +118 -0
- package/_opensquad/core/best-practices/email-sales.md +110 -0
- package/_opensquad/core/best-practices/image-design.md +348 -0
- package/_opensquad/core/best-practices/instagram-feed.md +235 -0
- package/_opensquad/core/best-practices/instagram-reels.md +112 -0
- package/_opensquad/core/best-practices/instagram-stories.md +107 -0
- package/_opensquad/core/best-practices/linkedin-article.md +116 -0
- package/_opensquad/core/best-practices/linkedin-post.md +121 -0
- package/_opensquad/core/best-practices/researching.md +349 -0
- package/_opensquad/core/best-practices/review.md +269 -0
- package/_opensquad/core/best-practices/run-recovery.md +61 -0
- package/_opensquad/core/best-practices/social-networks-publishing.md +327 -0
- package/_opensquad/core/best-practices/squad-creation-checklist.md +32 -0
- package/_opensquad/core/best-practices/strategist.md +344 -0
- package/_opensquad/core/best-practices/technical-writing.md +365 -0
- package/_opensquad/core/best-practices/twitter-post.md +105 -0
- package/_opensquad/core/best-practices/twitter-thread.md +122 -0
- package/_opensquad/core/best-practices/whatsapp-broadcast.md +107 -0
- package/_opensquad/core/best-practices/youtube-script.md +122 -0
- package/_opensquad/core/best-practices/youtube-shorts.md +112 -0
- package/_opensquad/core/defaults/youtube-video-assembly.json +84 -0
- package/_opensquad/core/prompts/build.prompt.md +613 -0
- package/_opensquad/core/prompts/design.prompt.md +606 -0
- package/_opensquad/core/prompts/discovery.prompt.md +377 -0
- package/_opensquad/core/prompts/sherlock-instagram.md +123 -0
- package/_opensquad/core/prompts/sherlock-linkedin.md +73 -0
- package/_opensquad/core/prompts/sherlock-shared.md +684 -0
- package/_opensquad/core/prompts/sherlock-twitter.md +78 -0
- package/_opensquad/core/prompts/sherlock-youtube.md +85 -0
- package/_opensquad/core/runner.pipeline.md +743 -0
- package/_opensquad/core/skills.engine.md +384 -0
- package/bin/opensquad.js +108 -0
- package/dashboard/index.html +15 -0
- package/dashboard/package-lock.json +1964 -0
- package/dashboard/package.json +28 -0
- package/dashboard/public/assets/avatars/Female1_1wave.png +0 -0
- package/dashboard/public/assets/avatars/Female1_2wave.png +0 -0
- package/dashboard/public/assets/avatars/Female1_blink.png +0 -0
- package/dashboard/public/assets/avatars/Female1_talk.png +0 -0
- package/dashboard/public/assets/avatars/Female2_1wave.png +0 -0
- package/dashboard/public/assets/avatars/Female2_2wave.png +0 -0
- package/dashboard/public/assets/avatars/Female2_blink.png +0 -0
- package/dashboard/public/assets/avatars/Female2_talk.png +0 -0
- package/dashboard/public/assets/avatars/Female3_blink.png +0 -0
- package/dashboard/public/assets/avatars/Female3_talk.png +0 -0
- package/dashboard/public/assets/avatars/Female3_wave.png +0 -0
- package/dashboard/public/assets/avatars/Female4_blink.png +0 -0
- package/dashboard/public/assets/avatars/Female4_talk.png +0 -0
- package/dashboard/public/assets/avatars/Female4_wave.png +0 -0
- package/dashboard/public/assets/avatars/Female5_blink.png +0 -0
- package/dashboard/public/assets/avatars/Female5_talk.png +0 -0
- package/dashboard/public/assets/avatars/Female5_wave.png +0 -0
- package/dashboard/public/assets/avatars/Female6_blink.png +0 -0
- package/dashboard/public/assets/avatars/Female6_talk.png +0 -0
- package/dashboard/public/assets/avatars/Female6_wave.png +0 -0
- package/dashboard/public/assets/avatars/Male1_1wave.png +0 -0
- package/dashboard/public/assets/avatars/Male1_2wave.png +0 -0
- package/dashboard/public/assets/avatars/Male1_blink.png +0 -0
- package/dashboard/public/assets/avatars/Male1_talk.png +0 -0
- package/dashboard/public/assets/avatars/Male2_1wave.png +0 -0
- package/dashboard/public/assets/avatars/Male2_2wave.png +0 -0
- package/dashboard/public/assets/avatars/Male2_blink.png +0 -0
- package/dashboard/public/assets/avatars/Male2_talk.png +0 -0
- package/dashboard/public/assets/avatars/Male3_blink.png +0 -0
- package/dashboard/public/assets/avatars/Male3_talk.png +0 -0
- package/dashboard/public/assets/avatars/Male3_wave.png +0 -0
- package/dashboard/public/assets/avatars/Male4_blink.png +0 -0
- package/dashboard/public/assets/avatars/Male4_talk.png +0 -0
- package/dashboard/public/assets/avatars/Male4_wave.png +0 -0
- package/dashboard/public/assets/desks/desktop_set_black_down.png +0 -0
- package/dashboard/public/assets/desks/desktop_set_black_down_coding-1.png +0 -0
- package/dashboard/public/assets/desks/desktop_set_black_down_coding.png +0 -0
- package/dashboard/public/assets/desks/desktop_set_black_up.png +0 -0
- package/dashboard/public/assets/desks/desktop_set_white_down.png +0 -0
- package/dashboard/public/assets/desks/desktop_set_white_down_coding-1.png +0 -0
- package/dashboard/public/assets/desks/desktop_set_white_down_coding.png +0 -0
- package/dashboard/public/assets/desks/desktop_set_white_up.png +0 -0
- package/dashboard/public/assets/furniture/armchair_tan.png +0 -0
- package/dashboard/public/assets/furniture/armchair_tan_down.png +0 -0
- package/dashboard/public/assets/furniture/backpack_blue.png +0 -0
- package/dashboard/public/assets/furniture/backpack_red.png +0 -0
- package/dashboard/public/assets/furniture/blinds.png +0 -0
- package/dashboard/public/assets/furniture/blinds_large_closed_white.png +0 -0
- package/dashboard/public/assets/furniture/bookshelf.png +0 -0
- package/dashboard/public/assets/furniture/bookshelf_purple_tall.png +0 -0
- package/dashboard/public/assets/furniture/bulletin_board.png +0 -0
- package/dashboard/public/assets/furniture/clock.png +0 -0
- package/dashboard/public/assets/furniture/coffee_mug.png +0 -0
- package/dashboard/public/assets/furniture/coffee_mug_blue.png +0 -0
- package/dashboard/public/assets/furniture/coffee_table.png +0 -0
- package/dashboard/public/assets/furniture/coffeepot_right.png +0 -0
- package/dashboard/public/assets/furniture/coffeetable_black_horizontal.png +0 -0
- package/dashboard/public/assets/furniture/couch.png +0 -0
- package/dashboard/public/assets/furniture/couch_tan_down.png +0 -0
- package/dashboard/public/assets/furniture/cushion_blue.png +0 -0
- package/dashboard/public/assets/furniture/cushion_tan.png +0 -0
- package/dashboard/public/assets/furniture/desk_wood.png +0 -0
- package/dashboard/public/assets/furniture/fancy_rug.png +0 -0
- package/dashboard/public/assets/furniture/fancy_rug_wide.png +0 -0
- package/dashboard/public/assets/furniture/flowers1.png +0 -0
- package/dashboard/public/assets/furniture/flowers2.png +0 -0
- package/dashboard/public/assets/furniture/lamp_tan.png +0 -0
- package/dashboard/public/assets/furniture/lantern.png +0 -0
- package/dashboard/public/assets/furniture/monstera.png +0 -0
- package/dashboard/public/assets/furniture/monstera_small.png +0 -0
- package/dashboard/public/assets/furniture/picture_frame.png +0 -0
- package/dashboard/public/assets/furniture/plant1.png +0 -0
- package/dashboard/public/assets/furniture/plant2.png +0 -0
- package/dashboard/public/assets/furniture/plant3.png +0 -0
- package/dashboard/public/assets/furniture/plant_poof.png +0 -0
- package/dashboard/public/assets/furniture/plant_spindly.png +0 -0
- package/dashboard/public/assets/furniture/poster_blue.png +0 -0
- package/dashboard/public/assets/furniture/rug.png +0 -0
- package/dashboard/public/assets/furniture/succulent_blue.png +0 -0
- package/dashboard/public/assets/furniture/succulent_green.png +0 -0
- package/dashboard/public/assets/furniture/treasurechest_closed_gold.png +0 -0
- package/dashboard/public/assets/furniture/water_cooler_better.png +0 -0
- package/dashboard/public/assets/furniture/whiteboard.png +0 -0
- package/dashboard/public/assets/furniture/whiteboard_stand_graph.png +0 -0
- package/dashboard/public/assets/furniture/window_blinds_open.png +0 -0
- package/dashboard/src/App.tsx +46 -0
- package/dashboard/src/components/RunDashboardButton.tsx +92 -0
- package/dashboard/src/components/SquadCard.tsx +49 -0
- package/dashboard/src/components/SquadSelector.tsx +67 -0
- package/dashboard/src/components/StatusBadge.tsx +32 -0
- package/dashboard/src/components/StatusBar.tsx +116 -0
- package/dashboard/src/hooks/useSquadSocket.ts +135 -0
- package/dashboard/src/lib/formatTime.ts +16 -0
- package/dashboard/src/lib/normalizeState.ts +25 -0
- package/dashboard/src/main.tsx +10 -0
- package/dashboard/src/office/AgentSprite.ts +241 -0
- package/dashboard/src/office/OfficeScene.ts +153 -0
- package/dashboard/src/office/PhaserGame.tsx +80 -0
- package/dashboard/src/office/RoomBuilder.ts +190 -0
- package/dashboard/src/office/assetKeys.ts +150 -0
- package/dashboard/src/office/palette.ts +32 -0
- package/dashboard/src/plugin/squadWatcher.ts +397 -0
- package/dashboard/src/store/useSquadStore.ts +56 -0
- package/dashboard/src/styles/globals.css +36 -0
- package/dashboard/src/types/state.ts +63 -0
- package/dashboard/src/vite-env.d.ts +1 -0
- package/dashboard/tsconfig.json +24 -0
- package/dashboard/vite.config.ts +13 -0
- package/package.json +59 -0
- package/public/sfx/slide-transition-sfx.mp3 +0 -0
- package/skills/README.md +84 -0
- package/skills/apify/SKILL.md +55 -0
- package/skills/blotato/SKILL.md +63 -0
- package/skills/canva/SKILL.md +60 -0
- package/skills/higgsfield/SKILL.md +147 -0
- package/skills/image-ai-generator/SKILL.md +124 -0
- package/skills/image-ai-generator/scripts/generate.py +175 -0
- package/skills/image-creator/SKILL.md +166 -0
- package/skills/image-creator/editorial-slide-template.js +645 -0
- package/skills/image-fetcher/SKILL.md +91 -0
- package/skills/imgbb-uploader/SKILL.md +73 -0
- package/skills/imgbb-uploader/scripts/upload.js +125 -0
- package/skills/instagram-publisher/README.md +36 -0
- package/skills/instagram-publisher/SKILL.md +231 -0
- package/skills/instagram-publisher/scripts/publish-playwright.js +418 -0
- package/skills/instagram-publisher/scripts/publish.js +521 -0
- package/skills/opensquad-agent-creator/SKILL.md +192 -0
- package/skills/opensquad-skill-creator/SKILL.md +420 -0
- package/skills/opensquad-skill-creator/agents/analyzer.md +274 -0
- package/skills/opensquad-skill-creator/agents/comparator.md +202 -0
- package/skills/opensquad-skill-creator/agents/grader.md +223 -0
- package/skills/opensquad-skill-creator/assets/eval_review.html +146 -0
- package/skills/opensquad-skill-creator/eval-viewer/generate_review.py +471 -0
- package/skills/opensquad-skill-creator/eval-viewer/viewer.html +1325 -0
- package/skills/opensquad-skill-creator/references/schemas.md +430 -0
- package/skills/opensquad-skill-creator/references/skill-format.md +235 -0
- package/skills/opensquad-skill-creator/scripts/__init__.py +0 -0
- package/skills/opensquad-skill-creator/scripts/aggregate_benchmark.py +401 -0
- package/skills/opensquad-skill-creator/scripts/quick_validate.py +103 -0
- package/skills/opensquad-skill-creator/scripts/run_eval.py +310 -0
- package/skills/opensquad-skill-creator/scripts/utils.py +47 -0
- package/skills/pdf-extractor/SKILL.md +57 -0
- package/skills/pdf-extractor/scripts/extract.py +82 -0
- package/skills/resend/SKILL.md +80 -0
- package/skills/run-dashboard/README.md +93 -0
- package/skills/run-dashboard/SKILL.md +173 -0
- package/skills/run-dashboard/scripts/finalize-state.js +273 -0
- package/skills/run-dashboard/scripts/generate.js +1296 -0
- package/skills/run-dashboard/scripts/serve.js +135 -0
- package/skills/run-dashboard/templates/run-dashboard-simple.template.html +191 -0
- package/skills/run-dashboard/templates/run-dashboard.template.html +1164 -0
- package/skills/smtp-sender/SKILL.md +88 -0
- package/skills/smtp-sender/scripts/send.js +478 -0
- package/skills/template-designer/SKILL.md +201 -0
- package/skills/template-designer/base-templates/model-a.html +27 -0
- package/skills/template-designer/base-templates/model-b.html +31 -0
- package/skills/template-designer/base-templates/model-c.html +42 -0
- package/skills/youtube-publisher/SKILL.md +232 -0
- package/skills/youtube-publisher/scripts/publish.js +2078 -0
- package/src/agents-cli.js +158 -0
- package/src/agents.js +134 -0
- package/src/i18n.js +48 -0
- package/src/init.js +442 -0
- package/src/locales/en.json +79 -0
- package/src/locales/es.json +78 -0
- package/src/locales/pt-BR.json +78 -0
- package/src/logger.js +38 -0
- package/src/prompt.js +46 -0
- package/src/readme/README.md +146 -0
- package/src/runs.js +318 -0
- package/src/skills-cli.js +157 -0
- package/src/skills.js +146 -0
- package/src/supabase-cli.js +584 -0
- package/src/update.js +169 -0
- package/templates/_opensquad/.opensquad-version +1 -0
- package/templates/_opensquad/_investigations/.gitkeep +0 -0
- package/templates/ide-templates/antigravity/.agent/rules/opensquad.md +68 -0
- package/templates/ide-templates/antigravity/.agent/workflows/opensquad.md +102 -0
- package/templates/ide-templates/claude-code/.claude/skills/opensquad/SKILL.md +182 -0
- package/templates/ide-templates/claude-code/.mcp.json +8 -0
- package/templates/ide-templates/claude-code/CLAUDE.md +57 -0
- package/templates/ide-templates/codex/.agents/skills/opensquad/SKILL.md +6 -0
- package/templates/ide-templates/codex/AGENTS.md +120 -0
- package/templates/ide-templates/cursor/.cursor/commands/opensquad.md +9 -0
- package/templates/ide-templates/cursor/.cursor/mcp.json +8 -0
- package/templates/ide-templates/cursor/.cursor/rules/opensquad.mdc +62 -0
- package/templates/ide-templates/cursor/.cursorignore +3 -0
- package/templates/ide-templates/gemini-cli/.gemini/settings.json +8 -0
- package/templates/ide-templates/gemini-cli/.gemini/skills/opensquad/SKILL.md +186 -0
- package/templates/ide-templates/gemini-cli/GEMINI.md +57 -0
- package/templates/ide-templates/opencode/.opencode/commands/opensquad.md +9 -0
- package/templates/ide-templates/opencode/AGENTS.md +120 -0
- package/templates/ide-templates/qwen-code/.qwen/settings.json +8 -0
- package/templates/ide-templates/qwen-code/.qwen/skills/opensquad/SKILL.md +182 -0
- package/templates/ide-templates/qwen-code/QWEN.md +57 -0
- package/templates/ide-templates/trae/.trae/mcp.json +8 -0
- package/templates/ide-templates/trae/.trae/rules/opensquad.md +64 -0
- package/templates/ide-templates/vscode-copilot/.github/copilot-instructions.md +59 -0
- package/templates/ide-templates/vscode-copilot/.github/prompts/opensquad.prompt.md +209 -0
- package/templates/ide-templates/vscode-copilot/.vscode/mcp.json +8 -0
- package/templates/ide-templates/vscode-copilot/.vscode/settings.json +3 -0
- package/templates/package.json +8 -0
- package/templates/squads/.gitkeep +0 -0
package/skills/README.md
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# Opensquad Skill Catalog
|
|
2
|
+
|
|
3
|
+
Browse available skills for your squads. Install any skill with:
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
npx opensquad install <skill-name>
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
## Available Skills
|
|
10
|
+
|
|
11
|
+
| Skill | Type | Description | Env Vars | Install |
|
|
12
|
+
| ----- | ---- | ----------- | -------- | ------- |
|
|
13
|
+
| [apify](./apify/) | mcp | Web scraping and automation platform. Extract data from any website using pre-built Actors. | `APIFY_TOKEN` | `npx opensquad install apify` |
|
|
14
|
+
| [canva](./canva/) | mcp | Create, search, autofill, and export designs from Canva. | _(none -- OAuth)_ | `npx opensquad install canva` |
|
|
15
|
+
| [higgsfield](./higgsfield/) | mcp | Generate AI images and videos via Higgsfield. Text-to-image, image-to-video, cinematic scenes. | _(none -- OAuth)_ | `npx opensquad install higgsfield` |
|
|
16
|
+
| [instagram-publisher](./instagram-publisher/) | script | Publish Instagram carousel posts from local JPG/JPEG/PNG images via the Graph API. | `INSTAGRAM_ACCESS_TOKEN`, `INSTAGRAM_USER_ID` | `npx opensquad install instagram-publisher` |
|
|
17
|
+
| [youtube-publisher](./youtube-publisher/) | script | Publish simple YouTube videos from local JPG/JPEG/PNG image sequences by generating a 10-second-per-slide MP4 slideshow with the default repository soundtrack and uploading via the YouTube Data API. | `YOUTUBE_CLIENT_ID`, `YOUTUBE_CLIENT_SECRET`, `YOUTUBE_REFRESH_TOKEN`, `YOUTUBE_CHANNEL_ID` | `npx opensquad install youtube-publisher` |
|
|
18
|
+
| [blotato](./blotato/) | mcp | Publish and schedule posts across Instagram, LinkedIn, Twitter/X, TikTok, YouTube, and more. | `BLOTATO_API_KEY` | `npx opensquad install blotato` |
|
|
19
|
+
| [resend](./resend/) | mcp | Send emails through Resend — single send, batch, scheduling, attachments, and contact management. | `RESEND_API_KEY` | `npx opensquad install resend` |
|
|
20
|
+
| [smtp-sender](./smtp-sender/) | script | Send HTML plus plain-text emails through a native SMTP connection using local brand-scoped credentials from `.env`. | `SMTP_HOST`, `SMTP_PORT`, `SMTP_USER`, `SMTP_PASS` | `npx opensquad install smtp-sender` |
|
|
21
|
+
| [imgbb-uploader](./imgbb-uploader/) | script | Upload local JPG/JPEG/PNG assets to imgBB and return public URLs for downstream HTML/email workflows. | `IMGBB_API_KEY` | `npx opensquad install imgbb-uploader` |
|
|
22
|
+
| [image-fetcher](./image-fetcher/) | hybrid | Acquire visual assets via web search, live screenshots (Playwright), and user-provided files. | _(none)_ | `npx opensquad install image-fetcher` |
|
|
23
|
+
| [image-creator](./image-creator/) | mcp | Render HTML/CSS into production-ready JPG or PNG images via Playwright. | _(none)_ | `npx opensquad install image-creator` |
|
|
24
|
+
| [image-ai-generator](./image-ai-generator/) | script | Generate AI images via Openrouter API. Test mode (cheap) and production mode (high-quality). Supports reference images for brand consistency. | `OPENROUTER_API_KEY` | `npx opensquad install image-ai-generator` |
|
|
25
|
+
| [pdf-extractor](./pdf-extractor/) | script | Download a PDF from a URL or read it from a local file, extract text content using Python's pypdf library, and output to a text file. | _(none)_ | `npx opensquad install pdf-extractor` |
|
|
26
|
+
|
|
27
|
+
## Skill Types
|
|
28
|
+
|
|
29
|
+
- **mcp** -- Connects to an external MCP server (stdio or HTTP transport)
|
|
30
|
+
- **script** -- Runs a local script (Node.js, Python, etc.)
|
|
31
|
+
- **hybrid** -- Combines MCP server access with local script capabilities
|
|
32
|
+
|
|
33
|
+
## Directory Structure
|
|
34
|
+
|
|
35
|
+
Each skill lives in its own folder with a `SKILL.md` file:
|
|
36
|
+
|
|
37
|
+
```text
|
|
38
|
+
skills/
|
|
39
|
+
apify/
|
|
40
|
+
SKILL.md
|
|
41
|
+
canva/
|
|
42
|
+
SKILL.md
|
|
43
|
+
instagram-publisher/
|
|
44
|
+
SKILL.md
|
|
45
|
+
scripts/
|
|
46
|
+
publish.js
|
|
47
|
+
youtube-publisher/
|
|
48
|
+
SKILL.md
|
|
49
|
+
scripts/
|
|
50
|
+
publish.js
|
|
51
|
+
blotato/
|
|
52
|
+
SKILL.md
|
|
53
|
+
resend/
|
|
54
|
+
SKILL.md
|
|
55
|
+
smtp-sender/
|
|
56
|
+
SKILL.md
|
|
57
|
+
scripts/
|
|
58
|
+
send.js
|
|
59
|
+
imgbb-uploader/
|
|
60
|
+
SKILL.md
|
|
61
|
+
scripts/
|
|
62
|
+
upload.js
|
|
63
|
+
image-fetcher/
|
|
64
|
+
SKILL.md
|
|
65
|
+
image-creator/
|
|
66
|
+
SKILL.md
|
|
67
|
+
image-ai-generator/
|
|
68
|
+
SKILL.md
|
|
69
|
+
scripts/
|
|
70
|
+
generate.py
|
|
71
|
+
pdf-extractor/
|
|
72
|
+
SKILL.md
|
|
73
|
+
scripts/
|
|
74
|
+
extract.py
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
The `SKILL.md` file contains YAML frontmatter (name, type, version, MCP/script config, env vars, categories) and a Markdown body with usage instructions and available operations.
|
|
78
|
+
|
|
79
|
+
## Adding a New Skill
|
|
80
|
+
|
|
81
|
+
1. Create a new folder under `skills/` with the skill ID as the name
|
|
82
|
+
2. Add a `SKILL.md` file with valid YAML frontmatter and Markdown body
|
|
83
|
+
3. If the skill includes scripts, place them in a `scripts/` subfolder
|
|
84
|
+
4. Update this README to include the new skill in the catalog table
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: apify
|
|
3
|
+
description: >
|
|
4
|
+
Web scraping and automation platform. Extract data from any website,
|
|
5
|
+
run pre-built scrapers (Actors), and automate web workflows using
|
|
6
|
+
thousands of ready-made tools from the Apify Store.
|
|
7
|
+
description_pt-BR: >
|
|
8
|
+
Plataforma de web scraping e automação. Extraia dados de qualquer site,
|
|
9
|
+
execute scrapers prontos (Actors) e automatize fluxos de trabalho web
|
|
10
|
+
com milhares de ferramentas da Apify Store.
|
|
11
|
+
description_es: >
|
|
12
|
+
Plataforma de web scraping y automatización. Extrae datos de cualquier sitio web,
|
|
13
|
+
ejecuta scrapers prediseñados (Actors) y automatiza flujos de trabajo web
|
|
14
|
+
con miles de herramientas de la Apify Store.
|
|
15
|
+
type: mcp
|
|
16
|
+
version: "1.0.0"
|
|
17
|
+
mcp:
|
|
18
|
+
server_name: apify
|
|
19
|
+
command: npx
|
|
20
|
+
args: ["-y", "@apify/actors-mcp-server@latest"]
|
|
21
|
+
env:
|
|
22
|
+
- APIFY_TOKEN
|
|
23
|
+
categories: [scraping, data, automation]
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
# Apify Web Scraper
|
|
27
|
+
|
|
28
|
+
## When to use
|
|
29
|
+
|
|
30
|
+
Use Apify when you need to extract data from websites, scrape social media profiles, run search engine queries, or automate web data collection workflows. Apify provides thousands of pre-built scrapers (called Actors) that handle common scraping tasks out of the box.
|
|
31
|
+
|
|
32
|
+
## Instructions
|
|
33
|
+
|
|
34
|
+
You have access to Apify tools for web scraping and data extraction.
|
|
35
|
+
|
|
36
|
+
### Key capabilities
|
|
37
|
+
|
|
38
|
+
- Use Apify Actors (pre-built scrapers) to extract data from websites
|
|
39
|
+
- Popular Actors: web-scraper, instagram-scraper, google-search-scraper, youtube-scraper, twitter-scraper, tiktok-scraper
|
|
40
|
+
- Each Actor has its own input schema -- check documentation before running
|
|
41
|
+
|
|
42
|
+
### Best practices
|
|
43
|
+
|
|
44
|
+
- Start with the simplest Actor that meets the need
|
|
45
|
+
- Use `maxItems` to limit results and avoid excessive costs
|
|
46
|
+
- Check Actor pricing before running (some have per-result costs)
|
|
47
|
+
- Parse results and extract only the fields you need
|
|
48
|
+
|
|
49
|
+
## Available operations
|
|
50
|
+
|
|
51
|
+
- **Run Actor** -- Execute any Apify Actor with custom input parameters
|
|
52
|
+
- **Web Scraping** -- Extract structured data from any website
|
|
53
|
+
- **Social Media Scraping** -- Scrape profiles, posts, and engagement data from Instagram, YouTube, Twitter/X, TikTok
|
|
54
|
+
- **Search Scraping** -- Run Google, Bing, or other search engine queries and collect results
|
|
55
|
+
- **Data Export** -- Retrieve scraped datasets in JSON format
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: blotato
|
|
3
|
+
description: >
|
|
4
|
+
Social media publishing and scheduling platform.
|
|
5
|
+
Publish and schedule posts across Instagram, LinkedIn, Twitter/X,
|
|
6
|
+
TikTok, YouTube, and more. Upload media and monitor post status.
|
|
7
|
+
description_pt-BR: >
|
|
8
|
+
Plataforma de publicação e agendamento em redes sociais.
|
|
9
|
+
Publique e agende posts no Instagram, LinkedIn, Twitter/X,
|
|
10
|
+
TikTok, YouTube e mais. Faça upload de mídia e monitore o status dos posts.
|
|
11
|
+
description_es: >
|
|
12
|
+
Plataforma de publicación y programación en redes sociales.
|
|
13
|
+
Publica y programa posts en Instagram, LinkedIn, Twitter/X,
|
|
14
|
+
TikTok, YouTube y más. Sube contenido multimedia y monitorea el estado de los posts.
|
|
15
|
+
type: mcp
|
|
16
|
+
version: "1.0.0"
|
|
17
|
+
mcp:
|
|
18
|
+
server_name: blotato
|
|
19
|
+
transport: http
|
|
20
|
+
url: "https://mcp.blotato.com/mcp"
|
|
21
|
+
headers:
|
|
22
|
+
blotato-api-key: BLOTATO_API_KEY
|
|
23
|
+
env:
|
|
24
|
+
- BLOTATO_API_KEY
|
|
25
|
+
categories: [social-media, automation, publishing, scheduling]
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
# Blotato Publisher
|
|
29
|
+
|
|
30
|
+
## When to use
|
|
31
|
+
|
|
32
|
+
Use Blotato when you need to publish or schedule social media posts across multiple platforms from a single interface. Blotato supports Instagram, LinkedIn, Twitter/X, TikTok, YouTube, and more. It handles media uploads, post scheduling, and status monitoring.
|
|
33
|
+
|
|
34
|
+
## Instructions
|
|
35
|
+
|
|
36
|
+
You have access to Blotato for social media publishing.
|
|
37
|
+
|
|
38
|
+
### Key workflow
|
|
39
|
+
|
|
40
|
+
1. Use `blotato_list_accounts` to get account IDs and platforms
|
|
41
|
+
2. If post includes images or videos, upload them with `blotato_upload_media` first and use the returned media IDs in `blotato_create_post`
|
|
42
|
+
3. Use `blotato_create_post` to publish or schedule
|
|
43
|
+
4. Use `blotato_get_post_status` to confirm success
|
|
44
|
+
|
|
45
|
+
### Best practices
|
|
46
|
+
|
|
47
|
+
- Always call `blotato_list_accounts` first to get valid account IDs
|
|
48
|
+
- For scheduled posts, use ISO 8601 format for datetime
|
|
49
|
+
- After posting, poll `blotato_get_post_status` until status is "published" or "scheduled"
|
|
50
|
+
- If status is "failed", report the error details to the user
|
|
51
|
+
|
|
52
|
+
### Requirements
|
|
53
|
+
|
|
54
|
+
- Blotato account required (blotato.com)
|
|
55
|
+
- API key must be configured (Blotato Settings > API section)
|
|
56
|
+
|
|
57
|
+
## Available operations
|
|
58
|
+
|
|
59
|
+
- **List Accounts** -- Retrieve connected social media accounts and their platform types
|
|
60
|
+
- **Upload Media** -- Upload images and videos for use in posts
|
|
61
|
+
- **Create Post** -- Publish or schedule a post to one or more platforms
|
|
62
|
+
- **Get Post Status** -- Monitor publishing status (published, scheduled, failed)
|
|
63
|
+
- **Multi-platform Publishing** -- Post the same content across Instagram, LinkedIn, Twitter/X, TikTok, YouTube simultaneously
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: canva
|
|
3
|
+
description: >
|
|
4
|
+
Create, search, autofill, and export designs from Canva.
|
|
5
|
+
Enables agents to generate visual content, fill templates
|
|
6
|
+
with brand assets, and export in various formats.
|
|
7
|
+
description_pt-BR: >
|
|
8
|
+
Crie, busque, preencha e exporte designs do Canva.
|
|
9
|
+
Permite que agentes gerem conteúdo visual, preencham templates
|
|
10
|
+
com assets da marca e exportem em diversos formatos.
|
|
11
|
+
description_es: >
|
|
12
|
+
Crea, busca, completa y exporta diseños de Canva.
|
|
13
|
+
Permite que los agentes generen contenido visual, completen plantillas
|
|
14
|
+
con recursos de marca y exporten en diversos formatos.
|
|
15
|
+
type: mcp
|
|
16
|
+
version: "1.0.0"
|
|
17
|
+
mcp:
|
|
18
|
+
server_name: canva
|
|
19
|
+
transport: http
|
|
20
|
+
url: "https://mcp.canva.com/mcp"
|
|
21
|
+
categories: [design, ui, assets, automation]
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
# Canva Connect
|
|
25
|
+
|
|
26
|
+
## When to use
|
|
27
|
+
|
|
28
|
+
Use Canva when you need to create, search, or export visual designs. This skill connects to the user's Canva account via OAuth and enables agents to generate presentations, social media posts, logos, and other visual content. It also supports autofilling templates with brand assets and exporting designs in various formats.
|
|
29
|
+
|
|
30
|
+
## Instructions
|
|
31
|
+
|
|
32
|
+
You have access to Canva through the Canva Connect MCP server.
|
|
33
|
+
|
|
34
|
+
### Key capabilities
|
|
35
|
+
|
|
36
|
+
- Create new designs (presentations, social posts, logos, etc.)
|
|
37
|
+
- Autofill templates with content (text, images, brand elements)
|
|
38
|
+
- Search existing designs in the user's Canva account
|
|
39
|
+
- Export designs as PDF or image files
|
|
40
|
+
|
|
41
|
+
### Best practices
|
|
42
|
+
|
|
43
|
+
- Use templates when possible -- faster and more on-brand
|
|
44
|
+
- When autofilling, match content to template placeholder names
|
|
45
|
+
- Export in the format most useful for the pipeline (JPG for social, PDF for documents)
|
|
46
|
+
- Respect the user's Canva plan limitations (some features require paid plans)
|
|
47
|
+
|
|
48
|
+
### Requirements
|
|
49
|
+
|
|
50
|
+
- User needs a Canva account (free or paid)
|
|
51
|
+
- OAuth authorization is required on first use (browser popup)
|
|
52
|
+
- Autofill templates require a Canva paid plan
|
|
53
|
+
|
|
54
|
+
## Available operations
|
|
55
|
+
|
|
56
|
+
- **Create Design** -- Generate new designs from scratch or templates
|
|
57
|
+
- **Search Designs** -- Find existing designs in the user's Canva account
|
|
58
|
+
- **Autofill Template** -- Fill template placeholders with text, images, and brand elements
|
|
59
|
+
- **Export Design** -- Export designs as PDF, JPG, or other formats
|
|
60
|
+
- **Browse Templates** -- Search Canva's template library for the right starting point
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: higgsfield
|
|
3
|
+
description: >
|
|
4
|
+
Generate images and videos using Higgsfield AI models via MCP.
|
|
5
|
+
Supports text-to-image, image-to-video, and cinematic scene generation.
|
|
6
|
+
Use for producing visual assets in content squads — covers still images
|
|
7
|
+
for posts, short animated clips for reels, and environment/location scenes.
|
|
8
|
+
description_pt-BR: >
|
|
9
|
+
Gere imagens e vídeos usando modelos de IA da Higgsfield via MCP.
|
|
10
|
+
Suporta texto-para-imagem, imagem-para-vídeo e geração de cenas cinematográficas.
|
|
11
|
+
Use para produzir assets visuais em squads de conteúdo — imagens estáticas
|
|
12
|
+
para posts, clipes animados para reels, e cenas de ambiente/localização.
|
|
13
|
+
type: mcp
|
|
14
|
+
version: "1.0.0"
|
|
15
|
+
mcp:
|
|
16
|
+
server_name: higgsfield
|
|
17
|
+
transport: http
|
|
18
|
+
url: "https://mcp.higgsfield.ai/mcp"
|
|
19
|
+
categories: [assets, images, video, ai, generation, media]
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
# Higgsfield AI
|
|
23
|
+
|
|
24
|
+
## When to use
|
|
25
|
+
|
|
26
|
+
Use this skill when a squad needs to generate **original visual assets** — images or short videos — using AI. Ideal for:
|
|
27
|
+
|
|
28
|
+
- Social media posts that need a custom illustration or scene
|
|
29
|
+
- Reels or carousels with animated visuals
|
|
30
|
+
- Background environments, location scenes, or mood boards
|
|
31
|
+
- Animating an existing reference image into a short video clip
|
|
32
|
+
|
|
33
|
+
**Check before generating:** always verify if a suitable image already exists in the squad's `output/` folder or can be fetched via `image-fetcher`. Only generate when no existing asset works.
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## Model Reference
|
|
38
|
+
|
|
39
|
+
### Image Models
|
|
40
|
+
|
|
41
|
+
| Model | Plan | Best for |
|
|
42
|
+
|-------|------|----------|
|
|
43
|
+
| `nano_banana_2` | Basic+ | **⭐ PREFERRED** — Top quality 4K, text overlays, diagrams, any scene. |
|
|
44
|
+
| `z_image` | **Free** | Fast stylized text-to-image. Use only as fallback when `nano_banana_2` is unavailable. |
|
|
45
|
+
| `soul_location` | Basic+ | Cinematic environments, landscapes, location backgrounds. |
|
|
46
|
+
| `soul_cast` | Basic+ | Consistent character identity and portraits. |
|
|
47
|
+
|
|
48
|
+
### Video Models
|
|
49
|
+
|
|
50
|
+
| Model | Plan | Best for |
|
|
51
|
+
|-------|------|----------|
|
|
52
|
+
| `seedance_2_0` | **Plus+** | Reference-driven video. Animate an image. Best default. |
|
|
53
|
+
| `kling3_0` | Plus+ | Multi-shot, audio sync, cinematic motion. |
|
|
54
|
+
| `grok_video` | Basic+ | Text and image-to-video, versatile. |
|
|
55
|
+
| `veo3` | Plus+ | Google Veo 3 — reliable cinematic wide range. |
|
|
56
|
+
|
|
57
|
+
> **Plan check:** before calling a paid model, verify the user's Higgsfield plan. Use `get_cost: true` to preflight credit cost before generating.
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## Instructions
|
|
62
|
+
|
|
63
|
+
### Generating an image
|
|
64
|
+
|
|
65
|
+
Use `generate_image` with the appropriate model and a descriptive prompt.
|
|
66
|
+
|
|
67
|
+
```
|
|
68
|
+
Model: z_image (free) or soul_location (paid, landscapes)
|
|
69
|
+
Aspect: 16:9 for social/horizontal, 9:16 for Stories/Reels
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
**Good prompt structure:**
|
|
73
|
+
```
|
|
74
|
+
[Subject] [action], [environment], [lighting], [camera angle], [style/mood]
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Example:
|
|
78
|
+
```
|
|
79
|
+
A dentist smiling while talking to a patient, modern clinic, soft natural light,
|
|
80
|
+
eye-level shot, photorealistic, warm and welcoming mood
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### Animating an image into video
|
|
84
|
+
|
|
85
|
+
1. Generate or provide a reference image URL
|
|
86
|
+
2. Call `generate_video` with `model: seedance_2_0`
|
|
87
|
+
3. Pass the image as `medias: [{role: "start_image", value: "<url or job_id>"}]`
|
|
88
|
+
4. Set `duration: 5` for social clips (5s is efficient and cost-effective)
|
|
89
|
+
5. Set `resolution: "720p"` for standard output
|
|
90
|
+
|
|
91
|
+
### Checking model availability and constraints
|
|
92
|
+
|
|
93
|
+
When unsure which model to use or what parameters it accepts:
|
|
94
|
+
```
|
|
95
|
+
models_explore(action: "recommend", query: "<your use case>", type: "image"|"video")
|
|
96
|
+
models_explore(action: "get", model_id: "<id>")
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### Reviewing past generations
|
|
100
|
+
|
|
101
|
+
```
|
|
102
|
+
show_generations(type: "image"|"video", size: 10)
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Use `job_display(ids: [...])` to re-display a specific generation result.
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## Available operations
|
|
110
|
+
|
|
111
|
+
- **`generate_image`** — Text-to-image generation. Pass `model`, `prompt`, `aspect_ratio`, `count` (1–4).
|
|
112
|
+
- **`generate_video`** — Image-to-video or text-to-video. Pass `model`, `prompt`, `medias[]`, `duration`, `resolution`.
|
|
113
|
+
- **`models_explore`** — Discover and compare models. Actions: `list`, `search`, `get`, `recommend`.
|
|
114
|
+
- **`show_generations`** — Browse past completed generations.
|
|
115
|
+
- **`job_display`** — Re-display specific generation results by job ID.
|
|
116
|
+
- **`media_upload`** + **`media_confirm`** — Upload a local file for use as reference input.
|
|
117
|
+
- **`show_medias`** — List previously uploaded media files.
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## Best practices for content squads
|
|
122
|
+
|
|
123
|
+
- **Default to `z_image`** for quick iterations and free-tier availability.
|
|
124
|
+
- **Use `soul_location`** for editorial-quality environment scenes (requires Basic+ plan).
|
|
125
|
+
- **5-second videos at 720p** are the sweet spot for social content — lower cost, fast delivery.
|
|
126
|
+
- **Reuse job IDs**: after generating an image, pass its `id` directly as `medias[].value` in `generate_video` — no need to copy URLs.
|
|
127
|
+
- **Prompt language**: write prompts in English for best results across all models.
|
|
128
|
+
- **Genre parameter** (`seedance_2_0`): use `"epic"` for dramatic health/science content, `"drama"` for emotional narratives, `"auto"` for general use.
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## Error handling
|
|
133
|
+
|
|
134
|
+
| Error | Cause | Action |
|
|
135
|
+
|-------|-------|--------|
|
|
136
|
+
| `Requires basic plan or higher` | Model needs paid plan | Switch to `z_image` or prompt user to upgrade at https://higgsfield.ai/mcp-pricing |
|
|
137
|
+
| `Out of credits` | Free tier exhausted | Prompt user to upgrade or use an alternative image skill |
|
|
138
|
+
| `status: waiting / in_progress` | Generation queued | Call `job_display` again in ~30–60s. Video can take 2–5 min. |
|
|
139
|
+
| `Invalid parameter` | Model doesn't support the param | Call `models_explore(action: "get", model_id: ...)` to check supported params |
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
## Requirements
|
|
144
|
+
|
|
145
|
+
- Higgsfield account (free or paid) — sign up at https://higgsfield.ai
|
|
146
|
+
- OAuth authorization handled automatically by VS Code MCP on first use
|
|
147
|
+
- For video generation: **Plus plan** minimum (https://higgsfield.ai/mcp-pricing)
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: image-ai-generator
|
|
3
|
+
description: >
|
|
4
|
+
Generates images via Openrouter API using AI image models.
|
|
5
|
+
Supports two modes: test (cheap model for iteration) and production (high-quality model for final output).
|
|
6
|
+
Handles prompt construction, API calls, base64 decoding, and file saving.
|
|
7
|
+
Supports reference images (logos, mascots) for brand-consistent generation.
|
|
8
|
+
description_pt-BR: >
|
|
9
|
+
Gera imagens via API do Openrouter usando modelos de IA.
|
|
10
|
+
Suporta dois modos: test (modelo barato para iteração) e production (modelo de alta qualidade para output final).
|
|
11
|
+
Cuida da construção de prompts, chamadas de API, decodificação base64 e salvamento de arquivos.
|
|
12
|
+
Suporta imagens de referência (logos, mascotes) para geração consistente com a marca.
|
|
13
|
+
type: script
|
|
14
|
+
version: "1.0.0"
|
|
15
|
+
script:
|
|
16
|
+
path: scripts/generate.py
|
|
17
|
+
runtime: python3
|
|
18
|
+
invoke: "python3 {skill_path}/scripts/generate.py --prompt \"{prompt}\" --output \"{output}\" --mode \"{mode}\""
|
|
19
|
+
env:
|
|
20
|
+
- OPENROUTER_API_KEY
|
|
21
|
+
categories: [assets, images, ai, generation]
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
# Image Generator
|
|
25
|
+
|
|
26
|
+
## When to use
|
|
27
|
+
|
|
28
|
+
Use the Image Generator when you need to create visual assets from text prompts. This skill calls the Openrouter API with AI image generation models and saves the resulting images locally.
|
|
29
|
+
|
|
30
|
+
**IMPORTANT: Think twice before generating images.** Image generation costs money and takes time. Before generating:
|
|
31
|
+
1. Check if a suitable image already exists in the squad's assets folder
|
|
32
|
+
2. Check if a web search could find a free/open image that works
|
|
33
|
+
3. Consider if the image is truly necessary for the content quality
|
|
34
|
+
4. Only generate when no existing alternative is good enough
|
|
35
|
+
5. **Generate only what you need** — never batch-generate "test variations". One image is enough to validate a concept.
|
|
36
|
+
|
|
37
|
+
## Modes
|
|
38
|
+
|
|
39
|
+
### Test mode (`--mode test`)
|
|
40
|
+
- **Model:** `sourceful/riverflow-v2-fast`
|
|
41
|
+
- **When to use:** During iteration, testing layouts, checking composition, reviewing concepts
|
|
42
|
+
- **Cost:** ~R$0.01-0.02 per image (very low)
|
|
43
|
+
- **Quality:** Good enough for layout validation, not for final output
|
|
44
|
+
|
|
45
|
+
### Production mode (`--mode production`)
|
|
46
|
+
- **Model:** `google/gemini-3.1-flash-image-preview`
|
|
47
|
+
- **When to use:** Only when generating the final images that will be published or delivered
|
|
48
|
+
- **Cost:** ~R$0.07-0.10 per image
|
|
49
|
+
- **Quality:** High quality, suitable for social media and publishing
|
|
50
|
+
|
|
51
|
+
**Default mode is `test`.** Only switch to `production` when the user has approved the layout/composition and you are generating the final deliverable images.
|
|
52
|
+
|
|
53
|
+
## Instructions
|
|
54
|
+
|
|
55
|
+
### Single image generation
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
python3 skills/image-generator/scripts/generate.py \
|
|
59
|
+
--prompt "A detailed description of the image to generate" \
|
|
60
|
+
--output "squads/{squad}/output/{run_id}/assets/image-name.jpg" \
|
|
61
|
+
--mode test
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### With a reference image (logo, mascot, brand asset)
|
|
65
|
+
|
|
66
|
+
Use `--reference` to send a local image to the model as visual context. The model will incorporate the referenced image (e.g., a logo or mascot) into the generated output.
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
python3 skills/image-generator/scripts/generate.py \
|
|
70
|
+
--prompt "A social media banner featuring the company logo prominently in the center" \
|
|
71
|
+
--output "squads/{squad}/output/{run_id}/assets/banner.jpg" \
|
|
72
|
+
--reference "squads/{squad}/assets/logo.jpg" \
|
|
73
|
+
--mode production
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Supported reference formats: JPG, JPEG, WEBP, GIF.
|
|
77
|
+
|
|
78
|
+
### Batch generation
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
python3 skills/image-generator/scripts/generate.py \
|
|
82
|
+
--batch "squads/{squad}/output/{run_id}/assets/batch.json" \
|
|
83
|
+
--mode production
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
The batch JSON file should contain:
|
|
87
|
+
```json
|
|
88
|
+
[
|
|
89
|
+
{"prompt": "Description of image 1", "output": "path/to/image1.jpg"},
|
|
90
|
+
{"prompt": "Description of image 2", "output": "path/to/image2.jpg"}
|
|
91
|
+
]
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Each item can optionally include a `"reference": "path/to/ref.jpg"` field.
|
|
95
|
+
|
|
96
|
+
### Prompt guidelines
|
|
97
|
+
|
|
98
|
+
- Be specific about composition, lighting, style, and mood
|
|
99
|
+
- Specify aspect ratio or orientation when relevant (e.g., "portrait 3:4", "landscape 16:9")
|
|
100
|
+
- Include "hyper realistic, 4K quality" for photographic styles
|
|
101
|
+
- Include "clean composition" to avoid cluttered outputs
|
|
102
|
+
- Avoid requesting text in images — AI models struggle with text rendering
|
|
103
|
+
|
|
104
|
+
### Cost awareness
|
|
105
|
+
|
|
106
|
+
- Each production image costs approximately R$0.07-0.10
|
|
107
|
+
- Each test image costs approximately R$0.01-0.02
|
|
108
|
+
- A typical carousel with 8 images costs ~R$0.60-0.80 in production mode
|
|
109
|
+
- **Always use test mode first**, then regenerate only the approved concepts in production mode
|
|
110
|
+
- When testing, generate **1 image only** — not 3, not 5, just 1
|
|
111
|
+
|
|
112
|
+
## Available operations
|
|
113
|
+
|
|
114
|
+
- **Single generation** — Generate one image from a text prompt
|
|
115
|
+
- **Batch generation** — Generate multiple images from a JSON batch file
|
|
116
|
+
- **Mode selection** — Choose between test (cheap) and production (high-quality) models
|
|
117
|
+
- **Reference image** — Send a logo/mascot/brand asset as visual context for the generation
|
|
118
|
+
|
|
119
|
+
## Error handling
|
|
120
|
+
|
|
121
|
+
- If `OPENROUTER_API_KEY` is not set, the script exits with an error message. Set it in your `.env` file or environment.
|
|
122
|
+
- If the API returns an error, the script prints the error code and body, then exits with code 1.
|
|
123
|
+
- If no image is found in the API response, the script reports which model was used and exits with code 1.
|
|
124
|
+
- For batch mode, partial failures are reported with a success count summary.
|