Skip to main content
Glama
test-structured-content-fix.js10.5 kB
#!/usr/bin/env node /** * Test structured content object parsing fix * This tests the exact format Claude Desktop sends based on the transcript */ import { ContentWidgetAnalyzer } from '../../src/tools/analyze-content-for-widgets.js'; // Based on the transcript data (lines 261-384) const structuredClaudeContent = { title: "A Reforma Protestante: Uma Revolução Religiosa no Século XVI", content: { timeline: [ { year: "1517", event: "Martinho Lutero publica as 95 Teses" }, { year: "1520", event: "Lutero queima a bula papal que o excomungava" }, { year: "1521", event: "Dieta de Worms - Lutero é declarado herege" }, { year: "1534", event: "Henrique VIII rompe com Roma e cria a Igreja Anglicana" }, { year: "1545-1563", event: "Concílio de Trento (Contrarreforma)" }, { year: "1555", event: "Paz de Augsburgo - príncipes alemães podem escolher a religião de seus territórios" }, { year: "1618-1648", event: "Guerra dos Trinta Anos" } ], objectives: [ "Compreender as causas da Reforma Protestante", "Conhecer as principais figuras do movimento", "Analisar as consequências para a Europa e o mundo", "Entender a importância da liberdade religiosa" ], vocabulary: [ { term: "Indulgência", definition: "Perdão dos pecados que a Igreja vendia em troca de dinheiro" }, { term: "Reforma", definition: "Movimento de renovação e mudança na Igreja" }, { term: "Protestante", definition: "Nome dado aos cristãos que 'protestaram' contra a Igreja Católica" }, { term: "Contrarreforma", definition: "Movimento de renovação da Igreja Católica em resposta à Reforma" }, { term: "Predestinação", definition: "Doutrina que afirma que Deus já escolheu quem será salvo" }, { term: "Clero", definition: "Conjunto de pessoas que trabalham na Igreja (padres, bispos, etc.)" }, { term: "Concílio", definition: "Assembleia de líderes religiosos para discutir questões da Igreja" }, { term: "Inquisição", definition: "Tribunal religioso que julgava e punia hereges" } ], introduction: "Imagine que você vive no século XVI e a Igreja Católica controla quase todos os aspectos da vida das pessoas. De repente, um monge alemão chamado Martinho Lutero desafia essa autoridade e muda o mundo para sempre. Essa é a história da Reforma Protestante!", mainSections: [ { title: "Contexto Histórico: A Europa no Século XVI", content: "No início do século XVI, a Igreja Católica era extremamente poderosa. O Papa não era apenas um líder religioso, mas também um governante político que controlava vastos territórios. A Igreja possuía muitas terras, cobrava impostos e vendia 'indulgências' - uma espécie de 'perdão' pelos pecados que as pessoas podiam comprar com dinheiro. Muitas pessoas estavam insatisfeitas com essa situação. A Igreja havia se tornado muito rica e alguns membros do clero viviam luxuosamente, enquanto o povo comum enfrentava dificuldades. Além disso, muitos cristãos queriam ler a Bíblia em sua própria língua, mas ela estava apenas em latim, que poucos sabiam ler." }, { title: "Martinho Lutero: O Monge que Mudou a História", content: "Martinho Lutero nasceu em 1483 na Alemanha. Era um monge agostiniano e professor de teologia. Em 1517, ele ficou revoltado com a venda de indulgências pelo monge João Tetzel, que prometia perdão dos pecados em troca de dinheiro. Em 31 de outubro de 1517, Lutero escreveu as '95 Teses' - uma lista de pontos questionando as práticas da Igreja Católica. Segundo a tradição, ele pregou essas teses na porta da Igreja do Castelo de Wittenberg. Graças à recém-inventada imprensa, suas ideias se espalharam rapidamente por toda a Europa." }, { title: "Outros Reformadores Importantes", content: "João Calvino (1509-1564): Reformador francês que desenvolveu o calvinismo em Genebra, enfatizando a predestinação - a ideia de que Deus já escolheu quem será salvo. Henrique VIII (1491-1547): Rei da Inglaterra que rompeu com Roma para criar a Igreja Anglicana, principalmente para poder se divorciar de Catarina de Aragão. Ulrich Zuínglio (1484-1531): Reformador suíço que liderou a reforma em Zurique, defendendo ideias semelhantes às de Lutero." }, { title: "A Contrarreforma: A Resposta Católica", content: "A Igreja Católica não ficou parada. Entre 1545 e 1563, realizou o Concílio de Trento, que: Reafirmou as doutrinas católicas, Criou o Index (lista de livros proibidos), Fortaleceu a Inquisição, Reformou o clero e eliminou vários abusos" }, { title: "Consequências da Reforma Protestante", content: "Religiosas: Divisão do cristianismo em várias denominações, Surgimento de igrejas nacionais, Desenvolvimento do conceito de tolerância religiosa. Políticas: Fortalecimento do poder dos reis nacionais, Guerras religiosas na Europa (como a Guerra dos Trinta Anos), Declínio do poder político do Papa. Sociais e Culturais: Aumento da alfabetização (para ler a Bíblia), Desenvolvimento da imprensa, Valorização do trabalho e da educação, Influência na formação do capitalismo. Econômicas: Confisco de bens da Igreja em países protestantes, Desenvolvimento de uma 'ética do trabalho' protestante, Mudanças nas práticas comerciais" } ], lutherPrinciples: [ { principle: "Sola Scriptura (Somente a Escritura)", explanation: "A Bíblia é a única fonte de autoridade religiosa" }, { principle: "Sola Fide (Somente a Fé)", explanation: "A salvação vem apenas pela fé, não por obras ou pagamentos" }, { principle: "Sacerdócio Universal", explanation: "Todos os cristãos podem se relacionar diretamente com Deus" }, { principle: "Tradução da Bíblia", explanation: "A Bíblia deve ser traduzida para as línguas locais" } ], reflectionQuestions: [ "Por que você acha que as ideias de Lutero se espalharam tão rapidamente?", "Como a invenção da imprensa ajudou a Reforma Protestante?", "Que semelhanças você vê entre a Reforma Protestante e os movimentos de mudança social de hoje?" ] }, subject: "História", duration: 35, gradeLevel: "7º ano" }; async function testStructuredContentFix() { console.log('🧪 Testing structured content object parsing fix'); console.log('📊 Input content structure:'); console.log(` - Timeline events: ${structuredClaudeContent.content.timeline.length}`); console.log(` - Objectives: ${structuredClaudeContent.content.objectives.length}`); console.log(` - Vocabulary terms: ${structuredClaudeContent.content.vocabulary.length}`); console.log(` - Main sections: ${structuredClaudeContent.content.mainSections.length}`); console.log(` - Luther principles: ${structuredClaudeContent.content.lutherPrinciples.length}`); console.log(` - Reflection questions: ${structuredClaudeContent.content.reflectionQuestions.length}`); try { const analyzer = new ContentWidgetAnalyzer(); const result = await analyzer.analyzeContent({ claudeContent: structuredClaudeContent }); console.log('\n✅ Analysis completed successfully'); console.log('📊 Result structure:', { success: result.success, contentLength: result.debug?.contentLength || 0, segmentsAnalyzed: result.debug?.segmentsAnalyzed || 0, widgetTypes: result.data?.selectedWidgetTypes?.map(w => w.type) || [], totalWidgets: result.data?.selectedWidgetTypes?.length || 0 }); // Check segments and their types const segments = result.data?.contentStructure?.segments || []; console.log('\n📋 Segments detected:'); segments.forEach((segment, i) => { console.log(` ${i+1}. "${segment.title}" (${segment.type}) - ${segment.content.length} chars`); }); // Check widget diversity const widgetTypes = result.data?.selectedWidgetTypes?.map(w => w.type) || []; const uniqueTypes = [...new Set(widgetTypes)]; console.log(`\n🎯 Widget diversity: ${uniqueTypes.length} unique types`); console.log(` Types: ${uniqueTypes.join(', ')}`); // Check for specific educational components const hasQuiz = segments.some(s => s.type === 'assessment'); const hasVocabulary = segments.some(s => s.type === 'vocabulary'); const hasTimeline = segments.some(s => s.type === 'list' && s.title?.includes('Tempo')); console.log('\n🔍 Educational components detected:'); console.log(` Assessment/Quiz: ${hasQuiz ? '✅' : '❌'}`); console.log(` Vocabulary: ${hasVocabulary ? '✅' : '❌'}`); console.log(` Timeline: ${hasTimeline ? '✅' : '❌'}`); // Compare with the previous problematic results const previousContentLength = 60; // from transcript const previousSegments = 1; // from transcript const previousWidgetTypes = 2; // from transcript console.log('\n📈 Improvement vs. Previous Results:'); console.log(` Content length: ${result.debug?.contentLength || 0} vs ${previousContentLength} (${Math.round(((result.debug?.contentLength || 0) / previousContentLength) * 100)}% improvement)`); console.log(` Segments: ${segments.length} vs ${previousSegments} (${segments.length - previousSegments} more segments)`); console.log(` Widget types: ${uniqueTypes.length} vs ${previousWidgetTypes} (${uniqueTypes.length - previousWidgetTypes} more types)`); if (result.debug?.contentLength > 1000 && uniqueTypes.length >= 4) { console.log('\n🎉 SUCCESS: Significant improvement achieved!'); } else { console.log('\n⚠️ Partial improvement - may need further refinement'); } return result; } catch (error) { console.error('\n❌ Test failed with error:', error.message); console.error('Stack:', error.stack); return null; } } // Run test testStructuredContentFix().catch(console.error);

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/rkm097git/euconquisto-composer-mcp-poc'

If you have feedback or need assistance with the MCP directory API, please join our Discord server