[{"data":1,"prerenderedAt":302},["ShallowReactive",2],{"navigation_docs":3,"-applications-profile-recorder":67,"-applications-profile-recorder-surround":297},[4,20,41],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":6},"Overview",false,"\u002Fgetting-started","1.getting-started",[10,15],{"title":11,"path":12,"stem":13,"icon":14},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F2.introduction","i-lucide-house",{"title":16,"path":17,"stem":18,"icon":19},"Adding Documentation","\u002Fgetting-started\u002Fadding-documentation","1.getting-started\u002F3.adding-documentation","i-lucide-file-plus",{"title":21,"icon":22,"path":23,"stem":24,"children":25,"page":6},"Applications","i-lucide-layout-grid","\u002Fapplications","2.applications",[26,31,36],{"title":27,"path":28,"stem":29,"icon":30},"Web","\u002Fapplications\u002Fweb","2.applications\u002F1.web","i-lucide-globe-code",{"title":32,"path":33,"stem":34,"icon":35},"Coordinator","\u002Fapplications\u002Fcoordinator","2.applications\u002F2.coordinator","i-lucide-clock",{"title":37,"path":38,"stem":39,"icon":40},"Profile Chrome Extension","\u002Fapplications\u002Fprofile-recorder","2.applications\u002F3.profile-recorder","i-lucide-mouse-pointer-click",{"title":42,"icon":43,"path":44,"stem":45,"children":46,"page":6},"Packages","i-lucide-package","\u002Fpackages","3.packages",[47,52,57,62],{"title":48,"path":49,"stem":50,"icon":51},"Profile Runner","\u002Fpackages\u002Fprofile-runner","3.packages\u002F1.profile-runner","i-lucide-scan-search",{"title":53,"path":54,"stem":55,"icon":56},"Schema","\u002Fpackages\u002Fschema","3.packages\u002F2.schema","i-lucide-file-json",{"title":58,"path":59,"stem":60,"icon":61},"UI","\u002Fpackages\u002Fui","3.packages\u002F2.ui","i-lucide-layout-dashboard",{"title":63,"path":64,"stem":65,"icon":66},"Coordinator SDK","\u002Fpackages\u002Fcoordinator-sdk","3.packages\u002F3.coordinator-sdk","i-lucide-plug-zap",{"id":68,"title":37,"body":69,"description":290,"extension":291,"links":292,"meta":293,"navigation":294,"path":38,"seo":295,"stem":39,"__hash__":296},"docs\u002F2.applications\u002F3.profile-recorder.md",{"type":70,"value":71,"toc":282},"minimark",[72,91,96,114,118,121,150,156,159,163,170,179,185,208,212,215,221,225,240,269,276],[73,74,75,76,81,82,86,87,90],"p",{},"The Profile Recorder is a Chrome extension (Manifest V3) that lets you record a ",[77,78,80],"a",{"href":79},"\u002Fapplications\u002Fweb\u002Fprofile","profile","\nby interacting with a page directly in the browser, rather than writing the ",[83,84,85],"code",{},"elements",", ",[83,88,89],{},"actions",", and selectors by\nhand.",[92,93,95],"h2",{"id":94},"what-it-does","What it does",[73,97,98,99,86,101,103,104,107,108,113],{},"The extension opens as a side panel next to the page you're recording. As you select elements and interact with the\npage, it builds up the same ",[83,100,85],{},[83,102,89],{},", and ",[83,105,106],{},"block"," shapes used by ",[77,109,110],{"href":54},[83,111,112],{},"@scrape-admin\u002Fschema",",\nso the recorded profile can be copied into the web app's YAML editor (or imported) without modification.",[92,115,117],{"id":116},"installing-from-a-zip","Installing from a ZIP",[73,119,120],{},"The extension isn't published to the Chrome Web Store yet. Until then, install it from a built ZIP as an unpacked\nextension:",[122,123,124,128,135,143],"ol",{},[125,126,127],"li",{},"Download the extension ZIP and unzip it to a local folder.",[125,129,130,131,134],{},"Open ",[83,132,133],{},"chrome:\u002F\u002Fextensions"," in Chrome.",[125,136,137,138,142],{},"Enable ",[139,140,141],"strong",{},"Developer mode"," (top right).",[125,144,145,146,149],{},"Click ",[139,147,148],{},"Load unpacked"," and select the unzipped folder.",[151,152],"u-alert",{"description":153,"icon":154,"title":155},"A direct download link for the latest build will be added here once it's available.","i-lucide-info","Coming soon",[73,157,158],{},"After installing, pin the extension so its icon is visible in the toolbar, then open it from any page you want to\nrecord a profile for.",[92,160,162],{"id":161},"creating-a-profile","Creating a profile",[73,164,165],{},[166,167],"img",{"alt":168,"src":169},"The profile list, with an existing profile and the \"New Profile\" \u002F \"Import YAML\" actions","\u002Fscreenshots\u002Frecorder-list.png",[122,171,172],{},[125,173,174,175,178],{},"Open the extension and click ",[139,176,177],{},"New Profile",". The name field is pre-filled with the current tab's hostname, but\nyou can change it.",[73,180,181],{},[166,182],{"alt":183,"src":184},"The \"New Profile\" modal, prompting for a name before creating the profile","\u002Fscreenshots\u002Frecorder-create.png",[122,186,188,202],{"start":187},2,[125,189,145,190,193,194,197,198,201],{},[139,191,192],{},"Start Recording",", then click elements on the page to capture them — each click opens a modal where you\nset the element's name, selector, type (",[83,195,196],{},"attribute"," or ",[83,199,200],{},"variable","), result selector, and any actions to run on it.",[125,203,145,204,207],{},[139,205,206],{},"Stop Recording"," when you're done. The profile can be exported as YAML or copied to the clipboard from the\ndetail view at any point.",[92,209,211],{"id":210},"editing-a-profile","Editing a profile",[73,213,214],{},"Selecting a profile from the list opens its detail view, where you can rename it, change its URL, add or edit\nelements and their selectors\u002Ftransforms (via the structured editor or the raw YAML tab), manage before\u002Fafter actions,\nand export or copy the profile — without needing to re-record it from scratch.",[73,216,217],{},[166,218],{"alt":219,"src":220},"A profile's detail view, showing its recorded elements and before\u002Fafter actions","\u002Fscreenshots\u002Frecorder-edit.png",[92,222,224],{"id":223},"testing-a-profile-against-the-api","Testing a profile against the API",[73,226,227,228,231,232,235,236,239],{},"A recorded profile can be run against the real ",[77,229,230],{"href":33},"profiles run API"," directly from the\nextension, via ",[139,233,234],{},"Run on Current Tab"," on the profile's detail view. This requires the API to be configured first from\nthe extension's ",[139,237,238],{},"Settings"," (gear icon):",[241,242,243,257,263],"ul",{},[125,244,245,248,249,252,253,256],{},[139,246,247],{},"API Host"," — the URL of the ",[83,250,251],{},"apps\u002Fweb"," instance to test against, for example ",[83,254,255],{},"https:\u002F\u002Fyour-scrape-admin.example.com",".",[125,258,259,262],{},[139,260,261],{},"Team ID"," — the team the profile should be run under.",[125,264,265,268],{},[139,266,267],{},"API Key"," — optional. Only required if you aren't already signed in to that host in the same browser, or if the\nAPI otherwise requires authentication — if you have an active session from being logged in to the web app, it's\nused instead.",[73,270,271,272,275],{},"Use ",[139,273,274],{},"Test Connection"," to verify the host and team are reachable before running a profile.",[73,277,278],{},[166,279],{"alt":280,"src":281},"The Settings view with API Host, Team ID, and API Key filled in, showing a successful \"API reachable.\" connection test","\u002Fscreenshots\u002Frecorder-settings.png",{"title":283,"searchDepth":187,"depth":187,"links":284},"",[285,286,287,288,289],{"id":94,"depth":187,"text":95},{"id":116,"depth":187,"text":117},{"id":161,"depth":187,"text":162},{"id":210,"depth":187,"text":211},{"id":223,"depth":187,"text":224},"Profile Recorder is a Chrome extension for recording scraping profiles. It allows you to interact with a web page and capture the elements, actions, and transformations needed to extract data.","md",null,{},{"icon":40},{"title":37,"description":290},"8QRlCePQTEWFVLHQ8vd8GiABCLA2zx8iSZFgEZhEk3Q",[298,300],{"title":32,"path":33,"stem":34,"description":299,"icon":35,"children":-1},"Schedules and coordinates reliable webhook callbacks.",{"title":48,"path":49,"stem":50,"description":301,"icon":51,"children":-1},"Extract website data using reusable YAML or JSON profiles.",1790864111784]