UNPKG

n8n-nodes-google-pagespeed

Version:

n8n community node for Google PageSpeed Insights API with comprehensive performance, accessibility, and SEO analysis

299 lines (233 loc) β€’ 12.2 kB
# Google PageSpeed Insights Node for n8n A comprehensive n8n community node for **Google PageSpeed Insights API**, providing detailed website performance, accessibility, SEO, and best practices analysis with professional-grade features and enterprise-ready architecture. ![Google PageSpeed Insights Logo](https://www.gstatic.com/pagespeed/insights/ui/logo/favicon_48.png) ## πŸš€ Features This node offers robust integration with the Google PageSpeed Insights API, allowing you to analyze website performance, accessibility, and SEO with advanced controls and professional-grade reliability. ### Core Capabilities - βœ… **Complete PageSpeed Insights API Integration** - Access all core API parameters and categories - πŸ“± **Multi-Strategy Analysis** - Analyze pages for Desktop, Mobile, or both simultaneously - πŸ“Š **All Categories Supported** - Get insights across Performance, Accessibility, Best Practices, and SEO - πŸ”„ **Intelligent Batch Processing** - Efficiently analyze multiple URLs with automatic rate limiting and progress tracking - 🌍 **Multi-language Support** - Localize formatted results in 12+ locales - πŸ“Έ **Screenshot Capture** - Optionally include full-page screenshots of analyzed URLs - πŸ›‘οΈ **Enterprise Error Handling** - Graceful failures with detailed error messages and retry logic ### Advanced Analysis Features - 🎯 **Flexible Output Formats** - Choose from complete data, scores only, core metrics, or summary views - πŸ“ˆ **Core Web Vitals Analysis** - Extract and analyze LCP, CLS, FCP, TTI, TBT, and Speed Index - πŸ” **Detailed Lighthouse Audits** - Access specific optimization recommendations and performance insights - πŸ“Š **Performance Comparison** - Compare URLs against each other or track performance changes over time - πŸ—ΊοΈ **Complete Sitemap Analysis** - Automatically discover and analyze all URLs from XML sitemaps - 🎨 **Advanced URL Filtering** - Filter sitemap URLs by patterns, content types, and URL structures ### Enterprise Features (New in v1.5.8) - πŸ—οΈ **Modular Architecture** - Completely redesigned with separated concerns for easy maintenance and extensibility - πŸ”§ **Enhanced Type Safety** - Full TypeScript implementation with comprehensive error handling - ⚑ **Optimized Performance** - Improved batch processing with intelligent concurrency control - πŸ“‹ **Comprehensive Logging** - Detailed progress tracking and debugging information - πŸ”„ **Advanced Retry Logic** - Exponential backoff with configurable retry attempts - 🧹 **Intelligent URL Normalization** - Robust URL cleaning and validation with fallback handling ## πŸ“¦ Installation ### Option 1: n8n Community Nodes (Recommended) The easiest way to install this node is directly from your n8n instance: 1. Open your n8n instance 2. Go to **Settings** β†’ **Community Nodes** 3. Click **Install a community node** 4. In the "npm package name" field, enter: `n8n-nodes-google-pagespeed` 5. Click **Install** ### Option 2: Manual Installation (npm) If you prefer manual installation or are running n8n in a custom environment: ```bash # Navigate to your n8n installation directory cd /path/to/your/n8n/installation # Install the package npm install n8n-nodes-google-pagespeed # Restart your n8n instance n8n start ``` ## πŸ”§ Setup ### 1. Get Google PageSpeed API Key 1. Go to the [Google Cloud Console](https://console.cloud.google.com/) 2. Create a new project or select an existing one 3. Enable the **PageSpeed Insights API** 4. Create credentials (API Key) 5. (Optional) Restrict the API key to PageSpeed Insights API for security ### 2. Configure Credentials in n8n 1. In your n8n workflow, add the **Google PageSpeed Insights** node 2. Click **Create New Credential** 3. Enter your Google API key 4. Test the connection to verify it works ## 🎯 Usage ### Operation Types #### 1. **Analyze Single URL** Perfect for analyzing individual pages with detailed insights. **Input:** - URL to analyze (supports various formats: `example.com`, `https://example.com`, etc.) - Strategy: Mobile, Desktop, or Both - Categories: Performance, Accessibility, Best Practices, SEO **Output:** - Comprehensive performance scores - Core Web Vitals metrics - Detailed Lighthouse audit results - Screenshots (optional) - Optimization recommendations #### 2. **Analyze Multiple URLs** Efficiently process multiple URLs in batch with intelligent rate limiting. **Features:** - Concurrent processing with respect to API limits - Progress tracking and reporting - Individual error handling per URL - Batch summary statistics - Automatic retry on transient failures #### 3. **Analyze Sitemap** (Advanced) Automatically discover and analyze all URLs from a website's XML sitemap. **Features:** - Automatic sitemap parsing and URL extraction - Advanced filtering options: - Include/exclude URL patterns - Content type filtering (pages vs posts) - Maximum URL limits for quota management - Nested sitemap support (sitemap index files) - Domain-based analysis and reporting #### 4. **Compare URLs** (New in v1.5.8) Compare performance between different URLs or track changes over time. **Comparison Types:** - **Two URLs**: Compare performance between different pages - **Before/After**: Track performance changes for the same URL - **Batch Comparison**: Compare multiple URLs against a baseline **Analysis Features:** - Score difference calculations - Metric improvement tracking - Significant change detection - Automated recommendations ### Output Formats Choose the level of detail that fits your workflow: - **Complete**: Full Lighthouse data including all audits and recommendations - **Scores Only**: Just the category scores (Performance, Accessibility, etc.) - **Core Metrics**: Scores plus Core Web Vitals - **Summary**: Scores, metrics, and key recommendations ## πŸ“Š Example Workflows ### Basic Website Analysis ``` Manual Trigger β†’ Google PageSpeed Insights β†’ Set Variables ``` ### Competitor Analysis ``` Manual Trigger β†’ Set (Competitor URLs) β†’ Google PageSpeed Insights (Multiple URLs) β†’ Compare Results ``` ### Automated Site Monitoring ``` Schedule Trigger β†’ Google PageSpeed Insights (Sitemap) β†’ Filter (Poor Performance) β†’ Send Alert Email ``` ### Performance Tracking ``` Schedule β†’ Google PageSpeed Insights β†’ Compare with Previous Results β†’ Store in Database β†’ Generate Report ``` ## βš™οΈ Configuration Options ### Analysis Settings - **Strategy**: `mobile` | `desktop` | `both` - **Categories**: Performance, Accessibility, Best Practices, SEO (select multiple) - **Locale**: Localize results in various languages - **Screenshots**: Include page screenshots in results - **Output Format**: Control the amount of data returned ### Advanced Settings - **Custom Timeout**: Override default API timeout (10-300 seconds) - **Retry Attempts**: Number of retry attempts on failure (0-5) - **Skip Content Validation**: Bypass URL content type checking - **Batch Size**: Control concurrent request limits for batch operations ### Sitemap Analysis Settings - **Include Patterns**: Only analyze URLs matching these patterns (comma-separated) - **Exclude Patterns**: Skip URLs matching these patterns - **Max URLs**: Limit the number of URLs to analyze (quota management) - **URL Type Filter**: `all` | `pages` | `posts` ## πŸ” Error Handling The node provides comprehensive error handling with user-friendly messages: - **Invalid URLs**: Automatic URL validation and normalization - **API Errors**: Detailed error messages with retry suggestions - **Rate Limiting**: Intelligent backoff and queue management - **Content Type Issues**: Validation that URLs return HTML content - **Network Issues**: Automatic retry with exponential backoff ## πŸ“ˆ Performance & Limits ### API Quotas - Google PageSpeed Insights API has daily quotas - The node automatically manages rate limiting - Use batch processing for multiple URLs to optimize quota usage - Consider the "Max URLs" setting for sitemap analysis ### Best Practices - Use "Mobile" strategy for modern web development focus - Select only needed categories to reduce API calls - Use "Core Metrics" output format for regular monitoring - Implement retry logic in your workflows for production use ## πŸ—οΈ Architecture (v1.5.8) This version features a completely redesigned modular architecture for enhanced maintainability: ### Project Structure ``` src/ β”œβ”€β”€ nodes/GooglePageSpeed/ # Main node implementation β”‚ β”œβ”€β”€ GooglePageSpeed.node.ts # Node definition and configuration β”‚ β”œβ”€β”€ config.ts # Constants and configuration β”‚ β”œβ”€β”€ interfaces.ts # TypeScript type definitions β”‚ β”œβ”€β”€ operations/ # Analysis operations β”‚ β”‚ β”œβ”€β”€ analyzeSingleUrl.ts # Single URL analysis β”‚ β”‚ β”œβ”€β”€ analyzeMultipleUrls.ts # Batch URL processing β”‚ β”‚ β”œβ”€β”€ analyzeSitemap.ts # Sitemap analysis β”‚ β”‚ └── compareUrls.ts # URL comparison features β”‚ β”œβ”€β”€ helpers/ # Utility helpers β”‚ β”‚ β”œβ”€β”€ responseFormatter.ts # API response formatting β”‚ β”‚ └── sitemapHelpers.ts # Sitemap processing β”‚ └── utils/ # Core utilities β”‚ β”œβ”€β”€ apiUtils.ts # API request handling β”‚ └── urlUtils.ts # URL processing and validation └── credentials/ # Credential definitions └── GooglePageSpeedApi.credentials.ts ``` ### Key Improvements in v1.5.8 - **Separated Concerns**: Each operation is in its own module for easier maintenance - **Enhanced Type Safety**: Complete TypeScript implementation with strict typing - **Improved Error Handling**: Consistent error handling across all operations - **Better Testing**: Modular structure enables comprehensive unit testing - **Easier Extension**: New features can be added without affecting existing code ## πŸ“ Version History - **v1.1.0** - Initial release with core Google PageSpeed Insights functionality - **v1.2.0** - Minor enhancements and bug fixes - **v1.3.0** - Introduced Sitemap Integration for automated website analysis - **v1.5.2** - Enhanced URL normalization and validation logic - **v1.5.8** - Enhanced batch processing and error handling - **v1.6.0** - **Major Architecture Update**: - Complete modular redesign for better maintainability - Enhanced URL comparison and performance tracking features - Improved batch processing with better progress tracking - Advanced error handling with detailed logging - Full TypeScript implementation with strict type checking - Optimized build process and package structure ## 🀝 Contributing We welcome contributions! The new modular architecture makes it easier than ever to contribute: ### Development Setup ```bash git clone https://github.com/joselhurtado/n8n-nodes-google-pagespeed.git cd n8n-nodes-google-pagespeed npm install npm run build ``` ### Project Guidelines - Follow the modular architecture pattern - Maintain TypeScript strict typing - Add comprehensive error handling - Include progress logging for user feedback - Test with various URL formats and edge cases ### Areas for Contribution - Additional output formats - Enhanced filtering options for sitemap analysis - Custom reporting templates - Integration with other performance monitoring tools - Accessibility audit enhancements ## πŸ“ž Support - **Issues**: [GitHub Issues](https://github.com/joselhurtado/n8n-nodes-google-pagespeed/issues) - **Discussions**: [GitHub Discussions](https://github.com/joselhurtado/n8n-nodes-google-pagespeed/discussions) - **Documentation**: [API Documentation](https://developers.google.com/speed/docs/insights/v5/get-started) ## πŸ“„ License MIT License - see [LICENSE](LICENSE) file for details. ## πŸ™ Acknowledgments - Google PageSpeed Insights API team for providing the excellent performance analysis service - n8n community for the robust automation platform - Contributors and users who have provided feedback and improvements --- **Built with ❀️ for the n8n communi