A resposta rápida
Se o Whizi rejeitou sua importação, verifique primeiro o arquivo que você escolheu: o único arquivo que o Whizi lê é o conversations.json dentro de uma exportação do ChatGPT ou Claude, então descompacte a exportação e escolha esse arquivo em vez do zip em si. Depois disso, uma importação falha em um de dois pontos e o texto da mensagem indica qual: o parser do navegador que lê o arquivo de exportação, ou o endpoint de importação que recebe as conversas que o parser produziu. Erros de arquivo dizem respeito ao arquivo que você escolheu. Erros de envio dizem respeito à rede ou à sessão. Nada fica ambíguo no meio do caminho, porque cada mensagem é uma string fixa ligada a uma única condição.
A segunda coisa a saber antes de tentar de novo: rodar novamente uma importação nunca duplica chats. Cada conversa importada é identificada por conta, origem e id de origem, então importar a mesma exportação duas vezes, retomar depois de uma conexão perdida, ou clicar em Importar duas vezes leva sempre aos mesmos chats uma única vez.
| O que você viu | Onde falhou | O que fazer |
|---|---|---|
| Uma mensagem sobre o formato da exportação ou o conversations.json | Ao ler seu arquivo, antes de qualquer envio | Escolha um arquivo diferente dentro da exportação, veja a tabela abaixo |
| Uma mensagem sobre sua sessão ou sua conexão | Durante o envio, na metade do processo | Entre novamente ou reconecte, depois rode a importação de novo |
| Uma contagem de conversas que não puderam ser importadas | Alguns lotes falharam em todas as tentativas | Rode a importação de novo, ela retoma só o que falta |
| Nada, mas está demorando muito | Limitação de taxa, funcionando como projetado | Espere, o importador tenta de novo sozinho |
Erros ao ler o arquivo de exportação
Esses vêm do navegador, antes de um único byte sair da sua máquina. O arquivo de exportação em si nunca é enviado: o navegador o analisa e posta apenas conversas normalizadas, então um erro aqui significa que o arquivo nunca chegou perto de ser enviado.
| Mensagem | Gatilho | Correção |
|---|---|---|
That file is not a ChatGPT or Claude export. Look for conversations.json inside the export zip. | O parser não consegue identificar nenhum dos dois formatos de exportação, ou um zip resulta em um conteúdo não reconhecido | Abra o arquivo de exportação e escolha especificamente o conversations.json |
There is no conversations.json inside that zip. Unzip it and pick the file directly. | O zip escolhido não tem uma entrada correspondente | Descompacte-o você mesmo, encontre o conversations.json e escolha esse arquivo |
That file is not valid JSON, so there was nothing to read. | O arquivo escolhido falha ao ser interpretado como JSON | Baixe a exportação novamente do ChatGPT ou Claude e escolha o conversations.json dela |
That export has no conversations with text in them. | A exportação é interpretada mas resulta em zero conversas | A exportação está de fato vazia de transcrições em texto. Nada para corrigir do lado do Whizi |
That file is too large for the browser to open. Pick the export .zip instead, which is read one file at a time. | O arquivo .json bruto escolhido ultrapassa o limite de leitura do navegador | Escolha o .zip em vez disso. Uma exportação .json bruta é aceita até 300 MB; o caminho do .zip não tem teto próprio, porque só a entrada conversations.json é descompactada |
Could not read that file. Please try again. | A leitura do arquivo falhou por qualquer outro motivo | É de fato um caso para tentar de novo. Se repetir no mesmo arquivo, escolha o .zip de exportação, que é lido uma entrada por vez |
A primeira mensagem é a mais abrangente, porque uma única string cobre duas condições: um formato de exportação que o parser não consegue identificar, e um zip que resulta em um conteúdo não reconhecido. Ambas levam à mesma correção, que é descompactar a exportação e escolher o conversations.json diretamente.
Erros do próprio envio
Depois que o arquivo é analisado, o importador posta as conversas em lotes. Duas coisas podem dar errado nessa etapa, e ambas são recuperáveis.
| Mensagem | Gatilho | Correção |
|---|---|---|
Your session ended. Sign in again, then start the import. | A busca do token não retornou nada na metade da importação | Entre novamente e reinicie a importação. O que já foi importado permanece, e a nova tentativa pula esses itens |
The import could not be finished. Check your connection and try again. | Qualquer outra falha de envio durante a execução da importação | Verifique a conexão e rode de novo |
Um terceiro resultado não é um erro, e sim um resumo: {count} could not be imported. Run the import again to pick them up. Essa é a contagem de conversas cujos lotes falharam em todas as tentativas. A instrução na mensagem é a correção inteira, e a chave de deduplicação descrita na resposta rápida é o motivo de a segunda execução não custar nada.
Erros que o endpoint de importação retorna
Esses são os códigos e strings que a própria rota de importação produz. O site espelha os mesmos limites e valida antes de enviar, então eles importam principalmente quando algo está postando direto no endpoint ou quando um lote está malformado.
| Código | Mensagem | Gatilho |
|---|---|---|
invalid_import | A JSON object body is required. | O corpo da importação não é um objeto |
invalid_source | An import source of chatgpt or claude is required. | O campo de origem está ausente ou não é uma das duas origens aceitas |
empty_import | At least one conversation is required. | O array de conversas está ausente ou vazio |
too_many_conversations | This batch has {count} conversations, over the 25 per request limit. | Mais de 25 conversas em uma única requisição |
too_many_messages | Conversation {n} carries {count} messages, over the 400 per request limit. Send the rest as an append. | Mais de 400 mensagens em uma conversa dentro de uma única requisição |
invalid_import | Conversation {n} is not an object. | Uma entrada do array de conversas não é um objeto |
invalid_import | Conversation {n} has no messages array. | Uma conversa não carrega um array de mensagens |
invalid_import | Conversation {n} has an invalid append target. | O campo appendTo não é uma string nem nulo |
invalid_message | Conversation {n} message {m} is not an object. | Uma entrada de mensagem não é um objeto |
invalid_message | Conversation {n} message {m} needs a role of "user" or "assistant". | Uma mensagem tem um papel fora desses dois |
invalid_message | Conversation {n} message {m} has no text. | O conteúdo da mensagem não é uma string |
request_too_large | Request is too large. | O corpo JSON excede o limite de bytes da rota, seja pelo Content-Length declarado ou pelos bytes realmente lidos |
Os limites por trás dessas mensagens: 25 conversas por requisição, 400 mensagens por conversa por requisição, e um corpo de requisição de no máximo 2.000.000 bytes. O importador do site divide exatamente em 25 e 400 e mantém cada requisição abaixo de 1.200.000 bytes, deliberadamente abaixo do limite de 2.000.000 bytes para deixar espaço para o envelope da requisição. Uma conversa com mais de 400 mensagens não é rejeitada, é dividida: o restante é enviado como fatias anexadas ao chat que a primeira fatia criou.
Uma importação grande pausa por 20 segundos de cada vez
A importação de conversas tem limite de taxa de 20 requisições por minuto por usuário. Uma exportação grande vai atingir esse teto, e isso é esperado, não um problema.
Você não vai ver um erro quando isso acontecer. Uma importação que atinge HTTP 429 não é exibida: o cliente espera 20 segundos e tenta de novo, até 4 tentativas por lote. Então uma importação que parece travada por vinte segundos de cada vez em uma exportação grande está fazendo exatamente o que deveria. Deixe rodando.
Se os lotes ainda falharem depois dessas 4 tentativas, eles caem no resumo {count} could not be imported. Run the import again to pick them up., e rodar a importação uma segunda vez é a correção, não abrir um chamado com o suporte.
O que a importação descarta de propósito
Alguns conteúdos são descartados por design, e uma importação bem-sucedida ainda pode parecer incompleta em comparação com o original.
Para uma exportação do ChatGPT, apenas o ramo que estava na tela é importado. Respostas regeneradas e rascunhos descartados não são reproduzidos como mensagens. Conteúdo que não é transcrição também é ignorado: raciocínio oculto, código e saída de ferramentas de análise, rascunhos de navegação, blocos de instruções personalizadas e chamadas de função.
Para uma exportação do Claude, blocos de pensamento, chamadas de ferramenta e anexos são descartados. Só blocos de texto são importados.
Conversas no arquivo que não têm texto legível são contadas e reportadas como ignoradas em vez de descartadas silenciosamente, então uma contagem de itens ignorados é informação, não uma falha.
Uma conversa sem título utilizável vira Imported chat, e um título com mais de 120 caracteres é cortado. Uma mensagem importada mais longa que o limite de conteúdo é truncada em vez de rejeitada, então uma mensagem grande demais não custa o resto daquela conversa.
Por fim, os carimbos de data e hora: uma mensagem importada datada antes de 2015-01-01, ou datada no futuro, é descartada como carimbo de data e a linha volta para o horário da importação. Um chat que aparece com a data em que você rodou a importação, em vez da data original, foi atingido por essa regra.
Por que rodar a importação de novo é seguro
A chave de deduplicação da resposta rápida tem um fallback. Quando uma exportação não fornece um id de conversa estável, a chave vira um hash da própria transcrição, então uma nova execução ainda encontra essas conversas em vez de adicionar segundas cópias.
Uma consequência a saber: excluir um chat importado e depois importar a mesma exportação de novo traz o chat de volta em vez de reportar uma duplicata. Se você excluiu deliberadamente uma conversa importada, não rode aquela exportação de novo a menos que queira que ela volte.
- Escolha o conversations.json dentro da exportação, não o zip da exportação em si
- Uma exportação .json bruta é aceita até 300 MB, acima disso use o .zip
- Erros de sessão e de conexão significam entrar novamente ou reconectar, depois rodar de novo
- Uma contagem de itens que não puderam ser importados significa rodar a importação de novo
- Excluir um chat importado e reimportar traz ele de volta
- Uma importação grande pausando por 20 segundos de cada vez é limitação de taxa, não uma falha
- Ramos regenerados do ChatGPT, e blocos de pensamento e anexos do Claude, são descartados por design
Perguntas frequentes
O Whizi diz que minha exportação do ChatGPT não é uma exportação do ChatGPT. Por quê?
A mensagem é That file is not a ChatGPT or Claude export. Look for conversations.json inside the export zip. e ela dispara quando o parser não consegue identificar nenhum dos dois formatos no arquivo que você escolheu, ou quando um zip resulta em um conteúdo não reconhecido. O arquivo que o Whizi lê é o conversations.json, então descompacte a exportação e escolha esse arquivo diretamente. Se você escolheu o zip e recebeu There is no conversations.json inside that zip. Unzip it and pick the file directly. em vez disso, o zip não tem entrada correspondente nenhuma e a exportação precisa ser baixada de novo.
Minha importação parou na metade. Rodar de novo vai duplicar meus chats?
Não. Rodar de novo é a recuperação prevista para uma conexão perdida, uma sessão encerrada, ou um lote que falhou: a segunda execução leva aos mesmos chats uma única vez e retoma só o que falta. Não há nenhuma etapa de limpeza para fazer antes.
Por que só parte das minhas conversas foi importada?
Duas contagens diferentes podem aparecer, e só uma delas é uma falha. {count} could not be imported. Run the import again to pick them up. conta lotes que falharam em todas as tentativas, e rodar a importação de novo é a correção. Uma contagem de itens ignorados é a outra, e reporta conversas no arquivo que não têm texto legível, em vez de conversas que deram errado.
A importação está parada faz um tempo. Está quebrada?
Observe se ela volta a se mover, não quanto tempo já passou. Uma pausa de cerca de 20 segundos seguida de mais progresso é o limitador de taxa, porque o cliente espera 20 segundos e tenta de novo em vez de mostrar qualquer coisa. Uma importação que de fato terminou avisa, seja com uma das strings de erro desta página, seja com o resumo {count} could not be imported. Run the import again to pick them up.. Silêncio mais progresso periódico significa deixar rodando.
Meu arquivo de exportação do ChatGPT ou Claude é enviado para o Whizi?
Não. O arquivo de exportação em si nunca chega ao servidor. Seu navegador o lê, o analisa e posta apenas as conversas normalizadas, o que também explica por que todo erro de formato desta página acontece antes de qualquer envio. O detalhe completo sobre o tratamento de dados está em o que o Whizi faz com seus dados.