[{"data":1,"prerenderedAt":392},["ShallowReactive",2],{"navigation_docs":3,"-applications-web-profile":72,"-applications-web-profile-surround":391},[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,67],{"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",{"title":68,"path":69,"stem":70,"icon":71},"Client","\u002Fpackages\u002Fclient","3.packages\u002F4.client","i-lucide-plug",{"id":73,"title":74,"body":75,"description":383,"extension":384,"links":385,"meta":386,"navigation":6,"path":387,"seo":388,"stem":389,"__hash__":390},"docs\u002F2.applications\u002F1.web\u002F3.profile.md","Profiles",{"type":76,"value":77,"toc":377},"minimark",[78,93,100,105,189,205,209,212,238,331,338,342,364,368,373],[79,80,81,82,87,88,92],"p",{},"A profile describes how to load a page and extract data from it: the URLs it applies to, request settings, actions to\nrun before or after extraction, and the elements to extract. Profiles can be attached to a\n",[83,84,86],"a",{"href":85},".\u002Fcollection","collection"," as a default, or to an individual ",[83,89,91],{"href":90},".\u002Fcollection-entry","collection entry"," to override it.",[79,94,95],{},[96,97],"img",{"alt":98,"src":99},"A profile's editor and run preview","\u002Fscreenshots\u002Fweb-profile-detail.png",[101,102,104],"h2",{"id":103},"fields","Fields",[106,107,108,116,122,141,151,168],"ul",{},[109,110,111,115],"li",{},[112,113,114],"strong",{},"Name"," — required, shown in the profiles list.",[109,117,118,121],{},[112,119,120],{},"URLs"," — optional list of URLs this profile is associated with.",[109,123,124,127,128,132,133,136,137,140],{},[112,125,126],{},"Settings"," — optional ",[129,130,131],"code",{},"proxyServer"," and ",[129,134,135],{},"timeout",", and a ",[129,138,139],{},"deleteVars"," toggle for clearing intermediate variables\nafter a run.",[109,142,143,146,147,150],{},[112,144,145],{},"Block"," — optional URL\u002Fmedia patterns to block while loading the page (",[129,148,149],{},"ProfileBlockInput",").",[109,152,153,156,157,160,161,164,165,150],{},[112,154,155],{},"Actions"," — ",[129,158,159],{},"before","\u002F",[129,162,163],{},"after"," arrays of actions to run around extraction (",[129,166,167],{},"ProfileActionsInput",[109,169,170,173,174,177,178,181,182,185,186,150],{},[112,171,172],{},"Elements"," — the values to extract from the page: a ",[129,175,176],{},"selector",", a ",[129,179,180],{},"resultSelector",", and optional ",[129,183,184],{},"transform","\nsteps (",[129,187,188],{},"ProfileElementsInput",[79,190,191,192,160,195,160,198,201,202,204],{},"These fields mirror the ",[129,193,194],{},"zProfile",[129,196,197],{},"zProfileElement",[129,199,200],{},"zAction"," schemas documented in ",[83,203,53],{"href":54}," — see\nthat page for the full shape and available transformers.",[101,206,208],{"id":207},"editing-a-profile","Editing a profile",[79,210,211],{},"A profile's page offers two ways to edit it:",[106,213,214,220],{},[109,215,216,219],{},[112,217,218],{},"Editor"," — an accordion of form inputs, one section per field above.",[109,221,222,225,226,229,230,233,234,237],{},[112,223,224],{},"YAML Editor"," — the same profile as YAML, backed by a Monaco editor. Toggle ",[112,227,228],{},"Auto format"," to parse and apply\nchanges as you type, or use ",[112,231,232],{},"Format & Apply"," to parse once and pretty-print the result. ",[112,235,236],{},"Copy YAML"," copies the\ncurrent text to the clipboard.",[239,240,245],"pre",{"className":241,"code":242,"language":243,"meta":244,"style":244},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","name: Example profile\nurl: https:\u002F\u002Fexample.com\nelements:\n  - type: attribute\n    name: title\n    selector: h1.title\n    resultSelector: 0.text\n","yaml","",[129,246,247,264,275,284,298,309,320],{"__ignoreMap":244},[248,249,252,256,260],"span",{"class":250,"line":251},"line",1,[248,253,255],{"class":254},"swJcz","name",[248,257,259],{"class":258},"sMK4o",":",[248,261,263],{"class":262},"sfazB"," Example profile\n",[248,265,267,270,272],{"class":250,"line":266},2,[248,268,269],{"class":254},"url",[248,271,259],{"class":258},[248,273,274],{"class":262}," https:\u002F\u002Fexample.com\n",[248,276,278,281],{"class":250,"line":277},3,[248,279,280],{"class":254},"elements",[248,282,283],{"class":258},":\n",[248,285,287,290,293,295],{"class":250,"line":286},4,[248,288,289],{"class":258},"  -",[248,291,292],{"class":254}," type",[248,294,259],{"class":258},[248,296,297],{"class":262}," attribute\n",[248,299,301,304,306],{"class":250,"line":300},5,[248,302,303],{"class":254},"    name",[248,305,259],{"class":258},[248,307,308],{"class":262}," title\n",[248,310,312,315,317],{"class":250,"line":311},6,[248,313,314],{"class":254},"    selector",[248,316,259],{"class":258},[248,318,319],{"class":262}," h1.title\n",[248,321,323,326,328],{"class":250,"line":322},7,[248,324,325],{"class":254},"    resultSelector",[248,327,259],{"class":258},[248,329,330],{"class":262}," 0.text\n",[79,332,333,334,337],{},"Use ",[112,335,336],{},"Run Preview"," to execute the profile against a URL and inspect the extracted result before saving.",[101,339,341],{"id":340},"import-and-export","Import and export",[79,343,344,345,348,349,352,353,356,357,360,361,363],{},"From the profiles list, ",[112,346,347],{},"Export"," downloads all of a team's profiles as a single ",[129,350,351],{},"profiles.yaml"," file, and\n",[112,354,355],{},"Import"," reads a YAML file in the same shape (a top-level ",[129,358,359],{},"profiles"," list) and creates or updates profiles by\nmatching on ",[129,362,255],{},".",[101,365,367],{"id":366},"recording-a-profile","Recording a profile",[79,369,370,371,363],{},"Rather than writing a profile by hand, you can record one by interacting with a page in the browser using the\n",[83,372,37],{"href":38},[374,375,376],"style",{},"html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":244,"searchDepth":266,"depth":266,"links":378},[379,380,381,382],{"id":103,"depth":266,"text":104},{"id":207,"depth":266,"text":208},{"id":340,"depth":266,"text":341},{"id":366,"depth":266,"text":367},"Profiles are a way to define how content is extracted from a web page, including the elements to extract, actions to perform, and transformations to apply.","md",null,{},"\u002Fapplications\u002Fweb\u002Fprofile",{"title":74,"description":383},"2.applications\u002F1.web\u002F3.profile","RrR6p5uNOVhc8-I3AIVcjEOTpEHaSjPRWM0loWVzjSE",[385,385],1790949710399]