UNPKG

link-view

Version:

A Node.js package to generate link previews from URLs

108 lines (81 loc) 3.22 kB
# Link Preview A powerful Node.js package that generates rich link previews by extracting comprehensive metadata from any URL. Perfect for social media apps, messaging platforms, and content aggregators. ## ✨ Features - **🚀 High Performance** - Optimized for speed with intelligent caching - **🔍 Deep Extraction** - Pulls titles, descriptions, images, favicons, and more - **💪 Robust Handling** - Works reliably with e-commerce sites, blogs, and media platforms - **⚡ Async Support** - Modern Promise-based API - **🛡️ Error Resilience** - Graceful fallbacks and comprehensive error handling - **🧩 Easily Extensible** - Customize extraction rules for specific sites ## 📦 Installation ```bash npm install link-view ``` ## 🚀 Quick Start ```javascript const { generateLinkPreview } = require('link-view'); // Basic usage generateLinkPreview('https://www.example.com') .then(preview => console.log(preview)) .catch(error => console.error('Error:', error.message)); // With async/await async function getPreview() { try { const preview = await generateLinkPreview('https://www.example.com'); console.log(preview); } catch (error) { console.error('Error:', error.message); } } ``` ## 📋 Response Format The package returns a promise that resolves to an object with the following properties: ```javascript { url: 'https://example.com', // The canonical URL title: 'Example Domain', // Page title description: 'This domain is for illustrative...', // Page description image: 'https://example.com/image.jpg', // Primary image URL favicon: 'https://example.com/favicon.ico', // Favicon URL domain: 'example.com', // Domain name (without www) author: 'Example Author' // Content author (if available) ``` The package includes special handling for popular platforms: ```javascript // E-commerce sites generateLinkPreview('https://www.amazon.com/product/...') .then(preview => console.log(preview)); // News sites generateLinkPreview('https://www.nytimes.com/2023/...') .then(preview => console.log(preview)); ``` ## 🛠️ Examples ### Integration with Express.js ```javascript const express = require('express'); const { generateLinkPreview } = require('link-view'); const app = express(); app.use(express.json()); app.post('/api/preview', async (req, res) => { try { const { url } = req.body; if (!url) { return res.status(400).json({ error: 'URL is required' }); } const preview = await generateLinkPreview(url); res.json(preview); } catch (error) { res.status(500).json({ error: error.message }); } }); app.listen(3000, () => { console.log('Server running on port 3000'); }); ``` ## 📊 Performance The package is optimized for performance: - Intelligent caching reduces repeat requests - Resource filtering minimizes bandwidth usage - Parallel processing for faster extraction - Memory-efficient operations for large scale applications Made with ❤️ by [Shajmil VJ]