mycro-zine/README.md

141 lines
4.5 KiB
Markdown

# MycroZine
A toolkit for creating print-ready **mycro-zines** - 8-page mini folded zines that fit on a single 8.5" x 11" sheet.
## What is a MycroZine?
A mycro-zine is a tiny, foldable magazine made from a single sheet of paper. When folded correctly, it creates an 8-page booklet perfect for:
- Punk zines and manifestos
- Educational mini-guides
- Event programs
- DIY instructions
- Art projects
## Features
- **Single-page print layout**: All 8 pages arranged on one 8.5" x 11" sheet (2 cols x 4 rows)
- **High-resolution output**: 300 DPI for crisp printing
- **Prompt templates**: Ready-to-use prompts for AI content/image generation
- **Multiple styles**: punk-zine, minimal, collage, retro, academic
- **US Letter & A4 support**: Works with common paper sizes
## Installation
```bash
npm install
```
## Usage
### CLI - Create Print Layout
```bash
# Using example pages
npm run example
# Or specify your own 8 pages
node src/layout.mjs page1.png page2.png page3.png page4.png page5.png page6.png page7.png page8.png
# With custom output path
node src/layout.mjs page1.png ... page8.png --output my_zine_print.png
```
### Programmatic API
```javascript
import { createPrintLayout } from 'mycro-zine';
// Create print-ready layout from 8 page images
await createPrintLayout({
pages: [
'page1.png', 'page2.png', 'page3.png', 'page4.png',
'page5.png', 'page6.png', 'page7.png', 'page8.png'
],
outputPath: 'my_zine_print.png',
background: '#ffffff'
});
```
### Prompt Templates (for AI generation)
```javascript
import { getContentOutlinePrompt, getImagePrompt, STYLES, TONES } from 'mycro-zine/prompts';
// Generate content outline prompt
const outlinePrompt = getContentOutlinePrompt({
topic: 'The Undernet',
style: 'punk-zine',
tone: 'rebellious',
sourceContent: 'Reference text here...'
});
// Generate image prompt for a page
const imagePrompt = getImagePrompt({
pageNumber: 1,
zineTopic: 'The Undernet',
pageOutline: {
title: 'THE UNDERNET',
keyPoints: ['Own your data', 'Run local servers'],
hashtags: ['#DataSovereignty', '#Mycopunk'],
imagePrompt: 'Bold cover with mycelial network imagery...'
},
style: 'punk-zine'
});
```
## Print Layout
The output is a single PNG image arranged for traditional mini-zine folding:
```
┌──────────┬──────────┬──────────┬──────────┐
│ 1↺ │ 8↺ │ 7↺ │ 6↺ │ Top row (upside down)
│ (cover) │ (cta) │ │ │
├──────────┼──────────┼──────────┼──────────┤
│ 2 │ 3 │ 4 │ 5 │ Bottom row (right side up)
│ │ │ │ │
└──────────┴──────────┴──────────┴──────────┘
Paper: 11" x 8.5" landscape (US Letter rotated)
Panel size: 7cm x 10.8cm (~2.76" x 4.25")
Total: 3300 x 2550 pixels at 300 DPI
```
## Folding Instructions
After printing, fold your zine:
1. **Fold in half** along the long edge (hotdog fold) - brings top row to bottom
2. **Fold in half again** along the short edge
3. **Fold once more** to create a small booklet shape
4. **Unfold completely** and lay flat
5. **Cut the center slit** - cut along the middle crease between pages 3-6 and 4-5
6. **Refold and push** - fold hotdog style, then push the ends together so the cut opens into a booklet
7. **Flatten** - pages should now be in order 1→2→3→4→5→6→7→8
## Examples
See the `examples/undernet/` directory for a complete 8-page zine about The Undernet project.
## Styles
| Style | Description |
|-------|-------------|
| `punk-zine` | Xerox texture, high contrast B&W, DIY collage, hand-drawn typography |
| `minimal` | Clean lines, white space, modern sans-serif, subtle gradients |
| `collage` | Layered imagery, mixed media textures, vintage photographs |
| `retro` | 1970s aesthetic, earth tones, groovy typography, halftone patterns |
| `academic` | Diagram-heavy, annotated illustrations, infographic elements |
## Integration with Gemini MCP
This library is designed to work with the [Gemini MCP Server](https://github.com/jeffemmett/gemini-mcp) for AI-powered content and image generation:
1. Use `getContentOutlinePrompt()` with `gemini_generate` for zine planning
2. Use `getImagePrompt()` with `gemini_generate_image` for page creation
3. Use `createPrintLayout()` to assemble the final print-ready file
## License
MIT