[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71AB75AMR0FNE7TGF6GQWVD":3,"skill-same:01M71AB75AMR0FNE7TGF6GQWVD":203},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":28,"publishedAt":49,"linkOnly":50,"markdownContent":51,"markdownBody":52,"frontMatter":53,"refName":62,"commitSha":63,"skillDirectory":64,"forksCount":14,"repositoryHtmlUrl":65,"repositoryHomepageUrl":6,"ownerHtmlUrl":66,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":67,"install":68,"resources":81},"01M71AB75AMR0FNE7TGF6GQWVD","whatsapp-cloud-api",null,"Integracao com WhatsApp Business Cloud API (Meta). Mensagens, templates, webhooks HMAC-SHA256, automacao de atendimento. Boilerplates Node.js e Python.","sapsapshen\u002Fai-memory-router","sapsapshen","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F20347959?v=4","01M6XDQEF1DP50DKF37H81J3J5","shenmian","01M6XDQEJPE41Y3DT2763X8ZJN",0,"MIT","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fwhatsapp-cloud-api\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],"whatsapp","whatsapp cloud api","cloud","api","2026","cli","whatsapp business","codex-cli","de","critical","community","webhooks","business","node","Meta","messaging","code","antigravity","python","gemini","2026-11-10 10:12:30",false,"---\nname: whatsapp-cloud-api\ndescription: Integracao com WhatsApp Business Cloud API (Meta). Mensagens, templates, webhooks HMAC-SHA256, automacao de atendimento. Boilerplates Node.js e Python.\nrisk: critical\nsource: community\ndate_added: '2026-03-06'\nauthor: renat\ntags:\n- messaging\n- whatsapp\n- meta\n- webhooks\ntools:\n- claude-code\n- antigravity\n- cursor\n- gemini-cli\n- codex-cli\n---\n\n# WhatsApp Cloud API - Integracao Profissional\n\n## Overview\n\nIntegracao com WhatsApp Business Cloud API (Meta). Mensagens, templates, webhooks HMAC-SHA256, automacao de atendimento. Boilerplates Node.js e Python.\n\n## When to Use This Skill\n\n- When the user mentions \"whatsapp\" or related topics\n- When the user mentions \"whatsapp business\" or related topics\n- When the user mentions \"api whatsapp\" or related topics\n- When the user mentions \"chatbot whatsapp\" or related topics\n- When the user mentions \"mensagem whatsapp\" or related topics\n- When the user mentions \"template whatsapp\" or related topics\n\n## Do Not Use This Skill When\n\n- The task is unrelated to whatsapp cloud api\n- A simpler, more specific tool can handle the request\n- The user needs general-purpose assistance without domain expertise\n\n## How It Works\n\nSkill para implementar integracoes profissionais com WhatsApp Business usando a Cloud API oficial da Meta. Suporta Node.js\u002FTypeScript e Python.\n\n## Overview\n\nA WhatsApp Cloud API e a API oficial da Meta para envio e recebimento de mensagens via WhatsApp Business. Desde outubro 2025, e a unica opcao suportada (a API On-Premises foi descontinuada).\n\n**Versao da API:** Graph API v21.0 (2026)\n**Base URL:** `https:\u002F\u002Fgraph.facebook.com\u002Fv21.0\u002F{phone-number-id}\u002Fmessages`\n**Autenticacao:** Bearer Token (System User Token para producao)\n\n**Pricing 2026 (por mensagem):**\n\n| Categoria      | Custo             | Quando cobrado                          |\n|----------------|-------------------|-----------------------------------------|\n| Marketing      | $0.025-$0.1365    | Campanhas, promocoes                    |\n| Utility        | $0.004-$0.0456    | Confirmacoes de pedido, atualizacoes    |\n| Authentication | $0.004-$0.0456    | OTP, reset de senha                     |\n| Service        | GRATIS            | Resposta dentro da janela de 24h        |\n\n**Pre-requisitos:**\n- Conta Meta Business Suite (gratuita)\n- App no Meta for Developers com produto WhatsApp\n- Numero de telefone verificado\n- System User Token (permanente)\n\nSe o usuario nao tem conta Meta Business, leia `references\u002Fsetup-guide.md` para o guia completo de setup do zero.\n\n---\n\n## Decision Tree\n\nUse esta arvore para determinar o proximo passo:\n\n```\nO usuario precisa de setup inicial?\n├── SIM → Leia references\u002Fsetup-guide.md\n└── NAO → Qual linguagem?\n    ├── Node.js\u002FTypeScript\n    └── Python\n    → O que quer fazer?\n       ├── Enviar mensagens → Secao \"Tipos de Mensagem\" abaixo\n       ├── Receber mensagens → Secao \"Webhooks\" abaixo\n       ├── Automatizar atendimento → Secao \"Automacao\" abaixo\n       ├── WhatsApp Flows \u002F Commerce → Secao \"Features Avancados\" abaixo\n       ├── Gerenciar templates → references\u002Ftemplate-management.md\n       └── Compliance \u002F limites → Secao \"Compliance & Quality\" abaixo\n```\n\nPara iniciar um projeto do zero com boilerplate pronto, use o script:\n```bash\npython scripts\u002Fsetup_project.py --language nodejs --path .\u002Fmeu-projeto\n\n## Ou\n\npython scripts\u002Fsetup_project.py --language python --path .\u002Fmeu-projeto\n```\n\n---\n\n## 1. Configurar Variaveis De Ambiente\n\n```env\nWHATSAPP_TOKEN=seu_access_token_aqui\nPHONE_NUMBER_ID=seu_phone_number_id\nWABA_ID=seu_whatsapp_business_account_id\nAPP_SECRET=seu_app_secret\nVERIFY_TOKEN=token_customizado_para_webhook\n```\n\n## 2. Enviar Mensagem De Texto Simples\n\n**Node.js\u002FTypeScript:**\n```typescript\nimport axios from 'axios';\n\nconst GRAPH_API = 'https:\u002F\u002Fgraph.facebook.com\u002Fv21.0';\n\nasync function sendText(to: string, message: string) {\n  const response = await axios.post(\n    `${GRAPH_API}\u002F${process.env.PHONE_NUMBER_ID}\u002Fmessages`,\n    {\n      messaging_product: 'whatsapp',\n      to,\n      type: 'text',\n      text: { body: message }\n    },\n    { headers: { Authorization: `Bearer ${process.env.WHATSAPP_TOKEN}` } }\n  );\n  return response.data; \u002F\u002F { messaging_product, contacts, messages: [{ id }] }\n}\n```\n\n**Python:**\n```python\nimport httpx\nimport os\n\nGRAPH_API = \"https:\u002F\u002Fgraph.facebook.com\u002Fv21.0\"\n\nasync def send_text(to: str, message: str) -> dict:\n    async with httpx.AsyncClient() as client:\n        response = await client.post(\n            f\"{GRAPH_API}\u002F{os.environ['PHONE_NUMBER_ID']}\u002Fmessages\",\n            json={\n                \"messaging_product\": \"whatsapp\",\n                \"to\": to,\n                \"type\": \"text\",\n                \"text\": {\"body\": message}\n            },\n            headers={\"Authorization\": f\"Bearer {os.environ['WHATSAPP_TOKEN']}\"}\n        )\n        return response.json()  # {\"messaging_product\", \"contacts\", \"messages\": [{\"id\"}]}\n```\n\n## 3. Enviar Template Message (Fora Da Janela De 24H)\n\nTemplates sao a unica forma de iniciar conversa com um cliente. Devem ser aprovados pela WhatsApp antes do uso.\n\n```json\n{\n  \"messaging_product\": \"whatsapp\",\n  \"to\": \"5511999999999\",\n  \"type\": \"template\",\n  \"template\": {\n    \"name\": \"hello_world\",\n    \"language\": { \"code\": \"pt_BR\" },\n    \"components\": [\n      {\n        \"type\": \"body\",\n        \"parameters\": [\n          { \"type\": \"text\", \"text\": \"João\" }\n        ]\n      }\n    ]\n  }\n}\n```\n\n## 4. Verificar Entrega\n\nUse o script de teste para validar:\n```bash\npython scripts\u002Fsend_test_message.py --to 5511999999999 --message \"Teste de integracao\"\n```\n\n---\n\n## Tipos De Mensagem\n\n| Tipo               | Uso                                   | Limite           |\n|--------------------|---------------------------------------|------------------|\n| Text               | Mensagens simples de texto            | 4096 chars       |\n| Template           | Iniciar conversa \u002F fora da janela 24h | 1600 chars body  |\n| Image              | Fotos e imagens                       | 5MB              |\n| Document           | PDFs, planilhas, docs                 | 100MB            |\n| Video              | Videos                                | 16MB             |\n| Audio              | Mensagens de voz                      | 16MB             |\n| Interactive Button | Botoes de resposta rapida             | Max 3 botoes     |\n| Interactive List   | Menu com opcoes em secoes             | Max 10 opcoes    |\n| Location           | Compartilhar localizacao              | lat\u002Flong         |\n| Contact            | Compartilhar contato                  | vCard format     |\n| Reaction           | Reagir com emoji a mensagem           | 1 emoji          |\n\n**Exemplo - Botoes interativos (Node.js):**\n```typescript\nasync function sendButtons(to: string, body: string, buttons: Array\u003C{id: string, title: string}>) {\n  return axios.post(`${GRAPH_API}\u002F${process.env.PHONE_NUMBER_ID}\u002Fmessages`, {\n    messaging_product: 'whatsapp',\n    to,\n    type: 'interactive',\n    interactive: {\n      type: 'button',\n      body: { text: body },\n      action: {\n        buttons: buttons.map(b => ({\n          type: 'reply',\n          reply: { id: b.id, title: b.title }\n        }))\n      }\n    }\n  }, { headers: { Authorization: `Bearer ${process.env.WHATSAPP_TOKEN}` } });\n}\n\n\u002F\u002F Uso:\nawait sendButtons('5511999999999', 'Como posso ajudar?', [\n  { id: 'suporte', title: 'Suporte' },\n  { id: 'vendas', title: 'Vendas' },\n  { id: 'info', title: 'Informacoes' }\n]);\n```\n\n**Para exemplos completos de todos os tipos em Node.js e Python**, leia `references\u002Fmessage-types.md`.\n\n---\n\n## Webhooks\n\nWebhooks permitem receber mensagens e atualizacoes de status em tempo real.\n\n## Verificacao (Get) - Obrigatorio\n\nQuando voce configura o webhook no Meta Developers, a Meta envia um GET para verificar:\n\n```typescript\n\u002F\u002F Node.js (Express)\napp.get('\u002Fwebhook', (req, res) => {\n  const mode = req.query['hub.mode'];\n  const token = req.query['hub.verify_token'];\n  const challenge = req.query['hub.challenge'];\n\n  if (mode === 'subscribe' && token === process.env.VERIFY_TOKEN) {\n    res.status(200).send(challenge);\n  } else {\n    res.sendStatus(403);\n  }\n});\n```\n\n## Recebimento (Post) - Com Seguranca Hmac-Sha256\n\nToda notificacao de webhook vem assinada no header `X-Hub-Signature-256`. Valide SEMPRE antes de processar:\n\n```typescript\nimport crypto from 'crypto';\n\nfunction validateSignature(rawBody: Buffer, signature: string): boolean {\n  const expectedSig = crypto\n    .createHmac('sha256', process.env.APP_SECRET!)\n    .update(rawBody)\n    .digest('hex');\n  return crypto.timingSafeEqual(\n    Buffer.from(`sha256=${expectedSig}`),\n    Buffer.from(signature)\n  );\n}\n```\n\n**Importante:** Usar `crypto.timingSafeEqual` (Node.js) ou `hmac.compare_digest` (Python) para prevenir timing attacks. Nunca use comparacao simples de strings.\n\n## Eventos Recebidos\n\n- **messages** - Mensagem do cliente (texto, midia, botao, localizacao)\n- **statuses** - Atualizado de status (sent → delivered → read)\n- **errors** - Erros de entrega\n\n**Requisitos:**\n- Endpoint HTTPS com certificado SSL valido\n- Responder com HTTP 200 em ate 5 segundos\n- Dev: use ngrok para teste local\n\n**Para setup completo com exemplos Node.js e Python**, leia `references\u002Fwebhook-setup.md`.\n\n---\n\n## Menu Principal Interativo\n\nUse botoes ou listas para criar um menu de opcoes na primeira interacao:\n\n```python\n\n## Python - Menu Com Lista Interativa\n\nasync def send_main_menu(to: str):\n    await send_interactive_list(\n        to=to,\n        header=\"Bem-vindo!\",\n        body=\"Selecione o que precisa:\",\n        button_text=\"Ver opcoes\",\n        sections=[{\n            \"title\": \"Atendimento\",\n            \"rows\": [\n                {\"id\": \"suporte\", \"title\": \"Suporte Tecnico\", \"description\": \"Ajuda com problemas\"},\n                {\"id\": \"vendas\", \"title\": \"Vendas\", \"description\": \"Conhecer nossos produtos\"},\n                {\"id\": \"financeiro\", \"title\": \"Financeiro\", \"description\": \"Boletos e pagamentos\"},\n            ]\n        }]\n    )\n```\n\n## State Machine Para Fluxos\n\nGerencie conversas com uma maquina de estados. Cada cliente tem um estado atual que determina como a proxima mensagem sera processada:\n\n```\nINICIO → MENU_PRINCIPAL → SUPORTE → AGUARDANDO_DETALHES → ESCALACAO_HUMANO\n                        → VENDAS → CATALOGO → CHECKOUT\n                        → FINANCEIRO → SEGUNDA_VIA_BOLETO\n```\n\n## Janela De 24 Horas\n\n- **Dentro da janela (24h apos ultima mensagem do cliente):** Pode enviar qualquer tipo de mensagem gratuitamente\n- **Fora da janela:** Apenas template messages (cobradas por categoria)\n\n## Integracao Com Ia (Claude Api)\n\nCombine WhatsApp com Claude para respostas inteligentes:\n1. Receba mensagem via webhook\n2. Envie para Claude API com contexto da conversa\n3. Retorne resposta via WhatsApp\n4. Mantenha escalacao para humano disponivel\n\n**Para padroes completos de automacao**, leia `references\u002Fautomation-patterns.md`.\n\n---\n\n## Whatsapp Flows\n\nFormularios interativos multi-tela dentro do WhatsApp. O cliente preenche campos sem sair do app. Definidos em JSON com screens, components e actions.\n\nUse cases: cadastros, agendamentos, pesquisas NPS, selecao de produtos.\n\n## Commerce & Catalogo\n\nAte 500 produtos no catalogo WhatsApp. Envie mensagens de produto individual ou multi-produto com checkout in-app.\n\n## Template Management Api\n\nCrie, liste e delete templates programaticamente. Ate 6000 traducoes por conta. Aprovacao em minutos.\n\n## Whatsapp Channels\n\nBroadcasting unidirecional para subscribers ilimitados. Localizado na aba \"Atualizacoes\" do WhatsApp.\n\n## Click-To-Whatsapp Ads\n\nAnuncios no Facebook\u002FInstagram com botao que abre conversa no WhatsApp. 99% de taxa de abertura.\n\n## Status Tracking\n\nRastreie entrega: pending → server → device → read. Receba via webhook de status updates.\n\n**Para detalhes completos de features avancados**, leia `references\u002Fadvanced-features.md`.\n**Para gerenciamento de templates via API**, leia `references\u002Ftemplate-management.md`.\n\n---\n\n## Checklist Essencial\n\n- [ ] Opt-in explicito obtido antes de enviar mensagens\n- [ ] Mecanismo de opt-out implementado (keyword \"SAIR\" ou \"STOP\")\n- [ ] Registro de consentimento com timestamp, metodo e proposito\n- [ ] Conteudo dentro das politicas do WhatsApp (sem spam, sem conteudo proibido)\n- [ ] LGPD\u002FGDPR compliance (base legal definida, direitos do titular)\n- [ ] Frequencia de mensagens adequada (nao excessiva)\n- [ ] Templates aprovados antes do uso\n- [ ] Verificacao de negocio completa (para limites maiores)\n\n## Quality Rating\n\nO WhatsApp monitora a qualidade das suas mensagens e atribui um rating:\n\n| Rating    | Significado                        | Acao                              |\n|-----------|------------------------------------|-----------------------------------|\n| Verde     | Boa qualidade, poucos bloqueios    | Manter — elegivel para upgrade    |\n| Amarelo   | Qualidade media, atencao necessaria| Revisar conteudo e frequencia     |\n| Vermelho  | Qualidade baixa, risco de suspensao| Acao imediata: reduzir volume     |\n\n**Sinais positivos:** Alta taxa de resposta, engajamento, poucos bloqueios\n**Sinais negativos:** Bloqueios, reports de spam, baixo engajamento\n\n## Tier System (Limites De Mensagem)\n\nDesde outubro 2025, limites sao por **Business Portfolio** (nao por numero):\n\n| Tier         | Conversas\u002F24h | Como alcancar                           |\n|--------------|---------------|------------------------------------------|\n| Inicial      | 250           | Conta nova \u002F nao verificada              |\n| Tier 1       | 1,000         | Auto-upgrade: 50%+ do limite por 7 dias  |\n| Tier 2       | 10,000        | Auto-upgrade: 50%+ do limite por 7 dias  |\n| Tier 3       | 100,000       | Auto-upgrade: 50%+ do limite por 7 dias  |\n| Unlimited    | Ilimitado     | Auto-upgrade: 50%+ do limite por 7 dias  |\n\n**Mudancas 2026:** Tiers 2K e 10K serao removidos. Apos verificacao de negocio, limite imediato de 100K.\n\n**Para guia completo de compliance**, leia `references\u002Fcompliance.md`.\n\n---\n\n## Troubleshooting\n\n| Problema                       | Causa Provavel                     | Solucao                                    |\n|--------------------------------|------------------------------------|--------------------------------------------|\n| 401 Unauthorized               | Token expirado ou invalido         | Gerar novo System User Token               |\n| 400 Bad Request                | Payload malformado                 | Verificar JSON contra exemplos             |\n| Template rejeitado             | Conteudo viola politicas           | Revisar e resubmeter com alteracoes        |\n| Webhook nao recebe             | URL invalida ou sem HTTPS          | Usar ngrok (dev) ou certificado SSL (prod) |\n| Rate limit exceeded            | Ultrapassou 80 msg\u002Fs              | Implementar queue com retry                |\n| Quality rating baixo           | Muitos bloqueios\u002Freports           | Reduzir volume, melhorar conteudo          |\n| Mensagem nao entregue          | Numero invalido ou nao no WhatsApp | Validar numero antes de enviar             |\n| Numero nao verificado          | OTP nao completado                 | Repetir verificacao via SMS ou ligacao      |\n\nPara validar sua configuracao:\n```bash\npython scripts\u002Fvalidate_config.py\n```\n\n---\n\n## Referencias (Leia Conforme Necessidade)\n\n| Arquivo                        | Quando ler                                        |\n|--------------------------------|---------------------------------------------------|\n| `references\u002Fsetup-guide.md`    | Setup inicial — criar conta Meta, configurar API  |\n| `references\u002Fmessage-types.md`  | Exemplos completos de todos os tipos de mensagem   |\n| `references\u002Fwebhook-setup.md`  | Configurar webhooks com seguranca HMAC             |\n| `references\u002Fautomation-patterns.md` | Chatbot, filas, state machine, integracao IA  |\n| `references\u002Fcompliance.md`     | LGPD\u002FGDPR, opt-in, quality rating, tier system    |\n| `references\u002Fapi-reference.md`  | Endpoints, erros, rate limits, pricing 2026        |\n| `references\u002Fadvanced-features.md` | Flows, Commerce, Channels, Ads, Status Tracking|\n| `references\u002Ftemplate-management.md` | CRUD de templates via API                     |\n\n## Scripts\n\n| Script                         | O que faz                                         |\n|--------------------------------|---------------------------------------------------|\n| `scripts\u002Fsetup_project.py`     | Cria projeto com boilerplate (Node.js ou Python)   |\n| `scripts\u002Fvalidate_config.py`   | Valida credenciais e conexao com a API             |\n| `scripts\u002Fsend_test_message.py` | Envia mensagem teste para validar setup            |\n\n## Boilerplate\n\n| Diretorio                      | Conteudo                                          |\n|--------------------------------|---------------------------------------------------|\n| `assets\u002Fboilerplate\u002Fnodejs\u002F`   | Projeto TypeScript\u002FExpress completo                |\n| `assets\u002Fboilerplate\u002Fpython\u002F`   | Projeto Python\u002FFlask completo                      |\n| `assets\u002Fexamples\u002F`             | Exemplos de payloads JSON (templates, webhooks, flows) |\n\n## Best Practices\n\n- Provide clear, specific context about your project and requirements\n- Review all suggestions before applying them to production code\n- Combine with other complementary skills for comprehensive analysis\n\n## Common Pitfalls\n\n- Using this skill for tasks outside its domain expertise\n- Applying recommendations without understanding your specific context\n- Not providing enough project context for accurate analysis\n\n## Related Skills\n\n- `instagram` - Complementary skill for enhanced analysis\n- `social-orchestrator` - Complementary skill for enhanced analysis\n- `telegram` - Complementary skill for enhanced analysis\n","# WhatsApp Cloud API - Integracao Profissional\n\n## Overview\n\nIntegracao com WhatsApp Business Cloud API (Meta). Mensagens, templates, webhooks HMAC-SHA256, automacao de atendimento. Boilerplates Node.js e Python.\n\n## When to Use This Skill\n\n- When the user mentions \"whatsapp\" or related topics\n- When the user mentions \"whatsapp business\" or related topics\n- When the user mentions \"api whatsapp\" or related topics\n- When the user mentions \"chatbot whatsapp\" or related topics\n- When the user mentions \"mensagem whatsapp\" or related topics\n- When the user mentions \"template whatsapp\" or related topics\n\n## Do Not Use This Skill When\n\n- The task is unrelated to whatsapp cloud api\n- A simpler, more specific tool can handle the request\n- The user needs general-purpose assistance without domain expertise\n\n## How It Works\n\nSkill para implementar integracoes profissionais com WhatsApp Business usando a Cloud API oficial da Meta. Suporta Node.js\u002FTypeScript e Python.\n\n## Overview\n\nA WhatsApp Cloud API e a API oficial da Meta para envio e recebimento de mensagens via WhatsApp Business. Desde outubro 2025, e a unica opcao suportada (a API On-Premises foi descontinuada).\n\n**Versao da API:** Graph API v21.0 (2026)\n**Base URL:** `https:\u002F\u002Fgraph.facebook.com\u002Fv21.0\u002F{phone-number-id}\u002Fmessages`\n**Autenticacao:** Bearer Token (System User Token para producao)\n\n**Pricing 2026 (por mensagem):**\n\n| Categoria      | Custo             | Quando cobrado                          |\n|----------------|-------------------|-----------------------------------------|\n| Marketing      | $0.025-$0.1365    | Campanhas, promocoes                    |\n| Utility        | $0.004-$0.0456    | Confirmacoes de pedido, atualizacoes    |\n| Authentication | $0.004-$0.0456    | OTP, reset de senha                     |\n| Service        | GRATIS            | Resposta dentro da janela de 24h        |\n\n**Pre-requisitos:**\n- Conta Meta Business Suite (gratuita)\n- App no Meta for Developers com produto WhatsApp\n- Numero de telefone verificado\n- System User Token (permanente)\n\nSe o usuario nao tem conta Meta Business, leia `references\u002Fsetup-guide.md` para o guia completo de setup do zero.\n\n---\n\n## Decision Tree\n\nUse esta arvore para determinar o proximo passo:\n\n```\nO usuario precisa de setup inicial?\n├── SIM → Leia references\u002Fsetup-guide.md\n└── NAO → Qual linguagem?\n    ├── Node.js\u002FTypeScript\n    └── Python\n    → O que quer fazer?\n       ├── Enviar mensagens → Secao \"Tipos de Mensagem\" abaixo\n       ├── Receber mensagens → Secao \"Webhooks\" abaixo\n       ├── Automatizar atendimento → Secao \"Automacao\" abaixo\n       ├── WhatsApp Flows \u002F Commerce → Secao \"Features Avancados\" abaixo\n       ├── Gerenciar templates → references\u002Ftemplate-management.md\n       └── Compliance \u002F limites → Secao \"Compliance & Quality\" abaixo\n```\n\nPara iniciar um projeto do zero com boilerplate pronto, use o script:\n```bash\npython scripts\u002Fsetup_project.py --language nodejs --path .\u002Fmeu-projeto\n\n## Ou\n\npython scripts\u002Fsetup_project.py --language python --path .\u002Fmeu-projeto\n```\n\n---\n\n## 1. Configurar Variaveis De Ambiente\n\n```env\nWHATSAPP_TOKEN=seu_access_token_aqui\nPHONE_NUMBER_ID=seu_phone_number_id\nWABA_ID=seu_whatsapp_business_account_id\nAPP_SECRET=seu_app_secret\nVERIFY_TOKEN=token_customizado_para_webhook\n```\n\n## 2. Enviar Mensagem De Texto Simples\n\n**Node.js\u002FTypeScript:**\n```typescript\nimport axios from 'axios';\n\nconst GRAPH_API = 'https:\u002F\u002Fgraph.facebook.com\u002Fv21.0';\n\nasync function sendText(to: string, message: string) {\n  const response = await axios.post(\n    `${GRAPH_API}\u002F${process.env.PHONE_NUMBER_ID}\u002Fmessages`,\n    {\n      messaging_product: 'whatsapp',\n      to,\n      type: 'text',\n      text: { body: message }\n    },\n    { headers: { Authorization: `Bearer ${process.env.WHATSAPP_TOKEN}` } }\n  );\n  return response.data; \u002F\u002F { messaging_product, contacts, messages: [{ id }] }\n}\n```\n\n**Python:**\n```python\nimport httpx\nimport os\n\nGRAPH_API = \"https:\u002F\u002Fgraph.facebook.com\u002Fv21.0\"\n\nasync def send_text(to: str, message: str) -> dict:\n    async with httpx.AsyncClient() as client:\n        response = await client.post(\n            f\"{GRAPH_API}\u002F{os.environ['PHONE_NUMBER_ID']}\u002Fmessages\",\n            json={\n                \"messaging_product\": \"whatsapp\",\n                \"to\": to,\n                \"type\": \"text\",\n                \"text\": {\"body\": message}\n            },\n            headers={\"Authorization\": f\"Bearer {os.environ['WHATSAPP_TOKEN']}\"}\n        )\n        return response.json()  # {\"messaging_product\", \"contacts\", \"messages\": [{\"id\"}]}\n```\n\n## 3. Enviar Template Message (Fora Da Janela De 24H)\n\nTemplates sao a unica forma de iniciar conversa com um cliente. Devem ser aprovados pela WhatsApp antes do uso.\n\n```json\n{\n  \"messaging_product\": \"whatsapp\",\n  \"to\": \"5511999999999\",\n  \"type\": \"template\",\n  \"template\": {\n    \"name\": \"hello_world\",\n    \"language\": { \"code\": \"pt_BR\" },\n    \"components\": [\n      {\n        \"type\": \"body\",\n        \"parameters\": [\n          { \"type\": \"text\", \"text\": \"João\" }\n        ]\n      }\n    ]\n  }\n}\n```\n\n## 4. Verificar Entrega\n\nUse o script de teste para validar:\n```bash\npython scripts\u002Fsend_test_message.py --to 5511999999999 --message \"Teste de integracao\"\n```\n\n---\n\n## Tipos De Mensagem\n\n| Tipo               | Uso                                   | Limite           |\n|--------------------|---------------------------------------|------------------|\n| Text               | Mensagens simples de texto            | 4096 chars       |\n| Template           | Iniciar conversa \u002F fora da janela 24h | 1600 chars body  |\n| Image              | Fotos e imagens                       | 5MB              |\n| Document           | PDFs, planilhas, docs                 | 100MB            |\n| Video              | Videos                                | 16MB             |\n| Audio              | Mensagens de voz                      | 16MB             |\n| Interactive Button | Botoes de resposta rapida             | Max 3 botoes     |\n| Interactive List   | Menu com opcoes em secoes             | Max 10 opcoes    |\n| Location           | Compartilhar localizacao              | lat\u002Flong         |\n| Contact            | Compartilhar contato                  | vCard format     |\n| Reaction           | Reagir com emoji a mensagem           | 1 emoji          |\n\n**Exemplo - Botoes interativos (Node.js):**\n```typescript\nasync function sendButtons(to: string, body: string, buttons: Array\u003C{id: string, title: string}>) {\n  return axios.post(`${GRAPH_API}\u002F${process.env.PHONE_NUMBER_ID}\u002Fmessages`, {\n    messaging_product: 'whatsapp',\n    to,\n    type: 'interactive',\n    interactive: {\n      type: 'button',\n      body: { text: body },\n      action: {\n        buttons: buttons.map(b => ({\n          type: 'reply',\n          reply: { id: b.id, title: b.title }\n        }))\n      }\n    }\n  }, { headers: { Authorization: `Bearer ${process.env.WHATSAPP_TOKEN}` } });\n}\n\n\u002F\u002F Uso:\nawait sendButtons('5511999999999', 'Como posso ajudar?', [\n  { id: 'suporte', title: 'Suporte' },\n  { id: 'vendas', title: 'Vendas' },\n  { id: 'info', title: 'Informacoes' }\n]);\n```\n\n**Para exemplos completos de todos os tipos em Node.js e Python**, leia `references\u002Fmessage-types.md`.\n\n---\n\n## Webhooks\n\nWebhooks permitem receber mensagens e atualizacoes de status em tempo real.\n\n## Verificacao (Get) - Obrigatorio\n\nQuando voce configura o webhook no Meta Developers, a Meta envia um GET para verificar:\n\n```typescript\n\u002F\u002F Node.js (Express)\napp.get('\u002Fwebhook', (req, res) => {\n  const mode = req.query['hub.mode'];\n  const token = req.query['hub.verify_token'];\n  const challenge = req.query['hub.challenge'];\n\n  if (mode === 'subscribe' && token === process.env.VERIFY_TOKEN) {\n    res.status(200).send(challenge);\n  } else {\n    res.sendStatus(403);\n  }\n});\n```\n\n## Recebimento (Post) - Com Seguranca Hmac-Sha256\n\nToda notificacao de webhook vem assinada no header `X-Hub-Signature-256`. Valide SEMPRE antes de processar:\n\n```typescript\nimport crypto from 'crypto';\n\nfunction validateSignature(rawBody: Buffer, signature: string): boolean {\n  const expectedSig = crypto\n    .createHmac('sha256', process.env.APP_SECRET!)\n    .update(rawBody)\n    .digest('hex');\n  return crypto.timingSafeEqual(\n    Buffer.from(`sha256=${expectedSig}`),\n    Buffer.from(signature)\n  );\n}\n```\n\n**Importante:** Usar `crypto.timingSafeEqual` (Node.js) ou `hmac.compare_digest` (Python) para prevenir timing attacks. Nunca use comparacao simples de strings.\n\n## Eventos Recebidos\n\n- **messages** - Mensagem do cliente (texto, midia, botao, localizacao)\n- **statuses** - Atualizado de status (sent → delivered → read)\n- **errors** - Erros de entrega\n\n**Requisitos:**\n- Endpoint HTTPS com certificado SSL valido\n- Responder com HTTP 200 em ate 5 segundos\n- Dev: use ngrok para teste local\n\n**Para setup completo com exemplos Node.js e Python**, leia `references\u002Fwebhook-setup.md`.\n\n---\n\n## Menu Principal Interativo\n\nUse botoes ou listas para criar um menu de opcoes na primeira interacao:\n\n```python\n\n## Python - Menu Com Lista Interativa\n\nasync def send_main_menu(to: str):\n    await send_interactive_list(\n        to=to,\n        header=\"Bem-vindo!\",\n        body=\"Selecione o que precisa:\",\n        button_text=\"Ver opcoes\",\n        sections=[{\n            \"title\": \"Atendimento\",\n            \"rows\": [\n                {\"id\": \"suporte\", \"title\": \"Suporte Tecnico\", \"description\": \"Ajuda com problemas\"},\n                {\"id\": \"vendas\", \"title\": \"Vendas\", \"description\": \"Conhecer nossos produtos\"},\n                {\"id\": \"financeiro\", \"title\": \"Financeiro\", \"description\": \"Boletos e pagamentos\"},\n            ]\n        }]\n    )\n```\n\n## State Machine Para Fluxos\n\nGerencie conversas com uma maquina de estados. Cada cliente tem um estado atual que determina como a proxima mensagem sera processada:\n\n```\nINICIO → MENU_PRINCIPAL → SUPORTE → AGUARDANDO_DETALHES → ESCALACAO_HUMANO\n                        → VENDAS → CATALOGO → CHECKOUT\n                        → FINANCEIRO → SEGUNDA_VIA_BOLETO\n```\n\n## Janela De 24 Horas\n\n- **Dentro da janela (24h apos ultima mensagem do cliente):** Pode enviar qualquer tipo de mensagem gratuitamente\n- **Fora da janela:** Apenas template messages (cobradas por categoria)\n\n## Integracao Com Ia (Claude Api)\n\nCombine WhatsApp com Claude para respostas inteligentes:\n1. Receba mensagem via webhook\n2. Envie para Claude API com contexto da conversa\n3. Retorne resposta via WhatsApp\n4. Mantenha escalacao para humano disponivel\n\n**Para padroes completos de automacao**, leia `references\u002Fautomation-patterns.md`.\n\n---\n\n## Whatsapp Flows\n\nFormularios interativos multi-tela dentro do WhatsApp. O cliente preenche campos sem sair do app. Definidos em JSON com screens, components e actions.\n\nUse cases: cadastros, agendamentos, pesquisas NPS, selecao de produtos.\n\n## Commerce & Catalogo\n\nAte 500 produtos no catalogo WhatsApp. Envie mensagens de produto individual ou multi-produto com checkout in-app.\n\n## Template Management Api\n\nCrie, liste e delete templates programaticamente. Ate 6000 traducoes por conta. Aprovacao em minutos.\n\n## Whatsapp Channels\n\nBroadcasting unidirecional para subscribers ilimitados. Localizado na aba \"Atualizacoes\" do WhatsApp.\n\n## Click-To-Whatsapp Ads\n\nAnuncios no Facebook\u002FInstagram com botao que abre conversa no WhatsApp. 99% de taxa de abertura.\n\n## Status Tracking\n\nRastreie entrega: pending → server → device → read. Receba via webhook de status updates.\n\n**Para detalhes completos de features avancados**, leia `references\u002Fadvanced-features.md`.\n**Para gerenciamento de templates via API**, leia `references\u002Ftemplate-management.md`.\n\n---\n\n## Checklist Essencial\n\n- [ ] Opt-in explicito obtido antes de enviar mensagens\n- [ ] Mecanismo de opt-out implementado (keyword \"SAIR\" ou \"STOP\")\n- [ ] Registro de consentimento com timestamp, metodo e proposito\n- [ ] Conteudo dentro das politicas do WhatsApp (sem spam, sem conteudo proibido)\n- [ ] LGPD\u002FGDPR compliance (base legal definida, direitos do titular)\n- [ ] Frequencia de mensagens adequada (nao excessiva)\n- [ ] Templates aprovados antes do uso\n- [ ] Verificacao de negocio completa (para limites maiores)\n\n## Quality Rating\n\nO WhatsApp monitora a qualidade das suas mensagens e atribui um rating:\n\n| Rating    | Significado                        | Acao                              |\n|-----------|------------------------------------|-----------------------------------|\n| Verde     | Boa qualidade, poucos bloqueios    | Manter — elegivel para upgrade    |\n| Amarelo   | Qualidade media, atencao necessaria| Revisar conteudo e frequencia     |\n| Vermelho  | Qualidade baixa, risco de suspensao| Acao imediata: reduzir volume     |\n\n**Sinais positivos:** Alta taxa de resposta, engajamento, poucos bloqueios\n**Sinais negativos:** Bloqueios, reports de spam, baixo engajamento\n\n## Tier System (Limites De Mensagem)\n\nDesde outubro 2025, limites sao por **Business Portfolio** (nao por numero):\n\n| Tier         | Conversas\u002F24h | Como alcancar                           |\n|--------------|---------------|------------------------------------------|\n| Inicial      | 250           | Conta nova \u002F nao verificada              |\n| Tier 1       | 1,000         | Auto-upgrade: 50%+ do limite por 7 dias  |\n| Tier 2       | 10,000        | Auto-upgrade: 50%+ do limite por 7 dias  |\n| Tier 3       | 100,000       | Auto-upgrade: 50%+ do limite por 7 dias  |\n| Unlimited    | Ilimitado     | Auto-upgrade: 50%+ do limite por 7 dias  |\n\n**Mudancas 2026:** Tiers 2K e 10K serao removidos. Apos verificacao de negocio, limite imediato de 100K.\n\n**Para guia completo de compliance**, leia `references\u002Fcompliance.md`.\n\n---\n\n## Troubleshooting\n\n| Problema                       | Causa Provavel                     | Solucao                                    |\n|--------------------------------|------------------------------------|--------------------------------------------|\n| 401 Unauthorized               | Token expirado ou invalido         | Gerar novo System User Token               |\n| 400 Bad Request                | Payload malformado                 | Verificar JSON contra exemplos             |\n| Template rejeitado             | Conteudo viola politicas           | Revisar e resubmeter com alteracoes        |\n| Webhook nao recebe             | URL invalida ou sem HTTPS          | Usar ngrok (dev) ou certificado SSL (prod) |\n| Rate limit exceeded            | Ultrapassou 80 msg\u002Fs              | Implementar queue com retry                |\n| Quality rating baixo           | Muitos bloqueios\u002Freports           | Reduzir volume, melhorar conteudo          |\n| Mensagem nao entregue          | Numero invalido ou nao no WhatsApp | Validar numero antes de enviar             |\n| Numero nao verificado          | OTP nao completado                 | Repetir verificacao via SMS ou ligacao      |\n\nPara validar sua configuracao:\n```bash\npython scripts\u002Fvalidate_config.py\n```\n\n---\n\n## Referencias (Leia Conforme Necessidade)\n\n| Arquivo                        | Quando ler                                        |\n|--------------------------------|---------------------------------------------------|\n| `references\u002Fsetup-guide.md`    | Setup inicial — criar conta Meta, configurar API  |\n| `references\u002Fmessage-types.md`  | Exemplos completos de todos os tipos de mensagem   |\n| `references\u002Fwebhook-setup.md`  | Configurar webhooks com seguranca HMAC             |\n| `references\u002Fautomation-patterns.md` | Chatbot, filas, state machine, integracao IA  |\n| `references\u002Fcompliance.md`     | LGPD\u002FGDPR, opt-in, quality rating, tier system    |\n| `references\u002Fapi-reference.md`  | Endpoints, erros, rate limits, pricing 2026        |\n| `references\u002Fadvanced-features.md` | Flows, Commerce, Channels, Ads, Status Tracking|\n| `references\u002Ftemplate-management.md` | CRUD de templates via API                     |\n\n## Scripts\n\n| Script                         | O que faz                                         |\n|--------------------------------|---------------------------------------------------|\n| `scripts\u002Fsetup_project.py`     | Cria projeto com boilerplate (Node.js ou Python)   |\n| `scripts\u002Fvalidate_config.py`   | Valida credenciais e conexao com a API             |\n| `scripts\u002Fsend_test_message.py` | Envia mensagem teste para validar setup            |\n\n## Boilerplate\n\n| Diretorio                      | Conteudo                                          |\n|--------------------------------|---------------------------------------------------|\n| `assets\u002Fboilerplate\u002Fnodejs\u002F`   | Projeto TypeScript\u002FExpress completo                |\n| `assets\u002Fboilerplate\u002Fpython\u002F`   | Projeto Python\u002FFlask completo                      |\n| `assets\u002Fexamples\u002F`             | Exemplos de payloads JSON (templates, webhooks, flows) |\n\n## Best Practices\n\n- Provide clear, specific context about your project and requirements\n- Review all suggestions before applying them to production code\n- Combine with other complementary skills for comprehensive analysis\n\n## Common Pitfalls\n\n- Using this skill for tasks outside its domain expertise\n- Applying recommendations without understanding your specific context\n- Not providing enough project context for accurate analysis\n\n## Related Skills\n\n- `instagram` - Complementary skill for enhanced analysis\n- `social-orchestrator` - Complementary skill for enhanced analysis\n- `telegram` - Complementary skill for enhanced analysis\n",{"name":5,"risk":38,"tags":54,"tools":56,"author":60,"source":39,"date_added":61,"description":7},[44,29,55,40],"meta",[57,46,58,59,36],"claude-code","cursor","gemini-cli","renat","2026-03-06","main","7a38d8e7073e61c16eda85681cb32fb68a8657a5","skills-store\u002Fglobal\u002Fwhatsapp-cloud-api","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router","https:\u002F\u002Fgithub.com\u002Fsapsapshen","2026-04-14 21:12:12",{"source":8,"skillName":5,"commands":69,"prompt":79,"zipAvailable":80},[70,73,76],{"tool":71,"command":72},"npx","npx skills add sapsapshen\u002Fai-memory-router --skill whatsapp-cloud-api",{"tool":74,"command":75},"bunx","bunx skills add sapsapshen\u002Fai-memory-router --skill whatsapp-cloud-api",{"tool":77,"command":78},"pnpm","pnpm dlx skills add sapsapshen\u002Fai-memory-router --skill whatsapp-cloud-api","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fwhatsapp-cloud-api\u002FSKILL.md",true,[82,88,92,98,102,106,110,114,118,121,125,129,133,137,141,145,149,153,157,163,167,171,175,179,183,187,191,195,199],{"path":83,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":86,"sourceHtmlUrl":87},"assets\u002Fboilerplate\u002Fnodejs\u002F.env.example","ASSET","资产文件",596,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fwhatsapp-cloud-api\u002Fassets\u002Fboilerplate\u002Fnodejs\u002F.env.example",{"path":89,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":90,"sourceHtmlUrl":91},"assets\u002Fboilerplate\u002Fnodejs\u002Fpackage.json",530,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fwhatsapp-cloud-api\u002Fassets\u002Fboilerplate\u002Fnodejs\u002Fpackage.json",{"path":93,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":96,"sourceHtmlUrl":97},"assets\u002Fboilerplate\u002Fnodejs\u002Fsrc\u002Findex.ts","SCRIPT","脚本",3386,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fwhatsapp-cloud-api\u002Fassets\u002Fboilerplate\u002Fnodejs\u002Fsrc\u002Findex.ts",{"path":99,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":100,"sourceHtmlUrl":101},"assets\u002Fboilerplate\u002Fnodejs\u002Fsrc\u002Ftemplate-manager.ts",1913,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fwhatsapp-cloud-api\u002Fassets\u002Fboilerplate\u002Fnodejs\u002Fsrc\u002Ftemplate-manager.ts",{"path":103,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":104,"sourceHtmlUrl":105},"assets\u002Fboilerplate\u002Fnodejs\u002Fsrc\u002Ftypes.ts",5338,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fwhatsapp-cloud-api\u002Fassets\u002Fboilerplate\u002Fnodejs\u002Fsrc\u002Ftypes.ts",{"path":107,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":108,"sourceHtmlUrl":109},"assets\u002Fboilerplate\u002Fnodejs\u002Fsrc\u002Fwebhook-handler.ts",5104,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fwhatsapp-cloud-api\u002Fassets\u002Fboilerplate\u002Fnodejs\u002Fsrc\u002Fwebhook-handler.ts",{"path":111,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":112,"sourceHtmlUrl":113},"assets\u002Fboilerplate\u002Fnodejs\u002Fsrc\u002Fwhatsapp-client.ts",5370,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fwhatsapp-cloud-api\u002Fassets\u002Fboilerplate\u002Fnodejs\u002Fsrc\u002Fwhatsapp-client.ts",{"path":115,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":116,"sourceHtmlUrl":117},"assets\u002Fboilerplate\u002Fnodejs\u002Ftsconfig.json",394,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fwhatsapp-cloud-api\u002Fassets\u002Fboilerplate\u002Fnodejs\u002Ftsconfig.json",{"path":119,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":86,"sourceHtmlUrl":120},"assets\u002Fboilerplate\u002Fpython\u002F.env.example","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fwhatsapp-cloud-api\u002Fassets\u002Fboilerplate\u002Fpython\u002F.env.example",{"path":122,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":123,"sourceHtmlUrl":124},"assets\u002Fboilerplate\u002Fpython\u002Fapp.py",3464,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fwhatsapp-cloud-api\u002Fassets\u002Fboilerplate\u002Fpython\u002Fapp.py",{"path":126,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":127,"sourceHtmlUrl":128},"assets\u002Fboilerplate\u002Fpython\u002Frequirements.txt",65,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fwhatsapp-cloud-api\u002Fassets\u002Fboilerplate\u002Fpython\u002Frequirements.txt",{"path":130,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":131,"sourceHtmlUrl":132},"assets\u002Fboilerplate\u002Fpython\u002Ftemplate_manager.py",3369,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fwhatsapp-cloud-api\u002Fassets\u002Fboilerplate\u002Fpython\u002Ftemplate_manager.py",{"path":134,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":135,"sourceHtmlUrl":136},"assets\u002Fboilerplate\u002Fpython\u002Fwebhook_handler.py",4385,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fwhatsapp-cloud-api\u002Fassets\u002Fboilerplate\u002Fpython\u002Fwebhook_handler.py",{"path":138,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":139,"sourceHtmlUrl":140},"assets\u002Fboilerplate\u002Fpython\u002Fwhatsapp_client.py",7524,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fwhatsapp-cloud-api\u002Fassets\u002Fboilerplate\u002Fpython\u002Fwhatsapp_client.py",{"path":142,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":143,"sourceHtmlUrl":144},"assets\u002Fexamples\u002Fflow-example.json",5458,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fwhatsapp-cloud-api\u002Fassets\u002Fexamples\u002Fflow-example.json",{"path":146,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":147,"sourceHtmlUrl":148},"assets\u002Fexamples\u002Finteractive-menu.json",5377,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fwhatsapp-cloud-api\u002Fassets\u002Fexamples\u002Finteractive-menu.json",{"path":150,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":151,"sourceHtmlUrl":152},"assets\u002Fexamples\u002Ftemplate-messages.json",4908,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fwhatsapp-cloud-api\u002Fassets\u002Fexamples\u002Ftemplate-messages.json",{"path":154,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":155,"sourceHtmlUrl":156},"assets\u002Fexamples\u002Fwebhook-payloads.json",7768,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fwhatsapp-cloud-api\u002Fassets\u002Fexamples\u002Fwebhook-payloads.json",{"path":158,"resourceType":159,"resourceTypeDesc":160,"sizeBytes":161,"sourceHtmlUrl":162},"references\u002Fadvanced-features.md","REFERENCE","参考文档",15807,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fwhatsapp-cloud-api\u002Freferences\u002Fadvanced-features.md",{"path":164,"resourceType":159,"resourceTypeDesc":160,"sizeBytes":165,"sourceHtmlUrl":166},"references\u002Fapi-reference.md",15588,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fwhatsapp-cloud-api\u002Freferences\u002Fapi-reference.md",{"path":168,"resourceType":159,"resourceTypeDesc":160,"sizeBytes":169,"sourceHtmlUrl":170},"references\u002Fautomation-patterns.md",19505,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fwhatsapp-cloud-api\u002Freferences\u002Fautomation-patterns.md",{"path":172,"resourceType":159,"resourceTypeDesc":160,"sizeBytes":173,"sourceHtmlUrl":174},"references\u002Fcompliance.md",13764,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fwhatsapp-cloud-api\u002Freferences\u002Fcompliance.md",{"path":176,"resourceType":159,"resourceTypeDesc":160,"sizeBytes":177,"sourceHtmlUrl":178},"references\u002Fmessage-types.md",40465,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fwhatsapp-cloud-api\u002Freferences\u002Fmessage-types.md",{"path":180,"resourceType":159,"resourceTypeDesc":160,"sizeBytes":181,"sourceHtmlUrl":182},"references\u002Fsetup-guide.md",23263,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fwhatsapp-cloud-api\u002Freferences\u002Fsetup-guide.md",{"path":184,"resourceType":159,"resourceTypeDesc":160,"sizeBytes":185,"sourceHtmlUrl":186},"references\u002Ftemplate-management.md",13099,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fwhatsapp-cloud-api\u002Freferences\u002Ftemplate-management.md",{"path":188,"resourceType":159,"resourceTypeDesc":160,"sizeBytes":189,"sourceHtmlUrl":190},"references\u002Fwebhook-setup.md",17510,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fwhatsapp-cloud-api\u002Freferences\u002Fwebhook-setup.md",{"path":192,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":193,"sourceHtmlUrl":194},"scripts\u002Fsend_test_message.py",3992,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fwhatsapp-cloud-api\u002Fscripts\u002Fsend_test_message.py",{"path":196,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":197,"sourceHtmlUrl":198},"scripts\u002Fsetup_project.py",3819,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fwhatsapp-cloud-api\u002Fscripts\u002Fsetup_project.py",{"path":200,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":201,"sourceHtmlUrl":202},"scripts\u002Fvalidate_config.py",5993,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fwhatsapp-cloud-api\u002Fscripts\u002Fvalidate_config.py",[204,226,251,261,274,290],{"skillNo":205,"name":206,"nameZh":6,"description":207,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":208,"categories":209,"keywords":213,"publishedAt":49},"01M71ATQRKG48SH06FQ697T5G9","wechat-search","Search WeChat Official Account articles using OpenClaw's web search and fetch capabilities with compliance-focused design.","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Fwechat-search-release\u002FSKILL.md",[210],{"categoryNo":211,"categoryName":212,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000037","律师与法务",[214,215,216,217,218,219,220,221,222,223,224,225],"wechat search","wechat","search","capabilities","openclaw","design","web search","compliance","web","official","fetch","with",{"skillNo":227,"name":228,"nameZh":6,"description":229,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":230,"categories":231,"keywords":232,"publishedAt":49},"01M71ATNAVGZB35PFYM2GC5N00","trend-tap","Real-time trending topics aggregator across 7 platforms (X\u002FTwitter, Reddit, Google Trends, Hacker News, Zhihu, Bilibili, Weibo). Trigger: when user says 'trend', 'trends', 'trend tap', '热点', '热搜', or asks what is trending\u002Fhot. Do NOT use web_search — this skill already fetches live data from all platforms with zero API keys.","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Ftrend-tap\u002FSKILL.md",[],[233,234,235,236,237,238,216,239,240,241,242,243,244,245,246,247,248,249,250,32],"trend","trend tap","tap","api keys","Bash","time","trending","hacker","aggregator","do","when","brew","live","data","google","install","read","across",{"skillNo":252,"name":253,"nameZh":6,"description":254,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":255,"categories":256,"keywords":257,"publishedAt":49},"01M71ATJ9AM5KM15AA8PS302EB","trend-radar","Real-time trending topics aggregator across 7 platforms (X\u002FTwitter, Reddit, Google Trends, Hacker News, Zhihu, Bilibili, Weibo). Trigger: when user says 'trend', 'trends', 'trend pulse', '热点', '热搜', or asks what is trending\u002Fhot. Do NOT use web_search — this skill already fetches live data from all platforms with zero API keys.","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Ftrend-radar\u002FSKILL.md",[],[258,259,233,244,245,246,247,237,216,249,260,250,32,243,241,240,239,248,238,236],"trend radar","radar","pulse",{"skillNo":262,"name":263,"nameZh":6,"description":264,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":265,"categories":266,"keywords":267,"publishedAt":49},"01M71ATGF095N3EJM9G8SD0BB5","tech-news-daily","每日科技新闻汇——从全球多个 RSS 源抓取最新科技新闻，翻译（英→中）、去重、排版成每日简报。当用户询问科技新闻、科技新鲜事、每日科技、技术动态、Daily Tech News 或类似表达时触发此技能。","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Ftech-news-daily\u002FSKILL.md",[],[268,269,270,271,272,273],"news","tech","tech news daily","daily","rss","翻译",{"skillNo":275,"name":276,"nameZh":6,"description":277,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":278,"categories":279,"keywords":283,"publishedAt":49},"01M71ATFAEAMQ17M70NQNY7SR8","summarize","Summarize URLs or files with the summarize CLI (web, PDFs, images, audio, YouTube).","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Fsummarize\u002FSKILL.md",[280],{"categoryNo":281,"categoryName":282,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000021","资料检索与研究",[276,222,284,34,285,225,244,286,287,288,235,289,248],"Audio","youtube","images","https","files","pdfs",{"skillNo":291,"name":292,"nameZh":6,"description":293,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":294,"categories":295,"keywords":296,"publishedAt":49},"01M71ATDNS3R0M4H936PACQAWZ","sonoscli","Control Sonos speakers (discover\u002Fstatus\u002Fplay\u002Fvolume\u002Fgroup).","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Fsonoscli\u002FSKILL.md",[],[292,297,298,299,248,300,287,301,302,303,304,305],"status","play","go","latest","github","discover","control","cmd","volume"]