Gerador de documentos

Gera uma especificação de ferramenta precisa em JSON para SEO e análise de domínio, ajudando construtores e agentes IA a definir escopo e contratos de dados.

Request Feature / Support
6,924+
Total Calculations Run
< 15ms
Browser Execution Speed
100%
Client-Side Privacy
4.9 / 5.0
User Satisfaction
AI Web Tool Generator

Build Your Own Custom Web Calculator in Seconds

Type what tool or calculator you need below. Our AI will build it instantly for your site.

Popular ideas:
100% FREE • No Credit Card Required

About This Tool

Esta ferramenta oferece um gerador formal de especificações, localizado por idioma, para ferramentas online centradas em conteúdo SEO e análise de domínio. Produz um pacote JSON legível por máquina que codifica o objetivo da ferramenta, a intenção do usuário, a lógica central, entradas, saídas e requisitos de localização. Os principais usuários são desenvolvedores de ferramentas, agentes IA, gerentes de produto e engenheiros de QA que precisam de um contrato preciso para implementar, revisar ou comparar opções. O pacote inclui uma especificação de nível superior, category_id, type, image_svg e um bloco languages com conteúdo em inglês.
A lógica central e as características são definidas como um conjunto de seções explícitas: Propósito, Lógica central & Funcionalidades, Entradas & Saídas, Algoritmos & Cálculos, Erros & Casos Limites, Localização por Indústria/Região, Suposições & Exclusões. Funções obrigatórias vs opcionais estão claramente separadas. As entradas incluem nome, tipo, unidades, valores de exemplo e validação; as saídas incluem tipo, unidades e regras de formatação. O gerador assegura consistência entre as seções e fornece valores de exemplo para ilustrar contratos de dados válidos.
O fluxo operacional enfatiza esquemas determinísticos, nomes padronizados e harnesses de validação. A ferramenta suporta várias locales no bloco languages; Para inglês oferece name, title_tag, url_slug, image_alt_text, meta_description, keywords, short_description, short_business_description, description, how_to_use e faq. A imagem SVG fornecida é um vetor autônomo de 512x512 com elemento gráfico central e títulos/descrições acessíveis. Casos de uso incluem documentar novas ferramentas SEO, permitir que IA raciocine sobre a estrutura da ferramenta e acelerar a transferência entre produto, engenharia e equipes de conteúdo.
Diferenciais únicos: contagem de palavras estrita, rotulagem explícita de seções e um esquema JSON reprodutível que pode servalidado por referência. A saída minimiza ambiguidades e suporta localização escalável. Adequado para catálogos de ferramentas, especificações de API e repositórios de documentação internos.

How to Use

  1. Defina o alcance da ferramenta, público-alvo e domínio (conteúdo SEO, análise de domínio).
  2. Forneça entradas: nome da ferramenta, category_id, público-alvo, necessidades de localização e escopo de idioma.
  3. Execute a geração para produzir a especificação JSON com os campos de nível superior e o bloco de idioma em inglês.
  4. Revise a consistência, correção e normas de unidade; ajuste as entradas, se necessário.
  5. Exporte ou Salve o pacote JSON para integração em documentação e pipelines.
How to use generator document

Frequently Asked Questions

Find Quick Answers

O que é produzido pela ferramenta?
A ferramenta gera um único pacote JSON contendo especificação, category_id, tipo, image_svg e um bloco languages.en com todos os campos requeridos (name, title_tag, url_slug, image_alt_text, meta_description, keywords, short_description, short_business_description, description, how_to_use, faq). O conteúdo é destinado a criadores de ferramentas e agentes IA.
Quais locales são suportadas?
O bloco de idioma padrão é inglês (en). A estrutura pode ser estendida adicionando novos objetos de idioma com os mesmos campos. Localização segue convenções de SEO e formatação de conteúdo padrão.
É possível personalizar entradas e saídas?
Sim. A especificação define explicitamente entradas obrigatórias, recursos opcionais/avançados e regras de formatação de saída. O esquema admite estender campos e ajustar validações mantendo a estrutura de alto nível.
Como é gerado o image_svg?
Image_svg é um vetor autônomo 512x512 com formas fortes e alto contraste, centralizado na tela. Inclui um e um <desc> para acessibilidade e não utiliza ativos externos. </div> </details> </div> </section> <!-- High-converting CTA for free registration on tool page --> <section class="mt-16 max-w-7xl mx-auto bg-gradient-to-r from-blue-50 to-indigo-50 border border-blue-100 rounded-3xl p-8 md:p-12 flex flex-col items-start gap-6 shadow-sm"> <div class="text-left"> <h3 class="text-2xl md:text-3xl font-extrabold text-slate-900 mb-3"> Need to run multiple calculations? </h3> <p class="text-gray-600 text-lg leading-relaxed max-w-4xl"> Create a free account today to unlock unlimited daily runs, access advanced parameters, save your history, and request custom features. </p> </div> <div> <a href="https://anyonlinetool.com/register" class="inline-block px-8 py-3.5 text-white text-center font-bold text-lg rounded-xl shadow-md hover:shadow-lg transition-all duration-200" style="background-color: #2563eb; color: #ffffff; width: auto;"> Register Free Account </a> </div> </section> <!-- Related Tools Section --> <section class="mt-20 max-w-7xl mx-auto text-left"> <h3 class="text-3xl font-extrabold text-[#030738] mb-2 text-center">Related Tools</h3> <p class="text-center text-gray-500 mb-10 text-xl">Other useful calculators and utilities you might like</p> <div class="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-4 gap-6"> <div class="bg-white rounded-2xl border border-gray-100 hover:border-indigo-100 shadow-sm hover:shadow-md p-6 flex flex-col gap-4 items-start relative transition-all duration-300"> <div class="w-12 h-12 flex items-center justify-center overflow-hidden shrink-0"> <img class="max-w-full max-h-full object-contain" src="https://anyonlinetool.com/storage/category/July2026/web-seo-tools.png" alt="Web & SEO Tools" loading="lazy" style="max-width: 100%; max-height: 100%; object-fit: contain;"> </div> <h4 class="text-lg font-bold text-[#030738] leading-tight"> Conversor Spotify para MP3 </h4> <p class="text-gray-500 text-sm leading-normal"> Converte arquivos de áudio fornecidos localmente para MP3, permitindo ouvir offline e compatibilidad... </p> <a href="https://anyonlinetool.com/pt/tool/spotify-mp3-conversor" class="absolute w-full h-full top-0 left-0 rounded-2xl"></a> </div> <div class="bg-white rounded-2xl border border-gray-100 hover:border-indigo-100 shadow-sm hover:shadow-md p-6 flex flex-col gap-4 items-start relative transition-all duration-300"> <div class="w-12 h-12 flex items-center justify-center overflow-hidden shrink-0"> <img class="max-w-full max-h-full object-contain" src="https://anyonlinetool.com/storage/category/July2026/web-seo-tools.png" alt="Web & SEO Tools" loading="lazy" style="max-width: 100%; max-height: 100%; object-fit: contain;"> </div> <h4 class="text-lg font-bold text-[#030738] leading-tight"> Calculadora de Distância Rodoviária </h4> <p class="text-gray-500 text-sm leading-normal"> Calculadora de distância rodoviária para viajantes, planejadores logísticos e motoristas, para estim... </p> <a href="https://anyonlinetool.com/pt/tool/calculadora-distancia-rodoviaria" class="absolute w-full h-full top-0 left-0 rounded-2xl"></a> </div> <div class="bg-white rounded-2xl border border-gray-100 hover:border-indigo-100 shadow-sm hover:shadow-md p-6 flex flex-col gap-4 items-start relative transition-all duration-300"> <div class="w-12 h-12 flex items-center justify-center overflow-hidden shrink-0"> <img class="max-w-full max-h-full object-contain" src="https://anyonlinetool.com/storage/category/July2026/web-seo-tools.png" alt="Web & SEO Tools" loading="lazy" style="max-width: 100%; max-height: 100%; object-fit: contain;"> </div> <h4 class="text-lg font-bold text-[#030738] leading-tight"> Calculadora de Idade </h4> <p class="text-gray-500 text-sm leading-normal"> Determine rapidamente a idade de uma pessoa a partir da sua data de nascimento com nossa calculadora... </p> <a href="https://anyonlinetool.com/pt/tool/calculadora-de-idade" class="absolute w-full h-full top-0 left-0 rounded-2xl"></a> </div> <div class="bg-white rounded-2xl border border-gray-100 hover:border-indigo-100 shadow-sm hover:shadow-md p-6 flex flex-col gap-4 items-start relative transition-all duration-300"> <div class="w-12 h-12 flex items-center justify-center overflow-hidden shrink-0"> <img class="max-w-full max-h-full object-contain" src="https://anyonlinetool.com/storage/category/July2026/web-seo-tools.png" alt="Web & SEO Tools" loading="lazy" style="max-width: 100%; max-height: 100%; object-fit: contain;"> </div> <h4 class="text-lg font-bold text-[#030738] leading-tight"> Conversor de moedas </h4> <p class="text-gray-500 text-sm leading-normal"> Converta rapidamente valores entre diferentes moedas com nosso conversor de moedas online gratuito,... </p> <a href="https://anyonlinetool.com/pt/tool/conversor-de-moedas" class="absolute w-full h-full top-0 left-0 rounded-2xl"></a> </div> </div> </section> <!-- Feedback Section --> <section class="mt-20 mb-20 max-w-3xl mx-auto bg-gray-50 rounded-3xl p-8 md:p-12 text-center" id="feedback"> <h3 class="text-2xl font-bold text-[#030738] mb-2">Your Feedback Matters</h3> <p class="text-gray-500 mb-8">Help Us to Improve</p> <form method="POST" action="https://anyonlinetool.com/tool/feedback/29740" class="space-y-4 text-left"> <input type="hidden" name="_token" value="V2ysXURUKf0tn1aKE1EMTidcFpSmNo8WS875vnbq" autocomplete="off"> <div> <textarea name="issues" class="w-full rounded-xl border-gray-200 p-4 h-32 focus:border-indigo-500 focus:ring-indigo-100" placeholder="Write your thoughts here..."></textarea> </div> <div class="flex gap-4"> <div class="flex-grow"> <input type="email" name="reported_by_email" class="w-full rounded-xl border-gray-200 p-4 focus:border-indigo-500 focus:ring-indigo-100" placeholder="Your Email" value=""> </div> <button type="submit" class="text-white px-8 py-4 rounded-xl font-bold transition-all shadow-md hover:shadow-lg hover:opacity-95 whitespace-nowrap" style="background-color: #2563eb; color: #ffffff; min-width: 120px;">Submit</button> </div> </form> </section> </main> <div class="embed-popup hidden fixed w-full h-full left-0 top-0 bg-black/30 z-50"> <div class="absolute w-[calc(100%-20px)] max-w-2xl aspect-[9/16] md:aspect-video bg-white rounded-lg shadow-md top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 px-6 py-8 flex flex-col gap-6 justify-center"> <div class="absolute right-3 top-3"> <svg xmlns="http://www.w3.org/2000/svg" class="close-popup cursor-pointer w-6" viewBox="0 0 512 512"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32" d="M368 368L144 144M368 144L144 368" /> </svg> </div> <div> <form action=""> <div class="flex flex-col md:flex-row gap-4"> <div class="w-full md:w-1/2"> <label for="lang" class="text-sm">Language</label> <select name="lang" id="lang" class="w-full lang-selectize"> <option value="ar" selected >Arabic</option> <option value="da" >Danish</option> <option value="de" >German</option> <option value="en" >English</option> <option value="es" >Spanish</option> <option value="fr" >French</option> <option value="he" >Hebrew</option> <option value="it" >Italian</option> <option value="nb" >Norwegian bokmål</option> <option value="nl" >Dutch</option> <option value="nl-NL" >Dutch</option> <option value="pt" >Portuguese</option> <option value="sv" >Swedish</option> </select> </div> <div class="w-full md:w-1/2"> </div> </div> <input type="hidden" name="language" value="en"> <input type="hidden" name="tool" value="generator-document"> <input type="hidden" name="url" value="https://anyonlinetool.com"> <input type="hidden" name="license" value="guest_user"> </form> </div> <div class="relative"> <code class="code block px-4 py-3 pr-6 font-mono text-base font-medium text-gray-900 bg-accent/20 rounded-md"> <script src="https://anyonlinetool.com/embed-bucket/aot.js" data-license-key="guest_user" data-lang="ar" data-tool-key="generator-document"></script> </code> <button data-copy="copy" data-copied="copied" class="copy-code absolute top-2.5 right-2.5 rtl:right-auto rtl:left-2.5 text-xs cursor-pointer shadow bg-white rounded py-1 px-2"> copy </button> </div> <div class="bg-yellow-100 rounded-md border border-yellow-400 px-2 py-3"> <div class="flex flex-col md:flex-row items-center gap-3"> <div class="flex items-center gap-y-2 gap-x-3"> <svg xmlns="http://www.w3.org/2000/svg" class="w-6 shrink-0" viewBox="0 0 512 512"> <path d="M248 64C146.39 64 64 146.39 64 248s82.39 184 184 184 184-82.39 184-184S349.61 64 248 64z" fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="32" /> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32" d="M220 220h32v116" /> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="32" d="M208 340h88" /> <path d="M248 130a26 26 0 1026 26 26 26 0 00-26-26z" /> </svg> <div class="flex-1"> <p>No website found! Please add a website and obtain a license for improved tracking. It's free! </p> </div> </div> <div class="shrink-0"> <a class="inline-block bg-accent/90 transition-colors duration-150 ease-out hover:bg-accent text-white text-sm px-4 py-2 rounded" href="https://anyonlinetool.com/dashboard/websites">Add Website</a> </div> </div> </div> </div> </div> </main> <!-- Modern Compact Footer --> <footer class="relative text-white overflow-hidden" style="background-color: rgb(22 88 245 / var(--tw-bg-opacity));"> <div class="relative z-10 px-6 pt-10 pb-6 mx-auto max-w-7xl"> <!-- Main footer content --> <div class="grid grid-cols-1 md:grid-cols-3 lg:grid-cols-12 gap-8 mb-8 border-b border-white/10 pb-8"> <!-- Brand Column (Wider on desktop) --> <div class="md:col-span-1 lg:col-span-5"> <a href="https://anyonlinetool.com/pt" class="inline-block mb-4 group"> <img src="https://anyonlinetool.com/themes/tailwind/images/logo.png" alt="Any Online Tool" class="h-8 md:h-10 w-auto transform transition-transform duration-300 group-hover:scale-105" style="filter: grayscale(100%) brightness(0) invert(100%);"> </a> <p class="text-sm text-white/90 leading-relaxed mb-6 max-w-sm"> Your On-Demand Toolbox. Explore a world of AI-generated tools, simulators, calculators, and add-ons tailored to your needs. </p> <!-- Social Links --> <div class="flex gap-2"> <a href="#" class="w-8 h-8 flex items-center justify-center bg-white/10 rounded-lg hover:bg-white hover:-translate-y-1 transition-all duration-300 group"> <svg class="w-4 h-4 text-white group-hover:text-blue-600" fill="currentColor" viewBox="0 0 320 512"> <path d="M279.1 288l14.2-92.7h-88.9v-60.1c0-25.4 12.4-50.1 52.2-50.1h40.4V6.3S260.4 0 225.4 0c-73.2 0-121.1 44.4-121.1 124.7v70.6H22.9V288h81.4v224h100.2V288z" /> </svg> </a> <a href="#" class="w-8 h-8 flex items-center justify-center bg-white/10 rounded-lg hover:bg-white hover:-translate-y-1 transition-all duration-300 group"> <svg class="w-4 h-4 text-white group-hover:text-blue-400" fill="currentColor" viewBox="0 0 24 24"> <path d="M8.29 20.251c7.547 0 11.675-6.253 11.675-11.675 0-.178 0-.355-.012-.53A8.348 8.348 0 0022 5.92a8.19 8.19 0 01-2.357.646 4.118 4.118 0 001.804-2.27 8.224 8.224 0 01-2.605.996 4.107 4.107 0 00-6.993 3.743 11.65 11.65 0 01-8.457-4.287 4.106 4.106 0 001.27 5.477A4.072 4.072 0 012.8 9.713v.052a4.105 4.105 0 003.292 4.022 4.095 4.095 0 01-1.853.07 4.108 4.108 0 003.834 2.85A8.233 8.233 0 012 18.407a11.616 11.616 0 006.29 1.84" /> </svg> </a> <a href="#" class="w-8 h-8 flex items-center justify-center bg-white/10 rounded-lg hover:bg-white hover:-translate-y-1 transition-all duration-300 group"> <svg class="w-4 h-4 text-white group-hover:text-blue-700" fill="currentColor" viewBox="0 0 448 512"> <path d="M100.3 448H7.4V148.9h92.9zM53.8 108.1C24.1 108.1 0 83.5 0 53.8a53.8 53.8 0 0 1 107.6 0c0 29.7-24.1 54.3-53.8 54.3zM447.9 448h-92.7V302.4c0-34.7-.7-79.2-48.3-79.2-48.3 0-55.7 37.7-55.7 76.7V448h-92.8V148.9h89.1v40.8h1.3c12.4-23.5 42.7-48.3 87.9-48.3 94 0 111.3 61.9 111.3 142.3V448z" /> </svg> </a> <a href="#" class="w-8 h-8 flex items-center justify-center bg-white/10 rounded-lg hover:bg-white hover:-translate-y-1 transition-all duration-300 group"> <svg class="w-4 h-4 text-white group-hover:text-pink-600" fill="currentColor" viewBox="0 0 24 24"> <path fill-rule="evenodd" d="M12.315 2c2.43 0 2.784.013 3.808.06 1.064.049 1.791.218 2.427.465a4.902 4.902 0 011.772 1.153 4.902 4.902 0 011.153 1.772c.247.636.416 1.363.465 2.427.048 1.067.06 1.407.06 4.123v.08c0 2.643-.012 2.987-.06 4.043-.049 1.064-.218 1.791-.465 2.427a4.902 4.902 0 01-1.153 1.772 4.902 4.902 0 01-1.772 1.153c-.636.247-1.363.416-2.427.465-1.067.048-1.407.06-4.123.06h-.08c-2.643 0-2.987-.012-4.043-.06-1.064-.049-1.791-.218-2.427-.465a4.902 4.902 0 01-1.772-1.153 4.902 4.902 0 01-1.153-1.772c-.247-.636-.416-1.363-.465-2.427-.047-1.024-.06-1.379-.06-3.808v-.63c0-2.43.013-2.784.06-3.808.049-1.064.218-1.791.465-2.427a4.902 4.902 0 011.153-1.772A4.902 4.902 0 015.45 2.525c.636-.247 1.363-.416 2.427-.465C8.901 2.013 9.256 2 11.685 2h.63zm-.081 1.802h-.468c-2.456 0-2.784.011-3.807.058-.975.045-1.504.207-1.857.344-.467.182-.8.398-1.15.748-.35.35-.566.683-.748 1.15-.137.353-.3.882-.344 1.857-.047 1.023-.058 1.351-.058 3.807v.468c0 2.456.011 2.784.058 3.807.045.975.207 1.504.344 1.857.182.466.399.8.748 1.15.35.35.683.566 1.15.748.353.137.882.3 1.857.344 1.054.048 1.37.058 4.041.058h.08c2.597 0 2.917-.01 3.96-.058.976-.045 1.505-.207 1.858-.344.466-.182.8-.398 1.15-.748.35-.35.566-.683.748-1.15.137-.353.3-.882.344-1.857.048-1.055.058-1.37.058-4.041v-.08c0-2.597-.01-2.917-.058-3.96-.045-.976-.207-1.505-.344-1.858a3.097 3.097 0 00-.748-1.15 3.098 3.098 0 00-1.15-.748c-.353-.137-.882-.3-1.857-.344-1.023-.047-1.351-.058-3.807-.058zM12 6.865a5.135 5.135 0 110 10.27 5.135 5.135 0 010-10.27zm0 1.802a3.333 3.333 0 100 6.666 3.333 3.333 0 000-6.666zm5.338-3.205a1.2 1.2 0 110 2.4 1.2 1.2 0 010-2.4z" clip-rule="evenodd" /> </svg> </a> </div> </div> <!-- Information Column --> <div class="md:col-span-1 lg:col-span-3"> <h3 class="text-lg font-bold text-white mb-4">Information</h3> <ul class="space-y-2 text-sm"> <li><a href="https://anyonlinetool.com/pt/about" class="text-white/80 hover:text-white transition-colors">About Us</a> </li> <li><a href="https://anyonlinetool.com/blog" class="text-white/80 hover:text-white transition-colors">Latest News</a> </li> <li><a href="https://anyonlinetool.com/pt/privacy" class="text-white/80 hover:text-white transition-colors">Privacy Policy</a></li> <li><a href="https://anyonlinetool.com/pt/terms" class="text-white/80 hover:text-white transition-colors">Terms of Service</a></li> <li><a href="/sitemap.xml" class="text-white/80 hover:text-white transition-colors">Sitemap</a></li> <li><a href="https://anyonlinetool.com/pt/contact" class="text-white/80 hover:text-white transition-colors">Contact</a></li> </ul> </div> <!-- Contact Column --> <div class="md:col-span-1 lg:col-span-4"> <h3 class="text-lg font-bold text-white mb-4">Contact</h3> <ul class="space-y-3"> <li> <a href="mailto:support@anyonlinetool.com" class="flex items-center group"> <div class="w-8 h-8 rounded-lg bg-white/20 flex items-center justify-center mr-3 group-hover:bg-white transition-colors"> <svg class="w-4 h-4 text-white group-hover:text-blue-600" fill="none" stroke="currentColor" viewBox="0 0 24 24"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M18.364 5.636l-3.536 3.536m0 5.656l3.536 3.536M9.172 9.172L5.636 5.636m3.536 9.192l-3.536 3.536M21 12a9 9 0 11-18 0 9 9 0 0118 0zm-5 0a4 4 0 11-8 0 4 4 0 018 0z" /> </svg> </div> <div> <span class="block text-sm font-medium text-white">Support</span> <span class="text-xs text-white/80 group-hover:text-white">Support@AnyOnlineTool.com</span> </div> </a> </li> <li> <a href="mailto:sales@anyonlinetool.com" class="flex items-center group"> <div class="w-8 h-8 rounded-lg bg-white/20 flex items-center justify-center mr-3 group-hover:bg-white transition-colors"> <svg class="w-4 h-4 text-white group-hover:text-blue-600" fill="none" stroke="currentColor" viewBox="0 0 24 24"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z" /> </svg> </div> <div> <span class="block text-sm font-medium text-white">Sales</span> <span class="text-xs text-white/80 group-hover:text-white">Sales@AnyOnlineTool.com</span> </div> </a> </li> <li> <a href="mailto:investors@anyonlinetool.com" class="flex items-center group"> <div class="w-8 h-8 rounded-lg bg-white/20 flex items-center justify-center mr-3 group-hover:bg-white transition-colors"> <svg class="w-4 h-4 text-white group-hover:text-blue-600" fill="none" stroke="currentColor" viewBox="0 0 24 24"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 7h8m0 0v8m0-8l-8 8-4-4-6 6" /> </svg> </div> <div> <span class="block text-sm font-medium text-white">Investors</span> <span class="text-xs text-white/80 group-hover:text-white">Investors@AnyOnlineTool.com</span> </div> </a> </li> </ul> </div> </div> <div class="flex flex-col md:flex-row items-center justify-between gap-4 text-xs text-white/60"> <div class="space-y-1"> <p><strong>Copyright:</strong> © 2026 Any Online Tool. All rights reserved.</p> <p><strong>Operated by:</strong> <a href="https://eternitech.com" target="_blank" class="hover:underline text-white/80">eternitech.com</a></p> <p><strong>US Address:</strong> 3899 Pembroke Rd, Hollywood, Florida 33021. <strong>Contact:</strong> <a href="mailto:support@anyonlinetool.com" class="hover:underline text-white/80">support@anyonlinetool.com</a></p> </div> <div class="flex items-center gap-2"> <svg class="w-3 h-3 text-red-500" fill="currentColor" viewBox="0 0 20 20"> <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd" /> </svg> <span>Empowering you to use AI for good.</span> </div> </div> </div> </footer> <!-- Scripts --> <script src="https://anyonlinetool.com/themes/tailwind/js/app.js" defer></script> <script src="https://code.jquery.com/jquery-3.7.1.min.js" integrity="sha256-/JqT3SQfawRcv/BIHPThkBvs0OEvtFFmqPF/lYI/Cxo=" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/selectize.js/0.12.1/js/standalone/selectize.min.js"></script> <script> document.addEventListener('DOMContentLoaded', function() { const showbtn = document.querySelector('.embed-tool'); const popup = document.querySelector('.embed-popup'); const closebtn = document.querySelector('.close-popup'); // Show popup when click embed button showbtn.addEventListener('click', function(event) { event.preventDefault(); popup.classList.remove('hidden'); }); // Hide popup when click outside popup.addEventListener('click', function(event) { if (event.target.classList.contains('embed-popup')) { popup.classList.add('hidden'); } }); // Hide popup when click close button closebtn.addEventListener('click', function(event) { event.preventDefault(); popup.classList.add('hidden'); }); // Copy code to clipboard const copybtn = document.querySelector('.copy-code'); copybtn.addEventListener('click', function(event) { event.preventDefault(); const code = document.querySelector('.code'); const textarea = document.createElement('textarea'); textarea.value = code.innerText; document.body.appendChild(textarea); textarea.select(); document.execCommand('copy'); document.body.removeChild(textarea); copybtn.innerText = this.dataset.copied; setTimeout(() => { copybtn.innerText = this.dataset.copy; }, 3000); }); }); const url = document.querySelector('input[name="url"]').value; const tool = document.querySelector('input[name="tool"]').value; function generateCode(license, lang) { return `<script src="${url}/embed-bucket/aot.js" data-license-key="${license}" data-lang="${lang}" data-tool-key="generator-document"></script>` }; jQuery('document').ready(function($) { $('.lang-selectize').selectize({ onItemAdd: function(value) { document.querySelector('input[name="language"]').value = value; const license = document.querySelector('input[name="license"]').value; const script = generateCode(license, value); const unescapedScript = $('<textarea/>').html(script).text(); document.querySelector('.code').innerHTML = unescapedScript; } }); $('.website-selectize').selectize({ onItemAdd: function(value) { document.querySelector('input[name="license"]').value = value; const lang = document.querySelector('input[name="language"]').value; const script = generateCode(value, lang); const unescapedScript = $('<textarea/>').html(script).text(); document.querySelector('.code').innerHTML = unescapedScript; } }); }); </script> <script src="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.js"></script> <script> var swiper = new Swiper('.testimonial-swiper', { slidesPerView: 1, spaceBetween: 24, loop: true, autoplay: { delay: 4000, disableOnInteraction: false }, navigation: { nextEl: '.next-btn', prevEl: '.prev-btn' }, breakpoints: { 768: { slidesPerView: 2 }, 1024: { slidesPerView: 3 } } }); </script> <!-- Full Screen Loader --> <div id="fullscreenLoader" class="fixed inset-0 top-0 left-0 z-50 flex flex-col items-center justify-center hidden w-full h-full bg-gray-900 opacity-50"> <svg class="w-5 h-5 mr-3 -ml-1 text-white animate-spin" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"> <circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle> <path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"> </path> </svg> <p id="fullscreenLoaderMessage" class="mt-4 text-sm font-medium text-white uppercase"></p> </div> <!-- End Full Loader --> <div class="fixed inset-0 z-40 flex items-end justify-center px-4 py-6 pointer-events-none sm:p-6 sm:items-start sm:justify-end"> <div id="toast" x-data x-cloak @click="$store.toast.close()" x-show="$store.toast.show" x-transition:enter="transform ease-out duration-300 transition" x-transition:enter-start="translate-y-2 opacity-0 sm:translate-y-0 sm:translate-x-2" x-transition:enter-end="translate-y-0 opacity-100 sm:translate-x-0" x-transition:leave="transform transition ease-in duration-100" x-transition:leave-start="opacity-100" x-transition:leave-end="opacity-0" class="w-full max-w-sm bg-white border border-gray-200 rounded-lg shadow-lg cursor-pointer pointer-events-auto hover:-translate-1"> <div class="relative overflow-hidden rounded-lg shadow-xs"> <div class="px-4 py-5"> <div class="flex items-center"> <div class="flex-shrink-0 pr-0.5"> <template x-if="$store.toast.type == 'info'"> <div class="w-10 h-10"> <svg class="w-10 h-10 text-indigo-400" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"></path></svg> </div> </template> <template x-if="$store.toast.type == 'warning'"> <div class="w-10 h-10"> <svg class="w-10 h-10 text-yellow-400" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"></path></svg> </div> </template> <template x-if="$store.toast.type == 'success'"> <div class="w-10 h-10"> <svg class="w-10 h-10 text-green-400" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"></path></svg> </div> </template> <template x-if="$store.toast.type == 'danger'"> <div class="w-10 h-10"> <svg class="w-10 h-10 text-red-400" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"></path></svg> </div> </template> </div> <div class="flex-1 w-0 pl-3.5 ml-1 border-l border-gray-100"> <p class="text-sm font-medium leading-5 text-gray-900"> <template x-if="$store.toast.type == 'info'"><span>Notice</span></template> <template x-if="$store.toast.type == 'warning'"><span>Warning</span></template> <template x-if="$store.toast.type == 'success'"><span>Success</span></template> <template x-if="$store.toast.type == 'danger'"><span>Something went wrong</span></template> </p> <p class="text-sm leading-5 text-gray-500" x-text="$store.toast.message"></p> </div> <div class="flex self-start flex-shrink-0 ml-4"> <button @click="$store.toast.close()" class="inline-flex -mt-1 text-gray-400 transition duration-150 ease-in-out rounded-full focus:outline-none focus:text-gray-500"> <svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor"> <path fill-rule="evenodd" d="M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z" clip-rule="evenodd"></path> </svg> </button> </div> </div> </div> <div id="toast_bar" class="absolute bottom-0 left-0 w-full h-1 transition-all ease-out" :class="{ 'bg-indigo-400' : $store.toast.type == 'info', 'bg-yellow-400' : $store.toast.type == 'warning', 'bg-green-400' : $store.toast.type == 'success', 'bg-red-400' : $store.toast.type == 'danger' }" style="transition-duration: 3950ms;"></div> </div> </div> </div> <script src="https://cdn.paddle.com/paddle/paddle.js"></script> <script> window.vendor_id = parseInt(''); if(vendor_id){ Paddle.Setup({ vendor: vendor_id }); } if("sandbox" == 'sandbox') { Paddle.Environment.set('sandbox'); } let checkoutBtns = document.getElementsByClassName("checkout"); for( var i=0; i < checkoutBtns.length; i++ ){ checkoutBtns[i].addEventListener('click', function(){ waveCheckout(this.dataset.plan) }, false); } let updateBtns = document.getElementsByClassName("checkout-update"); for( var i=0; i < updateBtns.length; i++ ){ updateBtns[i].addEventListener('click', waveUpdate, false); } let cancelBtns = document.getElementsByClassName("checkout-cancel"); for( var i=0; i < cancelBtns.length; i++ ){ cancelBtns[i].addEventListener('click', waveCancel, false); } function waveCheckout(plan_id) { if(vendor_id){ let product = parseInt(plan_id); Paddle.Checkout.open({ product: product, email: '', successCallback: "checkoutComplete", }); } else { alert('Paddle Vendor ID is not set, please see the docs and learn how to setup billing.'); } } function waveUpdate(){ Paddle.Checkout.open({ override: this.dataset.url, successCallback: "checkoutUpdate", }); } function waveCancel(){ Paddle.Checkout.open({ override: this.dataset.url, successCallback: "checkoutCancel", }); } </script> <div id="cookie-consent-banner" class="hidden fixed bottom-0 left-0 right-0 z-50 bg-white border-t-2 border-gray-200 shadow-lg"> <div class="max-w-7xl mx-auto px-4 py-4 sm:px-6 lg:px-8"> <div class="flex flex-col sm:flex-row items-start sm:items-center justify-between gap-4"> <div class="flex-1"> <h3 class="text-lg font-semibold text-gray-900 mb-2">Cookie Consent</h3> <p class="text-sm text-gray-600"> We use cookies to enhance your browsing experience, provide personalized content, and analyze our traffic. By clicking "Accept", you consent to our use of cookies. <a href="https://anyonlinetool.com/pt/privacy" class="text-blue-600 hover:underline font-medium">Learn more in our Privacy Policy</a>. </p> </div> <div class="flex gap-3 flex-shrink-0"> <button id="cookie-reject" class="px-4 py-2 text-sm font-medium text-gray-700 bg-gray-200 rounded-lg hover:bg-gray-300 transition-colors duration-200"> Reject </button> <button id="cookie-accept" class="px-4 py-2 text-sm font-medium text-white bg-accent rounded-lg hover:bg-accent/90 transition-colors duration-200"> Accept </button> </div> </div> </div> </div> <script> (function () { // Check if user has already made a choice const cookieConsent = localStorage.getItem('cookie_consent'); const banner = document.getElementById('cookie-consent-banner'); // Show banner if no consent decision has been made if (!cookieConsent) { banner.classList.remove('hidden'); } else if (cookieConsent === 'accepted') { // Load analytics if consent was given loadAnalytics(); } // Handle Accept button document.getElementById('cookie-accept').addEventListener('click', function () { localStorage.setItem('cookie_consent', 'accepted'); localStorage.setItem('cookie_consent_date', new Date().toISOString()); banner.classList.add('hidden'); loadAnalytics(); }); // Handle Reject button document.getElementById('cookie-reject').addEventListener('click', function () { localStorage.setItem('cookie_consent', 'rejected'); localStorage.setItem('cookie_consent_date', new Date().toISOString()); banner.classList.add('hidden'); // Don't load analytics }); // Function to load Google Analytics (only if accepted) function loadAnalytics() { } })(); </script> <style> #cookie-consent-banner { animation: slideUp 0.3s ease-out; } @keyframes slideUp { from { transform: translateY(100%); opacity: 0; } to { transform: translateY(0); opacity: 1; } } </style> </body> </html>