Pular para o conteúdo principal

Publicando no Registro

O marketplace do AISCouncil usa um modelo de distribuição em níveis que equilibra abertura com confiança. Você pode distribuir apps livremente por URL, ou listá-los no registro para descoberta mais ampla com badges de confiança.

Níveis de Distribuição

NívelComo ListarRevisãoBadgeApps PagosDestaque
Direct InstallUsuário cola qualquer URL de manifestNenhumaNenhumNãoNão
CommunityPR para registry/packages.jsonAutomatizada"Community"SimNão
AI VerifiedCommunity + scan de IA pagoAuditoria de segurança LLM"AI Verified"SimNão
VerifiedCommunity + revisão manual da equipeRevisão humana"Verified"SimSim

Direct Install

O método de distribuição mais simples. Hospede seu manifest e arquivos em qualquer lugar, depois compartilhe a URL do manifest. Usuários a colam na seção Sideload para instalar.

  • Sem listagem de registro necessária
  • Sem processo de revisão
  • Sem badge de confiança
  • Apenas apps gratuitos
  • Funciona imediatamente

Este é o modelo de distribuição nativo da web. Veja Sideloading Apps para detalhes.

Community

A listagem padrão do registro. Envie um pull request para adicionar seu app ao registry/packages.json. Se a validação automatizada passar, o PR pode ser merged e seu app aparece na App Store com um badge "Community".

  • Validação automatizada via validate.py
  • Descobrível na App Store
  • Suporta apps gratuitos e pagos
  • Sem revisão manual requerida

AI Verified

Um upgrade de confiança opcional para apps Community. Pague por um scan de segurança powered por LLM que verifica seu código por malware, exfiltração de dados, uso indevido de permissões, código ofuscado e tentativas de escape do sandbox.

  • Custa $19-$99 por versão dependendo da profundidade do scan
  • Badge é fixado a um hash SHA-256 do conteúdo
  • Mudanças de código invalidam o badge
  • Badge expira após 12 meses
informação

O sistema AI Verified (os endpoints /v1/verify/*) está planejado para um release futuro. O workflow descrito aqui estará disponível quando esses endpoints forem lançados.

Verified

O mais alto nível de confiança. Um mantenedor da plataforma revisa manualmente seu manifest, permissões, HTML de entrada e (para plugins) o binário WASM.

  • Requer aprovação humana
  • Obtém o badge "Verified"
  • Posicionamento em destaque na App Store
  • Recomendado para apps que lidam com dados sensíveis

Publicando um App Gratuito (Nível Community)

1. Hospede Seus Arquivos do App

Faça upload do seu manifest.json e index.html (mais quaisquer assets) para um CDN acessível publicamente. Opções gratuitas populares:

HostPadrão de URLConfiguração
GitHub Pagesseunome.github.io/app-name/Habilite em repo Settings > Pages
Cloudflare Pagesapp-name.pages.dev/Conecte repo no dashboard CF
Vercelapp-name.vercel.app/Importe repo em vercel.com
Netlifyapp-name.netlify.app/Importe repo em netlify.com

Certifique-se de que seu manifest.json tenha a base_url correta apontando para onde os arquivos estão hospedados:

{
"name": "word-counter",
"version": "1.0.0",
"abi": 1,
"type": "mini-program",
"entry": "index.html",
"base_url": "https://seunome.github.io/word-counter/"
}

2. Teste Seu App

Antes de submeter, verifique se o app funciona fazendo sideloading dele:

  1. Abra aiscouncil.net
  2. Vá para Apps > Sideload
  3. Cole sua URL de manifest
  4. Instale e teste todas as funcionalidades

3. Faça Fork do Repositório

Vá para github.com/nicholasgasior/bcz e clique Fork.

4. Adicione Sua Entrada de Pacote

Edite registry/packages.json e adicione uma entrada ao array packages:

{
"name": "word-counter",
"type": "mini-program",
"version": "1.0.0",
"manifest": "https://seunome.github.io/word-counter/manifest.json",
"tier": "community",
"category": "utilities",
"description": "Conte palavras no seu histórico de chat por papel",
"icon": "https://seunome.github.io/word-counter/icon.png",
"added": "2026-02-19",
"price": 0,
"currency": "USD",
"seller": null
}

5. Valide

Execute o script de validação para verificar sua entrada:

python3 registry/validate.py packages

Corrija quaisquer erros antes de prosseguir. Problemas comuns:

ErroCorreção
Name mismatchname em packages.json deve corresponder a name em manifest.json
Invalid versionUse formato semver: 1.0.0, não 1.0 ou v1.0.0
Missing required fieldCertifique-se de que name, type, version e manifest estão presentes
Invalid tierDeve ser community, ai-verified ou verified

6. Envie um Pull Request

Faça push das suas mudanças para seu fork e crie um PR contra a branch main. Inclua:

  • Uma breve descrição do que seu app faz
  • Um link para o app hospedado para que revisores possam testá-lo
  • Screenshots se aplicável

Se a validação automatizada passar, o PR pode ser merged e seu app aparecerá na App Store.


Formato de Entrada do Registro de Pacotes

Campos Obrigatórios

CampoTipoDescrição
namestringNome do pacote (deve corresponder a name do manifest)
typestring"plugin", "addon" ou "mini-program"
versionstringSemver (deve corresponder a version do manifest)
manifeststringURL completa para o manifest.json hospedado

Campos Opcionais

CampoTipoPadrãoDescrição
tierstring"community""community", "ai-verified" ou "verified"
categorystring--Um de: productivity, developer, communication, media, utilities, games, education, finance
descriptionstring--Descrição da listagem na store
iconstring--URL para ícone (128x128 PNG recomendado)
addedstring--Data ISO 8601 quando foi listado pela primeira vez (ex: "2026-02-19")
pricenumber0Preço em centavos (0 = gratuito, 499 = $4.99)
currencystring"USD"Código de moeda ISO 4217
priceTypestring--"one-time" para compra única
geoPriceobject--Sobrescritas de preços por geo-tier
sellerobject|nullnullInfo do vendedor Stripe Connect (obrigatório para apps pagos)
verificationobject--Dados do badge AI Verified

Apps Pagos

Definindo um Preço

Defina o campo price em centavos. Por exemplo, $4.99 = 499:

{
"name": "pro-editor",
"type": "mini-program",
"version": "2.0.0",
"manifest": "https://cdn.example.com/pro-editor/manifest.json",
"tier": "community",
"price": 499,
"currency": "USD",
"priceType": "one-time",
"seller": {
"name": "DevCo",
"id": "acct_abc123"
}
}

Comissão da Plataforma

A plataforma leva uma comissão de 15% em vendas pagas. O vendedor recebe 85% via payouts Stripe Connect.

PreçoComissão (15%)Vendedor Recebe
$0.99$0.15$0.84
$4.99$0.75$4.24
$9.99$1.50$8.49
$19.99$3.00$16.99

Geo-Pricing

Você pode definir preços diferentes para diferentes níveis geográficos usando o campo geoPrice:

"geoPrice": {
"1": 1500,
"2": 1000,
"3": 700,
"4": 400
}

Níveis correspondem a regiões de poder de compra:

  • Tier 1: EUA, Canadá, Europa Ocidental, Austrália, Japão ($15.00)
  • Tier 2: Europa Oriental, América do Sul, Oriente Médio ($10.00)
  • Tier 3: Sudeste Asiático, América Central ($7.00)
  • Tier 4: África Subsaariana, Sul da Ásia ($4.00)

A plataforma detecta a região do usuário pela API e aplica o preço do nível apropriado.

Onboarding de Vendedor

Para receber pagamentos, você precisa de uma conta Stripe Connect vinculada à plataforma:

  1. Vá para Settings > Account > Developer no app AISCouncil
  2. Clique Connect Stripe Account
  3. Complete o fluxo de onboarding Stripe Connect
  4. Seu Stripe Connected Account ID (formato: acct_xxx) é atribuído
  5. Adicione o objeto seller à sua entrada de registro:
"seller": {
"name": "Seu Nome ou Empresa",
"id": "acct_abc123"
}
aviso

Apps pagos requerem um objeto seller com um ID de conta Stripe Connect válido. O script de validação rejeitará entradas pagas sem informação de vendedor.


Badge AI Verified

informação

O sistema AI Verified está planejado para um release futuro. Esta seção descreve o workflow pretendido.

O badge AI Verified certifica que o código do seu app foi escaneado por um LLM e encontrado livre de problemas de segurança comuns.

Níveis de Scan

NívelPreçoTamanho MáxTexto do Badge
Quick$19100 KB"AI Scanned"
Full$49500 KB"AI Verified"
Deep$992 MB"AI Verified + Reviewed"

Workflow (Planejado)

  1. Publique seu app como nível Community primeiro
  2. Submeta sua URL de manifest para POST /v1/verify/submit com o nível de scan
  3. Pague a taxa de scan via checkout Stripe
  4. O LLM analisa seu código por:
    • Malware e backdoors
    • Tentativas de exfiltração de dados
    • Uso indevido de permissões (solicitar mais do que necessário)
    • Código ofuscado ou minificado que esconde comportamento
    • Tentativas de escape do sandbox
  5. Verifique status em GET /v1/verify/status/{jobId}
  6. Se passou, recupere o objeto verification de GET /v1/verify/report/{jobId}
  7. Adicione o objeto de verificação à sua entrada de registro:
"verification": {
"hash": "sha256:a1b2c3d4...",
"tier": "full",
"date": "2026-02-19",
"expires": "2027-02-19",
"job_id": "ver_xyz789"
}
  1. Envie um PR com a entrada de registro atualizada
  2. O script de validação confirma que o badge é válido via /v1/verify/badge/{hash}

Regras do Badge

  • O badge é fixado ao hash SHA-256 do HTML de entrada do seu app
  • Qualquer mudança de código invalida o badge (novo hash = badge perdido)
  • Badges expiram após 12 meses e devem ser renovados
  • Scans falhados fornecem um relatório com achados para corrigir

Badge Verified (Revisão Manual)

Para o mais alto nível de confiança, solicite verificação manual:

  1. Defina "tier": "verified" na sua entrada de registro
  2. Envie um PR
  3. Um mantenedor da plataforma revisará:
    • Permissões do manifest (são justificadas?)
    • HTML de entrada e JavaScript (sem código malicioso?)
    • Conformidade com sandbox (sem tentativas de escape?)
    • Para plugins: análise do binário WASM
  4. Se aprovado: badge concedido, posicionamento em destaque habilitado
  5. Se rejeitado: feedback é fornecido no PR

Apps Verified obtêm:

  • O badge "Verified" (checkmark verde)
  • Posicionamento em destaque no topo da App Store
  • Maior confiança dos usuários

Atualizando Seu App

Para atualizar um app publicado:

  1. Faça deploy da nova versão dos arquivos do seu app para seu CDN
  2. Atualize version no seu manifest.json
  3. Atualize version em registry/packages.json
  4. Envie um PR com o bump de versão
dica

Siga convenções semver:

  • Patch (1.0.0 -> 1.0.1): Correções de bugs, sem novas funcionalidades
  • Minor (1.0.0 -> 1.1.0): Novas funcionalidades, compatível com versões anteriores
  • Major (1.0.0 -> 2.0.0): Mudanças que quebram compatibilidade

Usuários que já instalaram seu app verão a atualização quando o registro atualizar (cache diário).


Melhores Práticas

Descrição e Ícone

  • Escreva uma descrição clara e concisa (menos de 256 caracteres) que explica o que o app faz
  • Use um ícone PNG 128x128 com fundo transparente ou escuro
  • Ícones SVG também são aceitos e renderizam nitidamente em qualquer tamanho

Permissões

  • Solicite apenas as permissões que seu app realmente usa
  • Explique na descrição do PR por que cada permissão é necessária
  • Apps com menos permissões obtêm mais instalações

Checklist de Teste

Antes de enviar seu PR:

  • App instala e lança sem erros
  • Todas as funcionalidades funcionam como descrito
  • App lida com negações de permissão graciosamente (try/catch ao redor de chamadas SDK)
  • App funciona em modo escuro (padrão da plataforma)
  • Botões e elementos interativos têm pelo menos 48px de altura
  • Texto tem pelo menos 14px
  • ais.close() retorna ao chat limpo
  • python3 registry/validate.py packages passa
  • python3 registry/validate.py manifest caminho/para/manifest.json passa

Seleção de Categoria

Escolha a categoria mais apropriada para seu app:

CategoriaExemplos
productivityGerenciadores de tarefas, toma-notas, ferramentas de projeto
developerEditores de código, testadores de API, ferramentas de debug
communicationExtensões de chat, integrações de email
mediaEditores de imagem, ferramentas de áudio, players de vídeo
utilitiesCalculadoras, conversores, ferramentas de sistema
gamesJogos interativos, puzzles
educationFlashcards, ferramentas de quiz, auxílios de aprendizado
financeRastreadores de orçamento, ferramentas de cripto, faturamento