{
  "source_file": "0930",
  "source_platform": "Ghost",
  "author": "Avi Chawla / Daily Dose of Data Science",
  "title_listed": "Building A Browser Automation Agent",
  "keywords": "",
  "domain": "大模型算法",
  "content_type": "深度技术解析",
  "is_paid_flag": "否",
  "url": "https://www.dailydoseofds.com/p/building-a-browser-automation-agent/",
  "publish_date": "2026-05-31",
  "corpus_stage": "",
  "notes": "",
  "id": "a500206fbc59",
  "collected_at": "2026-10-02T13:48:01",
  "title": "​Building a Browser Automation Agent​",
  "body_markdown": "Aug 12, 2025\nLLMs\n​Building a Browser Automation Agent​\n...explained visually and with code.\nAvi Chawla\n👉\nThe browser is still the most universal interface, with 4.3 billion pages visited every day!\nToday, let's do a demo on how we can completely automate it with a local stack:\n​\nStagehand\n​\nopen-source AI browser automation.\nCrewAI for orchestration.\nOllama to run gpt-oss.\nSystem overview:\nThe user enters an automation query.\nPlanner Agent creates an automation plan.\nThe Browser Automation Agent executes it using the Stagehand tool.\nThe Response Agent generates a response.\nNow, let's dive into the code!\nDefine LLM\nWe use three LLMs:\nPlanner LLM: Creates a structured plan for an automation task.\nAutomation LLM: Executes the plan using the Stagehand tool.\nResponse LLM: Synthesizes final response.\nDefine Automation Planner Agent\nThe planner agent receives an automation task from the user and creates a structured layout for execution by the browser agent.\nDefine Stagehand Browser Tool\nA custom CrewAI tool utilizes AI to interact with web pages.\nIt leverages Stagehand's computer-use agentic capabilities to autonomously navigate URLs, perform page actions, and extract data to answer questions.\nDefine Browser Automation Agent\nBrowser Automation Agent utilizes the aforementioned Stagehand tool for autonomous browser control and plan execution.\nDefine Response Synthesis Agent\nSynthesis Agent acts as final quality control, refining output from the browser automation agent to generate a polished response.\nCreate CrewAI Agentic Flow\nFinally, we connect our Agents within a workflow using CrewAI Flows.\nDone!\nHere’s our multi-agent browser automation workflow in action, where we asked it to find the top contributor on the Stagehand GitHub repo:\n0:00\n/\n0:25\n1×\nIt initiated a local browser session, navigated the web page, and extracted the information.\n​\nYou can find the Stagehand GitHub repo here →\n​\n​\nYou can find the code in the GitHub Repository →\nThanks for reading!\nPublished on Aug 12, 2025\nComments\nShare\nCopy link\nShare to X\nShare to Facebook\nShare to Linkedin\nCopied\nPrevious\nReproducibility and Versioning in ML Systems: Fundamentals of Repeatable and Traceable Setups\nNext\nReproducibility and Versioning in ML Systems: Weights and Biases for Reproducible ML",
  "metadata": {
    "title": "​Building a Browser Automation Agent​",
    "description": "...explained visually and with code.",
    "keywords": null,
    "author": null,
    "og:site_name": "Daily Dose of Data Science",
    "og:type": "article",
    "og:title": "​Building a Browser Automation Agent​",
    "og:description": "...explained visually and with code.",
    "og:url": "https://www.dailydoseofds.com/p/building-a-browser-automation-agent/",
    "og:image": "https://storage.ghost.io/c/3f/df/3fdf6ed2-17ac-4b12-a693-8078bd13e748/content/images/2025/10/stagehand-browser-automation.gif",
    "og:image:width": "800",
    "og:image:height": "697",
    "twitter:card": "summary_large_image",
    "twitter:title": "​Building a Browser Automation Agent​",
    "twitter:description": "...explained visually and with code.",
    "twitter:url": "https://www.dailydoseofds.com/p/building-a-browser-automation-agent/",
    "twitter:image": "https://storage.ghost.io/c/3f/df/3fdf6ed2-17ac-4b12-a693-8078bd13e748/content/images/2025/10/stagehand-browser-automation.gif",
    "twitter:label1": "Written by",
    "twitter:data1": "Avi Chawla",
    "twitter:label2": "Filed under",
    "twitter:data2": "LLMs, RAG",
    "twitter:site": "@_avichawla",
    "article:published_time": "2025-08-12T09:52:00.000Z",
    "article:modified_time": "2026-05-31T11:35:23.000Z",
    "article:tag": "RAG"
  },
  "paywall": {
    "listed_paid": false,
    "detected": false,
    "marker": "",
    "public_only": false,
    "policy": "付费/会员内容只保留页面公开可见部分，不绕过付费墙"
  },
  "crawl": {
    "success": true,
    "status_code": 200,
    "error": ""
  },
  "code_blocks": [],
  "images": [
    {
      "status": "ok",
      "url": "https://storage.ghost.io/c/3f/df/3fdf6ed2-17ac-4b12-a693-8078bd13e748/content/images/size/w400/2026/03/avi-google.jpg",
      "bytes": 11344,
      "reused": true,
      "local_path": "attachments/a500206fbc59/images/000.jpg",
      "src": "https://storage.ghost.io/c/3f/df/3fdf6ed2-17ac-4b12-a693-8078bd13e748/content/images/size/w400/2026/03/avi-google.jpg",
      "alt": "Avi Chawla",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://storage.ghost.io/c/3f/df/3fdf6ed2-17ac-4b12-a693-8078bd13e748/content/images/2026/01/https-3a-2f-2fsubstack-post-media-s3-amazonaws-com-2fpublic-2fimages-2f0a709a88-8707-48d4-8c0d-b7438e1a1093_800x697.gif",
      "bytes": 869232,
      "reused": true,
      "local_path": "attachments/a500206fbc59/images/001.gif",
      "src": "https://storage.ghost.io/c/3f/df/3fdf6ed2-17ac-4b12-a693-8078bd13e748/content/images/2026/01/https-3a-2f-2fsubstack-post-media-s3-amazonaws-com-2fpublic-2fimages-2f0a709a88-8707-48d4-8c0d-b7438e1a1093_800x697.gif",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://storage.ghost.io/c/3f/df/3fdf6ed2-17ac-4b12-a693-8078bd13e748/content/images/2026/01/https-3a-2f-2fsubstack-post-media-s3-amazonaws-com-2fpublic-2fimages-2f3001dd24-b51f-4329-892b-5bee37eaa279_680x327.png",
      "bytes": 22549,
      "reused": true,
      "local_path": "attachments/a500206fbc59/images/003.png",
      "src": "https://storage.ghost.io/c/3f/df/3fdf6ed2-17ac-4b12-a693-8078bd13e748/content/images/2026/01/https-3a-2f-2fsubstack-post-media-s3-amazonaws-com-2fpublic-2fimages-2f3001dd24-b51f-4329-892b-5bee37eaa279_680x327.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://storage.ghost.io/c/3f/df/3fdf6ed2-17ac-4b12-a693-8078bd13e748/content/images/2026/01/https-3a-2f-2fsubstack-post-media-s3-amazonaws-com-2fpublic-2fimages-2f79fd954a-76be-4a30-a362-65d2706db762_680x538.png",
      "bytes": 40941,
      "reused": true,
      "local_path": "attachments/a500206fbc59/images/005.png",
      "src": "https://storage.ghost.io/c/3f/df/3fdf6ed2-17ac-4b12-a693-8078bd13e748/content/images/2026/01/https-3a-2f-2fsubstack-post-media-s3-amazonaws-com-2fpublic-2fimages-2f79fd954a-76be-4a30-a362-65d2706db762_680x538.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://storage.ghost.io/c/3f/df/3fdf6ed2-17ac-4b12-a693-8078bd13e748/content/images/2026/01/https-3a-2f-2fsubstack-post-media-s3-amazonaws-com-2fpublic-2fimages-2f196a789b-0757-4a99-ae5b-d157aeea01aa_679x560.png",
      "bytes": 50873,
      "reused": true,
      "local_path": "attachments/a500206fbc59/images/007.png",
      "src": "https://storage.ghost.io/c/3f/df/3fdf6ed2-17ac-4b12-a693-8078bd13e748/content/images/2026/01/https-3a-2f-2fsubstack-post-media-s3-amazonaws-com-2fpublic-2fimages-2f196a789b-0757-4a99-ae5b-d157aeea01aa_679x560.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://storage.ghost.io/c/3f/df/3fdf6ed2-17ac-4b12-a693-8078bd13e748/content/images/2026/01/https-3a-2f-2fsubstack-post-media-s3-amazonaws-com-2fpublic-2fimages-2ff88265a2-6fd1-4260-b0ae-5859e56f8466_679x513.png",
      "bytes": 42888,
      "reused": true,
      "local_path": "attachments/a500206fbc59/images/009.png",
      "src": "https://storage.ghost.io/c/3f/df/3fdf6ed2-17ac-4b12-a693-8078bd13e748/content/images/2026/01/https-3a-2f-2fsubstack-post-media-s3-amazonaws-com-2fpublic-2fimages-2ff88265a2-6fd1-4260-b0ae-5859e56f8466_679x513.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://storage.ghost.io/c/3f/df/3fdf6ed2-17ac-4b12-a693-8078bd13e748/content/images/2026/01/https-3a-2f-2fsubstack-post-media-s3-amazonaws-com-2fpublic-2fimages-2f9141e6d6-1834-43ba-901a-dcae6c64056c_680x460.png",
      "bytes": 35965,
      "reused": true,
      "local_path": "attachments/a500206fbc59/images/011.png",
      "src": "https://storage.ghost.io/c/3f/df/3fdf6ed2-17ac-4b12-a693-8078bd13e748/content/images/2026/01/https-3a-2f-2fsubstack-post-media-s3-amazonaws-com-2fpublic-2fimages-2f9141e6d6-1834-43ba-901a-dcae6c64056c_680x460.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://storage.ghost.io/c/3f/df/3fdf6ed2-17ac-4b12-a693-8078bd13e748/content/images/2026/01/https-3a-2f-2fsubstack-post-media-s3-amazonaws-com-2fpublic-2fimages-2fe166d013-9806-46fd-8d2f-da19c6c9b04f_680x564.png",
      "bytes": 49188,
      "reused": true,
      "local_path": "attachments/a500206fbc59/images/013.png",
      "src": "https://storage.ghost.io/c/3f/df/3fdf6ed2-17ac-4b12-a693-8078bd13e748/content/images/2026/01/https-3a-2f-2fsubstack-post-media-s3-amazonaws-com-2fpublic-2fimages-2fe166d013-9806-46fd-8d2f-da19c6c9b04f_680x564.png",
      "alt": "",
      "downloaded": true
    }
  ],
  "audio": [],
  "videos": [
    {
      "url": "https://storage.ghost.io/c/3f/df/3fdf6ed2-17ac-4b12-a693-8078bd13e748/content/media/2025/10/stagehand-browser-automation-demo---1.mp4",
      "src": "https://storage.ghost.io/c/3f/df/3fdf6ed2-17ac-4b12-a693-8078bd13e748/content/media/2025/10/stagehand-browser-automation-demo---1.mp4",
      "status": "ok",
      "kind": "direct_video",
      "bytes": 13203845,
      "reused": false,
      "content_type": "application/octet-stream",
      "valid": true,
      "height": 1080,
      "width": 1388,
      "duration": "25.900000",
      "local_path": "attachments/a500206fbc59/videos/repair-adbfc8fbc7a8b7f13fbd.mp4"
    }
  ],
  "links": [
    {
      "href": "https://github.com/browserbase/stagehand-python?ref=dailydoseofds.com",
      "label": "​ Stagehand ​",
      "type": "a"
    },
    {
      "href": "https://storage.ghost.io/c/3f/df/3fdf6ed2-17ac-4b12-a693-8078bd13e748/content/media/2025/10/stagehand-browser-automation-demo---1.mp4",
      "label": "",
      "type": "video"
    },
    {
      "href": "https://github.com/patchy631/ai-engineering-hub/tree/main/web-browsing-agent?ref=dailydoseofds.com",
      "label": "​ You can find the code in the GitHub Repository →",
      "type": "a"
    },
    {
      "href": "https://x.com/intent/tweet?url=https%3A%2F%2Fwww.dailydoseofds.com%2Fp%2Fbuilding-a-browser-automation-agent%2F&text=%E2%80%8BBuilding%20a%20Browser%20Automation%20Agent%E2%80%8B",
      "label": "Share to X",
      "type": "a"
    },
    {
      "href": "https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fwww.dailydoseofds.com%2Fp%2Fbuilding-a-browser-automation-agent%2F",
      "label": "Share to Facebook",
      "type": "a"
    },
    {
      "href": "https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fwww.dailydoseofds.com%2Fp%2Fbuilding-a-browser-automation-agent%2F",
      "label": "Share to Linkedin",
      "type": "a"
    },
    {
      "href": "https://www.dailydoseofds.com/mlops-crash-course-part-3/",
      "label": "Previous Reproducibility and Versioning in ML Systems: Fundamentals of Repeatable and Traceable Setups",
      "type": "a"
    },
    {
      "href": "https://www.dailydoseofds.com/mlops-crash-course-part-4/",
      "label": "Next Reproducibility and Versioning in ML Systems: Weights and Biases for Reproducible ML",
      "type": "a"
    }
  ],
  "repair_version": 2,
  "repaired_at": "2026-10-14T10:47:59Z",
  "source_url": "https://www.dailydoseofds.com/p/building-a-browser-automation-agent/",
  "papers": [],
  "actual_video_files": [],
  "body_chars": 2287,
  "expected_body_images": 8,
  "discovery_status": "ok",
  "delivery_status": "ok",
  "missing_reason": "",
  "raw_html": "attachments/a500206fbc59/pages/source.html",
  "local_html": "attachments/a500206fbc59/pages/article.html",
  "body_base_path": "attachments/a500206fbc59/pages/",
  "body_markdown_path": "attachments/a500206fbc59/pages/article.md"
}