Package Exports
- @nanggo/social-preview
- @nanggo/social-preview/dist/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@nanggo/social-preview) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
📸 Social Preview Generator
Generate beautiful social media preview images from any URL
✨ Features
- 🔍 Automatic Metadata Extraction - Extracts Open Graph and Twitter Card metadata from any URL
- 🎨 Beautiful Templates - Modern, customizable templates for stunning previews
- 🖼️ Smart Image Processing - Automatically processes and optimizes images
- 🔄 Intelligent Fallbacks - Generates attractive previews even when metadata is missing
- ⚡ High Performance - Built with Sharp for blazing-fast image processing
- 🎯 TypeScript Support - Full TypeScript support with comprehensive type definitions
- 🌏 Korean Language Support - Optimized for Korean text rendering
📦 Installation
npm install @nanggo/social-preview
🚀 Quick Start
const { generatePreview } = require('@nanggo/social-preview');
// Simple usage
const imageBuffer = await generatePreview('https://github.com');
// Save to file
const fs = require('fs').promises;
await fs.writeFile('preview.jpg', imageBuffer);
📖 API
generatePreview(url, options?)
Generates a social preview image from a URL.
Parameters
url
(string): The URL to generate a preview foroptions
(PreviewOptions): Optional configuration
Returns
Promise<Buffer>
: Image buffer in JPEG format
Options
interface PreviewOptions {
template?: 'modern' | 'classic' | 'minimal'; // Template to use (default: 'modern')
width?: number; // Image width (default: 1200)
height?: number; // Image height (default: 630)
quality?: number; // JPEG quality 1-100 (default: 90)
fallback?: {
strategy?: 'auto' | 'custom' | 'generate'; // Fallback strategy
image?: string; // Custom fallback image path
text?: string; // Custom fallback text
};
colors?: {
background?: string; // Background color
text?: string; // Text color
accent?: string; // Accent color
};
}
💡 Examples
Basic Usage
const { generatePreview } = require('@nanggo/social-preview');
async function createPreview() {
const buffer = await generatePreview('https://www.npmjs.com');
await fs.writeFile('npm-preview.jpg', buffer);
}
Custom Styling
const buffer = await generatePreview('https://example.com', {
template: 'modern',
colors: {
background: '#2c3e50',
accent: '#3498db',
text: '#ffffff'
},
quality: 95
});
With Fallback
const buffer = await generatePreview('https://example.com', {
fallback: {
strategy: 'generate',
text: 'My Custom Preview'
}
});
🎨 Templates
Modern (Default)
- Clean, contemporary design
- Gradient overlays
- Centered text layout
- Perfect for tech and modern websites
Classic (Coming Soon)
- Traditional card layout
- Image on top, text below
- Great for news and blog sites
Minimal (Coming Soon)
- Simple, text-focused design
- Minimal decorations
- Ideal for documentation sites
🏗️ Architecture
social-preview-generator/
├── src/
│ ├── core/
│ │ ├── metadata-extractor.ts # URL metadata extraction
│ │ └── image-generator.ts # Image generation engine
│ ├── templates/
│ │ └── modern.ts # Template implementations
│ ├── types/
│ │ └── index.ts # TypeScript definitions
│ └── index.ts # Main entry point
🤝 Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
🙏 Acknowledgments
- Sharp - High performance image processing
- Open Graph Scraper - Metadata extraction
- Axios - HTTP client
🔗 Links
Made with ❤️ by nanggo