UNPKG

ai-seo

Version:

AI-native JSON-LD schema utility with automated URL-to-Schema generation, intelligent content analysis, caching, rate limiting, performance monitoring, and AI optimization (ChatGPT, Voice). Complete automation & scale features. Zero runtime dependencies.

92 lines (77 loc) • 3.08 kB
// CLI Command: generate-url // Generate schema from URL - v1.12.0 import { URLSchemaGenerator } from '../../src/url-generator.js'; const colorCodes = { blue: '\x1b[34m', gray: '\x1b[90m', red: '\x1b[31m', yellow: '\x1b[33m', dim: '\x1b[2m', green: '\x1b[32m', bold: '\x1b[1m', cyan: '\x1b[36m', reset: '\x1b[0m' }; function colorize(text, color) { return `${colorCodes[color]}${text}${colorCodes.reset}`; } const colors = { blue: (text) => colorize(text, 'blue'), gray: (text) => colorize(text, 'gray'), red: (text) => colorize(text, 'red'), yellow: (text) => colorize(text, 'yellow'), dim: (text) => colorize(text, 'dim'), green: (text) => colorize(text, 'green'), bold: (text) => colorize(text, 'bold'), cyan: (text) => colorize(text, 'cyan') }; export async function generateUrlCommand(url, options = {}) { console.log(colors.blue('🌐 URL Schema Generator - v1.12.0\n')); try { console.log(colors.gray(`Generating schema from: ${url}\n`)); const result = await URLSchemaGenerator.generateFromURL(url, { targetTypes: options.type?.split(','), includeRelated: options.related !== false, optimizeFor: options.optimize?.split(','), validateWithGoogle: options.validate || false }); if (!result.success) { console.log(colors.red('āŒ Failed to generate schema\n')); console.log(colors.yellow('Error:'), result.error); console.log(colors.dim('Suggestion:'), result.suggestion); return; } console.log(colors.green('āœ… Schema generated successfully\n')); console.log(colors.bold('Detected Type:'), result.detectedType); console.log(colors.bold('Confidence:'), `${(result.confidence * 100).toFixed(1)}%`); console.log(colors.bold('Schemas Generated:'), result.schemas.length); if (result.suggestions && result.suggestions.length > 0) { console.log(colors.yellow('\nšŸ’” Suggestions:')); result.suggestions.forEach(s => console.log(colors.dim(` • ${s}`))); } // Output to file if requested if (options.output) { const fs = await import('fs/promises'); await fs.writeFile( options.output, JSON.stringify(result, null, 2) ); console.log(colors.green(`\nšŸ“„ Saved to: ${options.output}`)); } else { // Display schemas console.log(colors.cyan('\nšŸ“¦ Generated Schema:\n')); console.log(JSON.stringify(result.schemas[0], null, 2)); if (result.metadata) { console.log(colors.cyan('\nšŸ“‹ Metadata:\n')); console.log(colors.dim(`Title: ${result.metadata.title}`)); console.log(colors.dim(`Description: ${result.metadata.description?.substring(0, 100)}...`)); console.log(colors.dim(`Images: ${result.metadata.images?.length || 0}`)); } } } catch (error) { console.log(colors.red('āŒ Error:'), error.message); if (options.debug) { console.log(colors.dim(error.stack)); } } }