{
  "source_file": "0930",
  "source_platform": "Dev.to",
  "author": "Nishikanta Ray",
  "title_listed": "Building a Smart Commute Assistant with Bright Data, n8n, and Weather & Google Maps APIs",
  "keywords": "",
  "domain": "机器学习",
  "content_type": "深度技术解析",
  "is_paid_flag": "否",
  "url": "https://dev.to/nishikantaray/building-a-smart-commute-assistant-with-bright-data-n8n-and-weather-google-maps-apis-143o",
  "publish_date": "2025-08-30",
  "corpus_stage": "",
  "notes": "",
  "id": "b5924d7f0318",
  "collected_at": "2026-10-02T14:05:11",
  "title": "Building a Smart Commute Assistant with Bright Data, n8n, and Weather & Google Maps APIs - DEV Community",
  "body_markdown": "This is a submission for the\nAI Agents Challenge powered by n8n and Bright Data\nSmart Commute Assistant: Technical Implementation & Journey\nA comprehensive breakdown of building an intelligent traffic solution using Bright Data, n8n, and multi-source data integration\nTechnical Implementation\nCore Components:\nData Collection Layer\n: Bright Data web scraping + Weather/Maps APIs\nProcessing Engine\n: n8n workflow automation with custom decision logic\nIntelligence Layer\n: AI-powered route scoring and emergency detection\nCommunication Layer\n: Multi-channel notifications (Slack/Telegram)\nAgent Configuration\nSystem Instructions\nThe workflow operates on a\nmulti-source intelligence principle\n:\nGather\n: Collect data from 6+ different sources simultaneously\nAnalyze\n: Apply weighted scoring algorithms to raw data\nSynthesize\n: Combine quantitative (route times) with qualitative (news, social) data\nDecide\n: Generate confidence-scored recommendations\nAct\n: Deliver actionable insights with interactive elements\nModel Choice: Event-Driven Architecture\nTrigger\n: Cron-based scheduling (4x daily during peak hours)\nParallel Processing\n: All data sources queried simultaneously for speed\nFault Tolerance\n:\ncontinueOnFail: true\non all external API calls\nData Flow\n: Structured JSON passing between nodes with error handling\nMemory & State Management\n// Workflow maintains state across execution\nconst\ndataQuality\n=\n{\nweather\n:\nweatherCurrent\n.\nmain\n?\n100\n:\n50\n,\nnews\n:\nnewsData\n.\narticles\n?.\nlength\n||\n0\n,\nsocial\n:\nsocialData\n.\ntweets\n?.\nlength\n||\n0\n,\nofficial\n:\nofficialTraffic\n.\nupdates\n?.\nlength\n||\n0\n,\nroutes\n:\nallRoutes\n.\nlength\n};\n// Confidence calculation based on data availability\nconst\nconfidenceScore\n=\nMath\n.\nmin\n(\n100\n,\n(\ndataQuality\n.\nweather\n+\nMath\n.\nmin\n(\ndataQuality\n.\nnews\n*\n10\n,\n50\n)\n+\nMath\n.\nmin\n(\ndataQuality\n.\nsocial\n*\n2\n,\n30\n)\n+\nMath\n.\nmin\n(\ndataQuality\n.\nofficial\n*\n15\n,\n50\n)\n+\nMath\n.\nmin\n(\ndataQuality\n.\nroutes\n*\n20\n,\n40\n))\n/\n2.7\n);\nEnter fullscreen mode\nExit fullscreen mode\nTools Integration\nn8n\n: Primary orchestration engine with custom Function nodes\nHTTP Request nodes\n: API integrations with retry logic\nCron Trigger\n: Intelligent scheduling for peak commute times\nCredential Management\n: Secure API key storage and rotation\nError Handling\n: Comprehensive fallback and notification systems\nBright Data Verified Node\nStrategic Implementation\nThe Bright Data integration serves as the\nintelligence multiplier\nfor the Smart Commute Assistant, providing real-time insights that traditional APIs cannot capture.\n1. News Intelligence Node\n// Configuration for Traffic News Scraping\n{\n\"\nurl\n\"\n:\n\"\nhttps://brightdata-endpoint.com/news-scraper\n\"\n,\n\"\nmethod\n\"\n:\n\"\nPOST\n\"\n,\n\"\nbodyParameters\n\"\n:\n{\n\"\nsites\n\"\n:\n[\n\"\ntimesofindia.indiatimes.com\n\"\n,\n\"\ndeccanherald.com\n\"\n,\n\"\nthehindu.com\n\"\n,\n\"\nbangaloremirror.indiatimes.com\n\"\n],\n\"\nkeywords\n\"\n:\n[\n\"\nbangalore traffic\n\"\n,\n\"\nbengaluru traffic\n\"\n,\n\"\nroad closure\n\"\n,\n\"\naccident\n\"\n,\n\"\nprotest\n\"\n,\n\"\nbandh\n\"\n,\n\"\nmetro\n\"\n,\n\"\nBMTC\n\"\n],\n\"\ntime_range\n\"\n:\n\"\n24h\n\"\n}\n}\nEnter fullscreen mode\nExit fullscreen mode\nWhy this works\n: News sites often report traffic incidents, road closures, and planned disruptions 2-6 hours before they impact Google Maps traffic data. This gives users a significant early warning advantage.\n2. Social Media Intelligence Node\n// Twitter/X Traffic Monitoring\n{\n\"\nurl\n\"\n:\n\"\nhttps://brightdata-endpoint.com/social-scraper\n\"\n,\n\"\nmethod\n\"\n:\n\"\nPOST\n\"\n,\n\"\nbodyParameters\n\"\n:\n{\n\"\nplatform\n\"\n:\n\"\ntwitter\n\"\n,\n\"\nhashtags\n\"\n:\n[\n\"\n#BengaluruTraffic\n\"\n,\n\"\n#BangaloreTraffic\n\"\n,\n\"\n#BlrTraffic\n\"\n,\n\"\n#BengaluruRains\n\"\n],\n\"\nkeywords\n\"\n:\n[\n\"\nOuter Ring Road\n\"\n,\n\"\nORR\n\"\n,\n\"\nElectronic City\n\"\n,\n\"\nWhitefield\n\"\n,\n\"\nKoramangala\n\"\n,\n\"\nIndiranagar\n\"\n,\n\"\nHSR Layout\n\"\n,\n\"\naccident\n\"\n,\n\"\njam\n\"\n,\n\"\nwaterlogging\n\"\n],\n\"\ntime_range\n\"\n:\n\"\n3h\n\"\n,\n\"\nlimit\n\"\n:\n50\n}\n}\nEnter fullscreen mode\nExit fullscreen mode\nReal-world impact\n: Social media scraping has consistently provided 30-45 minute early warnings for:\nAccident reports from commuters\nWaterlogging updates during rain\nVIP movement notifications\nConstruction work alerts\n3. Official Traffic Data Node\n// Government & Authority Sources\n{\n\"\nurl\n\"\n:\n\"\nhttps://brightdata-endpoint.com/traffic-monitor\n\"\n,\n\"\nmethod\n\"\n:\n\"\nPOST\n\"\n,\n\"\nbodyParameters\n\"\n:\n{\n\"\nsites\n\"\n:\n[\n\"\ntrafficpolicebangalore.gov.in\n\"\n,\n\"\nbangaloretrafficpolice.gov.in\n\"\n,\n\"\nkarnataka.gov.in\n\"\n],\n\"\ndata_points\n\"\n:\n[\n\"\nlive_traffic_updates\n\"\n,\n\"\nroad_closures\n\"\n,\n\"\ndiversions\n\"\n,\n\"\nincidents\n\"\n]\n}\n}\nEnter fullscreen mode\nExit fullscreen mode\nAuthoritative advantage\n: Official sources provide the highest-weight data in our scoring algorithm, as they represent verified, actionable information directly from traffic authorities.\nBright Data Optimization Strategies\n1. Intelligent Keyword Targeting\nLocation-specific\n: Focus on Bangalore's unique traffic terminology\nEvent-driven\n: Include seasonal keywords (monsoon, festival dates)\nSeverity-weighted\n: Prioritize high-impact terms (\"bandh\", \"closure\", \"accident\")\n2. Time-Window Optimization\nNews\n: 24-hour window for broader incident awareness\nSocial Media\n: 3-hour window for immediate, real-time updates\nOfficial\n: Real-time polling for authoritative data\n3. Data Quality Filtering\n// Smart content filtering within n8n\nconst\nrelevantNews\n=\nnewsData\n.\narticles\n.\nfilter\n(\narticle\n=>\n{\nconst\ntitle\n=\narticle\n.\ntitle\n.\ntoLowerCase\n();\nconst\nisTrafficRelated\n=\ntrafficKeywords\n.\nsome\n(\nkeyword\n=>\ntitle\n.\nincludes\n(\nkeyword\n.\ntoLowerCase\n())\n);\nconst\nisBangalore\n=\ntitle\n.\nincludes\n(\n'\nbangalore\n'\n)\n||\ntitle\n.\nincludes\n(\n'\nbengaluru\n'\n);\nconst\nisRecent\n=\n(\nnew\nDate\n()\n-\nnew\nDate\n(\narticle\n.\npublishedAt\n))\n<\n24\n*\n60\n*\n60\n*\n1000\n;\nreturn\nisTrafficRelated\n&&\nisBangalore\n&&\nisRecent\n;\n});\nEnter fullscreen mode\nExit fullscreen mode\n4. Cost-Efficient Usage\nTargeted scraping\n: Only relevant sites and keywords\nTime-based triggers\n: 4x daily during commute hours only\nData consolidation\n: Single scraping call covers multiple route analysis\nMonthly Usage Breakdown:\nNews scraping: ~30 calls/month\nSocial media: ~30 calls/month\nOfficial data: ~30 calls/month\nTotal\n: ~90 calls/month (well within 1,000 free tier limit)\nJourney\nInitial Challenge: The Information Gap Problem\nThe Problem\n: Existing navigation apps (Google Maps, Waze) provide route optimization based on historical and current traffic data, but they miss crucial early indicators:\nNews announcements\nof planned road work or protests\nSocial media reports\nof accidents not yet visible to traffic systems\nWeather-related impacts\nthat affect specific Bangalore routes differently\nOfficial government updates\nabout diversions or closures\nThe Insight\n: The best commute decisions require combining\nquantitative data\n(route times, weather) with\nqualitative intelligence\n(news, social sentiment, official announcements).\nDevelopment Process & Challenges\nPhase 1: Data Source Research\nChallenge\n: Identifying reliable, real-time data sources for Bangalore traffic.\nSolution Discovery\n:\nAnalyzed which local news sites consistently report traffic incidents first\nIdentified Twitter hashtags and accounts with highest accuracy for traffic updates\nMapped official government sites with live traffic data\nTested API response times and data quality\nKey Learning\n: Social media provides the fastest updates (5-15 minutes) but requires heavy filtering. News sites provide more accurate information but with 30-60 minute delays.\nPhase 2: Bright Data Integration\nChallenge\n: Configuring web scraping to extract meaningful, structured data from unstructured sources.\nTechnical Hurdles\n:\nRate Limiting\n: Balancing data freshness with API call limits\nContent Parsing\n: Extracting relevant traffic information from mixed content\nReliability\n: Handling site structure changes and downtime\nBreakthrough Solution\n:\n// Multi-site redundancy approach\nconst\nnewsSources\n=\n[\n\"\ntimesofindia.indiatimes.com\n\"\n,\n// Primary source\n\"\ndeccanherald.com\n\"\n,\n// Backup source\n\"\nthehindu.com\n\"\n,\n// Authoritative backup\n\"\nbangaloremirror.indiatimes.com\n\"\n// Local focus\n];\n// Intelligent keyword weighting\nconst\nkeywordWeights\n=\n{\n\"\nbandh\n\"\n:\n150\n,\n// Highest impact\n\"\nclosure\n\"\n:\n100\n,\n// Major disruption\n\"\naccident\n\"\n:\n50\n,\n// Moderate impact\n\"\nprotest\n\"\n:\n75\n,\n// Variable impact\n\"\nwaterlogging\n\"\n:\n60\n// Weather-dependent\n};\nEnter fullscreen mode\nExit fullscreen mode\nPhase 3: Intelligence Engine Development\nChallenge\n: Converting raw scraped data into actionable route recommendations.\nComplex Algorithm Development\n:\nThe core challenge was creating a scoring system that could weigh:\nQuantitative factors\n: Route duration, weather conditions\nQualitative factors\n: News severity, social media sentiment\nUncertainty factors\n: Data freshness, source reliability\nInnovation - Multi-Factor Scoring Engine\n:\nfunction\nscoreRoute\n(\nroute\n,\nallDataSources\n)\n{\nlet\nscore\n=\n100\n;\n// Base score: travel time efficiency\nscore\n-=\n(\nroute\n.\nduration_in_traffic\n.\nvalue\n/\n60\n);\n// News impact: weighted by severity\nnewsData\n.\nforEach\n(\narticle\n=>\n{\nif\n(\nrouteAffected\n(\nroute\n,\narticle\n))\n{\nscore\n-=\ngetSeverityWeight\n(\narticle\n.\ntitle\n);\n}\n});\n// Social sentiment: crowd-sourced real-time data\nsocialData\n.\nforEach\n(\ntweet\n=>\n{\nscore\n+=\ngetSentimentScore\n(\ntweet\n.\ntext\n,\nroute\n);\n});\n// Weather impact: Bangalore-specific adjustments\nif\n(\nweatherData\n.\nraining\n)\n{\nscore\n-=\ngetRouteRainPenalty\n(\nroute\n.\nsummary\n);\n}\nreturn\n{\nroute\n,\nscore\n,\nconfidence\n:\ncalculateConfidence\n(\nallDataSources\n)\n};\n}\nEnter fullscreen mode\nExit fullscreen mode\nPhase 4: User Experience Optimization\nChallenge\n: Converting complex technical data into simple, actionable user notifications.\nUX Innovations\n:\nProgressive Information\n: Essential info first, details available on demand\nInteractive Elements\n: One-click map opening, data refresh buttons\nConfidence Indicators\n: Users know how reliable each recommendation is\nEmergency Escalation\n: Different notification urgency for different scenarios\nNotification Evolution\n:\n// From technical output to user-friendly message\nconst\ntechnicalOutput\n=\n{\nroute\n:\n\"\nNH44 via Electronic City Elevated Expressway\n\"\n,\nduration\n:\n5400\n,\n// seconds\nconfidence\n:\n87\n,\nweatherFactor\n:\n0.15\n,\nincidentCount\n:\n2\n};\nconst\nuserMessage\n=\n`🚗 *Smart Commute Recommendation*\n\n*Best Route:* Electronic City Expressway\n*Duration:* 1h 30m\n*Confidence:* 87%\n\n*Weather:* ⚠️ Light rain expected - Allow extra 15 minutes\n*Traffic:* Peak morning hours - Consider leaving 15 mins earlier\n\n*Active Alerts:*\n📰 Minor accident reported on ORR near Marathahalli\n🐦 Commuters report slow traffic at Silk Board junction`\n;\nEnter fullscreen mode\nExit fullscreen mode\nKey Technical Breakthroughs\n1. Real-Time Data Fusion\nProblem\n: Each data source has different update frequencies and reliability levels.\nSolution\n: Implemented a\ntime-weighted data freshness algorithm\nthat automatically adjusts source weights based on data age:\nconst\ngetSourceWeight\n=\n(\ndataAge\n,\nsourceType\n)\n=>\n{\nconst\nbaseWeights\n=\n{\nnews\n:\n0.8\n,\nsocial\n:\n0.6\n,\nofficial\n:\n1.0\n};\nconst\ntimeDecay\n=\nMath\n.\nexp\n(\n-\ndataAge\n/\n(\n2\n*\n60\n*\n60\n*\n1000\n));\n// 2-hour half-life\nreturn\nbaseWeights\n[\nsourceType\n]\n*\ntimeDecay\n;\n};\nEnter fullscreen mode\nExit fullscreen mode\n2. Emergency Detection Algorithm\nInnovation\n: Automated detection of traffic emergency conditions that require immediate user attention.\nconst\nemergencyConditions\n=\n[\nconfidence\n<\n30\n,\n// System uncertainty\nalerts\n.\nsome\n(\nalert\n=>\nalert\n.\nincludes\n(\n'\nbandh\n'\n)),\n// Planned disruptions\nweather\n.\nraining\n&&\nalerts\n.\nlength\n>\n2\n,\n// Weather + incidents\nestimatedDuration\n>\nnormalDuration\n*\n2\n// Extreme delays\n];\nif\n(\nemergencyConditions\n.\nsome\n(\ncondition\n=>\ncondition\n))\n{\ntriggerEmergencyNotification\n();\n}\nEnter fullscreen mode\nExit fullscreen mode\nChallenge\n: We built a Smart Commute Assistant on n8n that fetches real-time weather from OpenWeatherMap, live traffic updates, and Google Maps route suggestions, then combines them with historical commute trends to recommend the best route for the day—all while staying within free API limits by using mock fallback data during testing\nTechnical Stack Summary\n🤖 n8n\n: Workflow orchestration and decision engine\n🌐 Bright Data\n: Multi-source web scraping and data collection\n🗺️ Google Maps API\n: Real-time routing and traffic analysis\n🌤️ OpenWeatherMap API\n: Weather intelligence and forecasting\n📱 Slack/Telegram APIs\n: Multi-channel notification delivery\n💾 JSON\n: Structured data passing and state management\n🔄 Cron\n: Intelligent scheduling and automation triggers\nThis implementation showcases the power of combining multiple data sources with intelligent automation to solve real-world problems that single-source solutions cannot address effectively.\nTemplate file\nhttps://gist.github.com/NishikantaRay/30235e660fad9813dcf928b736ce93f4\nTeam Submissions:\n@sumeetweb",
  "metadata": {
    "title": "Building a Smart Commute Assistant with Bright Data, n8n, and Weather & Google Maps APIs - DEV Community",
    "description": "This is a submission for the AI Agents Challenge powered by n8n and Bright Data           Smart... Tagged with devchallenge, n8nbrightdatachallenge, ai, webdev.",
    "keywords": "devchallenge, n8nbrightdatachallenge, ai, webdev, software, coding, development, engineering, inclusive, community",
    "author": null,
    "og:type": "article",
    "og:url": "https://dev.to/nishikantaray/building-a-smart-commute-assistant-with-bright-data-n8n-and-weather-google-maps-apis-143o",
    "og:title": "Building a Smart Commute Assistant with Bright Data, n8n, and Weather & Google Maps APIs",
    "og:description": "This is a submission for the AI Agents Challenge powered by n8n and Bright Data           Smart...",
    "og:site_name": "DEV Community",
    "og:image": "https://media2.dev.to/dynamic/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7fr37pw8ntfkg7fbv74g.png",
    "twitter:site": "@thepracticaldev",
    "twitter:creator": "@",
    "twitter:title": "Building a Smart Commute Assistant with Bright Data, n8n, and Weather & Google Maps APIs",
    "twitter:description": "This is a submission for the AI Agents Challenge powered by n8n and Bright Data           Smart...",
    "twitter:card": "summary_large_image",
    "twitter:widgets:new-embed-design": "on",
    "twitter:image:src": "https://media2.dev.to/dynamic/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7fr37pw8ntfkg7fbv74g.png"
  },
  "paywall": {
    "listed_paid": false,
    "detected": false,
    "marker": "",
    "public_only": false,
    "policy": "付费/会员内容只保留页面公开可见部分，不绕过付费墙"
  },
  "crawl": {
    "success": true,
    "status_code": 200,
    "error": ""
  },
  "code_blocks": [
    {
      "file": "attachments/b5924d7f0318/code/body-000.txt",
      "chars": 573,
      "language": "text"
    },
    {
      "file": "attachments/b5924d7f0318/code/body-001.txt",
      "chars": 465,
      "language": "text"
    },
    {
      "file": "attachments/b5924d7f0318/code/body-002.txt",
      "chars": 503,
      "language": "text"
    },
    {
      "file": "attachments/b5924d7f0318/code/body-003.txt",
      "chars": 377,
      "language": "text"
    },
    {
      "file": "attachments/b5924d7f0318/code/body-004.txt",
      "chars": 477,
      "language": "text"
    },
    {
      "file": "attachments/b5924d7f0318/code/body-005.txt",
      "chars": 568,
      "language": "text"
    },
    {
      "file": "attachments/b5924d7f0318/code/body-006.txt",
      "chars": 686,
      "language": "text"
    },
    {
      "file": "attachments/b5924d7f0318/code/body-007.txt",
      "chars": 610,
      "language": "text"
    },
    {
      "file": "attachments/b5924d7f0318/code/body-008.txt",
      "chars": 248,
      "language": "text"
    },
    {
      "file": "attachments/b5924d7f0318/code/body-009.txt",
      "chars": 425,
      "language": "text"
    }
  ],
  "images": [
    {
      "status": "ok",
      "url": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7f2v6y9iug48dt37wmgt.png",
      "bytes": 175342,
      "reused": true,
      "local_path": "attachments/b5924d7f0318/images/002.png",
      "src": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7f2v6y9iug48dt37wmgt.png",
      "alt": " ",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F91e1g7rzne47aanxkmp4.png",
      "bytes": 64396,
      "reused": true,
      "local_path": "attachments/b5924d7f0318/images/003.png",
      "src": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F91e1g7rzne47aanxkmp4.png",
      "alt": " ",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7wvs6r05hc06s1gn2867.png",
      "bytes": 38974,
      "reused": true,
      "local_path": "attachments/b5924d7f0318/images/004.png",
      "src": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7wvs6r05hc06s1gn2867.png",
      "alt": " ",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmj4fkilzikk21re7t9u0.png",
      "bytes": 64396,
      "reused": true,
      "local_path": "attachments/b5924d7f0318/images/005.png",
      "src": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmj4fkilzikk21re7t9u0.png",
      "alt": " ",
      "downloaded": true
    }
  ],
  "audio": [],
  "videos": [],
  "links": [
    {
      "href": "https://dev.to/challenges/brightdata-n8n-2025-08-13",
      "label": "AI Agents Challenge powered by n8n and Bright Data",
      "type": "a"
    },
    {
      "href": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7f2v6y9iug48dt37wmgt.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F91e1g7rzne47aanxkmp4.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7wvs6r05hc06s1gn2867.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmj4fkilzikk21re7t9u0.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://gist.github.com/NishikantaRay/30235e660fad9813dcf928b736ce93f4",
      "label": "https://gist.github.com/NishikantaRay/30235e660fad9813dcf928b736ce93f4",
      "type": "a"
    },
    {
      "href": "https://dev.to/sumeetweb",
      "label": "@sumeetweb",
      "type": "a"
    }
  ],
  "repair_version": 2,
  "repaired_at": "2026-10-14T10:49:56Z",
  "source_url": "https://dev.to/nishikantaray/building-a-smart-commute-assistant-with-bright-data-n8n-and-weather-google-maps-apis-143o",
  "papers": [],
  "actual_video_files": [],
  "body_chars": 12779,
  "expected_body_images": 4,
  "discovery_status": "ok",
  "delivery_status": "ok",
  "missing_reason": "",
  "raw_html": "attachments/b5924d7f0318/pages/source.html",
  "local_html": "attachments/b5924d7f0318/pages/article.html",
  "body_base_path": "attachments/b5924d7f0318/pages/",
  "body_markdown_path": "attachments/b5924d7f0318/pages/article.md"
}