@aksp/opencrew 1.2.2 → 1.3.1
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/CHANGELOG.md +139 -139
- package/README.md +150 -150
- package/package.json +63 -63
- package/src/cli.js +136 -136
- package/src/commands/init.js +125 -103
- package/src/commands/update.js +87 -77
- package/src/lib/fsx.js +127 -76
- package/templates/.mcp.json +9 -9
- package/templates/AGENTS.md +133 -133
- package/templates/_opencrew/.opencrew-version +1 -1
- package/templates/_opencrew/_memory/preferences.md +11 -10
- package/templates/_opencrew/agents/copywriter.agent.md +66 -0
- package/templates/_opencrew/agents/designer.agent.md +65 -0
- package/templates/_opencrew/agents/researcher.agent.md +95 -0
- package/templates/_opencrew/agents/reviewer.agent.md +76 -0
- package/templates/_opencrew/agents/strategist.agent.md +64 -0
- package/templates/_opencrew/core/architect.agent.yaml +2 -2
- package/templates/_opencrew/core/prompts/build.prompt.md +614 -586
- package/templates/_opencrew/core/prompts/design.prompt.md +255 -27
- package/templates/_opencrew/core/prompts/discovery.prompt.md +42 -1
- package/templates/_opencrew/core/prompts/export.prompt.md +133 -0
- package/templates/_opencrew/core/prompts/repair.prompt.md +119 -119
- package/templates/_opencrew/core/prompts/sherlock-seo.md +216 -0
- package/templates/_opencrew/core/prompts/sherlock-shared.md +73 -1
- package/templates/_opencrew/core/prompts/sherlock-trends.md +238 -0
- package/templates/_opencrew/core/prompts/sherlock-web.md +220 -0
- package/templates/_opencrew/core/runner.pipeline.md +729 -642
- package/templates/_opencrew/core/skills.engine.md +490 -429
- package/templates/crews/blog-semanal/discovery.template.yaml +35 -0
- package/templates/crews/instagram-carrossel/discovery.template.yaml +35 -0
- package/templates/crews/lancamento-produto/discovery.template.yaml +39 -0
- package/templates/crews/newsletter-mensal/discovery.template.yaml +29 -0
- package/templates/skills/README.md +22 -22
- package/templates/skills/catalog.json +61 -61
- package/templates/skills/instagram-publisher/SKILL.md +119 -119
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Template: Blog Semanal
|
|
2
|
+
# Escolha este template para crews que produzem artigos de blog com SEO e divulgação.
|
|
3
|
+
|
|
4
|
+
template: blog-semanal
|
|
5
|
+
label: "Blog Semanal"
|
|
6
|
+
description: >
|
|
7
|
+
Criação de artigos para blog com pesquisa de SEO, redação otimizada,
|
|
8
|
+
e divulgação nas redes sociais. Pipeline completo: pesquisador →
|
|
9
|
+
redator SEO → revisor → social media writer.
|
|
10
|
+
icon: 📝
|
|
11
|
+
domains:
|
|
12
|
+
- content-marketing
|
|
13
|
+
- seo
|
|
14
|
+
- copywriting
|
|
15
|
+
audience: "Leitores de blog corporativo, gestores, tomadores de decisão e profissionais buscando conteúdo educativo aprofundado"
|
|
16
|
+
format: blog-seo
|
|
17
|
+
tier: standard
|
|
18
|
+
suggested_agents:
|
|
19
|
+
- role: researcher
|
|
20
|
+
title: "Pesquisador SEO"
|
|
21
|
+
description: "Encontra keywords, analisa concorrentes, mapeia conteúdo gaps e produz research brief"
|
|
22
|
+
skills: [web_search, web_fetch]
|
|
23
|
+
- role: copywriter
|
|
24
|
+
title: "Redator SEO"
|
|
25
|
+
description: "Escreve artigos otimizados com base no research brief, aplicando hooks, estrutura e CTAs"
|
|
26
|
+
skills: [web_search]
|
|
27
|
+
- role: reviewer
|
|
28
|
+
title: "Revisor de Conteúdo"
|
|
29
|
+
description: "Avalia qualidade, SEO, tom de voz e aderência ao briefing antes da publicação"
|
|
30
|
+
skills: []
|
|
31
|
+
- role: social-writer
|
|
32
|
+
title: "Social Media Writer"
|
|
33
|
+
description: "Adapta o artigo para formatos de redes sociais (LinkedIn, Twitter, Instagram)"
|
|
34
|
+
skills: []
|
|
35
|
+
optional: true
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Template: Instagram Carrossel
|
|
2
|
+
# Escolha este template para crews que produzem carrosséis educativos para Instagram.
|
|
3
|
+
|
|
4
|
+
template: instagram-carrossel
|
|
5
|
+
label: "Instagram Carrossel"
|
|
6
|
+
description: >
|
|
7
|
+
Criação de carrosséis educativos para Instagram com pesquisa de
|
|
8
|
+
referências, geração de ângulos, design visual e copy otimizada.
|
|
9
|
+
Pipeline completo: pesquisador → criador → revisor → designer.
|
|
10
|
+
icon: 🎠
|
|
11
|
+
domains:
|
|
12
|
+
- social-media
|
|
13
|
+
- instagram
|
|
14
|
+
- copywriting
|
|
15
|
+
- image-design
|
|
16
|
+
audience: "Seguidores do Instagram buscando conteúdo educativo, dicas práticas e insights visuais sobre o nicho"
|
|
17
|
+
format: instagram-feed
|
|
18
|
+
tier: standard
|
|
19
|
+
suggested_agents:
|
|
20
|
+
- role: researcher
|
|
21
|
+
title: "Pesquisador de Tendências"
|
|
22
|
+
description: "Pesquisa referências, padrões virais e hooks de alto engajamento no Instagram"
|
|
23
|
+
skills: [web_search]
|
|
24
|
+
- role: creator
|
|
25
|
+
title: "Criador de Carrossel"
|
|
26
|
+
description: "Gera ângulos, escreve slides e caption otimizados para carrossel educativo"
|
|
27
|
+
skills: []
|
|
28
|
+
- role: reviewer
|
|
29
|
+
title: "Revisor de Conteúdo"
|
|
30
|
+
description: "Avalia coesão do carrossel, força dos hooks, qualidade do copy e CTAs"
|
|
31
|
+
skills: []
|
|
32
|
+
- role: designer
|
|
33
|
+
title: "Designer Visual"
|
|
34
|
+
description: "Cria os slides do carrossel com identidade visual consistente"
|
|
35
|
+
skills: [image-creator]
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Template: Lançamento de Produto
|
|
2
|
+
# Escolha este template para crews que preparam o lançamento de um produto ou feature.
|
|
3
|
+
|
|
4
|
+
template: lancamento-produto
|
|
5
|
+
label: "Lançamento de Produto"
|
|
6
|
+
description: >
|
|
7
|
+
Estratégia completa de lançamento: pesquisa de mercado, posicionamento,
|
|
8
|
+
copy de lançamento, posts para redes sociais e email de lançamento.
|
|
9
|
+
Pipeline: estrategista → redator → social writer → revisor.
|
|
10
|
+
icon: 🚀
|
|
11
|
+
domains:
|
|
12
|
+
- product-marketing
|
|
13
|
+
- copywriting
|
|
14
|
+
- social-media
|
|
15
|
+
- email-marketing
|
|
16
|
+
audience: "Potenciais clientes e usuários — early adopters, leads qualificados e base atual de usuários"
|
|
17
|
+
format: null
|
|
18
|
+
tier: full
|
|
19
|
+
suggested_agents:
|
|
20
|
+
- role: strategist
|
|
21
|
+
title: "Estrategista de Lançamento"
|
|
22
|
+
description: "Define posicionamento, ângulos de lançamento, storytelling e calendário de divulgação"
|
|
23
|
+
skills: [web_search]
|
|
24
|
+
- role: copywriter
|
|
25
|
+
title: "Redator de Lançamento"
|
|
26
|
+
description: "Escreve copy de lançamento: landing page, headline, bullets de features, story de produto"
|
|
27
|
+
skills: []
|
|
28
|
+
- role: social-writer
|
|
29
|
+
title: "Social Media Writer"
|
|
30
|
+
description: "Adapta o conteúdo de lançamento para LinkedIn, Twitter/X e Instagram"
|
|
31
|
+
skills: []
|
|
32
|
+
- role: email-writer
|
|
33
|
+
title: "Redator de Email"
|
|
34
|
+
description: "Escreve sequência de emails de lançamento: teaser → launch day → follow-up"
|
|
35
|
+
skills: []
|
|
36
|
+
- role: reviewer
|
|
37
|
+
title: "Revisor de Lançamento"
|
|
38
|
+
description: "Revisa consistência da narrativa, força dos ganchos, CTAs e tom em todos os canais"
|
|
39
|
+
skills: []
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Template: Newsletter Mensal
|
|
2
|
+
# Escolha este template para crews que produzem newsletters mensais por email.
|
|
3
|
+
|
|
4
|
+
template: newsletter-mensal
|
|
5
|
+
label: "Newsletter Mensal"
|
|
6
|
+
description: >
|
|
7
|
+
Criação de newsletter mensal com curadoria de conteúdo, redação de email,
|
|
8
|
+
e análise de métricas. Pipeline: curador → redator → revisor.
|
|
9
|
+
icon: 📧
|
|
10
|
+
domains:
|
|
11
|
+
- email-marketing
|
|
12
|
+
- copywriting
|
|
13
|
+
- content-curation
|
|
14
|
+
audience: "Assinantes de newsletter — profissionais que buscam curadoria de qualidade, insights do setor e conteúdo exclusivo no email"
|
|
15
|
+
format: email-newsletter
|
|
16
|
+
tier: express
|
|
17
|
+
suggested_agents:
|
|
18
|
+
- role: curator
|
|
19
|
+
title: "Curador de Conteúdo"
|
|
20
|
+
description: "Seleciona e rankeia os conteúdos mais relevantes da semana/mês para a newsletter"
|
|
21
|
+
skills: [web_search, web_fetch]
|
|
22
|
+
- role: copywriter
|
|
23
|
+
title: "Redator de Newsletter"
|
|
24
|
+
description: "Escreve o email com tom pessoal, linhas de assunto magnéticas e CTAs efetivos"
|
|
25
|
+
skills: []
|
|
26
|
+
- role: reviewer
|
|
27
|
+
title: "Revisor Final"
|
|
28
|
+
description: "Revisa tom, links, CTAs e consistência antes do envio"
|
|
29
|
+
skills: []
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
# Catálogo de Skills — opencrew
|
|
2
|
-
|
|
3
|
-
Este é o índice de skills disponíveis no catálogo oficial do opencrew. O Skills Engine
|
|
4
|
-
(`_opencrew/core/skills.engine.md`) lê este arquivo durante a descoberta de skills (Operação 7)
|
|
5
|
-
e busca `SKILL.md` de cada uma via `https://raw.githubusercontent.com/alberthpalhares/opencrew/main/templates/skills/<name>/SKILL.md`
|
|
6
|
-
para instalação (Operação 2).
|
|
7
|
-
|
|
8
|
-
| Skill | Tipo | Descrição |
|
|
9
|
-
|-------|------|-----------|
|
|
10
|
-
| `apify` | mcp | Plataforma de web scraping e automação. Extrai dados de qualquer site usando Actors prontos da Apify Store. |
|
|
11
|
-
| `blotato` | mcp | Publicação e agendamento em redes sociais (Instagram, LinkedIn, Twitter/X, TikTok, YouTube). |
|
|
12
|
-
| `canva` | mcp | Cria, busca, preenche e exporta designs do Canva (autenticação via OAuth). |
|
|
13
|
-
| `image-ai-generator` | script | Gera imagens via API do OpenRouter (modo teste barato + modo produção de alta qualidade). |
|
|
14
|
-
| `image-creator` | mcp | Renderiza HTML/CSS em imagens pixel-perfect via Playwright. Motor genérico para qualquer formato visual. |
|
|
15
|
-
| `image-fetcher` | hybrid | Obtém assets visuais de múltiplas fontes: busca na web, screenshots via Playwright, arquivos do usuário. |
|
|
16
|
-
| `instagram-publisher` | script | Publica carrosséis do Instagram a partir de imagens locais via imgBB + Graph API. |
|
|
17
|
-
| `opencrew-best-practice-creator` | prompt | Guia a criação e manutenção de arquivos de best-practice na biblioteca do opencrew. |
|
|
18
|
-
| `opencrew-skill-creator` | prompt | Cria, edita e avalia (evals/benchmark) skills do opencrew de qualquer tipo. |
|
|
19
|
-
| `resend` | mcp | Envio de emails pelo servidor MCP oficial da Resend (individual, lote, anexos, agendamento). |
|
|
20
|
-
| `template-designer` | prompt | Seleção de template visual para agentes de design — gera variações, renderiza e salva a identidade aprovada. |
|
|
21
|
-
|
|
22
|
-
Para instalar qualquer uma delas dentro da sua IDE: `/opencrew install <nome>`.
|
|
1
|
+
# Catálogo de Skills — opencrew
|
|
2
|
+
|
|
3
|
+
Este é o índice de skills disponíveis no catálogo oficial do opencrew. O Skills Engine
|
|
4
|
+
(`_opencrew/core/skills.engine.md`) lê este arquivo durante a descoberta de skills (Operação 7)
|
|
5
|
+
e busca `SKILL.md` de cada uma via `https://raw.githubusercontent.com/alberthpalhares/opencrew/main/templates/skills/<name>/SKILL.md`
|
|
6
|
+
para instalação (Operação 2).
|
|
7
|
+
|
|
8
|
+
| Skill | Tipo | Descrição |
|
|
9
|
+
|-------|------|-----------|
|
|
10
|
+
| `apify` | mcp | Plataforma de web scraping e automação. Extrai dados de qualquer site usando Actors prontos da Apify Store. |
|
|
11
|
+
| `blotato` | mcp | Publicação e agendamento em redes sociais (Instagram, LinkedIn, Twitter/X, TikTok, YouTube). |
|
|
12
|
+
| `canva` | mcp | Cria, busca, preenche e exporta designs do Canva (autenticação via OAuth). |
|
|
13
|
+
| `image-ai-generator` | script | Gera imagens via API do OpenRouter (modo teste barato + modo produção de alta qualidade). |
|
|
14
|
+
| `image-creator` | mcp | Renderiza HTML/CSS em imagens pixel-perfect via Playwright. Motor genérico para qualquer formato visual. |
|
|
15
|
+
| `image-fetcher` | hybrid | Obtém assets visuais de múltiplas fontes: busca na web, screenshots via Playwright, arquivos do usuário. |
|
|
16
|
+
| `instagram-publisher` | script | Publica carrosséis do Instagram a partir de imagens locais via imgBB + Graph API. |
|
|
17
|
+
| `opencrew-best-practice-creator` | prompt | Guia a criação e manutenção de arquivos de best-practice na biblioteca do opencrew. |
|
|
18
|
+
| `opencrew-skill-creator` | prompt | Cria, edita e avalia (evals/benchmark) skills do opencrew de qualquer tipo. |
|
|
19
|
+
| `resend` | mcp | Envio de emails pelo servidor MCP oficial da Resend (individual, lote, anexos, agendamento). |
|
|
20
|
+
| `template-designer` | prompt | Seleção de template visual para agentes de design — gera variações, renderiza e salva a identidade aprovada. |
|
|
21
|
+
|
|
22
|
+
Para instalar qualquer uma delas dentro da sua IDE: `/opencrew install <nome>`.
|
|
@@ -1,61 +1,61 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": "1",
|
|
3
|
-
"baseUrl": "https://raw.githubusercontent.com/alberthpalhares/opencrew/main/templates/skills",
|
|
4
|
-
"skills": {
|
|
5
|
-
"apify": {
|
|
6
|
-
"type": "mcp",
|
|
7
|
-
"description": "Plataforma de web scraping e automação. Extrai dados de qualquer site usando Actors prontos da Apify Store.",
|
|
8
|
-
"minVersion": "1.0.0"
|
|
9
|
-
},
|
|
10
|
-
"blotato": {
|
|
11
|
-
"type": "mcp",
|
|
12
|
-
"description": "Publicação e agendamento em redes sociais (Instagram, LinkedIn, Twitter/X, TikTok, YouTube).",
|
|
13
|
-
"minVersion": "1.0.0"
|
|
14
|
-
},
|
|
15
|
-
"canva": {
|
|
16
|
-
"type": "mcp",
|
|
17
|
-
"description": "Cria, busca, preenche e exporta designs do Canva (autenticação via OAuth).",
|
|
18
|
-
"minVersion": "1.0.0"
|
|
19
|
-
},
|
|
20
|
-
"image-ai-generator": {
|
|
21
|
-
"type": "script",
|
|
22
|
-
"description": "Gera imagens via API do OpenRouter (modo teste barato + modo produção de alta qualidade).",
|
|
23
|
-
"minVersion": "1.0.0"
|
|
24
|
-
},
|
|
25
|
-
"image-creator": {
|
|
26
|
-
"type": "mcp",
|
|
27
|
-
"description": "Renderiza HTML/CSS em imagens pixel-perfect via Playwright. Motor genérico para qualquer formato visual.",
|
|
28
|
-
"minVersion": "1.0.0"
|
|
29
|
-
},
|
|
30
|
-
"image-fetcher": {
|
|
31
|
-
"type": "hybrid",
|
|
32
|
-
"description": "Obtém assets visuais de múltiplas fontes: busca na web, screenshots via Playwright, arquivos do usuário.",
|
|
33
|
-
"minVersion": "1.0.0"
|
|
34
|
-
},
|
|
35
|
-
"instagram-publisher": {
|
|
36
|
-
"type": "script",
|
|
37
|
-
"description": "Publica carrosséis do Instagram a partir de imagens locais via imgBB + Graph API.",
|
|
38
|
-
"minVersion": "1.0.0"
|
|
39
|
-
},
|
|
40
|
-
"opencrew-best-practice-creator": {
|
|
41
|
-
"type": "prompt",
|
|
42
|
-
"description": "Guia a criação e manutenção de arquivos de best-practice na biblioteca do opencrew.",
|
|
43
|
-
"minVersion": "1.0.0"
|
|
44
|
-
},
|
|
45
|
-
"opencrew-skill-creator": {
|
|
46
|
-
"type": "prompt",
|
|
47
|
-
"description": "Cria, edita e avalia (evals/benchmark) skills do opencrew de qualquer tipo.",
|
|
48
|
-
"minVersion": "1.0.0"
|
|
49
|
-
},
|
|
50
|
-
"resend": {
|
|
51
|
-
"type": "mcp",
|
|
52
|
-
"description": "Envio de emails pelo servidor MCP oficial da Resend (individual, lote, anexos, agendamento).",
|
|
53
|
-
"minVersion": "1.0.0"
|
|
54
|
-
},
|
|
55
|
-
"template-designer": {
|
|
56
|
-
"type": "prompt",
|
|
57
|
-
"description": "Seleção de template visual para agentes de design — gera variações, renderiza e salva a identidade aprovada.",
|
|
58
|
-
"minVersion": "1.0.0"
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"version": "1",
|
|
3
|
+
"baseUrl": "https://raw.githubusercontent.com/alberthpalhares/opencrew/main/templates/skills",
|
|
4
|
+
"skills": {
|
|
5
|
+
"apify": {
|
|
6
|
+
"type": "mcp",
|
|
7
|
+
"description": "Plataforma de web scraping e automação. Extrai dados de qualquer site usando Actors prontos da Apify Store.",
|
|
8
|
+
"minVersion": "1.0.0"
|
|
9
|
+
},
|
|
10
|
+
"blotato": {
|
|
11
|
+
"type": "mcp",
|
|
12
|
+
"description": "Publicação e agendamento em redes sociais (Instagram, LinkedIn, Twitter/X, TikTok, YouTube).",
|
|
13
|
+
"minVersion": "1.0.0"
|
|
14
|
+
},
|
|
15
|
+
"canva": {
|
|
16
|
+
"type": "mcp",
|
|
17
|
+
"description": "Cria, busca, preenche e exporta designs do Canva (autenticação via OAuth).",
|
|
18
|
+
"minVersion": "1.0.0"
|
|
19
|
+
},
|
|
20
|
+
"image-ai-generator": {
|
|
21
|
+
"type": "script",
|
|
22
|
+
"description": "Gera imagens via API do OpenRouter (modo teste barato + modo produção de alta qualidade).",
|
|
23
|
+
"minVersion": "1.0.0"
|
|
24
|
+
},
|
|
25
|
+
"image-creator": {
|
|
26
|
+
"type": "mcp",
|
|
27
|
+
"description": "Renderiza HTML/CSS em imagens pixel-perfect via Playwright. Motor genérico para qualquer formato visual.",
|
|
28
|
+
"minVersion": "1.0.0"
|
|
29
|
+
},
|
|
30
|
+
"image-fetcher": {
|
|
31
|
+
"type": "hybrid",
|
|
32
|
+
"description": "Obtém assets visuais de múltiplas fontes: busca na web, screenshots via Playwright, arquivos do usuário.",
|
|
33
|
+
"minVersion": "1.0.0"
|
|
34
|
+
},
|
|
35
|
+
"instagram-publisher": {
|
|
36
|
+
"type": "script",
|
|
37
|
+
"description": "Publica carrosséis do Instagram a partir de imagens locais via imgBB + Graph API.",
|
|
38
|
+
"minVersion": "1.0.0"
|
|
39
|
+
},
|
|
40
|
+
"opencrew-best-practice-creator": {
|
|
41
|
+
"type": "prompt",
|
|
42
|
+
"description": "Guia a criação e manutenção de arquivos de best-practice na biblioteca do opencrew.",
|
|
43
|
+
"minVersion": "1.0.0"
|
|
44
|
+
},
|
|
45
|
+
"opencrew-skill-creator": {
|
|
46
|
+
"type": "prompt",
|
|
47
|
+
"description": "Cria, edita e avalia (evals/benchmark) skills do opencrew de qualquer tipo.",
|
|
48
|
+
"minVersion": "1.0.0"
|
|
49
|
+
},
|
|
50
|
+
"resend": {
|
|
51
|
+
"type": "mcp",
|
|
52
|
+
"description": "Envio de emails pelo servidor MCP oficial da Resend (individual, lote, anexos, agendamento).",
|
|
53
|
+
"minVersion": "1.0.0"
|
|
54
|
+
},
|
|
55
|
+
"template-designer": {
|
|
56
|
+
"type": "prompt",
|
|
57
|
+
"description": "Seleção de template visual para agentes de design — gera variações, renderiza e salva a identidade aprovada.",
|
|
58
|
+
"minVersion": "1.0.0"
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
@@ -1,119 +1,119 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: instagram-publisher
|
|
3
|
-
description: >
|
|
4
|
-
Publishes Instagram carousel posts from local images.
|
|
5
|
-
Uploads images to imgBB (requires API key) for public hosting, creates Instagram
|
|
6
|
-
media containers via the Graph API, and publishes the carousel.
|
|
7
|
-
Supports 2-10 images per post and retrieves the real post permalink.
|
|
8
|
-
description_pt-BR: >
|
|
9
|
-
Publica carrosséis do Instagram a partir de imagens locais.
|
|
10
|
-
Faz upload das imagens para o imgBB (requer chave de API) como hospedagem pública,
|
|
11
|
-
cria containers de mídia via Graph API e publica o carrossel.
|
|
12
|
-
Suporta de 2 a 10 imagens por post e obtém o permalink real.
|
|
13
|
-
description_es: >
|
|
14
|
-
Publica carruseles de Instagram a partir de imágenes locales.
|
|
15
|
-
Sube las imágenes a imgBB (requiere clave de API) como hosting público, crea
|
|
16
|
-
contenedores de medios vía Graph API y publica el carrusel.
|
|
17
|
-
Soporta de 2 a 10 imágenes por post y obtiene el permalink real.
|
|
18
|
-
type: script
|
|
19
|
-
version: "1.0.0"
|
|
20
|
-
script:
|
|
21
|
-
path: scripts/publish.js
|
|
22
|
-
runtime: node
|
|
23
|
-
invoke: "node --env-file=.env {skill_path}/scripts/publish.js --images \"{images}\" --caption \"{caption}\""
|
|
24
|
-
env:
|
|
25
|
-
- INSTAGRAM_ACCESS_TOKEN
|
|
26
|
-
- INSTAGRAM_USER_ID
|
|
27
|
-
- IMGBB_API_KEY
|
|
28
|
-
categories: [social-media, publishing, instagram]
|
|
29
|
-
---
|
|
30
|
-
|
|
31
|
-
# Instagram Publisher
|
|
32
|
-
|
|
33
|
-
## When to use
|
|
34
|
-
|
|
35
|
-
Use the Instagram Publisher when you need to publish carousel posts directly to an Instagram Business account. This skill handles the full workflow: uploading images to imgBB (requires your own API key from https://api.imgbb.com/), creating Instagram media containers via the Graph API, and publishing the carousel. It supports 2-10 JPEG images per post.
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
## Instructions
|
|
39
|
-
|
|
40
|
-
### Workflow
|
|
41
|
-
|
|
42
|
-
1. List JPEG files in `crews/{crew}/output/images/` sorted by name.
|
|
43
|
-
If no files found: stop and ask the user to add images before continuing.
|
|
44
|
-
2. Present the image list to the user to confirm order (use your IDE's native interactive-choice mechanism if it has one; otherwise a numbered list).
|
|
45
|
-
3. Extract the caption from the content draft:
|
|
46
|
-
- Use the hook slide text + CTA slide text
|
|
47
|
-
- Max 2200 characters (Instagram limit)
|
|
48
|
-
4. Run the publish script:
|
|
49
|
-
```
|
|
50
|
-
node --env-file=.env crews/{crew}/tools/publish.js \
|
|
51
|
-
--images "<comma-separated-ordered-paths>" \
|
|
52
|
-
--caption "<caption>"
|
|
53
|
-
```
|
|
54
|
-
Add `--dry-run` to test the full flow without actually publishing.
|
|
55
|
-
5. On success: save the post URL and post ID to the step output file.
|
|
56
|
-
6. On failure: display the error and ask the user how to proceed.
|
|
57
|
-
|
|
58
|
-
### Constraints
|
|
59
|
-
|
|
60
|
-
- Images: JPEG only, 2-10 per carousel
|
|
61
|
-
- Caption: max 2200 characters
|
|
62
|
-
- Requires Instagram Business account (not Personal or Creator)
|
|
63
|
-
- Rate limit: 25 API-published posts per 24 hours
|
|
64
|
-
|
|
65
|
-
### Setup (first-time)
|
|
66
|
-
|
|
67
|
-
Copy `.env.example` to `.env` and fill in the two required variables:
|
|
68
|
-
|
|
69
|
-
```
|
|
70
|
-
INSTAGRAM_ACCESS_TOKEN=
|
|
71
|
-
INSTAGRAM_USER_ID=
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
#### INSTAGRAM_ACCESS_TOKEN
|
|
75
|
-
|
|
76
|
-
Pré-requisito: conta Instagram Business conectada a uma Página do Facebook, e um app criado em [developers.facebook.com](https://developers.facebook.com/) (tipo: **Empresa**).
|
|
77
|
-
|
|
78
|
-
**Para obter um token de longa duração (válido 60 dias):**
|
|
79
|
-
|
|
80
|
-
1. Acesse seu app → **Graph API Explorer**
|
|
81
|
-
2. No dropdown do topo, selecione seu app
|
|
82
|
-
3. Clique em **"Gerar token de acesso"**
|
|
83
|
-
4. Ative as permissões:
|
|
84
|
-
- `instagram_content_publish`
|
|
85
|
-
- `instagram_basic`
|
|
86
|
-
- `pages_read_engagement`
|
|
87
|
-
5. Clique em **"Gerar token de acesso"** e autorize — você receberá um token de curta duração (1h)
|
|
88
|
-
6. Converta para longa duração (60 dias) com este GET:
|
|
89
|
-
```
|
|
90
|
-
https://graph.facebook.com/oauth/access_token
|
|
91
|
-
?grant_type=fb_exchange_token
|
|
92
|
-
&client_id={APP_ID}
|
|
93
|
-
&client_secret={APP_SECRET}
|
|
94
|
-
&fb_exchange_token={TOKEN_CURTO}
|
|
95
|
-
```
|
|
96
|
-
_(APP_ID e APP_SECRET: seu app → Configurações → Básico)_
|
|
97
|
-
7. Copie o `access_token` da resposta e cole em `.env`
|
|
98
|
-
|
|
99
|
-
> O token expira em 60 dias. Repita o processo para renovar.
|
|
100
|
-
|
|
101
|
-
#### INSTAGRAM_USER_ID
|
|
102
|
-
|
|
103
|
-
1. No Graph API Explorer (com o token acima), faça GET em:
|
|
104
|
-
```
|
|
105
|
-
/me/accounts
|
|
106
|
-
```
|
|
107
|
-
2. Localize sua **Página do Facebook** na resposta e anote o `id`
|
|
108
|
-
3. Faça GET em:
|
|
109
|
-
```
|
|
110
|
-
/{page-id}?fields=instagram_business_account
|
|
111
|
-
```
|
|
112
|
-
4. Copie o `id` dentro de `instagram_business_account` — esse é o seu User ID
|
|
113
|
-
|
|
114
|
-
## Available operations
|
|
115
|
-
|
|
116
|
-
- **Publish Carousel** -- Upload images and publish a carousel post to Instagram
|
|
117
|
-
- **Dry Run** -- Test the full publishing flow without actually posting (use `--dry-run` flag)
|
|
118
|
-
- **Image Upload** -- Upload local JPEG images to imgBB (requires API key)
|
|
119
|
-
- **Status Check** -- Monitor media container processing status before publishing
|
|
1
|
+
---
|
|
2
|
+
name: instagram-publisher
|
|
3
|
+
description: >
|
|
4
|
+
Publishes Instagram carousel posts from local images.
|
|
5
|
+
Uploads images to imgBB (requires API key) for public hosting, creates Instagram
|
|
6
|
+
media containers via the Graph API, and publishes the carousel.
|
|
7
|
+
Supports 2-10 images per post and retrieves the real post permalink.
|
|
8
|
+
description_pt-BR: >
|
|
9
|
+
Publica carrosséis do Instagram a partir de imagens locais.
|
|
10
|
+
Faz upload das imagens para o imgBB (requer chave de API) como hospedagem pública,
|
|
11
|
+
cria containers de mídia via Graph API e publica o carrossel.
|
|
12
|
+
Suporta de 2 a 10 imagens por post e obtém o permalink real.
|
|
13
|
+
description_es: >
|
|
14
|
+
Publica carruseles de Instagram a partir de imágenes locales.
|
|
15
|
+
Sube las imágenes a imgBB (requiere clave de API) como hosting público, crea
|
|
16
|
+
contenedores de medios vía Graph API y publica el carrusel.
|
|
17
|
+
Soporta de 2 a 10 imágenes por post y obtiene el permalink real.
|
|
18
|
+
type: script
|
|
19
|
+
version: "1.0.0"
|
|
20
|
+
script:
|
|
21
|
+
path: scripts/publish.js
|
|
22
|
+
runtime: node
|
|
23
|
+
invoke: "node --env-file=.env {skill_path}/scripts/publish.js --images \"{images}\" --caption \"{caption}\""
|
|
24
|
+
env:
|
|
25
|
+
- INSTAGRAM_ACCESS_TOKEN
|
|
26
|
+
- INSTAGRAM_USER_ID
|
|
27
|
+
- IMGBB_API_KEY
|
|
28
|
+
categories: [social-media, publishing, instagram]
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
# Instagram Publisher
|
|
32
|
+
|
|
33
|
+
## When to use
|
|
34
|
+
|
|
35
|
+
Use the Instagram Publisher when you need to publish carousel posts directly to an Instagram Business account. This skill handles the full workflow: uploading images to imgBB (requires your own API key from https://api.imgbb.com/), creating Instagram media containers via the Graph API, and publishing the carousel. It supports 2-10 JPEG images per post.
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
## Instructions
|
|
39
|
+
|
|
40
|
+
### Workflow
|
|
41
|
+
|
|
42
|
+
1. List JPEG files in `crews/{crew}/output/images/` sorted by name.
|
|
43
|
+
If no files found: stop and ask the user to add images before continuing.
|
|
44
|
+
2. Present the image list to the user to confirm order (use your IDE's native interactive-choice mechanism if it has one; otherwise a numbered list).
|
|
45
|
+
3. Extract the caption from the content draft:
|
|
46
|
+
- Use the hook slide text + CTA slide text
|
|
47
|
+
- Max 2200 characters (Instagram limit)
|
|
48
|
+
4. Run the publish script:
|
|
49
|
+
```
|
|
50
|
+
node --env-file=.env crews/{crew}/tools/publish.js \
|
|
51
|
+
--images "<comma-separated-ordered-paths>" \
|
|
52
|
+
--caption "<caption>"
|
|
53
|
+
```
|
|
54
|
+
Add `--dry-run` to test the full flow without actually publishing.
|
|
55
|
+
5. On success: save the post URL and post ID to the step output file.
|
|
56
|
+
6. On failure: display the error and ask the user how to proceed.
|
|
57
|
+
|
|
58
|
+
### Constraints
|
|
59
|
+
|
|
60
|
+
- Images: JPEG only, 2-10 per carousel
|
|
61
|
+
- Caption: max 2200 characters
|
|
62
|
+
- Requires Instagram Business account (not Personal or Creator)
|
|
63
|
+
- Rate limit: 25 API-published posts per 24 hours
|
|
64
|
+
|
|
65
|
+
### Setup (first-time)
|
|
66
|
+
|
|
67
|
+
Copy `.env.example` to `.env` and fill in the two required variables:
|
|
68
|
+
|
|
69
|
+
```
|
|
70
|
+
INSTAGRAM_ACCESS_TOKEN=
|
|
71
|
+
INSTAGRAM_USER_ID=
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
#### INSTAGRAM_ACCESS_TOKEN
|
|
75
|
+
|
|
76
|
+
Pré-requisito: conta Instagram Business conectada a uma Página do Facebook, e um app criado em [developers.facebook.com](https://developers.facebook.com/) (tipo: **Empresa**).
|
|
77
|
+
|
|
78
|
+
**Para obter um token de longa duração (válido 60 dias):**
|
|
79
|
+
|
|
80
|
+
1. Acesse seu app → **Graph API Explorer**
|
|
81
|
+
2. No dropdown do topo, selecione seu app
|
|
82
|
+
3. Clique em **"Gerar token de acesso"**
|
|
83
|
+
4. Ative as permissões:
|
|
84
|
+
- `instagram_content_publish`
|
|
85
|
+
- `instagram_basic`
|
|
86
|
+
- `pages_read_engagement`
|
|
87
|
+
5. Clique em **"Gerar token de acesso"** e autorize — você receberá um token de curta duração (1h)
|
|
88
|
+
6. Converta para longa duração (60 dias) com este GET:
|
|
89
|
+
```
|
|
90
|
+
https://graph.facebook.com/oauth/access_token
|
|
91
|
+
?grant_type=fb_exchange_token
|
|
92
|
+
&client_id={APP_ID}
|
|
93
|
+
&client_secret={APP_SECRET}
|
|
94
|
+
&fb_exchange_token={TOKEN_CURTO}
|
|
95
|
+
```
|
|
96
|
+
_(APP_ID e APP_SECRET: seu app → Configurações → Básico)_
|
|
97
|
+
7. Copie o `access_token` da resposta e cole em `.env`
|
|
98
|
+
|
|
99
|
+
> O token expira em 60 dias. Repita o processo para renovar.
|
|
100
|
+
|
|
101
|
+
#### INSTAGRAM_USER_ID
|
|
102
|
+
|
|
103
|
+
1. No Graph API Explorer (com o token acima), faça GET em:
|
|
104
|
+
```
|
|
105
|
+
/me/accounts
|
|
106
|
+
```
|
|
107
|
+
2. Localize sua **Página do Facebook** na resposta e anote o `id`
|
|
108
|
+
3. Faça GET em:
|
|
109
|
+
```
|
|
110
|
+
/{page-id}?fields=instagram_business_account
|
|
111
|
+
```
|
|
112
|
+
4. Copie o `id` dentro de `instagram_business_account` — esse é o seu User ID
|
|
113
|
+
|
|
114
|
+
## Available operations
|
|
115
|
+
|
|
116
|
+
- **Publish Carousel** -- Upload images and publish a carousel post to Instagram
|
|
117
|
+
- **Dry Run** -- Test the full publishing flow without actually posting (use `--dry-run` flag)
|
|
118
|
+
- **Image Upload** -- Upload local JPEG images to imgBB (requires API key)
|
|
119
|
+
- **Status Check** -- Monitor media container processing status before publishing
|