Qué Mal Poema
A fully automated daily poetry platform.
Overview
Qué Mal Poema is a daily poetry publishing platform. Every day it ships one entry: an original poem of mine, a cited poem by another author, and a prose analysis. It has been running since December 2025 with 160+ entries published, every single day, without interruption.
It looks like a simple, clean website. Behind it is a complete publishing system, automated end to end, that I built alone. The goal was to focus 100% on writing and fully delegate publishing and site updates to automation.
The problem
I wanted to publish poetry daily to nurture my passion for writing and sharpen my creative and analytical writing. But daily consistency runs into friction: formatting, uploading files, updating indexes, deploying the site. If every post cost me time and attention, the project wouldn’t survive.
The answer wasn’t to write less — it was to remove the manual publishing work entirely.
The solution
The workflow I designed is the heart of the project: from iPad to live site, hands-off.
- I write in iA Writer on my iPad, in plain text.
- I run an iOS/iPadOS Shortcut. That’s the only thing I do.
- The Shortcut POSTs the text to a Google Apps Script web app, which parses it and writes it to the correct tab in Google Docs.
- A GitHub Action pulls the content via the Google Docs API (service-account auth), generates the source text files, and builds the metadata.
- OpenAI automatically generates keyword tags for each entry.
- The action commits, deploys the static site on GitHub Pages, and notifies me on Telegram that the entry is live.
Architecture
✍️ iA Writer (iPad)
│ plain text
▼
📲 iOS Shortcut ──POST──▶ ☁️ Apps Script (doPost)
│
▼
📄 Google Docs
│ Docs API · service account
▼
⚙️ GitHub Action ──▶ 🐍 Python ──▶ 🤖 OpenAI
│ parse · validate (keywords)
│ SHA-256 · merge │
│ ▼
│ 🌐 GitHub Pages
▼
🔔 Telegram: "published ✅" The only manual step is running the Shortcut. Everything else is automated.
Tech stack
| Layer | Technology |
|---|---|
| Authoring | iA Writer, iOS/iPadOS Shortcuts |
| Capture bridge | Google Apps Script (web app doPost), managed with clasp |
| Content | Google Docs API (service-account auth) |
| Processing | Python (parsing, validation, SHA-256 fingerprints, merge) |
| AI | OpenAI API (keyword generation) |
| CI/CD | GitHub Actions (6 workflows) |
| Notifications | Telegram Bot API |
| Frontend | Vanilla JavaScript, HTML, CSS (static) |
| Hosting | GitHub Pages |
Technical challenges solved
Poem typography rendering
Poems need precise indentation. I built an anchor system (|) that measures pixel positions via a canvas using the actually-rendered font, aligning verses to the exact pixel, plus right-aligned lines.
Edit detection
Each poem carries a SHA-256 fingerprint over normalized text, so I can detect when I edit something in Google Docs and re-publish only what changed.
Idempotency & reliability
I separated metadata (in archivo.json) from poem text, with a pending → merge flow and pre-validation, so automated publishing is safe and repeatable.
Secrets in CI
Service-account credentials are injected securely into the Actions (written via Python to avoid newline issues), never exposed in the repository.
Results
- 160+ entries published continuously since December 2025.
- Zero manual publishing work: writing and tapping a Shortcut is the whole process.
- A simple public-facing site hiding a full pipeline: API integrations, CI/CD automation, and orchestration across multiple services.
What this project demonstrates
I built a complete end-to-end system alone — from mobile capture to production deploy — integrating several APIs and services. But above all, it grew from a real, personal problem: I put technology in service of a creative practice, automating the boring parts to protect the part that matters — writing.