Skip to content

feat(content): Aina Albaida content agent + first draft article (DRAFT — review voice before publish)#97

Draft
miquelmatoses wants to merge 6 commits into
mainfrom
feat/aina-albaida-content-agent
Draft

feat(content): Aina Albaida content agent + first draft article (DRAFT — review voice before publish)#97
miquelmatoses wants to merge 6 commits into
mainfrom
feat/aina-albaida-content-agent

Conversation

@miquelmatoses

Copy link
Copy Markdown
Collaborator

⚠️ DRAFT — do NOT publish live. For Miquel's review of voice before anything ships or before a second article.

STEP 0 findings

  • Blog model: articles live in the prod blog_posts table (db/migrations/013_blog_posts.sql:4), JSONB title/description/content ×6 langs.
  • Byline — no schema change: author TEXT already exists (:12) and already renders (BlogArticlePage.jsx:555, JSON-LD :395). Aina's byline goes in author. The schema-change gate was not triggered.
  • Publishing path (gated, prod write): admin POST /blog (status defaults draft) or a content-insert migration. Not applied. Prerender is dynamic — once the row is published, prerender.mjs bakes /blog/<slug> × langs, no code change.
  • Agent location: repo has no .claude/agents or skills convention, and .claude/ is gitignored, so the durable spec lives at docs/agents/aina-albaida.md (copy/symlink into .claude/agents/ to run as a subagent).

What's in this PR

  1. docs/agents/aina-albaida.md — the durable Aina spec: disclosed AI agent; voice (colloquial, warm, short sentences, no jargon, no em dashes); 3-min casual read; method (live FB/IG/TikTok trend → one of the 12 animal roles → what it means for the team); mandatory CTA to First Quarter Cèrcol (/first-quarter); byline "Aina Albaida, AI agent specialised in psychological divulgation and trends"; English first.
  2. docs/blog-drafts/make-your-job-sound-illegal-the-owl.md — first draft article. Real live trend (TikTok "make your job sound illegal", June 2026) tied to the Owl role, with the AI byline and the First Quarter CTA. ~520 words, no em dashes.
  3. ci-docs.yml — lychee excludes docs/blog-drafts/* (article bodies use app-route links like /first-quarter, not files).

Publishing path for sign-off (NOT done)

On your OK: create the row via admin POST /blog with author = the Aina byline, status: 'draft' → review rendered → flip to published (or a content-insert migration). No schema change. Other languages later via the human-reviewed translation path.

Review asks

  • Aina's voice (is the register right?), the trend→Owl bridge, and the byline disclosure wording. STOP here before publishing or drafting a second article.

🤖 Generated with Claude Code

miquelmatoses and others added 6 commits June 17, 2026 11:21
Adds a disclosed AI content agent, Aina Albaida, as a durable version-controlled
spec at docs/agents/aina-albaida.md (.claude/ is gitignored, so the source of
truth lives in docs; copy/symlink into .claude/agents/ to run it as a Claude
Code subagent). She drafts short, casual blog articles that tie a real live
social trend to one Cèrcol animal role and route the reader to First Quarter
Cèrcol. Voice: colloquial, warm, short sentences, no jargon, no em dashes;
3-minute read; AI byline disclosed.

First draft (docs/blog-drafts/make-your-job-sound-illegal-the-owl.md): the live
TikTok 'make your job sound illegal' trend tied to the Owl role. English first.

DRAFT / not published. Byline uses the existing blog_posts.author field (no
schema change). lychee excludes docs/blog-drafts (article bodies use app-route
links, not files).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The Aina content-agent spec (docs/agents/) carries YAML frontmatter
that markdownlint parses as a setext heading (MD003), and blog drafts
(docs/blog-drafts/) carry root-relative in-app CTAs (e.g. /first-quarter)
that lychee cannot resolve on the local filesystem. Both are draft/spec
artifacts, not link-bearing repo docs, so exclude them from both gates,
mirroring the existing docs/seo/links-audit-* exclusion.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…icle

The first attempt was wrong on three counts, all fixed in the spec:
1. It hooked on a meme (universal, differentiates nobody) so the
   role-inference was invalid. The spec now makes the central rule
   explicit: the hook must be a preference people OPT INTO, where liking
   it plausibly signals a disposition. Memes, viral formats, challenges,
   audio trends and generic relatable content are banned, with a required
   'who is drawn / who is not' check before writing.
2. The voice read like a lecture. The spec now requires someone who is IN
   the trend, colloquial and a little cheeky, with a hooky opener, and an
   honest turn (a trend is a hint, not proof; the test is the real answer).
3. The CTA linked to a repo URL. The spec now mandates the real route,
   https://cercol.team/first-quarter.

New article replaces the Owl draft: silent book clubs (a real, currently
live trend, hundreds of new chapters this year) tied to the Octopus role.
The trend differentiates cleanly: people who want company without the
pressure to talk vs people who would hate it. That maps honestly to the
Octopus (the quiet thinker whose ideas pass through in silence), framed
as a playful hypothesis, not proven science.

Still a DRAFT, gated, not published.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Byline is now street-level and still AI-disclosed: 'the AI that reads the
trends and tells you what they say about how you move through a room'.
Applied in the spec and the Octopus article (with a varied in-article
sign-off line).

Spec gains an explicit anti-repetition rule: the five-beat logic is
required but the skeleton must not be reused. Vary the opening move, when
the role arrives, section shape, rhythm and length across articles.

Three new gated drafts, each a different live preference-trend mapped to a
different role (four distinct roles across the batch), each structurally
different:
- Run clubs -> Dolphin (warm social hub): opens on a scene, role named
  early, punchy, shortest (~395w), no 'who likes it' section.
- Analog paper planners -> Tortoise (quiet steady discipline): opens on a
  question, role withheld until the last third, slow and contemplative, no
  subheadings, longest of the three.
- 35mm film photography -> Fox (productive nonconformist): opens on a flat
  contrarian confession, role arrives mid, sharp and witty, one subheading.

Trends verified live (Strava 2025, Michaels 2026, film-market 2026). All
DRAFT, gated, not published. CTA in each: https://cercol.team/first-quarter.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…ing links

Repetition fix: the macro-structure already varied, but the recurring
beats reused near-identical wording across the four drafts. Reworded so
each is unique and retired the stock phrases: 'a trend can point at a
trait / cannot measure one', 'the whole point', 'it is a hint' + 'hunch',
'not a horoscope / fortune cookie', and the 'a team without X / a team
with one' structure (now in one article only). Spec gains an explicit
rule that these beats must never be phrased the same way twice.

Enrichment (no schema change; blog already supports it via cover_url and
the marked-rendered markdown body): each article gets a free-licence
Unsplash cover (clean images.unsplash.com URL, normalised at render;
photographer/page recorded in cover_credit for the reviewer) and one or
two casual deeper-reading links, varied per article so they do not all
point to the same place:
- Octopus: cover (Melanie Deziel); stat -> silentbook.club; internal ->
  /blog/introverts-in-extrovert-workplaces-what-research-says
- Dolphin: cover (Steven Lelham); stat -> Strava Year in Sport; internal -> /roles
- Tortoise: cover (Clay Banks); stat -> Michaels 2026 report; internal ->
  /blog/what-is-conscientiousness-the-most-consistent-predictor-of-job-performance
- Fox: cover (Brooke Balentine); stat -> film-market source; internal -> /sample

Spec updated: every future article ships with a cover image and one or two
deeper-reading links, not plain text. All DRAFT, gated, not published. No
em dashes. CTA unchanged: https://cercol.team/first-quarter.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant