尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Geographic map of oil and gas infrastructure.
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
Live: https://strategicenergymap.org · About & methods: https://strategicenergymap.org/about.html
A free, ad-free map of the world's oil and gas infrastructure — pipelines, fields, refineries, LNG terminals, ports, shipping routes and chokepoints — and what is happening to them now. A scheduled research agent keeps it current, with a source behind every claim.查看完整 README ↗Live: https://strategicenergymap.org · About & methods: https://strategicenergymap.org/about.html
A free, ad-free map of the world's oil and gas infrastructure — pipelines, fields, refineries, LNG terminals, ports, shipping routes and chokepoints — and what is happening to them now. A scheduled research agent keeps it current, with a source behind every claim.
?embed=1 (and optionally ®ion=europe|mideast|asia|americas) for a map-only view. The About page has a ready-made iframe snippet with a copy button (strategicenergymap.org/embed, which redirects to about.html#embed).No framework and no dependencies. The map is a static page that renders JSON; a small build script (scripts/build.mjs) also generates ~150 crawlable answer pages from the same data: one per chokepoint, major facility and pump-price series, plus hubs, an events archive, an RSS feed, sitemap.xml and robots.txt.
index.html, styles.css, app.js the map (Leaflet 1.9.4); renders everything from data/
about.html about & methods page, changelog
data/infrastructure.json facilities, pipelines, routes, chokepoints (stable kebab-case ids)
data/status.json facilities not operating normally
data/events.json dated, sourced event feed + situation summary
data/market.json benchmark prices
data/fuel.json pump prices (written by scripts/update_fuel.py)
data/scenarios.json what-if baselines, bypass capacity, exposure
data/changelog.json public changelog
scripts/update_fuel.py pulls EIA, EU Weekly Oil Bulletin, UK DESNZ and ECB FX (Python stdlib only)
scripts/validate.mjs schema, reference and sourcing checks for data/
agent/UPDATE_AGENT.md instructions for the daily update agent
agent/EDITOR.md instructions for the weekly editor agent
agent/BRIEF.md this week's approved brief (written by the editor, merged by a human)
scripts/metrics.mjs weekly growth metrics → metrics/<week-ending>.json
agent/SCHEMA.md data contract
Hosted on Vercel from main. Visits are counted with Vercel Web Analytics (no cookies).
A Claude Code cloud routine runs every morning and follows agent/UPDATE_AGENT.md. It:
scripts/validate.mjs, thenmain and opens a pull request for anything needing human review: new facilities, critical events, chokepoint status changes, corrections.Sourcing rule. Governments that are parties to the conflicts on the map (the US, Israel, Iran, the Houthis, Russia and Ukraine) are treated alike. Their statements count as fact only when they can be independently verified; otherwise they are attributed and marked unverified. Ship transits and flows through contested waters come only from independent trackers. If there's no independent figure, the map shows none. The validator enforces part of this automatically.
The agent also drafts short posts in data/social.json, checked by the validator (length, sourcing, no unverified
claims). A GitHub Action (.github/workflows/social.yml) posts them to X and Bluesky with repository secrets and
records what went out in data/social-log.json. Drafts tied to review items only post once a human merges them.
Set "enabled": false to pause everything. Weekly chart images are rendered from dist/social/*.html.
Every Monday a GitHub Action (.github/workflows/metrics.yml) collects last week's numbers into
metrics/<week-ending>.json: search queries and clicks (Google Search Console, Bing), followers and engagement per post
(Bluesky, X), pages, daily runs and pull requests waiting. Its read-only keys are repository secrets. Vercel visits are
copied by hand into metrics/vercel.json, because Vercel's analytics API isn't available for this project.
A second cloud routine then follows agent/EDITOR.md: it reads the metrics and the week's activity
and opens a "Brief: week of …" pull request with what worked, one to three priorities, at most two build assignments,
notes for the daily agent and the experiments under way. Nothing in it takes effect until a human merges it. The daily
agent then follows the brief's notes within its own rules.
fetch() doesn't work from file://, so serve the folder:
node scripts/build.mjs && python3 -m http.server 8765 -d dist
Then open http://localhost:8765. After editing anything in data/:
node scripts/validate.mjs
Refresh pump prices:
python3 scripts/update_fuel.py
og.png is rendered from tools/og-card.html (copied into dist/tools/ by the local build) with headless Chrome while the local server is serving dist/:
"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" --headless=new --user-data-dir="$(mktemp -d)" --hide-scrollbars --window-size=1200,630 --virtual-time-budget=12000 --screenshot="$PWD/og.png" http://localhost:8765/tools/og-card.html
Basemap © Esri, HERE, Garmin, © OpenStreetMap contributors. Ship transits: IMF PortWatch. Pump prices: US EIA, European Commission Weekly Oil Bulletin, UK DESNZ, ECB reference rates. Hormuz baselines: IEA (Kpler data). Every event and status links its own sources.
Found an error? Open an issue.
Built by Courtney Wilson.