disability-ai-collective — a disability culture publication (Jekyll site, GitHub Pages).
Articles are generated daily by automation/production_orchestrator.py via cron through the ops OpenClaw agent heartbeat.
Do NOT run the orchestrator manually unless explicitly asked. It commits and pushes to GitHub immediately — article goes live.
| Persona | Disability | Beat | |—|—|—| | Pixel Nova | Deaf | Visual systems, information architecture, space politics | | Siri Sage | Blind | Acoustic culture, sensory phenomenology, soundscape | | Maya Flux | Mobility (wheelchair, T6) | Urban infrastructure, economics of care, protest history | | Zen Circuit | Autistic/neurodivergent | Diagnosis politics, pattern recognition, sensory epistemology |
Each has a deep character profile embedded in the orchestrator. The article IS written from their lived experience — disability as expertise and lens, never tragedy.
Every article is a Jekyll post with exact frontmatter:
---
layout: post
title: "Title here"
date: YYYY-MM-DD
author: Pixel Nova # exact persona name
category: research # or: culture, technology, justice
excerpt: "One sentence."
image: /assets/images/SLUG-1.jpg
---
Frontmatter must use double quotes. Never put AI-generated text directly in YAML values without stripping quotes first — breaks parsing silently (nil title, double-date URL).
Image HTML blocks in the body use exact format:
<figure class="article-figure">
<img src="/assets/images/SLUG-N.jpg" alt="description" loading="lazy">
<figcaption>Caption here.</figcaption>
</figure>
This workspace IS the live repo. Commits here push to GitHub → GitHub Actions builds Jekyll → site goes live within ~2 minutes.
git status # check what changed
git log --oneline -5
git push origin main # ALWAYS push after any editorial commit
After any editorial change: always git push origin main — no push = site stays stale.
python3 automation/production_orchestrator.py --retract <slug>
Deletes Bluesky post (URI in _social/<slug>.json) + git rm + push.
_posts/ ← published articles (YYYY-MM-DD-slug.md)
assets/images/ ← article images
automation/ ← orchestrator, link pool crawler, image gen
_social/ ← Bluesky post URIs per article
automation/link_pool.db — don’t delete (curated link seeds + crawled pool)automation/disability_findings.db — don’t delete (topic source material).env in workspace root — secrets, never commit_posts/2026-03-14-the-open-office-was-designed-to-break-my-brain.md — do not delete or move (used as rewrite reference)rfind() missing argument in Bluesky hook word-wrap — was silently falling back to hard truncate_get_recent_dates_nudge() scans last 7 posts, blocks repeated “In [Month] [Year]” anchors_generate_card_excerpt() now generates tension-frame sentences (two things that shouldn’t both be true) via Haiku — NOT first-paragraph truncation_bsky_hook() now targets scene/evidence — most specific concrete detail, intentionally incomplete_SOCIAL_PROMPTS) now receive 1500 chars of body instead of 500card-click-<slug>)GoatCounter data after 11 days (35 homepage visits, ~15 article reads):
cta-latest-article (hero pull quote link): 0 clicks — hero not convertingcta-read-articles (primary CTA): 1 click