Money Article Workflow
Money Article Workflow
This document explains how to generate, write, and publish articles for the vibe-living/money category. It mirrors the moving article pipeline but targets r/personalfinance and personal finance topics.
The Pipeline at a Glance
- Run
generate_articles.pyto fetch 5 threads fromr/personalfinance - Script writes briefs to
article-briefs.txt - In Cursor chat, say "write the 5 articles from article-briefs.txt"
- Review and fact-check
- Publish
How to Run the Script
Open a terminal in vibe-living/money/ and run:
cd "C:\Users\jssan\OneDrive\Documents\CityVibeCheck\vibe-living\money"
python generate_articles.py
Options:
| Command | What it does |
|---|---|
python generate_articles.py |
Fetch 5 threads, auto-select top scored |
python generate_articles.py --count 3 |
Fetch and brief only 3 threads |
python generate_articles.py --keyword "emergency fund" |
Force a specific topic |
The script requires pip install requests if not already installed.
Deduplication
used-threads.json tracks every Reddit thread ID that has been used. The script loads this file before searching and updates it after selecting threads. Never delete this file. It prevents the same thread from being used twice.
Author Block
All money articles use Emilia Grey as the author.
author: "Emilia Grey"
author_bio: "Emilia Grey is a writer who helps people navigate the complexities of personal finance and relocation. With a practical approach and a knack for breaking down complex topics with story-telling, Emilia provides actionable advice for those looking to save money, invest wisely, and make informed decisions about their next move. In her free time, she's a fan fiction enthusiast, getting lost in the worlds of her favorite books and TV shows."
author_photo: "/vibe-living/images/authors/emilia-grey.webp"
author_title: "Personal Finance & Relocation"
Frontmatter Checklist
Every money article needs:
- [ ]
layout: article.njk - [ ]
title:— uses a fictional character's name or scenario - [ ]
excerpt:— 1-sentence hook - [ ]
description:— SEO-friendly, practical summary - [ ]
keywords:— comma-separated, specific - [ ]
category: "money" - [ ]
author: "Emilia Grey"with full author block - [ ]
featured_image: "/vibe-living/images/money/[slug].webp" - [ ]
image_caption:— short, descriptive - [ ]
date:— YYYY-MM-DD - [ ]
read_time: 5 - [ ]
tags:—moneyplus 2-4 relevant subtopics
Narrative Structure
Every article follows this structure:
- Opening hook (italicised paragraph) — fictional character in a relatable money moment
- H2: The Problem — financial situation, stakes, emotional weight
- H2: The Research / Discovery — character investigates, mirrors Reddit advice
- H2: [Solution or Method] — practical breakdown with sub-sections if needed
- Callout box (
> ### Title) — real numbers, checklist, or decision snapshot - H2: [Complication or Hidden Factor] — non-obvious thing that matters
- H2: [Result] — character's outcome
- Closing paragraph — broader lesson + CTA link
Callout Box Format
> ### The Budget That Actually Worked
> - Income: $3,400/month
> - Rent: $1,100
> - Fixed costs: $800
> - Savings target: $500/month
> - Discretionary: $1,000
Image Format

Place 1-2 images inside the article body. Images live at /vibe-living/images/money/.
CTA Links
Use one of these at the end of every article:
- Budget / cost angle:
[cost of living calculator](https://cityvibecheck.com/vibe-calculator) - City choosing angle:
[city matching tool](https://cityvibecheck.com)
External Links
Every article must contain 2-3 authoritative external links placed inline within the text, opening in a new tab.
Format:
<a href="https://www.consumerfinance.gov/about-us/blog/tips-save-money/" target="_blank" rel="noopener noreferrer">CFPB savings tips</a>
Rules:
- 2-3 links per article, no more
- Authoritative sources only
- Each link supports a specific factual claim in the article
- Inline only — not in a list at the bottom
- Always include
target="_blank" rel="noopener noreferrer"
Common link targets for money articles:
| Topic | Good external link |
|---|---|
| Budgeting / spending | consumerfinance.gov |
| Credit scores | annualcreditreport.com |
| IRS / taxes | irs.gov |
| Retirement / 401k | dol.gov/agencies/ebsa |
| Investing basics | investor.gov |
| Student loans | studentaid.gov |
| Wage / salary data | bls.gov/oes |
| Emergency fund guidance | consumerfinance.gov |
| Medical debt / billing | cms.gov |
| Personal finance concepts | investopedia.com |
Writing Rules (Non-Negotiable)
- No em dashes. Use a comma, a period, or restructure the sentence. Never use
--or—. - No preachy closings. Do not end with a moral lesson spelled out. Let the story carry it.
- No listicle openers. The article must begin with the narrative hook.
- No real Reddit usernames or identifying details. All names and locations must be fictionalized.
- Advice emerges from the story. Tips are discovered by the character, not front-loaded.
- Contractions are fine. The voice is warm and human, not formal.
- Length: 900 to 1,100 words.
read_time: 5in frontmatter. - Subheadings use sentence case.
Fact-Check Pass
Before saving any article, verify every specific claim:
| Claim type | How to verify |
|---|---|
| Interest rates (savings, loans, credit) | Federal Reserve or current bank rate sources |
| IRS limits (401k, IRA, HSA contribution caps) | irs.gov official publications |
| FICO score ranges | CFPB or official credit bureau documentation |
| Median income / wage data | BLS or Census QuickFacts |
| Student loan terms / forgiveness rules | studentaid.gov |
| Medical billing / surprise bill rules | CMS.gov or No Surprises Act official guidance |
| Savings rate statistics | Federal Reserve Survey of Consumer Finances |
If a claim cannot be verified with confidence, soften it to "typically" or "often," or attribute it to the character's experience.
Date Spreading
When generating a batch of articles all at once, spread dates across a realistic range (1-3 weeks apart). Future one-off runs can use the current date.
File Locations
| File | Purpose |
|---|---|
generate_articles.py |
Fetches r/personalfinance threads and generates briefs |
used-threads.json |
Deduplication log — never delete |
article-briefs.txt |
Temporary brief file for the current batch — overwritten each run |
*.md |
Published articles |