A tool that turns our internal meeting notes from Wiki.js into publishable blog posts using Google Gemini, and uploads them back to the wiki automatically.
We document our meetings in Wiki.js. This pipeline takes those meeting notes, rewrites them into a readable blog post for external audiences, translates it, and publishes it — without any manual writing involved.
The pipeline has four steps that run in sequence. Each step produces a file that the next step builds on.
1. Fetch
Downloads a meeting note from the wiki by its path and saves the raw content locally as SOURCE.md. This is the source material Gemini will work from.
2. Write
Sends the meeting note to Gemini along with a style guide (INSTRUCTIONS.md). Gemini rewrites the content into a blog post — it does not invent anything, it only reshapes and editorialises what is already in the notes. The result is saved as BLOGPOST.md. The language of the post is configurable via the ORIGINAL_LANG environment variable.
3. Translate
Takes BLOGPOST.md and asks Gemini to translate it into the target language (configured via TRANSLATE_LANG). The result is saved as TRANSLATED_BLOGPOST.md.
4. Upload
Reads the translated blog post, extracts the title from the first heading, and publishes the page to the wiki under /blog/{title-in-kebab-case}. If the page already exists it gets updated; if not, it gets created with the blog tag.
.env file with your credentials and language preferencesINSTRUCTIONS.md file describing the desired tone, style, and structure of the blog postFetch a meeting note from the wiki by its path:
make fetch URL=/meetings/2026-02-12
Generate a blog post from the fetched meeting note:
make write
Translate the blog post into the target language:
make translate
Upload the translated post to the wiki:
make upload
Run the full pipeline in one go (write → translate → upload):
make all
make fetchalways needs to be run first and separately, since it requires aURLargument pointing to the meeting note.
| File | Contents |
|---|---|
SOURCE.md |
Raw meeting note downloaded from the wiki |
BLOGPOST.md |
Blog post rewritten by Gemini in the original language |
TRANSLATED_BLOGPOST.md |
Translated version, ready to publish |
# heading in TRANSLATED_BLOGPOST.md. It is automatically removed from the body to avoid appearing twice on the wiki page./blog/project-status-update.INSTRUCTIONS.md — edit that file to change how Gemini writes.