SEO e Conteúdo

Visualizador de Meta Tags Gratuito

Veja instantaneamente as tags title, meta description, robots, canonical, viewport, charset, OG e Twitter de uma URL.

Verifique as meta tags
Informação

Sobre o Visualizador de Meta Tags Gratuito

As meta tags são linhas ocultas de HTML que uma página da web usa para se apresentar aos mecanismos de busca e às plataformas de mídia social. Meta tags estruturadas corretamente... </code> e <code><meta descrição></code> Embora afete diretamente o posicionamento no Google, <code>og:title</code> e <code>og:image</code> como <strong>Gráfico aberto</strong> As tags determinam a pré-visualização que aparece nas publicações do Facebook, LinkedIn e WhatsApp. <code>robôs</code> A tag `<head>` determina se a página deve ou não ser indexada.</p> <p>Esta ferramenta gratuita de visualização de meta tags envia uma solicitação do lado do servidor para o URL que você inserir para visualizar a meta tag da página. <strong>título</strong>, <strong>meta descrição</strong>, <strong>palavras-chave</strong>, <strong>robôs</strong>, <strong>canônico</strong>, <strong>janela de visualização</strong> e <strong>conjunto de caracteres</strong> incluindo todas as meta tags padrão <strong>Open Graph (og:*)</strong> e <strong>Cartão do Twitter</strong> Ele analisa as tags e as lista em uma tabela agrupadas por tipo. Isso permite analisar a estrutura de SEO dos sites concorrentes e identificar rapidamente tags ausentes ou incorretas em sua própria página.</p> <p>A investigação é conduzida de forma segura: apenas <code>http</code>/<code>https</code> Endereços permitidos: rede local e intervalos de IP privados (<em>localhost, 127.0.0.1, 10.x, 192.168.x etc.</em>A solicitação será bloqueada e expirará se não for concluída em 10 segundos. Nenhum dado é armazenado em nossos servidores.</p> </div> </div> <div class="col-lg-6"> <span class="hg-eyebrow">Como usar?</span> <h2 class="mt-2 mb-4">Passo a passo</h2> <ol class="hg-tool-steps"> <li>Digite o endereço da página que deseja visualizar: <strong>https://example.com</strong> Digite ou cole o URL completo neste formato.</li><li><strong>Obter etiquetas</strong> Clique no botão; a ferramenta irá buscar a página no servidor. <code><head></code> Isso separa a seção.</li><li>Título da página (<strong>título</strong>), conjunto de caracteres (<strong>conjunto de caracteres</strong>O ) e o URL canônico são resumidos primeiro; em seguida, todas as meta tags são listadas na tabela.</li><li>Os rótulos são diferenciados pelo seu tipo através de emblemas coloridos: <strong>Padrão</strong>, <strong>Gráfico aberto</strong>, <strong>Cartão do Twitter</strong> e <strong>Outro</strong>.</li><li>Qualquer valor <strong>Cópia</strong> Você pode adicioná-lo à sua área de transferência usando o botão.</li> </ol> </div> </div> </div> </section> <section class="section-space-bottom"> <div class="container"> <div class="row justify-content-center"> <div class="col-lg-9"> <div class="text-center mb-8"> <span class="hg-eyebrow">FAQ</span> <h2 class="mt-2 mb-0">Perguntas frequentes</h2> </div> <div class="accordion accordion--primary accordion-separate-body" id="faq-meta-etiket-goruntuleyici"> <div class="accordion-item"> <h3 class="accordion-header"> <button class="accordion-button fw-medium shadow" type="button" data-bs-toggle="collapse" data-bs-target="#faq-meta-etiket-goruntuleyici-0" aria-expanded="true"> Por que as meta tags são importantes para o SEO? </button> </h3> <div id="faq-meta-etiket-goruntuleyici-0" class="accordion-collapse shadow collapse show" data-bs-parent="#faq-meta-etiket-goruntuleyici"> <div class="accordion-body border border-dark border-opacity-5 fs-14">Google e outros mecanismos de busca, <code>título</code> e <code>meta descrição</code> Exibe palavras-chave e descrições atraentes nos resultados de pesquisa. As palavras-chave certas e descrições convincentes aumentam as taxas de cliques. <code>robôs</code> A tag determina se a página será indexada ou não. <code>canônico</code> Isso evita problemas de conteúdo duplicado, especificando a URL original.</div> </div> </div><div class="accordion-item"> <h3 class="accordion-header"> <button class="accordion-button fw-medium shadow collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#faq-meta-etiket-goruntuleyici-1" aria-expanded="false"> Para que servem as tags OpenGraph? </button> </h3> <div id="faq-meta-etiket-goruntuleyici-1" class="accordion-collapse shadow collapse" data-bs-parent="#faq-meta-etiket-goruntuleyici"> <div class="accordion-body border border-dark border-opacity-5 fs-14">As tags Open Graph (og:title, og:description, og:image, etc.) controlam o cartão que aparece quando uma página é compartilhada em plataformas como Facebook, LinkedIn, WhatsApp e Discord. Se a tag og:image estiver ausente ou tiver o tamanho incorreto, o cartão de compartilhamento aparecerá com problemas.</div> </div> </div><div class="accordion-item"> <h3 class="accordion-header"> <button class="accordion-button fw-medium shadow collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#faq-meta-etiket-goruntuleyici-2" aria-expanded="false"> Os stickers do Twitter Card são diferentes do Open Graph? </button> </h3> <div id="faq-meta-etiket-goruntuleyici-2" class="accordion-collapse shadow collapse" data-bs-parent="#faq-meta-etiket-goruntuleyici"> <div class="accordion-body border border-dark border-opacity-5 fs-14">O Twitter usa suas próprias tags: twitter:card, twitter:title, twitter:description e twitter:image. Se essas tags não estiverem disponíveis, o Twitter lê as tags Open Graph como alternativa. Se ambos os conjuntos forem adicionados, o Twitter prioriza suas próprias tags.</div> </div> </div><div class="accordion-item"> <h3 class="accordion-header"> <button class="accordion-button fw-medium shadow collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#faq-meta-etiket-goruntuleyici-3" aria-expanded="false"> Por que não estou obtendo resultados em alguns sites? </button> </h3> <div id="faq-meta-etiket-goruntuleyici-3" class="accordion-collapse shadow collapse" data-bs-parent="#faq-meta-etiket-goruntuleyici"> <div class="accordion-body border border-dark border-opacity-5 fs-14">Alguns servidores podem bloquear solicitações de bots, apresentar timeouts devido à lentidão no atendimento ou usar certificados SSL inválidos. Além disso, por motivos de segurança, não é possível realizar consultas a redes privadas ou endereços IP locais.</div> </div> </div><div class="accordion-item"> <h3 class="accordion-header"> <button class="accordion-button fw-medium shadow collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#faq-meta-etiket-goruntuleyici-4" aria-expanded="false"> Posso analisar sites concorrentes com esta ferramenta? </button> </h3> <div id="faq-meta-etiket-goruntuleyici-4" class="accordion-collapse shadow collapse" data-bs-parent="#faq-meta-etiket-goruntuleyici"> <div class="accordion-body border border-dark border-opacity-5 fs-14">Sim. Você pode inserir qualquer URL pública e examinar o tamanho dos títulos, os textos descritivos, as diretivas de robôs e as tags OG ausentes. Essas informações podem ser usadas como referência ao otimizar sua própria página.</div> </div> </div> </div> </div> </div> </div> </section> <section class="section-space-bottom"> <div class="container"> <div class="row justify-content-center"> <div class="col-lg-9 text-center"> <a href="/pt/ferramentas/" class="hg-tool-back"> <iconify-icon icon="solar:arrow-left-linear"></iconify-icon> Voltar a todas as ferramentas gratuitas </a> </div> </div> </div> </section> </main> <footer class="hg-footer section-space-top position-relative z-1 overflow-hidden"> <div class="section-space-sm-bottom"> <div class="container"> <div class="hg-foot-top d-flex flex-wrap align-items-center justify-content-between gap-4 pb-4 mb-4"> <div class="d-flex align-items-center gap-3 flex-wrap"> <a class="logo d-inline-block flex-shrink-0" href="/pt/"> <img src="/theme/assets/img/hostragons-logo.svg" alt="Hostragons" width="182" height="40" class="logo__img footer-logo"> </a> <span class="hg-foot-intro mb-0">Seu parceiro confiável para hospedagem web, WordPress, revenda de hospedagem, servidores virtuais e nomes de domínio.</span> </div> <div class="hg-foot-awards d-flex align-items-center gap-2"> <span class="hg-foot-label mb-0 me-1 d-none d-sm-inline">Nossos Prêmios</span> <span class="hg-award-box"><img src="/theme/assets/img/award-cloud-2021.png" alt="Os 10 melhores serviços de hospedagem em nuvem de 2021" width="100" height="100" class="hg-award" loading="lazy"></span> <span class="hg-award-box"><img src="/theme/assets/img/award-offshore-2025.webp" alt="As 25 melhores opções de hospedagem offshore para 2025" width="100" height="100" class="hg-award" loading="lazy"></span> <span class="hg-award-box"><img src="/theme/assets/img/award-gaming-2026.webp" alt="Os 25 melhores serviços de hospedagem para jogos em 2026" width="100" height="100" class="hg-award" loading="lazy"></span> </div> </div> <div class="row g-4"> <div class="col-6 col-lg-3"> <p class="hg-foot-h h6 mb-0">Centro de dados</p> <ul class="list gap-2"> <li><a href="/pt/hospedagem/" class="hg-foot-link">Hospedagem de sites</a></li> <li><a href="/pt/hospedagem-revenda/" class="hg-foot-link">Hospedagem para revendedores</a></li> <li><a href="/pt/wordpress-hospedagem/" class="hg-foot-link">Hospedagem WordPress</a></li> <li><a href="/pt/hospedagem-de-email/" class="hg-foot-link">Hospedagem de e-mail</a></li> <li><a href="/pt/servidor-virtual/" class="hg-foot-link">Servidor Virtual</a></li> <li><a href="/pt/servicos-dns/" class="hg-foot-link">Hospedagem DNS</a></li> </ul> </div> <div class="col-6 col-lg-3"> <p class="hg-foot-h h6 mb-0">Nossos serviços</p> <ul class="list gap-2"> <li><a href="/pt/trafego-organico/" class="hg-foot-link">Sucesso orgânico</a></li> <li><a href="/pt/modulos-whmcs/" class="hg-foot-link">Módulos WHMCS</a></li> <li><a href="/pt/otimizacao-wordpress/" class="hg-foot-link">Otimização do WordPress</a></li> <li><a href="/pt/otimizacao-servidor/" class="hg-foot-link">Otimização de servidor</a></li> <li><a href="/pt/otimizacao-do-cloudflare/" class="hg-foot-link">Otimização do CloudFlare</a></li> <li><a href="/pt/otimizacao-google-ads/" class="hg-foot-link">Otimização de anúncios do Google</a></li> </ul> </div> <div class="col-6 col-lg-3"> <p class="hg-foot-h h6 mb-0">Outro</p> <ul class="list gap-2"> <li><a href="/pt/complementos-do-servico/" class="hg-foot-link">Serviços adicionais</a></li> <li><a href="/pt/hospedagem-gratuita/" class="hg-foot-link">Hospedagem e nome de domínio gratuitos</a></li> <li><a href="/ai" class="hg-foot-link">RagonsAI</a></li> </ul> </div> <div class="col-6 col-lg-3"> <p class="hg-foot-h h6 mb-0">Hostragons®</p> <ul class="list gap-2"> <li><a href="/pt/blog/" class="hg-foot-link">blog</a></li> <li><a href="/pt/sobre-nos/" class="hg-foot-link">Sobre nós</a></li> <li><a href="/pt/contato/" class="hg-foot-link">Comunicação</a></li> <li><a href="/pt/contrato-de-servico/" class="hg-foot-link">Contrato de prestação de serviços</a></li> <li><a href="/pt/politica-de-reembolso/" class="hg-foot-link">Política de devolução</a></li> <li><a href="/pt/politica-de-privacidade/" class="hg-foot-link">política de Privacidade</a></li> <li><a href="/pt/politica-de-cookies/" class="hg-foot-link">Política de Cookies</a></li> </ul> </div> </div> </div> </div> <div class="py-3 border-dark-subtle border-top"> <div class="container"> <div class="row g-3 g-lg-0 align-items-center"> <div class="col-lg-8"> <p class="mb-0 fs-14 hg-foot-copy">© 2020 Hostragons® — provedor de hospedagem com sede no Reino Unido, número de registro 14320956. Todos os direitos reservados.</p> </div> <div class="col-lg-4"> <ul class="list list-row align-items-center justify-content-lg-end gap-4 flex-wrap mb-0"> <li><a href="https://www.facebook.com/hostragonsglobal" target="_blank" rel="noopener noreferrer" aria-label="Facebook" class="link d-inline-block text-body hover:text-primary"><iconify-icon icon="ic:baseline-facebook" class="fs-24"></iconify-icon></a></li> <li><a href="https://x.com/hostragons" target="_blank" rel="noopener noreferrer" aria-label="X (Twitter)" class="link d-inline-block text-body hover:text-primary"><iconify-icon icon="ri:twitter-x-fill" class="fs-24"></iconify-icon></a></li> <li><a href="https://www.instagram.com/hostragons/" target="_blank" rel="noopener noreferrer" aria-label="Instagram" class="link d-inline-block text-body hover:text-primary"><iconify-icon icon="mdi:instagram" class="fs-24"></iconify-icon></a></li> <li><a href="https://www.youtube.com/@hostragons" target="_blank" rel="noopener noreferrer" aria-label="YouTube" class="link d-inline-block text-body hover:text-primary"><iconify-icon icon="mdi:youtube" class="fs-24"></iconify-icon></a></li> <li><a href="https://www.flickr.com/photos/202229767@N08/" target="_blank" rel="noopener noreferrer" aria-label="Flickr" class="link d-inline-block text-body hover:text-primary"><iconify-icon icon="mdi:flickr" class="fs-24"></iconify-icon></a></li> <li><a href="https://hostragons.medium.com/" target="_blank" rel="noopener noreferrer" aria-label="Médio" class="link d-inline-block text-body hover:text-primary"><iconify-icon icon="mdi:medium" class="fs-24"></iconify-icon></a></li> <li><a href="https://uk.pinterest.com/hostragonsglobal/" target="_blank" rel="noopener noreferrer" aria-label="Pinterest" class="link d-inline-block text-body hover:text-primary"><iconify-icon icon="mdi:pinterest" class="fs-24"></iconify-icon></a></li> </ul> </div> </div> </div> </div> <img src="/theme/assets/img/shapes/footer-shape-1.png" alt="" width="1016" height="667" loading="lazy" decoding="async" class="img-fluid position-absolute start-0 bottom-0 z-n1 pointer-none d-none d-md-block footer-shape-1"> <img src="/theme/assets/img/shapes/footer-shape-2.png" alt="" width="934" height="1016" loading="lazy" decoding="async" class="img-fluid position-absolute end-0 top-50 translate-middle-y z-n1 pointer-none d-none d-md-block footer-shape-2"> </footer> <script defer src="/theme/assets/js/bootstrap.bundle.js"></script> <script defer src="/theme/assets/js/iconify.js"></script> <script defer src="/theme/assets/js/simplebar.js"></script> <script defer src="/theme/assets/js/swiper.js"></script> <script defer src="/theme/assets/js/prism.js"></script> <script defer src="/theme/assets/js/app.js"></script> <script defer src="/theme/assets/js/currency.js?v=20260619c"></script> <script defer src="/theme/assets/js/hg-dom-i18n.js"></script> <script defer src="/theme/assets/js/hg-domain.js"></script> <script defer src="/theme/assets/js/hg-header.js"></script> <script>(function(){var btn=document.getElementById("hgThemeToggle");if(!btn)return;btn.addEventListener("click",function(){var cur=document.documentElement.getAttribute("data-bs-theme")==="dark"?"dark":"light";var next=cur==="dark"?"light":"dark";document.documentElement.setAttribute("data-bs-theme",next);try{localStorage.setItem("theme",next)}catch(e){}})})(); </script> <div id="hgAichatPanel" class="hg-aichat-panel" role="dialog" aria-modal="false" aria-labelledby="hgAichatTitle" aria-hidden="true" hidden> <div class="hg-aichat-panel__head"> <span class="hg-aichat-panel__avatar" aria-hidden="true"> <iconify-icon icon="tabler:sparkles" class="hg-aichat-panel__avatar-ico"></iconify-icon> <span class="hg-aichat-panel__dot"></span> </span> <span class="hg-aichat-panel__head-txt"> <span class="hg-aichat-panel__title" id="hgAichatTitle">Assistente Hostragons</span> <span class="hg-aichat-panel__status"><span class="hg-aichat-panel__status-dot" aria-hidden="true"></span>Online</span> </span> <button type="button" class="hg-aichat-panel__close" id="hgAichatClose" aria-label="Fechar" title="Fechar"><iconify-icon icon="solar:close-circle-linear"></iconify-icon></button> </div> <div class="hg-aichat-panel__body" id="hgAichatBody" aria-live="polite"> <div class="hg-aichat-msg hg-aichat-msg--bot"> <span class="hg-aichat-ava" aria-hidden="true"><iconify-icon icon="tabler:sparkles"></iconify-icon></span> <span class="hg-aichat-bubble">Olá! Sou o Assistente Hostragons. Posso ajudá-lo com questões sobre alojamento, servidores e nomes de domínio. O que gostaria de saber?</span> </div> <div class="hg-aichat-chips" id="hgAichatChips"> <button type="button" class="hg-aichat-chip">Qual alojamento é ideal para mim?</button> <button type="button" class="hg-aichat-chip">Há suporte para Node.js?</button> <button type="button" class="hg-aichat-chip">Quais são os preços?</button> <button type="button" class="hg-aichat-chip">O que recomenda para WordPress?</button> </div> </div> <form class="hg-aichat-panel__form" id="hgAichatForm" autocomplete="off"> <div class="hg-aichat-inputwrap"> <input type="text" class="hg-aichat-input" id="hgAichatInput" name="message" placeholder="Escreva a sua mensagem..." aria-label="Escreva a sua mensagem..." maxlength="1000"> <button type="submit" class="hg-aichat-send" id="hgAichatSend" aria-label="Enviar" title="Enviar"><iconify-icon icon="solar:plain-2-bold"></iconify-icon><span class="hg-aichat-send__label">Enviar</span></button> </div> <span class="hg-aichat-foot">Disponibilizado pelo assistente de IA Hostragons.</span> </form> <span id="hgAichatErr" aria-label="Desculpe, não consegui responder agora. Tente novamente." style="position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)"></span> </div> <script>(function(){var trigger=document.getElementById("hgAichatTrigger");var panel=document.getElementById("hgAichatPanel");if(!trigger||!panel)return;var inited=false,sending=false;var history=[];var STORE_KEY="hg_aichat_state";var transcript=[];var panelOpen=false,chipsHidden=false,restoring=false;function saveState(){if(restoring)return;try{sessionStorage.setItem(STORE_KEY,JSON.stringify({v:1,transcript:transcript.slice(-60),history:history.slice(-12),open:panelOpen,chipsHidden}))}catch(e){}}function loadState(){try{var raw=sessionStorage.getItem(STORE_KEY);if(!raw)return null;var st=JSON.parse(raw);if(!st||st.v!==1||!Array.isArray(st.transcript))return null;return st}catch(e){return null}}function errText(){var e=document.getElementById("hgAichatErr");return e&&e.getAttribute("aria-label")||"\xDCzg\xFCn\xFCm, \u015Fu an yan\u0131t veremedim. L\xFCtfen tekrar deneyin."}function bodyEl(){return document.getElementById("hgAichatBody")}function scrollDown(){var b=bodyEl();if(b)b.scrollTop=b.scrollHeight}function esc(s){return String(s).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function renderMd(text){var h=esc(text);h=h.replace(/\*\*([^*]+)\*\*/g,"<strong>$1</strong>");h=h.replace(/\[([^\]]+)\]\((https?:\/\/[^\s)]+|\/[^\s)]*)\)/g,function(m,label,url){return'<a href="'+url+'" rel="noopener" target="_blank">'+label+"</a>"});h=h.replace(/(^|[\s(])(https?:\/\/[^\s<)]+)/g,function(m,pre,url){return pre+'<a href="'+url+'" rel="noopener" target="_blank">'+url+"</a>"});return h}function addMsg(role,text,noRecord){var b=bodyEl();if(!b)return null;var wrap=document.createElement("div");wrap.className="hg-aichat-msg hg-aichat-msg--"+(role==="user"?"user":"bot");if(role!=="user"){var ava=document.createElement("span");ava.className="hg-aichat-ava";ava.setAttribute("aria-hidden","true");ava.innerHTML='<iconify-icon icon="tabler:sparkles"></iconify-icon>';wrap.appendChild(ava)}var bubble=document.createElement("span");bubble.className="hg-aichat-bubble";if(role==="user")bubble.textContent=text;else bubble.innerHTML=renderMd(text);wrap.appendChild(bubble);b.appendChild(wrap);scrollDown();if(!noRecord){transcript.push({t:"msg",role:role==="user"?"user":"bot",text:String(text)});saveState()}return wrap}function addLinks(links,noRecord){if(!Array.isArray(links)||!links.length)return;var b=bodyEl();if(!b)return;var wrap=document.createElement("div");wrap.className="hg-aichat-msg hg-aichat-msg--bot";var box=document.createElement("div");box.className="hg-aichat-links";var saved=[];links.slice(0,5).forEach(function(l){var href=l&&(l.href||l.url);if(!href)return;var a=document.createElement("a");a.className="hg-aichat-link";a.href=String(href);a.rel="noopener";a.textContent=String(l.label||l.title||href);box.appendChild(a);saved.push({href:String(href),label:String(l.label||l.title||href)})});if(!box.childNodes.length)return;wrap.appendChild(box);b.appendChild(wrap);scrollDown();if(!noRecord&&saved.length){transcript.push({t:"links",links:saved});saveState()}}function hideChips(){var c=document.getElementById("hgAichatChips");if(c)c.classList.add("is-hidden");chipsHidden=true}function showTyping(){var b=bodyEl();if(!b)return null;var wrap=document.createElement("div");wrap.className="hg-aichat-msg hg-aichat-msg--bot";wrap.innerHTML='<span class="hg-aichat-ava" aria-hidden="true"><iconify-icon icon="tabler:sparkles"></iconify-icon></span><span class="hg-aichat-bubble hg-aichat-typing"><span></span><span></span><span></span></span>';b.appendChild(wrap);scrollDown();return wrap}function setSending(state){sending=state;var send2=document.getElementById("hgAichatSend");if(send2)send2.disabled=state}function openPanel(noFocus){if(!inited)init();panel.hidden=false;panel.setAttribute("aria-hidden","false");trigger.setAttribute("aria-expanded","true");requestAnimationFrame(function(){panel.classList.add("is-open")});if(!noFocus){var inp=document.getElementById("hgAichatInput");if(inp)setTimeout(function(){inp.focus()},60)}panelOpen=true;saveState()}function closePanel(){panel.classList.remove("is-open");panel.setAttribute("aria-hidden","true");trigger.setAttribute("aria-expanded","false");setTimeout(function(){if(!panel.classList.contains("is-open"))panel.hidden=true},240);panelOpen=false;saveState()}function send(text){if(sending)return;text=(text||"").trim();if(!text)return;hideChips();addMsg("user",text);history.push({role:"user",content:text});var inp=document.getElementById("hgAichatInput");if(inp)inp.value="";setSending(true);var typing=showTyping();var lang=(document.documentElement.getAttribute("lang")||"tr").toLowerCase();var ctrl=typeof AbortController!=="undefined"?new AbortController:null;var timer=setTimeout(function(){if(ctrl)ctrl.abort()},3e4);fetch("/araclar/api/ai-chat.php",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:text,lang,history:history.slice(-12)}),signal:ctrl?ctrl.signal:void 0}).then(function(r){if(!r.ok)throw new Error("HTTP "+r.status);return r.json()}).then(function(data){clearTimeout(timer);if(typing&&typing.parentNode)typing.parentNode.removeChild(typing);var reply=data&&(data.reply||data.answer||data.message)||"";if(reply){addMsg("bot",reply);history.push({role:"assistant",content:reply})}else{addMsg("bot",errText())}addLinks(data&&(data.suggestedLinks||data.links))}).catch(function(){clearTimeout(timer);if(typing&&typing.parentNode)typing.parentNode.removeChild(typing);addMsg("bot",errText())}).then(function(){setSending(false);if(inp)inp.focus()})}function init(){if(inited)return;inited=true;var form=document.getElementById("hgAichatForm");var closeBtn=document.getElementById("hgAichatClose");if(form)form.addEventListener("submit",function(e){e.preventDefault();var inp=document.getElementById("hgAichatInput");send(inp?inp.value:"")});if(closeBtn)closeBtn.addEventListener("click",closePanel);var chips=document.getElementById("hgAichatChips");if(chips)chips.addEventListener("click",function(e){var btn=e.target.closest?e.target.closest(".hg-aichat-chip"):null;if(btn)send(btn.textContent||"")});document.addEventListener("keydown",function(e){if(e.key==="Escape"&&panel.classList.contains("is-open"))closePanel()})}trigger.addEventListener("click",function(){if(panel.classList.contains("is-open"))closePanel();else openPanel()});function restoreState(){var st=loadState();if(!st||!st.transcript.length)return;restoring=true;try{init();if(Array.isArray(st.history))history=st.history.slice(-12);var b=bodyEl();if(b){while(b.firstChild)b.removeChild(b.firstChild)}hideChips();st.transcript.forEach(function(it){if(!it)return;if(it.t==="msg")addMsg(it.role==="user"?"user":"bot",String(it.text||""),true);else if(it.t==="links")addLinks(it.links,true)});transcript=st.transcript.slice();chipsHidden=true;scrollDown();if(st.open){panelOpen=true;openPanel(true)}}catch(e){}restoring=false;saveState()}if(document.readyState==="loading")document.addEventListener("DOMContentLoaded",restoreState);else restoreState()})(); </script> </body> </html>