{"id":741,"date":"2026-09-24T18:35:32","date_gmt":"2026-09-24T21:35:32","guid":{"rendered":"https:\/\/yellowkode.com\/blog\/slopshape-identificando-texto-ia-estrutura\/"},"modified":"2026-09-24T18:35:32","modified_gmt":"2026-09-24T21:35:32","slug":"slopshape-identificando-texto-ia-estrutura","status":"publish","type":"post","link":"https:\/\/yellowkode.com\/blog\/slopshape-identificando-texto-ia-estrutura\/","title":{"rendered":"SlopShape: Identificando Texto de IA pela Estrutura do Texto"},"content":{"rendered":"<p>Detectores de texto de IA que olham palavra por palavra funcionam quase perfeitamente em texto cru sa\u00eddo do modelo, mas quebram assim que algu\u00e9m reescreve. Um paper de setembro de 2026 prop\u00f5e olhar para outra camada: n\u00e3o as palavras escolhidas, e sim como o texto \u00e9 montado. E o resultado se sustenta mesmo depois de reescrita.<\/p>\n<h2>O fato<\/h2>\n<p>Em 14 de setembro de 2026, Jochen Madler (Sitefire) publicou no arXiv o paper <em>SlopShape: Identifying AI-Generated Commercial Web Content<\/em> (<a href=\"https:\/\/arxiv.org\/abs\/2609.15369\" target=\"_blank\" rel=\"noopener\">arXiv:2609.15369<\/a>). O trabalho replica o m\u00e9todo StoryScope (Russell et al., 2026), originalmente aplicado a fic\u00e7\u00e3o, sobre 2.250 blog posts humanos anteriores ao ChatGPT de 268 dom\u00ednios corporativos contra 11.250 vers\u00f5es geradas por cinco modelos de fronteira, e detecta os posts de IA com 98,0 de macro-F1 em empresas fora do conjunto de treino, resultado que praticamente n\u00e3o muda (98,1) quando cada post de IA \u00e9 reescrito pelo pr\u00f3prio modelo que o gerou.<\/p>\n<p>O StoryScope original havia mostrado que fic\u00e7\u00e3o gerada por IA \u00e9 detect\u00e1vel a partir de escolhas estruturais de discurso sozinhas, com 93,2 de macro-F1, um n\u00facleo pequeno de features, impress\u00f5es digitais por modelo e hist\u00f3rias humanas ocupando regi\u00f5es mais raras do espa\u00e7o estrutural. O SlopShape mostra que a mesma coisa acontece em conte\u00fado comercial, com sinal ainda mais forte. C\u00f3digo e artefatos est\u00e3o em <a href=\"https:\/\/github.com\/pulse-energy-eu\/slopshape\" target=\"_blank\" rel=\"noopener\">github.com\/pulse-energy-eu\/slopshape<\/a>.<\/p>\n<h2>Como o m\u00e9todo funciona<\/h2>\n<p>A intui\u00e7\u00e3o de todo detector de IA anterior era: LLMs escolhem palavras de um jeito estatisticamente diferente. Isso \u00e9 verdade e detect\u00e1vel, mas fr\u00e1gil. Passe o texto por outro modelo pedindo para reescrever, e a assinatura lexical vira outra. O que o SlopShape faz \u00e9 subir um n\u00edvel: em vez de perguntar &#8220;quais palavras aparecem&#8221;, pergunta &#8220;como esse texto est\u00e1 organizado&#8221;.<\/p>\n<h3>O instrumento: 214 perguntas sobre a forma do texto<\/h3>\n<p>O instrumento \u00e9 um schema de template comercial de 11 dimens\u00f5es descoberto de baixo para cima a partir de posts humanos, carregando 214 features validadas. Dessas 214, 187 s\u00e3o puramente estruturais, e s\u00e3o essas 187 que sozinhas d\u00e3o os 98% de F1. Cada feature \u00e9 essencialmente uma pergunta fechada sobre o texto: em que ordem aparecem os elementos, o post anuncia sua pr\u00f3pria estrutura no come\u00e7o, existe alega\u00e7\u00e3o sem evid\u00eancia de suporte, a voz \u00e9 institucional ou individual, o texto termina com um chamado \u00e0 a\u00e7\u00e3o can\u00f4nico, e assim por diante.<\/p>\n<p>Uma analogia \u00fatil: imagine avaliar reda\u00e7\u00f5es do ENEM sem ler o conte\u00fado, s\u00f3 marcando num checklist &#8220;tem introdu\u00e7\u00e3o com tese&#8221;, &#8220;tem tr\u00eas par\u00e1grafos de desenvolvimento sim\u00e9tricos&#8221;, &#8220;tem conclus\u00e3o que fecha com proposta de interven\u00e7\u00e3o&#8221;, &#8220;as cita\u00e7\u00f5es aparecem em posi\u00e7\u00f5es previs\u00edveis&#8221;. Se voc\u00ea marcar todos os itens em quase todas as reda\u00e7\u00f5es de um grupo, esse grupo compartilha uma forma. A analogia quebra num ponto importante: o ENEM incentiva a forma padr\u00e3o de prop\u00f3sito, enquanto no SlopShape a forma padr\u00e3o emerge sem ningu\u00e9m pedir, e \u00e9 essa emerg\u00eancia involunt\u00e1ria que denuncia a origem.<\/p>\n<h3>O pipeline passo a passo<\/h3>\n<p>O fluxo do paper, de dado bruto at\u00e9 classifica\u00e7\u00e3o:<\/p>\n<ul>\n<li><strong>Corpus humano<\/strong>: 2.250 posts de blog corporativo capturados no Wayback Machine antes do ChatGPT. Isso garante que nenhum texto humano do treino foi contaminado por LLM.<\/li>\n<li><strong>Brief<\/strong>: para cada post humano, um modelo extrai um resumo do que aquele post est\u00e1 tentando comunicar (assunto, p\u00fablico, chamada de a\u00e7\u00e3o). Esse \u00e9 o &#8220;prompt&#8221; que vai para os modelos geradores.<\/li>\n<li><strong>Espelhos de IA<\/strong>: cinco modelos de fronteira (GPT, Claude, Gemini, DeepSeek, Kimi) recebem o brief e escrevem sua pr\u00f3pria vers\u00e3o. Total: 11.250 espelhos.<\/li>\n<li><strong>Anota\u00e7\u00e3o<\/strong>: um LLM avalia cada post, humano ou IA, respondendo \u00e0s 214 perguntas do instrumento. Cada texto vira um vetor de 214 respostas.<\/li>\n<li><strong>Classificador<\/strong>: sobre esses vetores, um modelo simples aprende a separar humano de IA, e depois a atribuir cada post ao modelo espec\u00edfico que o gerou.<\/li>\n<\/ul>\n<h3>Por que confiar no anotador que \u00e9 LLM<\/h3>\n<p>Este \u00e9 o ponto que costuma ser fraco em pipelines assim. Se o anotador \u00e9 um LLM, ele pode inventar. O paper leva isso a s\u00e9rio. Porque o pipeline \u00e9 rodado por LLM de ponta a ponta, ele \u00e9 auditado com corridas de repetibilidade, um filtro de confiabilidade aplicado antes de qualquer r\u00f3tulo humano ou de IA ser visto, e uma sess\u00e3o de anota\u00e7\u00e3o de ouro humana que supera os n\u00fameros de concord\u00e2ncia do original. O instrumento \u00e9 validado com anota\u00e7\u00e3o de ouro humana (kappa humano-humano 0,928, kappa humano-modelo 0,946) e checagens de repetibilidade (alpha de Krippendorff 0,891). Traduzindo: dois humanos anotando o mesmo texto concordam em 92,8%, e o LLM concorda com o humano em 94,6%. O anotador automatizado n\u00e3o est\u00e1 mais divergente do humano do que humanos divergem entre si.<\/p>\n<h3>O achado central: dez features carregam quase todo o sinal<\/h3>\n<p>O padr\u00e3o estrutural central \u00e9 resumido em dez features que carregam 27,6% do total. Ou seja, das 187 features estruturais, um subconjunto pequeno de dez concentra grande parte do poder de discrimina\u00e7\u00e3o. Os posts de IA compartilham uma forma arrumada e auto-anunciadora, 79,3% s\u00e3o atribu\u00eddos \u00e0 fonte correta contra uma taxa de acaso de 16,7%, e posts humanos ocupam configura\u00e7\u00f5es estruturais raras.<\/p>\n<p>&#8220;Auto-anunciadora&#8221; \u00e9 a parte que interessa tecnicamente: o texto de IA tende a dizer no come\u00e7o o que ele vai fazer, entrega exatamente aquilo, e fecha resumindo o que fez. \u00c9 a estrutura de uma apresenta\u00e7\u00e3o de slides transformada em prosa. O gap de raridade tamb\u00e9m tem uma leitura geom\u00e9trica: posts humanos est\u00e3o espalhados amplamente no espa\u00e7o de features estruturais enquanto posts de IA se agrupam juntos. Se voc\u00ea projetar todos os textos como pontos num espa\u00e7o de 187 dimens\u00f5es, os humanos formam uma nuvem dispersa e os posts de IA formam um caro\u00e7o denso, e o caro\u00e7o fica no mesmo lugar mesmo quando o modelo reescreve.<\/p>\n<h2>O que isso significa na pr\u00e1tica<\/h2>\n<p>Reescrita \u00e9 a defesa mais \u00f3bvia contra detectores. Voc\u00ea pega o texto, pede para outro modelo reescrever mantendo o sentido, e a assinatura lexical evapora. O SlopShape \u00e9 imune a isso porque a reescrita n\u00e3o mexe na coluna vertebral do texto: se o post original abre anunciando tr\u00eas benef\u00edcios, entrega os tr\u00eas em ordem e fecha convidando ao contato, a vers\u00e3o reescrita quase sempre faz a mesma coisa. As palavras mudam, a forma n\u00e3o.<\/p>\n<p>Isso tem consequ\u00eancia pr\u00e1tica direta em duas frentes. Primeiro, sistemas de modera\u00e7\u00e3o de conte\u00fado podem passar a olhar estrutura, n\u00e3o vocabul\u00e1rio. Segundo, quem escreve com IA e quer que o texto passe como humano precisa fazer o que humano faz: quebrar a simetria, n\u00e3o anunciar tudo no come\u00e7o, deixar afirma\u00e7\u00f5es sem prova de apoio quando faz sentido, terminar sem fechar em la\u00e7o. Reescrever com outro LLM n\u00e3o resolve.<\/p>\n<p>Nos livros que escrevi, entre eles a s\u00e9rie IA na Pr\u00e1tica, uma coisa que fica clara ao editar texto meu contra texto gerado \u00e9 exatamente isso: o rascunho de IA tende a fechar tudo, listar tudo, avisar o leitor do que vem. O que quebra a forma \u00e9 a interrup\u00e7\u00e3o humana: um exemplo que n\u00e3o encaixa perfeitamente, um par\u00eanteses que sobra, uma frase que corta o par\u00e1grafo pela metade. Isso n\u00e3o \u00e9 estilo, \u00e9 ru\u00eddo estrutural, e \u00e9 isso que o SlopShape est\u00e1 medindo.<\/p>\n<h3>Os modelos t\u00eam assinaturas diferentes entre si<\/h3>\n<p>A raridade m\u00e9dia por modelo ordena os modelos de IA como deepseek 0,547 > claude 0,483 > gemini 0,461 > kimi 0,356 > gpt 0,329. DeepSeek fica mais pr\u00f3ximo dos humanos, casando com seu status de fonte mais dif\u00edcil de atribuir, e a checagem com correspond\u00eancia de tamanho mostra que essa proximidade \u00e9 estrutural e n\u00e3o devida ao comprimento: a ordena\u00e7\u00e3o por modelo se preserva no subconjunto com tamanhos casados. DeepSeek escreve com estrutura menos padronizada. GPT \u00e9 o mais previs\u00edvel estruturalmente. Isso \u00e9 \u00fatil se voc\u00ea constr\u00f3i ferramentas de an\u00e1lise: sabendo qual modelo tende a produzir qual forma, voc\u00ea pode ajustar detec\u00e7\u00e3o por origem esperada.<\/p>\n<h2>Onde quebra<\/h2>\n<p>Tr\u00eas limites concretos.<\/p>\n<p><strong>Um.<\/strong> O paper trata s\u00f3 de blog post comercial B2B em ingl\u00eas. N\u00e3o h\u00e1 garantia de que a assinatura estrutural sobreviva em portugu\u00eas, em outros g\u00eaneros (documenta\u00e7\u00e3o t\u00e9cnica, e-mail transacional, tweet), ou em conte\u00fado curto. O modelo estrutural foi induzido a partir desse corpus.<\/p>\n<p><strong>Dois.<\/strong> H\u00e1 uma cr\u00edtica metodol\u00f3gica s\u00e9ria no pr\u00f3prio arXiv. A mec\u00e2nica de espelho \u00e9 informacionalmente assim\u00e9trica. O paper interpreta os valores ausentes como uma prefer\u00eancia de IA por estrutura arrumada e auto-anunciadora, mas uma interpreta\u00e7\u00e3o igualmente plaus\u00edvel \u00e9 que os modelos de IA simplesmente n\u00e3o receberam o detalhe contextual necess\u00e1rio para produzir aqueles recursos. O conjunto de features de n\u00facleo n\u00e3o \u00e9, portanto, evid\u00eancia de um estilo distinto de IA sem uma demonstra\u00e7\u00e3o de que as mesmas features mudam quando modelos de IA recebem briefs mais completos. Em termos pr\u00e1ticos: o modelo escreveu com menos informa\u00e7\u00e3o do que o humano tinha, e talvez parte da diferen\u00e7a seja isso, n\u00e3o a natureza do gerador.<\/p>\n<p><strong>Tr\u00eas.<\/strong> Custo. Anotar um post com o instrumento significa fazer o LLM responder a 214 perguntas sobre ele. Para 13.500 documentos, o paper reporta 148.500 respostas armazenadas mais 15.950 do teste de reescrita. Isso n\u00e3o \u00e9 um detector barato para rodar em tempo real: \u00e9 um instrumento de an\u00e1lise, n\u00e3o um filtro de request. Se voc\u00ea quer rodar isso na entrada de um formul\u00e1rio, esque\u00e7a. Se voc\u00ea quer rodar sobre um corpus de 5.000 p\u00e1ginas indexadas para auditar, vale.<\/p>\n<p>Analisando texto aberto de avalia\u00e7\u00e3o de cliente para decidir feature, aprendi que sentimento agregado esconde o caso extremo, que costuma ser o que importa. O mesmo se aplica aqui: 98% de F1 n\u00e3o significa que os 2% restantes s\u00e3o erros aleat\u00f3rios. S\u00e3o exatamente os posts humanos com estrutura suspeitamente organizada, e os posts de IA escritos por algu\u00e9m que quebrou a forma. Um detector estrutural vai errar consistentemente nesses casos, e s\u00e3o os casos onde a decis\u00e3o importa.<\/p>\n<h2>O que n\u00e3o d\u00e1 para afirmar ainda<\/h2>\n<p>Tr\u00eas coisas.<\/p>\n<p>Primeiro, n\u00e3o sabemos se o resultado se sustenta em modelos futuros treinados com consci\u00eancia desse tipo de detec\u00e7\u00e3o. Se um laborat\u00f3rio resolve treinar um modelo para variar estrutura de prop\u00f3sito, o n\u00facleo de dez features pode virar ru\u00eddo. O paper n\u00e3o testa isso, e n\u00e3o tem como testar sem os modelos.<\/p>\n<p>Segundo, o instrumento foi induzido a partir de posts comerciais em ingl\u00eas pr\u00e9-ChatGPT. O schema de template comercial \u00e9 derivado de tr\u00eas corridas independentes sobre 18 posts humanos cada. Dado o pequeno tamanho da amostra (54 posts humanos), a generaliza\u00e7\u00e3o do schema de 11 dimens\u00f5es para o corpus completo de 2.250 deveria ser justificada mais explicitamente. A cr\u00edtica \u00e9 justa e o autor n\u00e3o responde a ela na v2.<\/p>\n<p>Terceiro, o paper n\u00e3o afirma que essas features capturam &#8220;como IA pensa&#8221;. Elas capturam como IA escreve conte\u00fado comercial quando recebe um brief resumido. Extrapolar para &#8220;detector universal de texto de IA&#8221; \u00e9 o autor n\u00e3o fazer, e n\u00e3o dever\u00edamos fazer por ele.<\/p>\n<h2>Como testar isso voc\u00ea mesmo<\/h2>\n<p>Um caminho pequeno, sem replicar o paper inteiro:<\/p>\n<ol>\n<li>Pegue cinco posts de blog corporativo que voc\u00ea sabe que s\u00e3o humanos e anteriores a 2023 (Wayback Machine ajuda).<\/li>\n<li>Extraia um brief curto de cada um: assunto, p\u00fablico, tr\u00eas pontos principais, chamada de a\u00e7\u00e3o.<\/li>\n<li>Pe\u00e7a a dois LLMs diferentes para escrever um post a partir de cada brief.<\/li>\n<li>Monte um checklist de dez perguntas fechadas sobre estrutura, por exemplo:<\/li>\n<\/ol>\n<pre><code>1. O texto anuncia sua estrutura nos dois primeiros paragrafos? (S\/N)\n2. Existe simetria numerica entre secoes (mesmo numero de bullets, mesmo tamanho)? (S\/N)\n3. Cada afirmacao forte vem seguida de evidencia? (S\/N)\n4. A voz e institucional ou individual? (I\/P)\n5. O texto termina resumindo o que foi dito? (S\/N)\n6. Existe exemplo especifico com nome, data ou numero real? (S\/N)\n7. Aparece uma opiniao que o autor nao defende no proprio texto? (S\/N)\n8. Existe parenteses ou digressao que nao serve ao argumento central? (S\/N)\n9. O fechamento contem chamada de acao canonica? (S\/N)\n10. As transicoes entre paragrafos usam conectores previsiveis? (S\/N)<\/code><\/pre>\n<ol start=\"5\">\n<li>Anote cada um dos 15 textos (5 humanos + 10 de IA) voc\u00ea mesmo, sem saber qual \u00e9 qual. Depois compare.<\/li>\n<\/ol>\n<p>Voc\u00ea n\u00e3o vai reproduzir 98% de F1 com dez perguntas manuais e 15 textos, mas vai ver o padr\u00e3o: os textos de IA tendem a marcar sim nas perguntas 1, 2, 5, 9, 10, e n\u00e3o nas 6, 7, 8. Os humanos ficam bagun\u00e7ados. Isso \u00e9 o SlopShape em miniatura, e \u00e9 o que o instrumento de 187 features est\u00e1 fazendo em escala.<\/p>\n<p>Se quiser ir a fundo, o reposit\u00f3rio publica o instrumento completo, os prompts, o c\u00f3digo e os artefatos agregados. Respostas de features por documento (148.500, mais 15.950 respostas reescoradas do teste de reescrita), pesos de modelo treinados, briefs (2.250), espelhos (11.250) e os espelhos de teste reescritos (1.450) est\u00e3o dispon\u00edveis para pesquisadores mediante solicita\u00e7\u00e3o sob um acordo de pesquisa n\u00e3o comercial. Ou seja: d\u00e1 para verificar as contas, mas os dados brutos ficam atr\u00e1s de um pedido formal.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Um paper novo detecta conte\u00fado comercial gerado por IA com 98% de F1 usando s\u00f3 estrutura do texto, e o sinal sobrevive a reescrita. Como o m\u00e9todo funciona.<\/p>\n","protected":false},"author":2,"featured_media":740,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-741","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/yellowkode.com\/blog\/wp-json\/wp\/v2\/posts\/741","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/yellowkode.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/yellowkode.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/yellowkode.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/yellowkode.com\/blog\/wp-json\/wp\/v2\/comments?post=741"}],"version-history":[{"count":0,"href":"https:\/\/yellowkode.com\/blog\/wp-json\/wp\/v2\/posts\/741\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/yellowkode.com\/blog\/wp-json\/wp\/v2\/media\/740"}],"wp:attachment":[{"href":"https:\/\/yellowkode.com\/blog\/wp-json\/wp\/v2\/media?parent=741"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/yellowkode.com\/blog\/wp-json\/wp\/v2\/categories?post=741"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/yellowkode.com\/blog\/wp-json\/wp\/v2\/tags?post=741"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}