Skip to main content
Glama
test-real-claude-content.js4.08 kB
#!/usr/bin/env node /** * Test with the actual content from the user's report * This tests the real 164-line photosynthesis lesson */ import { ContentWidgetAnalyzer } from '../../src/tools/analyze-content-for-widgets.js'; import { readFileSync } from 'fs'; // Read the actual content that Claude Desktop created const realClaudeContent = readFileSync('/Users/ricardokawasaki/Desktop/euconquisto-composer-mcp-poc/tests/lessons/aula-fontossíntese-7-ano-v2.md', 'utf8'); const claudeContentStructure = { title: "Aula de Ciências: Fotossíntese - A Fábrica Verde das Plantas", subject: "Ciências", gradeLevel: "7º ano", content: realClaudeContent }; async function testRealClaudeContent() { console.log('🧪 Testing analyze_content_for_widgets with REAL Claude Desktop content (164 lines)'); console.log(`📄 Content length: ${realClaudeContent.length} characters`); try { const analyzer = new ContentWidgetAnalyzer(); const result = await analyzer.analyzeContent({ claudeContent: claudeContentStructure }); console.log(' ✓ 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 content preservation const preservationRatio = (result.debug?.contentLength || 0) / realClaudeContent.length; console.log(` 📈 Content preservation: ${Math.round(preservationRatio * 100)}% (${result.debug?.contentLength || 0}/${realClaudeContent.length} chars)`); // Check segments and their types const segments = result.data?.contentStructure?.segments || []; console.log(` 📋 Segments by type:`); const typeCount = {}; segments.forEach(segment => { typeCount[segment.type] = (typeCount[segment.type] || 0) + 1; }); Object.entries(typeCount).forEach(([type, count]) => { console.log(` ${type}: ${count} segments`); }); // Check for specific educational components const hasQuiz = segments.some(s => s.type === 'assessment'); const hasVocabulary = segments.some(s => s.type === 'vocabulary'); const hasExperiments = segments.some(s => s.content.toLowerCase().includes('experiment')); const hasConclusion = segments.some(s => s.content.toLowerCase().includes('conclusão')); console.log(` 🔍 Educational components detected:`); console.log(` Quiz/Assessment: ${hasQuiz ? '✓' : '✗'}`); console.log(` Vocabulary: ${hasVocabulary ? '✓' : '✗'}`); console.log(` Experiments: ${hasExperiments ? '✓' : '✗'}`); console.log(` Conclusion: ${hasConclusion ? '✓' : '✗'}`); // Check widget diversity const widgetTypes = result.data?.selectedWidgetTypes?.map(w => w.type) || []; const uniqueTypes = [...new Set(widgetTypes)]; console.log(` 🎯 Widget diversity: ${uniqueTypes.length} unique types`); console.log(` Types: ${uniqueTypes.join(', ')}`); // Compare with previous results if (uniqueTypes.length >= 4) { console.log(' 🎉 EXCELLENT: High widget diversity achieved!'); } else if (uniqueTypes.length >= 3) { console.log(' ✅ GOOD: Reasonable widget diversity'); } else { console.log(' ⚠️ NEEDS IMPROVEMENT: Limited widget diversity'); } if (preservationRatio >= 0.9) { console.log(' 🎉 EXCELLENT: High content preservation!'); } else if (preservationRatio >= 0.7) { console.log(' ✅ GOOD: Reasonable content preservation'); } else { console.log(' ⚠️ NEEDS IMPROVEMENT: Content loss detected'); } return result; } catch (error) { console.error(' ❌ Test failed with error:', error.message); return null; } } // Run test testRealClaudeContent().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