Coveringrm -rFFL
Week 7

Setup

Connect the league, then print the paper

The official Yahoo Fantasy developer app can take weeks. Until it shows up, The UnAthletic reads the same league feed the Yahoo website uses. You do not give it your password.

1. Copy your league id

Open the league and look at the URL. The number after /f1/ is the id. Several leagues can be comma-separated.

https://football.fantasysports.yahoo.com/f1/1234567

2. Copy a browser cookie if the league is private

Log in, open the league, then press F12. Open Network, refresh, and click any request to fantasysports.yahoo.com. Copy the request header named Cookie. Paste it into .env as YAHOO_COOKIE.

That cookie is a logged-in session. Treat it like a password, keep it out of git, and grab a new one when a sync says Yahoo refused the league. Public leagues can skip this step.

3. Sync

copy .env.example .env
npm run sync

On PowerShell, copy .env.example .env works. The snapshot lands in data/leagues and the site reads it on refresh.

4. Free writing, if you want it

With no key, npm run newsroom still publishes a full edition. The desk writers use the real standings, scores, and transactions, in their own voices.

For looser columns, Groq and Google Gemini both have free API keys and do not ask for a credit card on the free plan. Limits change, so check the signup page. One column an hour stays on the free plan. If the model is out of tokens for a minute, that hour is skipped and the next hour tries again.

Groq: console.groq.com/keys. Put the key in GROQ_API_KEY.

Gemini: aistudio.google.com/apikey. Put the key in GEMINI_API_KEY. If both are set, Groq goes first.

5. The hosted paper updates itself

On the live site, one new column files each hour from 7:00am to 10:00pm ET. Quiet overnight hours stay quiet. Locally, npm run desk does the same job, and it also stays quiet outside those hours.

On Thursdays, Sundays, and Mondays, the scoreboard refreshes about once a minute while games are usually on: Sunday morning through the late window, and Thursday and Monday night. That refresh is read straight from Yahoo while the page is open. It does not save a new copy of the league every minute.

When Yahoo approves the official app, the sync can be swapped for OAuth without changing the site. The pages already read a saved league file, not a live password.