blob: 303455ab2c4ee139e8f9baca4922db08ad31b6cc (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
# snonux — Static microblog generator
snonux is the static microblog engine behind [snonux.foo](https://snonux.foo). It processes source files from an input directory into a self-contained static site with paginated HTML pages, an Atom feed, and themed WebGL backgrounds.
## Quick start
```sh
go build -o snonux ./cmd/snonux
./snonux --input ./inbox --output ./dist
```
## Creating posts
Drop files into the input directory (`./inbox` by default). Each file becomes one post. Supported formats:
### Plain text (.txt)
```
inbox/
thoughts.txt
```
The text content is rendered as-is into a post.
### Markdown (.md)
```
inbox/
update.md
```
Standard Markdown is converted to HTML (GitHub Flavored Markdown supported). Raw HTML blocks are passed through.
### Markdown with embedded images
Reference a local image from your Markdown file using standard `` syntax. Place the image file in the same input directory:
```
inbox/
update.md
screenshot.png
```
Where `update.md` contains:
```markdown
Check out this screenshot!

Pretty neat, right?
```
The image file is automatically copied into the post's asset directory, and the `<img>` src is rewritten to the correct path. The image file is consumed together with the Markdown file and removed from the input directory after processing.
**Note:** The image filename in the Markdown must match the actual file in the inbox. Remote URLs (`http://`, `https://`) are left as-is and not downloaded.
### Images (.png, .jpg, .gif)
```
inbox/
photo.jpg
```
A standalone image file becomes its own post. Images wider than 1024px are downscaled and re-encoded as JPEG at 80% quality.
### Audio (.mp3)
```
inbox/
voice-note.mp3
```
An audio file becomes a post with an embedded HTML5 audio player.
### After processing
All source files are removed from the input directory once they have been successfully processed into the output directory.
## Command-line flags
```
--input DIR Input directory for new source files (default: ./inbox)
--output DIR Output directory for generated site (default: ./dist)
--base-url URL Base URL for Atom feed links (default: https://snonux.foo)
--theme NAME Visual theme, or "random" (default: random)
--sync Rsync output to pi0/pi1 after generation
--list-themes Print available theme names and exit
--version Print version and exit
```
## Themes
Each run can use a different visual theme. Use `--list-themes` to see all available themes, or `--theme random` (the default) to pick one at random.
## Output structure
```
dist/
index.html # Page 1 (newest posts)
page2.html # Page 2, etc.
atom.xml # Atom feed (last 42 entries)
favicon.ico
posts/
2026-04-16-120000/
post.json # Post metadata and rendered HTML
screenshot.png # Asset (if any)
...
```
## License
See [LICENSE](LICENSE).
|