mesh-avatar-studio
Turn one illustration into an animated 2D mesh avatar with a coding agent and a local editor
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证mydevice - veja e navegue por qualquer site dentro de molduras realistas de celular, tablet e desktop, com download do mockup em PNG transparente
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗Digite a URL de um site e veja-o rodando de verdade dentro de uma moldura de celular, tablet ou desktop — navegável, com a cor da moldura à sua escolha e com download do mockup em PNG de fundo transparente.
O site não é embutido num <iframe>: ele é aberto num Chrome headless no
servidor, com a emulação real do aparelho (user-agent mobile, toque e viewport).
Por isso PWAs reconhecem corretamente que estão num celular, e funciona mesmo em
sites que bloqueiam incorporação.
npm install
npm start
Abra http://localhost:5177. Usa o Chrome ou Edge já instalado na máquina.
Localmente é permitido apontar para localhost — dá para ver o seu próprio
projeto em desenvolvimento dentro de uma moldura.
Precisa de um processo Node persistente com WebSocket e um Chromium ao lado. Plataformas serverless (Vercel, Netlify Functions, Cloudflare Workers) não servem: a sessão ao vivo depende de conexão contínua e de um navegador vivo entre as requisições.
O Dockerfile já traz o Chromium e as fontes necessárias.
Há um render.yaml pronto. No painel: New → Blueprint, aponte para o
repositório e confirme. Ou crie um Web Service com runtime Docker.
New Project → Deploy from GitHub repo. O Dockerfile é detectado automaticamente. Em Settings → Networking, gere o domínio público.
fly launch --dockerfile Dockerfile
fly deploy
| Variável | Padrão | Para que serve |
|---|---|---|
PORT | 5177 | Porta HTTP (as plataformas definem sozinhas) |
MAX_SESSIONS | 6 | Sessões simultâneas. Cada uma é uma aba de Chrome viva — subir demais estoura a memória |
ALLOW_PRIVATE_HOSTS | 0 em produção | Deixa abrir endereços internos. Mantenha desligado em servidor público |
PUPPETEER_EXECUTABLE_PATH | /usr/bin/chromium | Caminho do navegador |
PUBLIC_URL | http://localhost:5177 | Domínio público. Usado na URL canônica, no sitemap e no llms.txt — defina no deploy, senão o SEO aponta para localhost |
ADSENSE_CLIENT | vazio | ID do publisher (ca-pub-...). Sem ele, nenhum anúncio é carregado e /ads.txt responde 404 |
ADSENSE_SLOT_1, ADSENSE_SLOT_2 | vazio | IDs dos blocos de anúncio criados no painel do AdSense |
Reserve pelo menos 1 GB de RAM: Chromium com várias abas não cabe nos planos
gratuitos mais apertados. Comece com MAX_SESSIONS=2 se a memória for pouca.
GET /health responde {"ok":true} para o health check da plataforma.
Como o servidor abre qualquer URL que o visitante digitar, num servidor público ele poderia ser usado para alcançar coisas que só a máquina enxerga. Por isso:
169.254.169.254) é bloqueado no próprio
resolvedor do navegador, então nem um redirecionamento chega até ele;Ainda assim, o app deixa qualquer visitante navegar pela internet a partir do IP do seu servidor. Se for expor publicamente, considere colocar autenticação na frente.
Nenhum método de captura sozinho resolve, então ela é híbrida:
Page.startScreencast é rápido (~23 fps) mas o Chrome headless ignora o
deviceScaleFactor e sempre entrega 1x — borrado numa tela HiDPI;page.screenshot respeita a densidade de pixels (nítido) mas leva ~105 ms por
quadro, teto de ~10 fps — lento demais para navegar.Enquanto você interage, vale o screencast (fluido, ~20 fps, ~40 ms de resposta ao clique). Assim que você para, o screencast é desligado e a tela passa a ser enviada em alta resolução. Desligar importa: numa página que se atualiza sozinha (um relógio, por exemplo) os quadros 1x ficariam apagando os nítidos.
O conteúdo da página está em HTML de verdade e é lido sem executar JavaScript
(cerca de 900 palavras no HTML bruto), com dados estruturados JSON-LD
(SoftwareApplication e FAQPage).
| Rota | Para que serve |
|---|---|
/robots.txt | Libera explicitamente rastreadores de IA (GPTBot, ClaudeBot, PerplexityBot, Google-Extended, CCBot e outros) |
/llms.txt | Resumo do site em formato legível por modelos de linguagem |
/sitemap.xml | Mapa das páginas |
/ads.txt | Gerado a partir de ADSENSE_CLIENT; some se a variável não estiver definida |
/privacidade | Política de privacidade, exigida pelo AdSense |
Os blocos só aparecem quando ADSENSE_CLIENT está definido — enquanto a conta
não é aprovada, o site fica sem espaços vazios.
Vale saber de dois riscos antes de submeter para aprovação:
Mesmo assim, a aprovação é decisão do Google.