User demographics, top popular stories & news sources, community contributions, and real-time AI problem tracking.
Batched news_interactions. Click a row for recent raw events.
Cities with the most user activity in the last 24 hours.
Cities with high user interest but low article coverage.
Real-time view of workers, AI activity, system performance, and live logs.
Articles extracted, categorized, and geocoded in the last hour.
Paste any news website URL and we'll automatically find its RSS feed and add it.
Search the internet for RSS feeds and news websites using AI discovery.
User-submitted requests for news coverage in specific areas.
User-reported issues with articles.
Flags analyzed by AI with auto-fix actions.
User-submitted news source URLs for review. Approve to add to the source database.
Client-side JavaScript errors captured from user sessions. AI analyzes these periodically to identify patterns and suggest fixes.
Inspect browser environment, screen capabilities, session state, and API latency.
clearSearch() function was clearing event markers but keeping the existing pinMarkers (which contained only search results). It wasn't re-fetching viewport pins.clearSearch() to call pinMarkers.clear() before fetchPinsForViewport(), ensuring fresh viewport pins are loaded when search is cleared.
toggleCategoryFilter() stored keys as-is, and loadCategoryFilters() didn't validate against known legend keys.toggleCategoryFilter() to always store lowercased keys. Modified loadCategoryFilters() to validate against known LEGEND_GROUPS keys and reject unknown categories. Added CATEGORY_ROLLUPS constant to define parent-to-subcategory mappings.
ReferenceError: CATEGORY_ROLLUPS is not defined when trying to filter markers by category.CATEGORY_ROLLUPS constant was referenced in syncLayers() but never defined.CATEGORY_ROLLUPS constant at the top of app.js, mapping parent buckets (like "technology") to their subcategories (["ai", "cybersecurity", "gaming", "telecom"]).
.popup-inner at 600px and 480px breakpoints to constrain popup width to calc(100vw - 48px) and limit max-height. Also added mobile-specific styles for feedback dialog.
/api/pins/map for world/continent view but this route was missing from the API./api/pins/map endpoint to api/src/routes/pins.ts - a lightweight endpoint that returns only the fields needed for canvas rendering.
.feedback-dialog and related classes to the stylesheet, matching the visual language of the quick-flag dialog.
coverage-btn nor discover-btn had any event listeners attached in app.js. The buttons were defined in index.html but not wired up./api/locations/search), allowing users to fly to cities and discover news. The Discover button opens the Explore Region panel.
A log of service restarts, deployments, and configuration changes. Events are recorded automatically at startup and when configuration changes are made.
Visualizing global information on a live interactive map.
XYZO is building the most comprehensive, real-time map of global news ever created. We ingest, analyze, and geolocate news from thousands of sources across every continent.
Hi, I'm Asher, the author and creator of xyzo.org.
Feel free to contact me if you have any questions, or if you'd like to help or collaborate on our AI & geolocation algorithms, search code, or have specific UI recommendations!
We believe the world's information belongs on a map.
Every story, every city, every moment โ visualized in one radical new way.
XYZO is building the most comprehensive, real-time map of global news ever created. We scrape, analyze, and geolocate stories from thousands of sources across every continent, then plot them on an interactive map so you can see what's happening anywhere on Earth โ right now.
Our goal is to help people understand the world differently. Not through feeds or feeds or algorithmic feeds โ but through place. Through geography. Through seeing patterns emerge on a map that you simply cannot see any other way.
We're committed to free and open information. We only work with news sources that are 100% free and open โ no paywalls, no subscription gates. We read every robots.txt, respect every user agreement, and partner only with publishers who believe information should be accessible to everyone.
We work with OpenStreetMap, free open-source tools, and the world's leading AI projects. We believe the best tools are built together.
We harness artificial intelligence to extract, categorize, and geolocate news at scale. We're particularly interested in partnering with AI researchers and projects pushing the boundaries of machine understanding.
We only support publishers and sources that are truly free and open. No paywalls. No gatekeeping. Just news, on a map, for everyone.
We're not just another news aggregator. We're pioneering a totally new way to explore and understand Earth โ through unique data, innovative visualization, and radical transparency.
Here's something you won't find on most websites: you can shut us down.
If enough people file "significant issue" complaints through the help panel, XYZO automatically goes into maintenance mode. Think of it like Wikipedia's emergency bot shutdown โ if the community says something is very wrong, we listen.
How it works:
This is our promise: 90% of the world needs to be happy with XYZO, or it goes offline. We'd rather shut down and fix things than keep running when something is seriously wrong.
#WIKIPEDIA inspired us on this one. Thanks, Wikipedia! ๐
XYZO ingests news from every continent, in every language. We don't just read English โ we read Spanish from Venezuela, Bahasa from Indonesia, Hindi from India, Arabic from the Middle East, and dozens more.
Try it: Search for a topic you care about, then zoom into a different country. The news looks different when you see it through local eyes.
Some examples of what you'll find when you read beyond your home language:
The world is bigger than your newsfeed. XYZO helps you see it.
There are many ways to be part of XYZO:
We're actively seeking partnerships with:
Reach out โ we read every message and respond to everything we can.
XYZO is an independent project built with open-source tools and a deep love for free information. If XYZO has helped you understand the world a little better, consider buying us a coffee.
All donations go directly to server costs and infrastructure. Thank you for believing in free information on a map.
We love hearing from you โ questions, ideas, partnership proposals, or just to say hello.
We do not have a social media presence โ reach out directly via phone or email. We read everything and respond as quickly as we can.
All news articles and content displayed on XYZO belong to their respective publishers. We do not claim ownership of any content. We aggregate and geolocate publicly available RSS feeds and display them on a map for informational purposes. If you are a publisher and would like your content removed, please contact us and we will promptly comply.
We strictly honor every robots.txt directive. Our crawlers identify themselves with a clear User-Agent string and we never circumvent access restrictions. We respect all site terms of service and user agreements.
XYZO only indexes news sources that are genuinely free and accessible to everyone โ no paywalls, no subscription requirements, no registration gates. We do not intentionally index content behind paywalls or that violates publisher terms.
News geolocation is hard. We use AI to extract locations from articles, but mistakes happen. If you see a story in the wrong place, please use the "Fix location" button to report it โ your correction makes XYZO better for everyone.
XYZO stores anonymous usage analytics (viewport moves, searches, clicks) to improve the service. We do not track or store personally identifiable information. We use session cookies for map state and basic analytics only.