Medium

Medium Posts

Analysis notebooks and articles for medium.com/@ben.g.ballard.

40 stories published ~43K views $85.44 lifetime earnings See STATS.md for full analytics.

Docs

Doc Purpose
STRATEGY.md Growth strategy — franchise model, publishing cadence, distribution plan
STATS.md Analytics dashboard — lifetime data, revenue by category, what works vs. doesn’t. Updated monthly.

Projects

Folder Topic Published Stories Earnings
cfb-data-analysis College football scoring (CFBD API) CFB Talent Trends, CFB Recap, Portal P1 & P2 $1.01
google-trends Keyword trends (pytrends) Using Google Trends API, Mastering Google Trends $9.23
maryland-car-crashes MD vehicle crashes + COVID Maryland Car Crash Trends, Maryland Car Crashes $0.08
whoop-health-data Whoop wearable health data — (unpublished)
zillow-home-values Zillow ZHVI forecasting — (unpublished)
oklahoma-football Oklahoma vs Notre Dame (R) — (unpublished)

Top earners not yet in repo (franchise opportunities):

Story Earnings Views Opportunity
Unlocking Sports Betting with Python $32.26 6,700 Sequel series + 2026 refresh
Analyzing NBA Data Using Python and APIs $13.45 14,100 Sequel / updated version
How to Analyze NBA Stats with the NBA API $12.47 3,800 Part of NBA franchise
Easy Live Sports Odds: A Guide to Google… $2.86 1,990 Betting franchise

Setup

  1. Clone the repo
  2. Install dependencies:
    pip install -r requirements.txt
    
  3. Create a .env file in the repo root with your API keys:
MEDIUM_TOKEN=your_medium_integration_token
CFBD_API_KEY=your_college_football_data_api_key
CHART_STUDIO_USERNAME=your_plotly_username
CHART_STUDIO_API_KEY=your_plotly_api_key

Get your Medium integration token at: Settings > Security and apps > Integration tokens

Publishing to Medium

# Publish as draft (recommended first step)
python publish.py cfb-data-analysis

# Publish with tags
python publish.py maryland-car-crashes --tags "data science,python,maryland"

# Publish as public (use with caution - cannot edit via API after)
python publish.py zillow-home-values --status public

Medium’s API cannot edit posts after creation. Always publish as draft first, review on Medium’s editor, then manually set to public.

Images in Articles

Medium auto-loads images from URLs in your markdown. For images generated by your notebooks, push to GitHub and reference them as raw URLs:

![Chart](https://raw.githubusercontent.com/ballard11/Medium/main/project-name/images/chart.png)

Starting a New Project

cp -r _template/ my-new-project/

Then do your analysis in analysis.ipynb, write the article in article.md, and publish.

Project Structure

Each project folder follows this layout:

project-name/
|-- <descriptive-name>.ipynb  # Jupyter notebook (e.g. odds-api-2026.ipynb)
|-- article.md                # Polished article for Medium
|-- README.md                 # Project description, status, and performance stats
|-- data/                     # Data files (CSVs, etc.) - optional
+-- images/                   # Generated charts/figures - optional