@nanggo/social-preview
Version:
Generate beautiful social media preview images from any URL
175 lines (130 loc) ⢠5.3 kB
Markdown
# šø Social Preview Generator
> Generate beautiful social media preview images from any URL
[](https://www.npmjs.com/package/@nanggo/social-preview)
[](https://opensource.org/licenses/MIT)
[](https://github.com/nanggo/social-preview-generator/actions/workflows/npm-publish.yml)
## ⨠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
```bash
npm install @nanggo/social-preview
```
## š Quick Start
```javascript
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 for
- `options` (PreviewOptions): Optional configuration
#### Returns
- `Promise<Buffer>`: Image buffer in JPEG format
### Options
```typescript
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)
cache?: boolean; // Cache generated results in memory (default: false)
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
```javascript
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
```javascript
const buffer = await generatePreview('https://example.com', {
template: 'modern',
colors: {
background: '#2c3e50',
accent: '#3498db',
text: '#ffffff'
},
quality: 95
});
```
### With Fallback
```javascript
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.
1. Fork the repository
2. Create your feature branch (`git checkout -b feature/amazing-feature`)
3. Commit your changes (`git commit -m 'Add some amazing feature'`)
4. Push to the branch (`git push origin feature/amazing-feature`)
5. Open a Pull Request
## š License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
## š Acknowledgments
- [Sharp](https://sharp.pixelplumbing.com/) - High performance image processing
- [Open Graph Scraper](https://github.com/jshemas/openGraphScraper) - Metadata extraction
- [Axios](https://axios-http.com/) - HTTP client
## š Links
- [npm Package](https://www.npmjs.com/package/@nanggo/social-preview)
- [GitHub Repository](https://github.com/nanggo/social-preview-generator)
- [Report Issues](https://github.com/nanggo/social-preview-generator/issues)
---
Made with ā¤ļø by [nanggo](https://github.com/nanggo)