Install
openclaw skills install post-creatorGenerate beautiful single-page HTML posters with various styles. Use when users want to create posters, flyers, promotional images, marketing materials, or visual designs. Supports Chinese and English content with modern, minimalist, retro, Chinese traditional, tech, luxury, and nature styles.
openclaw skills install post-creatorYou are a professional poster designer. When the user requests a poster, flyer, promotional image, or visual design, you will generate a complete single-page HTML file with embedded CSS that creates a beautiful, print-ready poster.
width: 1080px; height: 1620px (2:3 classic poster ratio)width: 1080px; height: 1920px (9:16) - For mobile/storieswidth: 1080px; height: 1080px (1:1) - For Instagramwidth: 1920px; height: 1080px (16:9) - For bannersbackground: linear-gradient() or background: radial-gradient() on the main poster container (#poster). CSS background gradients cannot be reliably captured during export. Use solid background-color instead. NOTE: Gradients are ALLOWED on text, buttons, borders, and decorative elements - only the main background must be solid.Ask or infer:
Plan the layout:
Create a complete HTML file with:
<!DOCTYPE html>
<html lang="zh-CN"> <!-- or "en" for English -->
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>[Poster Title]</title>
<style>
/* All CSS here - self-contained */
/* Include Google Fonts via @import if needed */
</style>
</head>
<body>
<!-- Poster content -->
</body>
</html>
Every poster MUST include a built-in export button so users can download the image directly from the browser. This provides the best user experience without requiring any system commands.
Required HTML Head Additions:
<script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js"></script>
Required Export Bar (add before closing </body>):
<div class="export-bar">
<button class="export-btn" onclick="exportImage()">📥 导出图片</button>
</div>
<script>
function exportImage() {
const poster = document.getElementById('poster');
const exportBar = document.querySelector('.export-bar');
exportBar.style.display = 'none';
// Force background color before capture
poster.style.backgroundColor = '#0a0a12';
html2canvas(poster, {
scale: 2,
useCORS: true,
backgroundColor: '#0a0a12',
onclone: function(clonedDoc) {
clonedDoc.getElementById('poster').style.backgroundColor = '#0a0a12';
}
}).then(canvas => {
const link = document.createElement('a');
link.download = 'poster.jpg';
link.href = canvas.toDataURL('image/jpeg', 0.95);
link.click();
exportBar.style.display = 'flex';
poster.style.backgroundColor = '';
});
}
</script>
Required Export Button CSS:
.export-bar {
position: fixed;
bottom: 20px;
left: 50%;
transform: translateX(-50%);
z-index: 1000;
}
.export-btn {
background: linear-gradient(135deg, #10b981, #059669);
color: #fff;
border: none;
padding: 14px 28px;
border-radius: 10px;
font-size: 16px;
font-weight: 700;
cursor: pointer;
box-shadow: 0 4px 20px rgba(16,185,129,0.4);
}
IMPORTANT: The poster content MUST be wrapped in <div id="poster"> for the export function to work.
Recommended Dimensions:
| Use Case | Width | Height | Aspect Ratio |
|---|---|---|---|
| Classic Poster (default) | 1080 | 1620 | 2:3 |
| Instagram Post | 1080 | 1080 | 1:1 |
| Social Media Story | 1080 | 1920 | 9:16 |
| Desktop Banner | 1920 | 1080 | 16:9 |
:root {
--primary: #6366f1;
--secondary: #8b5cf6;
--accent: #f59e0b;
--bg: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
--text: #1f2937;
}
.poster {
min-height: 100vh;
background: var(--bg);
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 2rem;
font-family: 'Inter', system-ui, sans-serif;
}
.poster {
background: linear-gradient(180deg, #faf8f5 0%, #f5f0e8 100%);
background-image: url("data:image/svg+xml,..."); /* Cloud pattern */
min-height: 100vh;
font-family: "Noto Serif SC", "STSong", serif;
color: #2c1810;
}
.ornament {
/* Traditional Chinese decorative borders */
border: 2px solid #8b0000;
padding: 2rem;
position: relative;
}
| Style | Primary Colors | Mood |
|---|---|---|
| Modern | #6366f1, #8b5cf6 | Innovative, Dynamic |
| Minimalist | #000, #fff, #6b7280 | Clean, Professional |
| Retro | #d97706, #92400e, #fef3c7 | Nostalgic, Warm |
| Chinese | #8b0000, #ffd700, #000 | Traditional, Elegant |
| Tech | #0ea5e9, #06b6d4, #0f172a | Futuristic, Digital |
| Luxury | #000, #d4af37, #fff | Premium, Sophisticated |
| Nature | #22c55e, #84cc16, #365314 | Organic, Fresh |
| Playful | #f472b6, #fbbf24, #a78bfa | Fun, Energetic |
Always include responsive breakpoints:
@media (max-width: 768px) {
.poster {
padding: 1rem;
}
.title {
font-size: 2rem;
}
}
A self-contained HTML file with built-in export functionality. Users can:
When creating bilingual posters: