Mesclar baralhos de flashcards
Junte dois baralhos de flashcards sem perguntas repetidas: um baralho com fotossíntese e mitose mais outro com mitose e meiose viram 3 cartões, e o primeiro cartão de mitose mantém a resposta. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Aplicativos de estudo, exportações de LMS e dumps CSV no estilo Anki costumam deixar você com dois baralhos sobrepostos que compartilham o mesmo enunciado em muitos cartões. Colá-los à mão convida duplicatas silenciosas que desperdiçam tempo de revisão e distorcem o agendamento de repetição espaçada. Esta ferramenta de mesclagem de baralhos de flashcards aceita dois baralhos como arrays de pares frente e verso, percorre o baralho A e depois o B e devolve uma única lista ordenada em que cada frente exata aparece só uma vez: a primeira ocorrência vence e mantém o verso original.
Como funcionam a mesclagem e a deduplicação só pela frente
Aqui um flashcard é um par simples: uma string front (o enunciado ou a pergunta) e uma string back (a resposta ou a definição). Para cada cartão pergunta se a string exata da frente já foi mantida; se não, o cartão é anexado com o verso inalterado e a frente é registrada como vista.
Exato significa igualdade caractere a caractere: espaços no início ou no fim, capitalização diferente ou pontuação diferente criam frentes distintas, de propósito, para que quase coincidências continuem visíveis à revisão humana em vez de colapsarem em silêncio. Quando a mesma frente reaparece depois —dentro do mesmo baralho ou no segundo— o cartão posterior é omitido por completo, inclusive com verso diferente.
As contagens da resposta informam quantos cartões cada entrada tinha, quantos sobreviveram e quantos foram removidos como frentes duplicadas, para que você registre o delta sem varrer os arrays de novo.
Casos de uso
Limpeza de exportações Anki e LMS
Una duas exportações de vocabulário ou quiz e elimine frentes duplicadas exatas antes de reimportar no software de repetição espaçada.
Reconciliação noturna de pacotes curriculares
Automatize mesclagens de pacotes de estudo de parceiros no ETL com contagens determinísticas e sem cobrança em erros de validação de baralho vazio.
Perguntas frequentes
O que acontece se algum dos baralhos estiver vazio?
Ambos os baralhos devem conter ao menos um cartão para que mesclagens vazias nunca sejam tratadas como sucesso e não sejam cobradas.
A detecção de duplicatas diferencia maiúsculas?
Sim. As frentes são comparadas com igualdade exata de string, de modo que capitalização ou espaçamento diferentes contam como cartão distinto e são mantidos.
Qual verso é mantido quando a mesma frente aparece duas vezes?
Cartões posteriores com essa frente são descartados por completo.
Duplicatas dentro do mesmo baralho também são removidas?
Sim. Qualquer cartão posterior cuja frente já foi mantida é ignorado, esteja a cópia anterior no primeiro baralho ou antes no segundo. As contagens mostram quantos foram removidos.
Qual baralho devo colocar primeiro?
O que tem a redação em que você confia, como o seu próprio baralho revisado, deixando a importação em massa para o segundo. A primeira ocorrência de cada frente vence, então o primeiro baralho decide qual resposta fica.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/edu/flashcard-deck-merge \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"deck_a":[{"front":"What is photosynthesis?","back":"Plants turning light into chemical energy."},{"front":"What is mitosis?","back":"Division into two identical cells."}],"deck_b":[{"front":"What is mitosis?","back":"Duplicate front: dropped, deck_a wins."},{"front":"What is meiosis?","back":"Division into four distinct gametes."}]}'const res = await fetch("https://api.kit.forhosting.com/edu/flashcard-deck-merge", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"deck_a": [
{
"front": "What is photosynthesis?",
"back": "Plants turning light into chemical energy."
},
{
"front": "What is mitosis?",
"back": "Division into two identical cells."
}
],
"deck_b": [
{
"front": "What is mitosis?",
"back": "Duplicate front: dropped, deck_a wins."
},
{
"front": "What is meiosis?",
"back": "Division into four distinct gametes."
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/edu/flashcard-deck-merge",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"deck_a": [
{
"front": "What is photosynthesis?",
"back": "Plants turning light into chemical energy."
},
{
"front": "What is mitosis?",
"back": "Division into two identical cells."
}
],
"deck_b": [
{
"front": "What is mitosis?",
"back": "Duplicate front: dropped, deck_a wins."
},
{
"front": "What is meiosis?",
"back": "Division into four distinct gametes."
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/edu/flashcard-deck-merge", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"deck_a":[{"front":"What is photosynthesis?","back":"Plants turning light into chemical energy."},{"front":"What is mitosis?","back":"Division into two identical cells."}],"deck_b":[{"front":"What is mitosis?","back":"Duplicate front: dropped, deck_a wins."},{"front":"What is meiosis?","back":"Division into four distinct gametes."}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"deck_a":[{"front":"What is photosynthesis?","back":"Plants turning light into chemical energy."},{"front":"What is mitosis?","back":"Division into two identical cells."}],"deck_b":[{"front":"What is mitosis?","back":"Duplicate front: dropped, deck_a wins."},{"front":"What is meiosis?","back":"Division into four distinct gametes."}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/edu/flashcard-deck-merge", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"deck_a": [
{
"front": "What is photosynthesis?",
"back": "Plants turning light into chemical energy."
},
{
"front": "What is mitosis?",
"back": "Division into two identical cells."
}
],
"deck_b": [
{
"front": "What is mitosis?",
"back": "Duplicate front: dropped, deck_a wins."
},
{
"front": "What is meiosis?",
"back": "Division into four distinct gametes."
}
]
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "edu.flashcard_deck_merge",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
Qualquer baralho vazio é rejeitado com invalid_input para que a automação nunca finja que uma mesclagem vazia teve sucesso.
Como funcionam a mesclagem e a deduplicação só pela frente
O mesclador concatena deck_a em ordem e depois deck_b, e monta o resultado com uma única passagem sobre essa sequência combinada. Essa regra da primeira ocorrência combina com a forma como a maioria das exportações de estudo já ordena a redação preferida: coloque o baralho autoritativo primeiro como deck_a e a importação em massa depois como deck_b. O algoritmo é puro e determinístico: entradas idênticas sempre produzem o mesmo JSON, sem sementes aleatórias, relógios nem serviços externos.
Contrato de entrada, forma da resposta e erros
Cada array deve conter ao menos um objeto com campos string front e back (lados numéricos ou booleanos são convertidos para texto decimal ou true/false; objetos aninhados são rejeitados). Envie por POST um corpo JSON com dois arrays obrigatórios, deck_a e deck_b. Arrays vazios, baralhos ausentes, valores que não são arrays e cartões sem ambos os lados falham com invalid_input nomeando o problema, e essas falhas não são cobradas. Em caso de sucesso o corpo inclui merged, a lista ordenada de cartões {front, back} sobreviventes; count, o comprimento de merged; deck_a_count e deck_b_count das entradas validadas; total_input como a soma; duplicates_removed como total_input menos count; e operation com valor flashcard_deck_merge para roteamento fácil em pipelines multi-ferramenta. Exemplo: deck_a com frentes photosynthesis e mitosis, e deck_b com um segundo mitosis mais meiosis, produz três cartões —photosynthesis, mitosis de deck_a e meiosis— porque a frente mitosis duplicada de deck_b é descartada e o verso mais novo é ignorado. Combine o resultado com seu próprio escritor CSV ou Anki se precisar de um arquivo em disco; este endpoint devolve apenas cartões estruturados e não emite pacotes binários nem anexos de mídia.
Onde mesclar baralhos de estudo compensa
Quem estuda idiomas e exporta dois baralhos Anki da mesma lista de vocabulário pode eliminar lemas duplicados exatos sem abrir uma interface de desktop. Como falhas de validação não consomem saldo, você pode sondar importações vazias com segurança durante o ETL. Professores que mantêm um baralho mestre de biologia e uma extensão compartilhada com a turma muitas vezes precisam de uma união limpa antes de publicar em um LMS: coloque o mestre como deck_a para que os versos preferidos permaneçam quando os alunos reformularam a mesma pergunta. Jobs de backend que reconciliam todas as noites pacotes curriculares de parceiros podem chamar a API ao preço base publicado de US$ 0,002 por item bem-sucedido, com custo de parse puro tier A e sem tokens de modelo.
Casos de integração
Baralho mestre do professor mais extensão da turma
Coloque o baralho curricular autoritativo em deck_a e um baralho contribuído pela turma em deck_b para que os versos preferidos vençam quando as frentes colidirem.
Perguntas técnicas
Como unir dois baralhos de flashcards sem frentes duplicadas?
Envie arrays não vazios deck_a e deck_b de cartões {front, back}. A API percorre deck_a e depois deck_b e mantém só a primeira frente exata, devolvendo merged e duplicates_removed.
Quanto custa a ferramenta de mesclagem de baralhos de flashcards?
A ferramenta no navegador é gratuita. Pedidos API usam saldo KIT pré-pago a US$ 0,002 por chamada bem-sucedida; entrada inválida não é cobrada.