[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article-tap-browser-automation-programs-en":3,"tags-tap-browser-automation-programs-en":30,"related-lang-tap-browser-automation-programs-en":41,"related-posts-tap-browser-automation-programs-en":45,"series-ai-agent-586d7fcd-daae-4798-a525-62406c8b8a48":82},{"id":4,"title":5,"content":6,"summary":7,"source":8,"source_url":9,"author":10,"image_url":11,"keywords":12,"language":18,"translated_content":10,"views":19,"is_premium":20,"created_at":21,"updated_at":21,"cover_image":11,"published_at":22,"rewrite_status":23,"rewrite_error":10,"rewritten_from_id":24,"slug":25,"category":26,"related_article_id":27,"status":28,"google_indexed_at":29,"x_posted_at":10,"tweet_text":10,"title_rewritten_at":10,"title_original":10,"key_takeaways":10,"topic_cluster_id":10,"embedding":10,"is_canonical_seed":20},"586d7fcd-daae-4798-a525-62406c8b8a48","Tap Turns Browser Actions Into Programs","\u003Cp>Browser agents usually pay the AI tax every time they click, type, or scrape. \u003Ca href=\"https:\u002F\u002Fdev.to\u002Fleonting1010\u002Fprograms-beat-prompts-how-tap-turns-ai-into-a-compiler-for-browser-automation-oab\" target=\"_blank\" rel=\"noopener\">Tap\u003C\u002Fa> tries a different idea: let AI figure out the browser task once, then turn that behavior into a program that can run again without another model call.\u003C\u002Fp>\u003Cp>That matters because browser automation is one of the most repetitive places to spend inference budget. If a workflow runs 100 times a day, a tool that replays deterministically can save real money, reduce latency, and make debugging much less painful.\u003C\u002Fp>\u003Ch2>What Tap is actually doing\u003C\u002Fh2>\u003Cp>Tap is a protocol plus toolchain that treats browser interaction like compilation. Instead of asking a model to reason from scratch on every run, Tap has the model inspect the page, write a \u003Ccode>.tap.js\u003C\u002Fcode> program, verify it, then replay that program as plain execution.\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1775182728135-zwg3.png\" alt=\"Tap Turns Browser Actions Into Programs\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>The author’s pitch is simple: AI should be used to discover the procedure, then JavaScript should carry the load. That shift changes browser automation from a chat loop into an artifact you can inspect, version, and reuse.\u003C\u002Fp>\u003Cp>The process breaks down into three phases:\u003C\u002Fp>\u003Cul>\u003Cli>\u003Cstrong>Forge:\u003C\u002Fstrong> the model observes the DOM, network traffic, and accessibility tree, then writes a Tap program.\u003C\u002Fli>\u003Cli>\u003Cstrong>Verify:\u003C\u002Fstrong> the program gets tested with different inputs so the author can catch brittle steps early.\u003C\u002Fli>\u003Cli>\u003Cstrong>Run:\u003C\u002Fstrong> the script replays the same actions without another AI call.\u003C\u002Fli>\u003C\u002Ful>\u003Cp>Tap’s own example makes the economic pitch clear: the first run may cost about $0.50 if a model is involved, while every later run costs $0.00 because the program replays deterministically.\u003C\u002Fp>\u003Cp>That cost profile is the real story here. The more stable the site and the more often the workflow repeats, the more attractive a compiled browser task becomes.\u003C\u002Fp>\u003Ch2>Why a compiler model is interesting\u003C\u002Fh2>\u003Cp>Most browser agents are built like conversation systems. You ask them to do something, they think through the page, then they act. That works, but it means the model keeps paying attention to details it has already learned before.\u003C\u002Fp>\u003Cp>Tap changes the unit of work. The model is no longer the executor; it is the author of an executable browser routine. That is a cleaner fit for tasks like scraping leaderboards, filling repetitive forms, checking inventory, or collecting data from the same site every day.\u003C\u002Fp>\u003Cp>Tap’s author says the tool exposes 8 core operations and 17 built-in operations, which is enough to cover a wide slice of browser control. The important part is not the number alone, but the fact that a new runtime only needs to implement 8 methods before it gets the rest for free.\u003C\u002Fp>\u003Cblockquote>“Programs should be used to express the details that humans have already figured out.” — Peter Norvig, \u003Ca href=\"https:\u002F\u002Fnorvig.com\u002F21-days.html\" target=\"_blank\" rel=\"noopener\">Teach Yourself Programming in Ten Years\u003C\u002Fa>\u003C\u002Fblockquote>\u003Cp>That quote fits Tap well. Once the model has inferred the steps, the result should look less like a chat transcript and more like an executable plan.\u003C\u002Fp>\u003Cp>Tap’s design also makes failure easier to reason about. If a script breaks, you inspect the generated code and the page state, rather than replaying the same prompt and hoping the model takes a different path.\u003C\u002Fp>\u003Ch2>How Tap compares with Playwright\u003C\u002Fh2>\u003Cp>The obvious comparison is \u003Ca href=\"https:\u002F\u002Fplaywright.dev\" target=\"_blank\" rel=\"noopener\">Playwright\u003C\u002Fa>, since both tools automate browsers and can run in CI. Tap is not trying to replace Playwright’s general-purpose scripting model. It is trying to move the expensive reasoning step out of the hot path.\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1775182721751-5hy1.png\" alt=\"Tap Turns Browser Actions Into Programs\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>Tap can run in a \u003Ca href=\"https:\u002F\u002Fdeveloper.chrome.com\u002Fdocs\u002Fextensions\" target=\"_blank\" rel=\"noopener\">Chrome Extension\u003C\u002Fa>, through \u003Ca href=\"https:\u002F\u002Fplaywright.dev\" target=\"_blank\" rel=\"noopener\">Playwright\u003C\u002Fa>, or on macOS through native accessibility APIs. That multi-runtime design matters because it lets the same generated program live in different environments.\u003C\u002Fp>\u003Cp>There is also an open-source skills layer called \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FLeonTing1010\u002Ftap-skills\" target=\"_blank\" rel=\"noopener\">tap-skills\u003C\u002Fa>, which the author says includes 119 community skills across 55 sites. That is the kind of catalog that can make a tool useful outside a demo.\u003C\u002Fp>\u003Cul>\u003Cli>\u003Cstrong>Playwright:\u003C\u002Fstrong> one runtime, scripts written by humans, no built-in AI authoring loop.\u003C\u002Fli>\u003Cli>\u003Cstrong>Tap:\u003C\u002Fstrong> 3+ runtimes, AI-forged scripts, zero AI cost on repeat runs.\u003C\u002Fli>\u003Cli>\u003Cstrong>tap-skills:\u003C\u002Fstrong> 119 skills across 55 sites, which gives the system a reusable library of site-specific behavior.\u003C\u002Fli>\u003C\u002Ful>\u003Cp>Tap’s model is especially attractive for teams that repeat the same browser job many times. A one-time AI pass that produces a script is easier to budget than a system that keeps calling a model for every click path.\u003C\u002Fp>\u003Ch2>Where this could matter in practice\u003C\u002Fh2>\u003Cp>Tap is most convincing when the task is repetitive and the target site does not change every hour. Think of ranking pages, internal dashboards, support portals, or any workflow where the same sequence of actions gets repeated with different inputs.\u003C\u002Fp>\u003Cp>The author’s install flow is also intentionally lightweight: a shell script, then commands like \u003Ccode>tap github trending\u003C\u002Fcode> or \u003Ccode>tap hackernews hot\u003C\u002Fcode>. That suggests Tap wants to feel like a small compiler toolchain, not a giant platform.\u003C\u002Fp>\u003Cp>There is a real trade-off here. A compiled browser flow is fast and cheap on repeat runs, but the first generated script still depends on the model’s ability to understand the page correctly. If the site layout changes often, you still need maintenance.\u003C\u002Fp>\u003Cp>That is why Tap feels most useful as a bridge between AI and ordinary code. It gives you a way to use a model for discovery, then keep the result in a form that developers can audit and ship.\u003C\u002Fp>\u003Cp>For teams already building browser automation, the question is simple: do you want an agent that thinks every time, or a system that thinks once and then executes? Tap is betting that the second option will win for a lot of real workloads.\u003C\u002Fp>\u003Ch2>What to watch next\u003C\u002Fh2>\u003Cp>Tap’s strongest idea is not that AI can click buttons. It is that AI can write the browser script once, then get out of the way. That makes browser automation cheaper, easier to test, and easier to reason about when something breaks.\u003C\u002Fp>\u003Cp>If the project keeps growing its skills catalog and adds more reliable runtime support, it could become a practical option for teams that live in dashboards and admin panels all day. The next question is whether developers prefer generated programs they can inspect, or agents that keep improvising on every run.\u003C\u002Fp>\u003Cp>My bet: if Tap can keep the generated scripts readable and the replay behavior stable, more teams will use AI as a compiler for browser work rather than as a chatty operator. That is a much better fit for production automation.\u003C\u002Fp>","Tap writes browser tasks once, then replays them deterministically across Chrome, Playwright, and macOS with zero AI cost on repeat runs.","dev.to","https:\u002F\u002Fdev.to\u002Fleonting1010\u002Fprograms-beat-prompts-how-tap-turns-ai-into-a-compiler-for-browser-automation-oab",null,"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1775182728135-zwg3.png",[13,14,15,16,17],"Tap","browser automation","Playwright","AI agents","deterministic replay","en",1,false,"2026-04-03T02:18:25.712291+00:00","2026-04-03T02:18:25.687+00:00","done","a0565380-2a92-4487-8ac2-e80c619cfeef","tap-browser-automation-programs-en","ai-agent","0a600e43-b461-40f8-851e-0442cf567d84","published","2026-04-07T07:41:12.368+00:00",[31,33,35,37,39],{"name":17,"slug":32},"deterministic-replay",{"name":15,"slug":34},"playwright",{"name":14,"slug":36},"browser-automation",{"name":13,"slug":38},"tap",{"name":16,"slug":40},"ai-agents",{"id":27,"slug":42,"title":43,"language":44},"tap-browser-automation-programs-zh","Tap 把瀏覽器操作變成程式","zh",[46,52,58,64,70,76],{"id":47,"slug":48,"title":49,"cover_image":50,"image_url":50,"created_at":51,"category":26},"c5d4bc11-1f4d-438c-b644-a8498826e1ab","claude-agent-dreaming-outcomes-multiagent-en","Claude给Agent加了“做梦”功能","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778868649463-f5qv.png","2026-05-15T18:10:25.29539+00:00",{"id":53,"slug":54,"title":55,"cover_image":56,"image_url":56,"created_at":57,"category":26},"fda44d24-7baf-4d91-a7f9-bbfecae20a27","switch-ai-outputs-markdown-to-html-en","How to Switch AI Outputs from Markdown to HTML","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778743249827-wmsr.png","2026-05-14T07:20:22.631724+00:00",{"id":59,"slug":60,"title":61,"cover_image":62,"image_url":62,"created_at":63,"category":26},"064275f5-4282-47c3-8e4a-60fe8ac99246","anthropic-cat-wu-proactive-ai-assistants-en","Anthropic’s Cat Wu on proactive AI assistants","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778735465548-a92i.png","2026-05-14T05:10:31.723441+00:00",{"id":65,"slug":66,"title":67,"cover_image":68,"image_url":68,"created_at":69,"category":26},"423ac8ad-2886-42a9-8dd8-78e5d43a1574","how-to-run-hermes-agent-on-discord-en","How to Run Hermes Agent on Discord","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778724656141-i30t.png","2026-05-14T02:10:35.727086+00:00",{"id":71,"slug":72,"title":73,"cover_image":74,"image_url":74,"created_at":75,"category":26},"776a562c-99a6-4a6b-93a0-9af40300f3f2","why-ragflow-is-the-right-open-source-rag-engine-to-self-host-en","Why RAGFlow is the right open-source RAG engine to self-host","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778674254587-0pxn.png","2026-05-13T12:10:25.721583+00:00",{"id":77,"slug":78,"title":79,"cover_image":80,"image_url":80,"created_at":81,"category":26},"322ec8bc-61d3-4c80-bb9e-a19941e137c6","how-to-add-temporal-rag-in-production-en","How to Add Temporal RAG in Production","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778667085221-0mox.png","2026-05-13T10:10:31.619892+00:00",[83,88,93,98,103,108,113,118,123,128],{"id":84,"slug":85,"title":86,"created_at":87},"03db8de8-8dc2-4ac1-9cf7-898782efbb1f","anthropic-claude-ai-agent-task-automation-en","Anthropic's Claude AI Agent: A New Era of Task Automation","2026-03-25T16:25:06.513026+00:00",{"id":89,"slug":90,"title":91,"created_at":92},"045d1abc-190d-4594-8c95-91e2a26f0c5a","googles-2026-ai-agent-report-decoded-en","Google’s 2026 AI Agent Report, Decoded","2026-03-26T11:15:23.046616+00:00",{"id":94,"slug":95,"title":96,"created_at":97},"e64aba21-254b-4f93-aa21-837484bb52ec","kimi-k25-review-stronger-still-not-legend-en","Kimi K2.5 review: stronger, still not a legend","2026-03-27T07:15:55.385951+00:00",{"id":99,"slug":100,"title":101,"created_at":102},"30dfb781-a1b2-4add-aebe-b3df40247c37","claude-code-controls-mac-desktop-en","Claude Code now controls your Mac desktop","2026-03-28T03:01:59.384091+00:00",{"id":104,"slug":105,"title":106,"created_at":107},"254405b6-7833-4800-8e13-f5196deefbe6","cloudflare-100x-faster-ai-agent-sandbox-en","Cloudflare’s 100x Faster AI Agent Sandbox","2026-03-28T03:09:44.356437+00:00",{"id":109,"slug":110,"title":111,"created_at":112},"04f29b7f-9b91-4306-89a7-97d725e6e1ba","openai-backs-isara-agent-swarm-bet-en","OpenAI backs Isara’s agent-swarm bet","2026-03-28T03:15:27.849766+00:00",{"id":114,"slug":115,"title":116,"created_at":117},"3b0bf479-e4ae-4703-9666-721a7e0cdb91","openai-plan-automated-ai-researcher-en","OpenAI’s plan for an automated AI researcher","2026-03-28T03:17:42.312819+00:00",{"id":119,"slug":120,"title":121,"created_at":122},"fe91bce0-b85d-4efa-a207-24ae9939c29f","harness-engineering-ai-agent-reliability-2026","Harness Engineering: From Bridle to Operating System, The Missing Link in AI Agent Reliability","2026-03-31T06:36:55.648751+00:00",{"id":124,"slug":125,"title":126,"created_at":127},"67dc66da-ca46-4aa5-970b-e997a39fe109","openai-codex-plugin-claude-code-en","OpenAI puts Codex inside Claude Code","2026-04-01T09:21:55.381386+00:00",{"id":129,"slug":130,"title":131,"created_at":132},"7a09007d-820f-43b3-8607-8ad1bfcb94c8","mcp-explained-from-prompts-to-production-en","MCP Explained: From Prompts to Production","2026-04-01T09:24:40.089177+00:00"]