尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Satirical Boone, NC weather site with a real instrument underneath: ten forecasters graded daily on a public 100-point rubric, a self-grading traffic model, and a CC BY forecast API.
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗Boone, NC's #2 weather resource. Live at davessweater.com.
A satirical local-weather site that answers the important question — is it sweater weather? — and runs a "Right Ray / Wrong Ray" tracker scoring forecast accuracy (Ray's Weather vs. Open-Meteo vs. Apple Weather, plus a growing bench of free forecasters) against verified actuals on a 100-point scale. The bit: show with data that free services keep pace with — or beat — the paid one. Not affiliated with Ray's Weather; Ray's great, use his site for actual weather.
Note for contributors: There is additional background context (origin story, tone guidance, and copy direction) that is intentionally kept out of this public repo. If you're working locally and need it, ask the owner — it lives in a private/local context file, not in version control. Do not commit personal, political, third-party, or network/infrastructure details to this public repository.
Two layers:
data/*.json. Scoring lives in scripts/scoring.py (100-point scale, tolerance bands per
field, sweater-weather logic), orchestrated by scripts/compare.py.data/*.json at build time and renders
the site. Vercel runs next build on every push to main; there's no committed HTML.scripts/ # Python data pipeline (stdlib only; Playwright just for capture_rays)
scoring.py # the 100-point scoring engine
compare.py # orchestrates scoring + sweater-weather logic for a given date
capture_openmeteo.py # Open-Meteo forecast + historical actuals
capture_rays.py # Ray's Weather screenshot + scrape
capture_iphone_weather.py # Open-Meteo fallback for the Apple Weather slot
export_scores_csv.py # scores.json → CSV
fetch_substack.py # Substack RSS → cached JSON (blog)
prepare_public.mjs # prebuild: latest data/predictions screenshots → public/screenshots
# a growing bench of capture/compare scripts for road conditions, tourism demand,
# local events, and other Boone-area signals lives alongside the core set above
data/ # committed JSON the site reads (predictions, actuals, comparisons, scores, ...)
src/ # Next.js app — lib/ (data, feeds, sweater, scoreboard, dates, html), components/, app/ (routes)
public/ # served assets (logo, icons); screenshots/ generated at build
.github/workflows/ # daily_capture, daily_compare, upload_screenshot (+ a few narrower feature crons)
Site routes worth knowing: / (today's forecast + sweater verdict), /right-wrong-ray (the
comparison + scoreboard), /resources (articles, news, report cards, and videos — the blog), /reports
(franchise landing pages like the fireworks forecast), /methodology (how the scoring works), /shop.
npm install
npm run dev # http://localhost:3000
npm run build # prebuild (screenshots) + next build
npm test # vitest
npm run lint
# Data pipeline (Python stdlib; Playwright only for capture_rays)
python scripts/capture_openmeteo.py --forecast
python scripts/capture_openmeteo.py --actuals --date 2026-03-01
python scripts/compare.py --date 2026-03-01
python scripts/compare.py --sweater-only
# Python test suite
python3 -m pytest tests/
GitHub Actions run the data pipeline and commit data/ to main every morning; each push triggers a
Vercel next build:
daily_capture.yml) — Ray's screenshot + scrape, Open-Meteo forecast, iPhone
fallback, plus the other capture scripts (roads, tourism demand, events, etc.) → commits data/.daily_compare.yml) — runs after Daily Capture, fetches yesterday's actuals,
scores predictions, checks capture health, exports the scores CSV → commits data/.upload_screenshot.yml) — accepts an Apple Weather screenshot via
the GitHub API (iOS Shortcut) → commits data/predictions/.A few narrower feature workflows (e.g. traffic sampling) run on their own schedules alongside these
two. Exact cron times live in .github/workflows/*.yml, not here — they've moved before and will
again.
Hosted on Vercel (vercel.json: framework: nextjs, outputDirectory: .next). Every push to
main deploys. Domain DNS via Squarespace.
~$12/year for the domain. Hosting + Actions are free-tier.
Dave's Sweater is not affiliated with Ray's Weather. Ray's great — use his site for actual weather.