@koda-sl/baker-cli 0.447.0 → 0.448.0-dev.ccc3c9a37
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +231 -42
- package/dist/account-JG7QD522.js +79 -0
- package/dist/account-V6PB6PA5.js +80 -0
- package/dist/account-VLPX7EZT.js +49 -0
- package/dist/account-reads-4P5L6CJN.js +218 -0
- package/dist/account-reads-4P5L6CJN.js.map +1 -0
- package/dist/account-writes-BGREY7ZL.js +66 -0
- package/dist/accounts-2FINK5GZ.js +114 -0
- package/dist/accounts-2UV5Z3Y6.js +75 -0
- package/dist/accounts-3EX2PFJB.js +77 -0
- package/dist/accounts-G2QT3ZVP.js +115 -0
- package/dist/accounts-N63J5YTK.js +611 -0
- package/dist/actions-PA2BPIYO.js +55 -0
- package/dist/active-entities-RDXDSMA2.js +103 -0
- package/dist/activecampaign-EE5ERO25.js +897 -0
- package/dist/activecampaign-EE5ERO25.js.map +1 -0
- package/dist/activities-RBTU2Q24.js +74 -0
- package/dist/ad-group-writes-5NTRJTVE.js +170 -0
- package/dist/ad-groups-4OTAKWUC.js +68 -0
- package/dist/ad-writes-T7W3DDKK.js +174 -0
- package/dist/add-4VKA4NDH.js +105 -0
- package/dist/add-MQO33HL3.js +97 -0
- package/dist/add-MYPHHYC4.js +302 -0
- package/dist/add-MYPHHYC4.js.map +1 -0
- package/dist/add-QM7ANAVG.js +104 -0
- package/dist/add-accounts-VDSWHJ4K.js +91 -0
- package/dist/add-accounts-VDSWHJ4K.js.map +1 -0
- package/dist/ads-HYODBAPV.js +128 -0
- package/dist/ads-HYODBAPV.js.map +1 -0
- package/dist/ads-IJCFN2N3.js +113 -0
- package/dist/ads-QKMLAPZC.js +40 -0
- package/dist/ads-XYAWONXR.js +77 -0
- package/dist/adsets-DPTIKGTG.js +176 -0
- package/dist/advertisers-ITFXIXUW.js +125 -0
- package/dist/advertisers-ITFXIXUW.js.map +1 -0
- package/dist/advertisers-SZFDOPBQ.js +120 -0
- package/dist/analytics-HFBYIPZ7.js +433 -0
- package/dist/analytics-NDZR33ZJ.js +1976 -0
- package/dist/analytics-NDZR33ZJ.js.map +1 -0
- package/dist/animate-LUKNHCF4.js +480 -0
- package/dist/assign-QCICUD72.js +77 -0
- package/dist/audience-size-HML4BLHJ.js +94 -0
- package/dist/audiences-BSABKS5K.js +268 -0
- package/dist/audiences-FWOOSUSJ.js +78 -0
- package/dist/audiences-VK4M7GLQ.js +85 -0
- package/dist/audit-DUM55J5U.js +151 -0
- package/dist/audit-JR5R75XK.js +88 -0
- package/dist/autocomplete-VX4PMMLR.js +111 -0
- package/dist/avatars-5KCRSUJ3.js +38 -0
- package/dist/bid-pricing-AIUACXUH.js +99 -0
- package/dist/brand-UBTC2WXR.js +22 -0
- package/dist/brief-NU7ZGPXO.js +490 -0
- package/dist/brief-NU7ZGPXO.js.map +1 -0
- package/dist/businesses-P3RX4UXS.js +53 -0
- package/dist/campaign-groups-SJZEDIBL.js +95 -0
- package/dist/campaign-writes-5BPVXG4C.js +170 -0
- package/dist/campaign-writes-VE6QLIDA.js +165 -0
- package/dist/campaigns-JEWEDCTC.js +109 -0
- package/dist/campaigns-MEIMSHJF.js +110 -0
- package/dist/campaigns-NCGJNJKS.js +107 -0
- package/dist/campaigns-XY7QWHDN.js +76 -0
- package/dist/canvas-DK2DH7BA.js +46 -0
- package/dist/canvas-DK2DH7BA.js.map +1 -0
- package/dist/capabilities-W6SPXOPF.js +144 -0
- package/dist/cards-CLD4WX6G.js +85 -0
- package/dist/catalog-W6RBOIOF.js +64 -0
- package/dist/catalog-W6RBOIOF.js.map +1 -0
- package/dist/catalogs-DINPKQXY.js +128 -0
- package/dist/changes-N2YZXAPF.js +135 -0
- package/dist/chatgpt-TPAP6BVY.js +47 -0
- package/dist/chats-FKVVBXVF.js +262 -0
- package/dist/chunk-237WE5LX.js +455 -0
- package/dist/chunk-237WE5LX.js.map +1 -0
- package/dist/chunk-24IQ6K7K.js +103 -0
- package/dist/chunk-2FZG5DD2.js +297 -0
- package/dist/chunk-2T3EH2MU.js +363 -0
- package/dist/chunk-2Y5UE2CV.js +174 -0
- package/dist/chunk-2ZZR2SOF.js +215 -0
- package/dist/chunk-2ZZR2SOF.js.map +1 -0
- package/dist/chunk-3KPQDXIU.js +1830 -0
- package/dist/chunk-4AFGT3L3.js +46 -0
- package/dist/chunk-4JKBMKFC.js +225 -0
- package/dist/chunk-4KBWL7S4.js +610 -0
- package/dist/chunk-4R3QKEDV.js +136 -0
- package/dist/chunk-536R4RRM.js +166 -0
- package/dist/chunk-536R4RRM.js.map +1 -0
- package/dist/chunk-57XJ7QF7.js +65 -0
- package/dist/chunk-57XJ7QF7.js.map +1 -0
- package/dist/chunk-6AJ6ZD73.js +172 -0
- package/dist/chunk-6AJ6ZD73.js.map +1 -0
- package/dist/chunk-6SL6463H.js +309 -0
- package/dist/chunk-7TRSFEHZ.js +51 -0
- package/dist/chunk-AOCG7COT.js +474 -0
- package/dist/chunk-AOCG7COT.js.map +1 -0
- package/dist/chunk-APNV7FMK.js +191 -0
- package/dist/chunk-AR7PU7BB.js +76 -0
- package/dist/chunk-AR7PU7BB.js.map +1 -0
- package/dist/chunk-B2HLSTK6.js +392 -0
- package/dist/chunk-B2HLSTK6.js.map +1 -0
- package/dist/chunk-B2VKGTBS.js +3151 -0
- package/dist/chunk-B2VKGTBS.js.map +1 -0
- package/dist/chunk-BC2BXRXY.js +2887 -0
- package/dist/chunk-BC2BXRXY.js.map +1 -0
- package/dist/chunk-BC6M5YYV.js +1599 -0
- package/dist/chunk-BC6M5YYV.js.map +1 -0
- package/dist/chunk-BCSOWRQL.js +76 -0
- package/dist/chunk-BIZH3X6P.js +817 -0
- package/dist/chunk-BIZH3X6P.js.map +1 -0
- package/dist/chunk-BJEW3LST.js +296 -0
- package/dist/chunk-BYKUAX26.js +106 -0
- package/dist/chunk-C4KJHTQU.js +1079 -0
- package/dist/chunk-C4KJHTQU.js.map +1 -0
- package/dist/chunk-C7NPNSFO.js +169 -0
- package/dist/chunk-CAMX6OHF.js +3182 -0
- package/dist/chunk-CAMX6OHF.js.map +1 -0
- package/dist/chunk-CLK2FPAV.js +76 -0
- package/dist/chunk-CLK2FPAV.js.map +1 -0
- package/dist/chunk-CVIMIOPO.js +94 -0
- package/dist/chunk-D3RTGIT4.js +2102 -0
- package/dist/chunk-D3RTGIT4.js.map +1 -0
- package/dist/chunk-DAKIMGUS.js +74 -0
- package/dist/chunk-DCRUGS3G.js +25 -0
- package/dist/chunk-DJPCTTUN.js +1743 -0
- package/dist/chunk-DJPCTTUN.js.map +1 -0
- package/dist/chunk-DJUHGO3O.js +547 -0
- package/dist/chunk-DJUHGO3O.js.map +1 -0
- package/dist/chunk-DMA77LLI.js +106 -0
- package/dist/chunk-EEEAC655.js +45 -0
- package/dist/chunk-EEEAC655.js.map +1 -0
- package/dist/chunk-EESOZY5S.js +26 -0
- package/dist/chunk-EIZMOICE.js +175 -0
- package/dist/chunk-F3IVR3V3.js +136 -0
- package/dist/chunk-FSX6CQ2Z.js +188 -0
- package/dist/chunk-G7LAQE56.js +56 -0
- package/dist/chunk-G7QKXFQ2.js +66 -0
- package/dist/chunk-G7XY4T6K.js +23 -0
- package/dist/chunk-GIWHHCD6.js +145 -0
- package/dist/chunk-GIWHHCD6.js.map +1 -0
- package/dist/chunk-GRJCZF2H.js +5187 -0
- package/dist/chunk-GRJCZF2H.js.map +1 -0
- package/dist/chunk-HCDCWXSU.js +346 -0
- package/dist/chunk-HKSLIV4T.js +533 -0
- package/dist/chunk-HKSLIV4T.js.map +1 -0
- package/dist/chunk-I2DNBEV6.js +4227 -0
- package/dist/chunk-I2DNBEV6.js.map +1 -0
- package/dist/chunk-I4IVUAQN.js +337 -0
- package/dist/chunk-ICJFL7DU.js +35 -0
- package/dist/chunk-ICJFL7DU.js.map +1 -0
- package/dist/chunk-IWNZCYWI.js +74 -0
- package/dist/chunk-JF5LNI6O.js +84 -0
- package/dist/chunk-JJZBZYNK.js +96 -0
- package/dist/chunk-JPK34QPS.js +134 -0
- package/dist/chunk-JPK34QPS.js.map +1 -0
- package/dist/chunk-JZP5IODJ.js +98 -0
- package/dist/chunk-KL5VTXIK.js +149 -0
- package/dist/chunk-KL5VTXIK.js.map +1 -0
- package/dist/chunk-KWMYTVHI.js +455 -0
- package/dist/chunk-LFGCOAB4.js +75 -0
- package/dist/chunk-LLN6WTER.js +665 -0
- package/dist/chunk-LLN6WTER.js.map +1 -0
- package/dist/chunk-LO7OQKUD.js +4410 -0
- package/dist/chunk-LO7OQKUD.js.map +1 -0
- package/dist/chunk-LPRUP3ZX.js +172 -0
- package/dist/chunk-MAGSNHYB.js +6214 -0
- package/dist/chunk-MAGSNHYB.js.map +1 -0
- package/dist/chunk-MD3VH5UG.js +84 -0
- package/dist/chunk-MFORE6F4.js +19 -0
- package/dist/chunk-MMBHCAON.js +160 -0
- package/dist/chunk-MMOTJIV6.js +216 -0
- package/dist/chunk-MMOTJIV6.js.map +1 -0
- package/dist/chunk-NIGGMK7L.js +125 -0
- package/dist/chunk-NN7A2ILR.js +433 -0
- package/dist/chunk-O356YNIW.js +509 -0
- package/dist/chunk-O356YNIW.js.map +1 -0
- package/dist/chunk-OUQMJRH6.js +159 -0
- package/dist/chunk-OXKUWTFL.js +494 -0
- package/dist/chunk-P5T7OZKV.js +26 -0
- package/dist/chunk-PAJJXZ3Z.js +170 -0
- package/dist/chunk-PC56KVAD.js +74 -0
- package/dist/chunk-PEWNEPDR.js +206 -0
- package/dist/chunk-PY4FAOW6.js +275 -0
- package/dist/chunk-PY4FAOW6.js.map +1 -0
- package/dist/chunk-Q2T4XZG4.js +139 -0
- package/dist/chunk-QEHICHMP.js +875 -0
- package/dist/chunk-QEHICHMP.js.map +1 -0
- package/dist/chunk-RCR6RVYE.js +274 -0
- package/dist/chunk-RH2H5PBV.js +111 -0
- package/dist/chunk-S3L2ITS7.js +111 -0
- package/dist/chunk-S3L2ITS7.js.map +1 -0
- package/dist/chunk-S3XM4LD3.js +57 -0
- package/dist/chunk-SEPPFM5S.js +228 -0
- package/dist/chunk-SEPPFM5S.js.map +1 -0
- package/dist/chunk-SFHL3KWY.js +96 -0
- package/dist/chunk-SQ7DRYCC.js +150 -0
- package/dist/chunk-SSVZM3P6.js +333 -0
- package/dist/chunk-T64IRDKW.js +52 -0
- package/dist/chunk-T64IRDKW.js.map +1 -0
- package/dist/chunk-TMNLIA7R.js +60 -0
- package/dist/chunk-UF55TADX.js +92 -0
- package/dist/chunk-UGI33KTO.js +55 -0
- package/dist/chunk-UK2OTLT3.js +197 -0
- package/dist/chunk-UU3FGKUW.js +207 -0
- package/dist/chunk-UUBHU2TY.js +304 -0
- package/dist/chunk-UUBHU2TY.js.map +1 -0
- package/dist/chunk-UX7HIGS7.js +67 -0
- package/dist/chunk-VDZIGI2C.js +98 -0
- package/dist/chunk-VF6JFG27.js +846 -0
- package/dist/chunk-VF6JFG27.js.map +1 -0
- package/dist/chunk-VKVIBQP3.js +486 -0
- package/dist/chunk-VLF2M4GZ.js +592 -0
- package/dist/chunk-VTF7XNOP.js +58 -0
- package/dist/chunk-WDA3L4NF.js +382 -0
- package/dist/chunk-WMN2WKNZ.js +1442 -0
- package/dist/chunk-WMN2WKNZ.js.map +1 -0
- package/dist/chunk-XDV6Q33B.js +42 -0
- package/dist/chunk-XQIOCIDO.js +204 -0
- package/dist/chunk-XQIOCIDO.js.map +1 -0
- package/dist/chunk-XYC26BDM.js +133 -0
- package/dist/chunk-YHQYDNYD.js +23992 -0
- package/dist/chunk-YHQYDNYD.js.map +1 -0
- package/dist/chunk-YOARYFC2.js +6667 -0
- package/dist/chunk-YOARYFC2.js.map +1 -0
- package/dist/chunk-YPCVPDU7.js +455 -0
- package/dist/chunk-YPCVPDU7.js.map +1 -0
- package/dist/chunk-YTWNY3RF.js +97 -0
- package/dist/claim-JLVISHS4.js +197 -0
- package/dist/cli.js +41 -37
- package/dist/cli.js.map +1 -1
- package/dist/client-G6DGRGKT.js +19 -0
- package/dist/code-AYN42EK7.js +76 -0
- package/dist/companies-XDMOP2GL.js +195 -0
- package/dist/complete-XM7VLC4F.js +81 -0
- package/dist/config-UE7GCROG.js +88 -0
- package/dist/connect-VTDKGYP3.js +42 -0
- package/dist/content-5LHM4PBE.js +85 -0
- package/dist/content-5LHM4PBE.js.map +1 -0
- package/dist/conversation-F53OE25Y.js +93 -0
- package/dist/conversion-report-35MLL3FA.js +125 -0
- package/dist/conversion-upload-command-CV2TA7OV.js +438 -0
- package/dist/conversion-writes-NSZPNMPE.js +120 -0
- package/dist/conversions-7YO6DDL3.js +135 -0
- package/dist/conversions-XNISCCC2.js +76 -0
- package/dist/countries-NMWPKFFW.js +82 -0
- package/dist/create-ARERZYCL.js +59 -0
- package/dist/create-C6ZVYIF5.js +207 -0
- package/dist/create-FAPJFCZE.js +235 -0
- package/dist/create-M7TUO3XS.js +130 -0
- package/dist/creatives-3YIV6IOK.js +182 -0
- package/dist/creatives-QZCO6WGH.js +51 -0
- package/dist/creatives-WJLJ3NKP.js +87 -0
- package/dist/credentials-2DO23MYD.js +287 -0
- package/dist/credentials-2DO23MYD.js.map +1 -0
- package/dist/critique-56MNXW7R.js +1449 -0
- package/dist/critique-KRIKEHF6.js +213 -0
- package/dist/crm-OETFQNR3.js +224 -0
- package/dist/crm-WXCFB4TU.js +318 -0
- package/dist/crop-VCP2JLQL.js +113 -0
- package/dist/currency-MNNDKY4Z.js +88 -0
- package/dist/custom-conversions-CIU525HM.js +125 -0
- package/dist/customers-GTPEABJI.js +56 -0
- package/dist/decide-NFTEKQKC.js +199 -0
- package/dist/decide-NFTEKQKC.js.map +1 -0
- package/dist/delete-5CURRI25.js +71 -0
- package/dist/delete-CLC2Q2OE.js +63 -0
- package/dist/delete-CQ6Q3URI.js +54 -0
- package/dist/delete-JIRZBBDD.js +69 -0
- package/dist/delete-LD3F4UIW.js +66 -0
- package/dist/delete-LGZ5OI4C.js +71 -0
- package/dist/demographics-EK2ZPHWK.js +138 -0
- package/dist/describe-BNB6643C.js +97 -0
- package/dist/describe-ZXGFTCDR.js +97 -0
- package/dist/dimensions-IU4ETG4U.js +101 -0
- package/dist/discard-VWCXYJWU.js +66 -0
- package/dist/discover-4EQWGIAN.js +172 -0
- package/dist/discover-4N3V5K2R.js +93 -0
- package/dist/discover-4N3V5K2R.js.map +1 -0
- package/dist/domain-I2SAGVAB.js +98 -0
- package/dist/download-D7TB4744.js +299 -0
- package/dist/draft-4VOOSJQJ.js +233 -0
- package/dist/draft-6KG2YFOY.js +328 -0
- package/dist/draft-APDGACIC.js +306 -0
- package/dist/draft-D76C4JR3.js +103 -0
- package/dist/draft-HFH2Y6F5.js +281 -0
- package/dist/draft-NLUJX7TA.js +307 -0
- package/dist/draft-NLUJX7TA.js.map +1 -0
- package/dist/draft-NVVWWQVC.js +217 -0
- package/dist/draft-NWLPLTWM.js +100 -0
- package/dist/engine/index.d.ts +12 -0
- package/dist/engine/index.js +13 -14
- package/dist/env-LHLGM2YJ.js +43 -0
- package/dist/experiment-4SUIXVBP.js +1397 -0
- package/dist/experiment-4SUIXVBP.js.map +1 -0
- package/dist/export-VGCFD7GL.js +168 -0
- package/dist/extract-32J7V2RX.js +113 -0
- package/dist/facets-WVI6VBDC.js +114 -0
- package/dist/favorites-WKV5H5OF.js +178 -0
- package/dist/feed-2CRO4HA6.js +177 -0
- package/dist/feed-2CRO4HA6.js.map +1 -0
- package/dist/feedback-NMNKYEMU.js +66 -0
- package/dist/feedback-record-2VYBMWMO.js +175 -0
- package/dist/fetch-CENBDLT6.js +176 -0
- package/dist/fetch-XQFPE3MI.js +139 -0
- package/dist/find-PNDKEOXT.js +134 -0
- package/dist/fit-SEWGCEW5.js +45 -0
- package/dist/flows-3N4RPGSP.js +247 -0
- package/dist/flows-3N4RPGSP.js.map +1 -0
- package/dist/follow-BB5KUEXZ.js +94 -0
- package/dist/follow-BB5KUEXZ.js.map +1 -0
- package/dist/follow-competitors-EURYGGXE.js +112 -0
- package/dist/follow-competitors-EURYGGXE.js.map +1 -0
- package/dist/following-CA5BQXYB.js +113 -0
- package/dist/following-CA5BQXYB.js.map +1 -0
- package/dist/fonts-KUCQAR7N.js +34 -0
- package/dist/forecast-G5KRTVDM.js +168 -0
- package/dist/forecast-G5KRTVDM.js.map +1 -0
- package/dist/forecast-PI52G2GL.js +104 -0
- package/dist/funding-ZRC25X5I.js +85 -0
- package/dist/funnel-WGFMUWQP.js +394 -0
- package/dist/funnel-WGFMUWQP.js.map +1 -0
- package/dist/ga4-YDKXVJOC.js +55 -0
- package/dist/generate-BVMMX3SS.js +262 -0
- package/dist/get-7MSF4RVQ.js +59 -0
- package/dist/get-FILH7BDT.js +78 -0
- package/dist/get-FILH7BDT.js.map +1 -0
- package/dist/get-KFVPIDIA.js +61 -0
- package/dist/get-NHQ2XYKZ.js +63 -0
- package/dist/get-TCDAYTZA.js +56 -0
- package/dist/get-TCDAYTZA.js.map +1 -0
- package/dist/get-UMMTY74K.js +92 -0
- package/dist/get-YM77HCL5.js +63 -0
- package/dist/gif-X323HXS2.js +94 -0
- package/dist/google-76A4MHQH.js +136 -0
- package/dist/google-OZTCY7HD.js +3190 -0
- package/dist/google-OZTCY7HD.js.map +1 -0
- package/dist/google-ads-S6O4MLKA.js +195 -0
- package/dist/group-CTIZVYX2.js +43 -0
- package/dist/group-HKWQ75CJ.js +43 -0
- package/dist/gsc-CORRYJBJ.js +30 -0
- package/dist/history-4U7FJGEM.js +133 -0
- package/dist/history-BXOMJ5PL.js +67 -0
- package/dist/hubspot-I5MFAZ4G.js +779 -0
- package/dist/icon-6QW63AHG.js +137 -0
- package/dist/ideas-QDS5XA4S.js +32 -0
- package/dist/images-NVTA2OHD.js +90 -0
- package/dist/improve-WR23CHYH.js +86 -0
- package/dist/ingest-QAVJ2J7F.js +107 -0
- package/dist/ingest-XJHV3GG6.js +23 -0
- package/dist/insights-AW7SOGHI.js +122 -0
- package/dist/insights-IJEPLWQH.js +423 -0
- package/dist/inspect-7I53PWCF.js +189 -0
- package/dist/inspiration-TJJFUVY2.js +53 -0
- package/dist/intent-VEUQS34Z.js +95 -0
- package/dist/job-K7LAIBYN.js +202 -0
- package/dist/job-create-DFZL4CGA.js +109 -0
- package/dist/job-status-6Q2TVTEO.js +74 -0
- package/dist/keep-XJFCLVCP.js +78 -0
- package/dist/keyword-gap-CUOGKUMM.js +130 -0
- package/dist/keyword-metrics-LK7FME4N.js +197 -0
- package/dist/keywords-for-site-4E7UU44P.js +128 -0
- package/dist/landing-I65PFN7H.js +28 -0
- package/dist/landings-SQJWZOJR.js +151 -0
- package/dist/landings-SQJWZOJR.js.map +1 -0
- package/dist/languages-KPPKX3E2.js +40 -0
- package/dist/languages-MGEBLO64.js +55 -0
- package/dist/launches-E3Y6NCQE.js +19 -0
- package/dist/layerize-N4IQ2KE7.js +190 -0
- package/dist/leads-PPMOBH7U.js +293 -0
- package/dist/leads-TNEQUOUN.js +90 -0
- package/dist/learn-QQS323PS.js +203 -0
- package/dist/library-4QQAVB6X.js +109 -0
- package/dist/lighthouse-CD47CPJM.js +75 -0
- package/dist/line-item-writes-QJZQUQ4E.js +208 -0
- package/dist/line-items-ESEAXGBV.js +103 -0
- package/dist/link-DPJYS4WY.js +64 -0
- package/dist/linkedin-EJPNC4VY.js +1008 -0
- package/dist/list-A45NTPSJ.js +76 -0
- package/dist/list-GNP4GIV2.js +51 -0
- package/dist/list-KQFLOVC4.js +57 -0
- package/dist/list-MDHK3ENJ.js +50 -0
- package/dist/list-PRUFXMXW.js +65 -0
- package/dist/list-S3BAQCTL.js +303 -0
- package/dist/list-UU5NPLJ7.js +151 -0
- package/dist/list-V525A4Z4.js +63 -0
- package/dist/locations-J2PVPDZU.js +67 -0
- package/dist/locations-TFOYESTF.js +40 -0
- package/dist/log-XQBEJOOW.js +92 -0
- package/dist/logo-KQD5KUAH.js +18 -0
- package/dist/lookup-QCREWUV4.js +22 -0
- package/dist/make-NZHJ7ICV.js +633 -0
- package/dist/make-NZHJ7ICV.js.map +1 -0
- package/dist/map-7SHU5WCJ.js +433 -0
- package/dist/map-7SHU5WCJ.js.map +1 -0
- package/dist/mcp-GATPHY4D.js +463 -0
- package/dist/mcp-GATPHY4D.js.map +1 -0
- package/dist/media-2WENMOAA.js +15 -0
- package/dist/media-N4C6Q4IV.js +89 -0
- package/dist/media-sources-BPOTW6IB.js +32 -0
- package/dist/members-BOYZKLNK.js +44 -0
- package/dist/meta-PXYHWOOG.js +69 -0
- package/dist/metrics-FZANUN7E.js +152 -0
- package/dist/models-W6EN3WB7.js +155 -0
- package/dist/normalize-LOMDPNFJ.js +806 -0
- package/dist/normalize-RP3D7BUT.js +141 -0
- package/dist/normalize-RP3D7BUT.js.map +1 -0
- package/dist/options-FXND5P2W.js +122 -0
- package/dist/options-FXND5P2W.js.map +1 -0
- package/dist/output-SR4DN3A4.js +24 -0
- package/dist/page-FS76L5WU.js +105 -0
- package/dist/pages-INMNJSX2.js +66 -0
- package/dist/performance-53D43XVZ.js +24 -0
- package/dist/pinterest-JMHFPNVW.js +96 -0
- package/dist/pixels-K6ZD7SXV.js +60 -0
- package/dist/pixels-XPBBJYE3.js +108 -0
- package/dist/plan-45ESBYZA.js +207 -0
- package/dist/plan-45ESBYZA.js.map +1 -0
- package/dist/preview-KXSNG3BS.js +169 -0
- package/dist/profile-I4IXWBAQ.js +159 -0
- package/dist/profile-I4IXWBAQ.js.map +1 -0
- package/dist/promoted-tweet-writes-I6HVQRDB.js +180 -0
- package/dist/promoted-tweets-YAQ5ZUXI.js +119 -0
- package/dist/properties-NYNEONHI.js +101 -0
- package/dist/publish-Z5DVKZSG.js +322 -0
- package/dist/query-MSZPOHFL.js +61 -0
- package/dist/query-RK2TFMBI.js +236 -0
- package/dist/query-TWNH6GV7.js +247 -0
- package/dist/questionnaire-CNXN2TUZ.js +93 -0
- package/dist/questionnaire-CNXN2TUZ.js.map +1 -0
- package/dist/read-2AGRYWXU.js +141 -0
- package/dist/read-2AGRYWXU.js.map +1 -0
- package/dist/reddit-6DQTBTO6.js +26 -0
- package/dist/refresh-TP2TOGS6.js +94 -0
- package/dist/release-PHQEZ2ZX.js +60 -0
- package/dist/relevant-pages-ORVFFVAM.js +99 -0
- package/dist/remove-ETLMMDEA.js +48 -0
- package/dist/remove-KTBM5YSH.js +50 -0
- package/dist/reopen-OURQR6U7.js +63 -0
- package/dist/rerun-HGCVZ3D4.js +84 -0
- package/dist/rerun-HGCVZ3D4.js.map +1 -0
- package/dist/research-P23YBKS3.js +62 -0
- package/dist/research-WCNWT5Y5.js +262 -0
- package/dist/reset-2NCAWWN4.js +54 -0
- package/dist/reset-65R2CUB5.js +54 -0
- package/dist/resolve-65FKZ23N.js +121 -0
- package/dist/retry-P5K6LE6K.js +60 -0
- package/dist/retry-UIPDQJ5F.js +62 -0
- package/dist/retry-failed-QMWQ6TRL.js +45 -0
- package/dist/run-NDMEYUOI.js +59 -0
- package/dist/run-OP3T4TCF.js +65 -0
- package/dist/scaffold-ad-A5MWIOQJ.js +1548 -0
- package/dist/scaffold-ad-A5MWIOQJ.js.map +1 -0
- package/dist/scaffold-static-ad-MFPDXR6J.js +971 -0
- package/dist/scaffold-static-ad-MFPDXR6J.js.map +1 -0
- package/dist/scaffold-video-N6TY36I3.js +872 -0
- package/dist/scaffold-video-N6TY36I3.js.map +1 -0
- package/dist/schedule-6D667AXB.js +61 -0
- package/dist/schedule-KXLQVCZW.js +66 -0
- package/dist/scheduled-agents-LYWEX4PU.js +49 -0
- package/dist/schema-5HZIAHY3.js +132 -0
- package/dist/schema-5HZIAHY3.js.map +1 -0
- package/dist/schema-CCFLFAOY.js +63 -0
- package/dist/scrape-DBZQFIW7.js +2241 -0
- package/dist/screenshot-MPFANYIH.js +102 -0
- package/dist/search-4AANIUUL.js +91 -0
- package/dist/search-EMJABZYF.js +224 -0
- package/dist/search-HQDN7DOF.js +174 -0
- package/dist/search-OVHC4CRQ.js +26 -0
- package/dist/search-YSGZRANA.js +92 -0
- package/dist/search-copy-E3EVO7YT.js +168 -0
- package/dist/search-copy-E3EVO7YT.js.map +1 -0
- package/dist/seeds-XTBVEHSF.js +101 -0
- package/dist/seeds-XTBVEHSF.js.map +1 -0
- package/dist/select-C6BKHB4B.js +94 -0
- package/dist/sends-HXN5HSF6.js +309 -0
- package/dist/sequences-FRK76ZQV.js +146 -0
- package/dist/set-prompt-AOSHNBFC.js +185 -0
- package/dist/set-prompt-AOSHNBFC.js.map +1 -0
- package/dist/setup-links-BM2GLSSO.js +141 -0
- package/dist/shared-EH5ZTQXC.js +31 -0
- package/dist/site-3PEJYQJW.js +177 -0
- package/dist/sitemaps-7KHY2KXI.js +87 -0
- package/dist/sites-6B76JW6C.js +101 -0
- package/dist/skills-SCTT3LCM.js +47 -0
- package/dist/sources-ODJBHNGY.js +30 -0
- package/dist/sources-ZTLMXFHK.js +454 -0
- package/dist/sources-ZTLMXFHK.js.map +1 -0
- package/dist/stale-2O54QXY2.js +63 -0
- package/dist/stats-4NBOAOR2.js +34 -0
- package/dist/status-NE5OBM4B.js +62 -0
- package/dist/sticker-NLXBIOBO.js +94 -0
- package/dist/stock-F3SA4VHV.js +179 -0
- package/dist/studio-ZPDIOFKL.js +49 -0
- package/dist/sync-5GJNZDGZ.js +54 -0
- package/dist/sync-FCNFXTFD.js +265 -0
- package/dist/sync-YXCZ3DHY.js +54 -0
- package/dist/sync-definition-IL6Z4ZI7.js +52 -0
- package/dist/sync-definition-IL6Z4ZI7.js.map +1 -0
- package/dist/tag-manager-YM4Q3CZT.js +43 -0
- package/dist/tags-456UOYJU.js +26 -0
- package/dist/tags-5YPYHV5V.js +20 -0
- package/dist/tags-HXMHEHG2.js +224 -0
- package/dist/tags-K34666RY.js +20 -0
- package/dist/tags-NB35ISO3.js +20 -0
- package/dist/targeting-constants-3CMGPWRI.js +118 -0
- package/dist/targeting-criteria-UKQ4WF5C.js +113 -0
- package/dist/targets-VQ4BQ657.js +102 -0
- package/dist/templates-PMUIOVDX.js +178 -0
- package/dist/testimonials-XZCGVD6V.js +32 -0
- package/dist/themes-TVXLYJ7Y.js +94 -0
- package/dist/themes-TVXLYJ7Y.js.map +1 -0
- package/dist/top-companies-VMRIDOOH.js +108 -0
- package/dist/translate-F5KR62LF.js +598 -0
- package/dist/triggers-2MZX7W6Y.js +141 -0
- package/dist/tweets-XWE3VYQ4.js +123 -0
- package/dist/unfollow-7U4UBAJX.js +46 -0
- package/dist/unlink-AWSNY3QS.js +67 -0
- package/dist/unstage-OGB43ZXO.js +95 -0
- package/dist/unstage-RQBOQ4DY.js +84 -0
- package/dist/update-4KWYHMLS.js +63 -0
- package/dist/update-6DKEWM64.js +142 -0
- package/dist/update-G6EKHPIF.js +155 -0
- package/dist/update-OFV452AC.js +98 -0
- package/dist/upload-6CJWMQ24.js +126 -0
- package/dist/upload-GUKMQ5MT.js +150 -0
- package/dist/upscale-A456MESF.js +109 -0
- package/dist/url-options-FGDOVUSI.js +130 -0
- package/dist/url-options-FGDOVUSI.js.map +1 -0
- package/dist/url-params-OE3UMYMM.js +98 -0
- package/dist/use-HBVKVT5S.js +95 -0
- package/dist/validate-ZCUZV3L4.js +88 -0
- package/dist/validate-ZCUZV3L4.js.map +1 -0
- package/dist/variant-HULP57YI.js +338 -0
- package/dist/videos-ION7UT3M.js +39 -0
- package/dist/view-GCDEJZII.js +121 -0
- package/dist/viewer-check-UKYFBFMY.js +68 -0
- package/dist/viewer-check-UKYFBFMY.js.map +1 -0
- package/dist/web-CCVD6UZ4.js +140 -0
- package/dist/winners-WSMWC4M5.js +113 -0
- package/dist/winners-WSMWC4M5.js.map +1 -0
- package/dist/winning-ads-UCSSFEXD.js +84 -0
- package/dist/winning-ads-UCSSFEXD.js.map +1 -0
- package/dist/write-commands-47OP673X.js +713 -0
- package/dist/write-commands-IJ5IFHS6.js +737 -0
- package/dist/write-commands-NNVDWBLG.js +1015 -0
- package/dist/write-commands-OBMIVFZJ.js +206 -0
- package/dist/x-U32DT24S.js +47 -0
- package/package.json +2 -2
- package/dist/account-2ZMZFPIU.js +0 -79
- package/dist/account-F6MHQ64I.js +0 -80
- package/dist/account-IEVEOFIK.js +0 -49
- package/dist/account-writes-ISE4U2FQ.js +0 -66
- package/dist/accounts-4CDRK4S4.js +0 -75
- package/dist/accounts-5QDKBZMH.js +0 -115
- package/dist/accounts-KYJO3JC6.js +0 -114
- package/dist/accounts-RHGN5WMU.js +0 -611
- package/dist/accounts-VINHZRWA.js +0 -77
- package/dist/actions-5F4ZP6M4.js +0 -55
- package/dist/active-entities-YUSOUR5M.js +0 -103
- package/dist/activities-ZVQOBHZH.js +0 -74
- package/dist/ad-group-writes-UU5NNKSO.js +0 -170
- package/dist/ad-groups-CGFXZNIA.js +0 -68
- package/dist/ad-writes-NALDYWOR.js +0 -174
- package/dist/add-577QWMCF.js +0 -97
- package/dist/add-CUWAW7KG.js +0 -105
- package/dist/add-KBPMSK2P.js +0 -104
- package/dist/add-OGH4DZZ5.js +0 -280
- package/dist/add-OGH4DZZ5.js.map +0 -1
- package/dist/ads-56OWZBXZ.js +0 -40
- package/dist/ads-H7GH7A26.js +0 -113
- package/dist/ads-PV7GZXPR.js +0 -77
- package/dist/adsets-H7QT42U6.js +0 -176
- package/dist/advertisers-PM4WPG4N.js +0 -120
- package/dist/advertisers-YMHPZYNF.js +0 -111
- package/dist/advertisers-YMHPZYNF.js.map +0 -1
- package/dist/analytics-5FALU2GL.js +0 -433
- package/dist/analytics-JVZKN735.js +0 -1958
- package/dist/analytics-JVZKN735.js.map +0 -1
- package/dist/animate-FWWHSYPL.js +0 -480
- package/dist/assign-KLYZ6USE.js +0 -77
- package/dist/audience-size-JHB42DB4.js +0 -94
- package/dist/audiences-HFRVIE2X.js +0 -85
- package/dist/audiences-JACGRBNN.js +0 -78
- package/dist/audiences-VEKGLWBG.js +0 -268
- package/dist/audit-5XH7WZIM.js +0 -151
- package/dist/audit-AD4ZZNJN.js +0 -88
- package/dist/autocomplete-7F3PZLEY.js +0 -111
- package/dist/avatars-N4SRNQI7.js +0 -38
- package/dist/bid-pricing-VYLVGU26.js +0 -99
- package/dist/brand-ASBS2HZM.js +0 -22
- package/dist/brief-JSZKDPGU.js +0 -477
- package/dist/brief-JSZKDPGU.js.map +0 -1
- package/dist/businesses-JBDQZZIG.js +0 -53
- package/dist/campaign-groups-ATE2DE4V.js +0 -95
- package/dist/campaign-writes-ETT57KLQ.js +0 -165
- package/dist/campaign-writes-SX52CJYW.js +0 -170
- package/dist/campaigns-FGBAS6AZ.js +0 -107
- package/dist/campaigns-J6VZBIV6.js +0 -109
- package/dist/campaigns-WBEG5QA4.js +0 -110
- package/dist/campaigns-X3DPCCSN.js +0 -76
- package/dist/canvas-K7IN7HLO.js +0 -46
- package/dist/canvas-K7IN7HLO.js.map +0 -1
- package/dist/capabilities-RDAERPYY.js +0 -144
- package/dist/cards-4477BFEV.js +0 -85
- package/dist/catalog-MENVHL5U.js +0 -65
- package/dist/catalog-MENVHL5U.js.map +0 -1
- package/dist/catalogs-G3YEVG6S.js +0 -128
- package/dist/changes-TP7ZZHB3.js +0 -135
- package/dist/chatgpt-QNUN63YS.js +0 -47
- package/dist/chats-YIAQGQ3X.js +0 -262
- package/dist/chunk-2GK33EJV.js +0 -382
- package/dist/chunk-2TK4DEOE.js +0 -74
- package/dist/chunk-35XWJEWH.js +0 -274
- package/dist/chunk-3CWL2LY4.js +0 -206
- package/dist/chunk-4NBVGARW.js +0 -1079
- package/dist/chunk-4NBVGARW.js.map +0 -1
- package/dist/chunk-4NDCTLI5.js +0 -191
- package/dist/chunk-5ARG3CQG.js +0 -141
- package/dist/chunk-5ARG3CQG.js.map +0 -1
- package/dist/chunk-5R5ADJ47.js +0 -2880
- package/dist/chunk-5R5ADJ47.js.map +0 -1
- package/dist/chunk-5Z2KSVIV.js +0 -67
- package/dist/chunk-65RIB7A6.js +0 -592
- package/dist/chunk-6B7VKFS4.js +0 -172
- package/dist/chunk-6DB2B3GF.js +0 -175
- package/dist/chunk-6G5K6ZC6.js +0 -46
- package/dist/chunk-75FDTDLH.js +0 -96
- package/dist/chunk-7OFNN4CT.js +0 -58
- package/dist/chunk-7SDFKGQ4.js +0 -363
- package/dist/chunk-ACANMASG.js +0 -19
- package/dist/chunk-ALTBBAYU.js +0 -96
- package/dist/chunk-ANCSKUWI.js +0 -433
- package/dist/chunk-AWMFUGVX.js +0 -160
- package/dist/chunk-BA7FDXQC.js +0 -197
- package/dist/chunk-BNCW67EM.js +0 -534
- package/dist/chunk-BNCW67EM.js.map +0 -1
- package/dist/chunk-BSC33FLJ.js +0 -217
- package/dist/chunk-BSC33FLJ.js.map +0 -1
- package/dist/chunk-C6U6UDHJ.js +0 -106
- package/dist/chunk-CHSNHVYF.js +0 -3182
- package/dist/chunk-CHSNHVYF.js.map +0 -1
- package/dist/chunk-CYEO5ZIO.js +0 -133
- package/dist/chunk-CYEO5ZIO.js.map +0 -1
- package/dist/chunk-DKGTQSLR.js +0 -310
- package/dist/chunk-DKGTQSLR.js.map +0 -1
- package/dist/chunk-DR34ZTWD.js +0 -207
- package/dist/chunk-E4MDJBLO.js +0 -163
- package/dist/chunk-E4MDJBLO.js.map +0 -1
- package/dist/chunk-EFSYTROP.js +0 -94
- package/dist/chunk-EH4C4CZK.js +0 -455
- package/dist/chunk-F2S5BLPE.js +0 -97
- package/dist/chunk-FXED3VZK.js +0 -174
- package/dist/chunk-G7UTTEBS.js +0 -337
- package/dist/chunk-GATKK4RJ.js +0 -440
- package/dist/chunk-GATKK4RJ.js.map +0 -1
- package/dist/chunk-GIJT3A5U.js +0 -166
- package/dist/chunk-GIJT3A5U.js.map +0 -1
- package/dist/chunk-GX6VAHY7.js +0 -830
- package/dist/chunk-GX6VAHY7.js.map +0 -1
- package/dist/chunk-H26L3OQY.js +0 -42
- package/dist/chunk-HIPDMQZ6.js +0 -136
- package/dist/chunk-HQSCJYZO.js +0 -26
- package/dist/chunk-HZ5DR5MX.js +0 -51
- package/dist/chunk-I4NEHDSD.js +0 -813
- package/dist/chunk-I4NEHDSD.js.map +0 -1
- package/dist/chunk-IFWP3ZDO.js +0 -215
- package/dist/chunk-IFWP3ZDO.js.map +0 -1
- package/dist/chunk-IM52NHGL.js +0 -390
- package/dist/chunk-IM52NHGL.js.map +0 -1
- package/dist/chunk-JERXV5A3.js +0 -26
- package/dist/chunk-JF47LEPU.js +0 -5163
- package/dist/chunk-JF47LEPU.js.map +0 -1
- package/dist/chunk-K3PN7TN5.js +0 -84
- package/dist/chunk-KBP7WJQB.js +0 -446
- package/dist/chunk-KBP7WJQB.js.map +0 -1
- package/dist/chunk-KLBTXETO.js +0 -23992
- package/dist/chunk-KLBTXETO.js.map +0 -1
- package/dist/chunk-KLNKEVIY.js +0 -136
- package/dist/chunk-KNWHUMVZ.js +0 -4381
- package/dist/chunk-KNWHUMVZ.js.map +0 -1
- package/dist/chunk-KNY76UGC.js +0 -84
- package/dist/chunk-KQTYTCKQ.js +0 -98
- package/dist/chunk-LERTEZST.js +0 -28
- package/dist/chunk-LERTEZST.js.map +0 -1
- package/dist/chunk-LIQ4SQ2T.js +0 -150
- package/dist/chunk-LS5MTRFI.js +0 -106
- package/dist/chunk-LW4VSTL5.js +0 -304
- package/dist/chunk-LW4VSTL5.js.map +0 -1
- package/dist/chunk-LZ73CZGP.js +0 -188
- package/dist/chunk-MADAAZZV.js +0 -169
- package/dist/chunk-MELOSESI.js +0 -20
- package/dist/chunk-MELOSESI.js.map +0 -1
- package/dist/chunk-MLU6STIN.js +0 -66
- package/dist/chunk-MZL4H5PY.js +0 -225
- package/dist/chunk-NAWWC5I3.js +0 -454
- package/dist/chunk-NAWWC5I3.js.map +0 -1
- package/dist/chunk-NDXBU22S.js +0 -6145
- package/dist/chunk-NDXBU22S.js.map +0 -1
- package/dist/chunk-NE4F3FHN.js +0 -1854
- package/dist/chunk-NE4F3FHN.js.map +0 -1
- package/dist/chunk-NU7JSWVA.js +0 -946
- package/dist/chunk-NU7JSWVA.js.map +0 -1
- package/dist/chunk-OTFHEHIU.js +0 -1706
- package/dist/chunk-OTFHEHIU.js.map +0 -1
- package/dist/chunk-PBA3YCZA.js +0 -76
- package/dist/chunk-PDTB5EX6.js +0 -57
- package/dist/chunk-PWGWMIIJ.js +0 -25
- package/dist/chunk-QSN5MZGS.js +0 -74
- package/dist/chunk-RPUSTYHL.js +0 -170
- package/dist/chunk-RX6F3GEA.js +0 -610
- package/dist/chunk-SB3GZFCV.js +0 -622
- package/dist/chunk-SB3GZFCV.js.map +0 -1
- package/dist/chunk-SSJK7FEV.js +0 -2886
- package/dist/chunk-SSJK7FEV.js.map +0 -1
- package/dist/chunk-STIB5DR5.js +0 -56
- package/dist/chunk-T3BDNJIX.js +0 -494
- package/dist/chunk-TD2P4HBP.js +0 -55
- package/dist/chunk-TEINLN64.js +0 -649
- package/dist/chunk-TEINLN64.js.map +0 -1
- package/dist/chunk-TIOQ7ZFQ.js +0 -496
- package/dist/chunk-TIOQ7ZFQ.js.map +0 -1
- package/dist/chunk-U3HAMW5W.js +0 -133
- package/dist/chunk-U6SYRIOB.js +0 -486
- package/dist/chunk-UC6BWM5J.js +0 -159
- package/dist/chunk-ULJ5RFOV.js +0 -76
- package/dist/chunk-ULJ5RFOV.js.map +0 -1
- package/dist/chunk-VAISMQQB.js +0 -346
- package/dist/chunk-VAJBWA2U.js +0 -75
- package/dist/chunk-VB6WJJR3.js +0 -1830
- package/dist/chunk-VDHQJ6HD.js +0 -23
- package/dist/chunk-VFIOJD5M.js +0 -309
- package/dist/chunk-VMDAXFRI.js +0 -111
- package/dist/chunk-VVZBBKRC.js +0 -296
- package/dist/chunk-W3B4BHQU.js +0 -31
- package/dist/chunk-W3B4BHQU.js.map +0 -1
- package/dist/chunk-W3ZHJJVT.js +0 -139
- package/dist/chunk-WNFIJAUO.js +0 -98
- package/dist/chunk-WS2GMOSG.js +0 -74
- package/dist/chunk-X7ZODEXJ.js +0 -36
- package/dist/chunk-X7ZODEXJ.js.map +0 -1
- package/dist/chunk-XBOK23HI.js +0 -214
- package/dist/chunk-XBOK23HI.js.map +0 -1
- package/dist/chunk-XCM6XWOB.js +0 -417
- package/dist/chunk-XCM6XWOB.js.map +0 -1
- package/dist/chunk-XL3BMSYG.js +0 -125
- package/dist/chunk-XMD4SHFI.js +0 -60
- package/dist/chunk-Y6QAJNKP.js +0 -1411
- package/dist/chunk-Y6QAJNKP.js.map +0 -1
- package/dist/chunk-YBMVHGY3.js +0 -333
- package/dist/chunk-YBP7O5P4.js +0 -103
- package/dist/chunk-YC2TQ3VC.js +0 -297
- package/dist/chunk-YPZYOJP6.js +0 -6664
- package/dist/chunk-YPZYOJP6.js.map +0 -1
- package/dist/chunk-ZJWUBJYQ.js +0 -204
- package/dist/chunk-ZJWUBJYQ.js.map +0 -1
- package/dist/chunk-ZPU3WDVK.js +0 -92
- package/dist/claim-V4F5GZJK.js +0 -197
- package/dist/client-VHN32ZRE.js +0 -19
- package/dist/code-YS6ZMGX3.js +0 -76
- package/dist/companies-NJGJ7XNN.js +0 -195
- package/dist/complete-MGNF5OAK.js +0 -81
- package/dist/config-CQN5FHMZ.js +0 -88
- package/dist/connect-PJOTRTT4.js +0 -36
- package/dist/content-3ZPP4SW2.js +0 -81
- package/dist/content-3ZPP4SW2.js.map +0 -1
- package/dist/conversation-4DM26FRD.js +0 -93
- package/dist/conversion-report-N4HANYOB.js +0 -125
- package/dist/conversion-upload-command-TZTHU2CD.js +0 -438
- package/dist/conversion-writes-LW4HQKK5.js +0 -120
- package/dist/conversions-JGECVZSY.js +0 -135
- package/dist/conversions-TS723AZV.js +0 -76
- package/dist/countries-ESAKTQAE.js +0 -82
- package/dist/create-DSGQFBI7.js +0 -207
- package/dist/create-I2KVDTCQ.js +0 -59
- package/dist/create-SBQWVLXG.js +0 -130
- package/dist/create-WOHPIGBK.js +0 -235
- package/dist/creatives-4JGVZQGC.js +0 -182
- package/dist/creatives-DWO5KEQC.js +0 -51
- package/dist/creatives-PSWCNY7U.js +0 -87
- package/dist/credentials-UULYCN2L.js +0 -1055
- package/dist/credentials-UULYCN2L.js.map +0 -1
- package/dist/critique-NGMZK5LX.js +0 -213
- package/dist/critique-TIZJ5GFM.js +0 -1449
- package/dist/crm-2WAR565U.js +0 -224
- package/dist/crm-VDXUO2YU.js +0 -318
- package/dist/crop-2J4RKJ6B.js +0 -113
- package/dist/currency-XCGKQ7FE.js +0 -88
- package/dist/custom-conversions-6P555U2K.js +0 -125
- package/dist/customers-ATENMXDO.js +0 -56
- package/dist/delete-3AV3ARMX.js +0 -71
- package/dist/delete-A5XD52K4.js +0 -69
- package/dist/delete-AVMZYNVT.js +0 -54
- package/dist/delete-H744GNS4.js +0 -63
- package/dist/delete-MRM2S4Z5.js +0 -71
- package/dist/delete-OEYPFATY.js +0 -66
- package/dist/demographics-M5LJF3RZ.js +0 -138
- package/dist/describe-6NVOWIBE.js +0 -97
- package/dist/describe-P3PPIQME.js +0 -97
- package/dist/dimensions-EYAYO27I.js +0 -101
- package/dist/discard-72I6SM7G.js +0 -66
- package/dist/discover-BJPZNXUQ.js +0 -172
- package/dist/domain-R4EIZD2W.js +0 -98
- package/dist/download-7T6HIJKD.js +0 -299
- package/dist/draft-34C3F5U4.js +0 -217
- package/dist/draft-BBFJNZ5X.js +0 -328
- package/dist/draft-BGUJDHXR.js +0 -103
- package/dist/draft-BV2QRPZ4.js +0 -107
- package/dist/draft-BV2QRPZ4.js.map +0 -1
- package/dist/draft-KIBMVKSR.js +0 -100
- package/dist/draft-THPZFASM.js +0 -281
- package/dist/draft-YDY2Q2K6.js +0 -233
- package/dist/draft-YYYRWF7M.js +0 -306
- package/dist/env-KIP2J2UB.js +0 -43
- package/dist/experiment-LKK77YAN.js +0 -1377
- package/dist/experiment-LKK77YAN.js.map +0 -1
- package/dist/export-JQRMBJ7D.js +0 -168
- package/dist/extract-7QKLME7Z.js +0 -113
- package/dist/facets-F2H52MS4.js +0 -114
- package/dist/favorites-NSGF4OV5.js +0 -178
- package/dist/feed-RV4KPPXM.js +0 -157
- package/dist/feed-RV4KPPXM.js.map +0 -1
- package/dist/feedback-IQKKT4MC.js +0 -66
- package/dist/feedback-record-UZV4Y7UD.js +0 -175
- package/dist/fetch-XF76JABV.js +0 -139
- package/dist/fetch-ZUAZPLAE.js +0 -176
- package/dist/find-OTDIX6V4.js +0 -134
- package/dist/fit-2CA4JH7N.js +0 -45
- package/dist/flows-CWXCXEUD.js +0 -244
- package/dist/flows-CWXCXEUD.js.map +0 -1
- package/dist/follow-FN7LV3WV.js +0 -82
- package/dist/follow-FN7LV3WV.js.map +0 -1
- package/dist/follow-competitors-MKXFHLXB.js +0 -131
- package/dist/follow-competitors-MKXFHLXB.js.map +0 -1
- package/dist/following-RKC2FLHI.js +0 -109
- package/dist/following-RKC2FLHI.js.map +0 -1
- package/dist/fonts-F2XUCIIW.js +0 -34
- package/dist/forecast-IDKJYM2B.js +0 -104
- package/dist/funding-NYO65IMT.js +0 -85
- package/dist/funnel-RLGQGYKO.js +0 -837
- package/dist/funnel-RLGQGYKO.js.map +0 -1
- package/dist/ga4-UDQ2HA2J.js +0 -55
- package/dist/generate-MMBYB44G.js +0 -262
- package/dist/get-3L6W3E3T.js +0 -59
- package/dist/get-6WEYKOY6.js +0 -63
- package/dist/get-C6UQ22HH.js +0 -54
- package/dist/get-C6UQ22HH.js.map +0 -1
- package/dist/get-EEUR6SAW.js +0 -78
- package/dist/get-EEUR6SAW.js.map +0 -1
- package/dist/get-P743RPSI.js +0 -63
- package/dist/get-XN5ZGDIK.js +0 -61
- package/dist/get-YIHTAMRT.js +0 -92
- package/dist/gif-53ULFVLR.js +0 -94
- package/dist/google-35GDU3G3.js +0 -1872
- package/dist/google-35GDU3G3.js.map +0 -1
- package/dist/google-KTO3PLEU.js +0 -136
- package/dist/google-ads-Q37I2D5P.js +0 -195
- package/dist/group-EFZ3AJIE.js +0 -43
- package/dist/group-GKWCCX66.js +0 -43
- package/dist/gsc-P3QYGDV2.js +0 -30
- package/dist/history-4II5QA4B.js +0 -133
- package/dist/history-DBIEYQHY.js +0 -67
- package/dist/hubspot-TTITJFBO.js +0 -779
- package/dist/icon-I43F77FV.js +0 -137
- package/dist/ideas-V4Q6JDKV.js +0 -32
- package/dist/images-SP5REF6E.js +0 -90
- package/dist/improve-BCCU5AS6.js +0 -86
- package/dist/ingest-574GIFAR.js +0 -107
- package/dist/ingest-IC4T76W6.js +0 -23
- package/dist/insights-NZWSJKU4.js +0 -423
- package/dist/insights-ZIU6FJMS.js +0 -122
- package/dist/inspect-ATHYY6A2.js +0 -189
- package/dist/inspiration-P265QJ2H.js +0 -53
- package/dist/intent-E3UIVZBN.js +0 -95
- package/dist/job-L7RJZMSG.js +0 -202
- package/dist/job-create-JUDAN52O.js +0 -109
- package/dist/job-status-U43WE3RJ.js +0 -74
- package/dist/keep-55CPC7DG.js +0 -78
- package/dist/keyword-gap-BG6M665A.js +0 -130
- package/dist/keyword-metrics-J4UPUDN7.js +0 -197
- package/dist/keywords-for-site-MWADFEO2.js +0 -128
- package/dist/landing-R6DN7XLK.js +0 -28
- package/dist/languages-HORKPDNH.js +0 -40
- package/dist/languages-JSGWCC7Z.js +0 -55
- package/dist/layerize-RPD6SNP6.js +0 -190
- package/dist/leads-7EVHMNUF.js +0 -293
- package/dist/leads-JM6HUERX.js +0 -90
- package/dist/learn-LGS2F5TR.js +0 -203
- package/dist/library-ARKRLCNJ.js +0 -109
- package/dist/lighthouse-6ZC45E53.js +0 -75
- package/dist/line-item-writes-KUYEXSIH.js +0 -208
- package/dist/line-items-GIWLP3FL.js +0 -103
- package/dist/link-PVM7XJQI.js +0 -64
- package/dist/linkedin-WX54EAX6.js +0 -1008
- package/dist/list-4ZKQZBCL.js +0 -151
- package/dist/list-7MVBXOJT.js +0 -51
- package/dist/list-A5UCIR2J.js +0 -65
- package/dist/list-AL7N6X2P.js +0 -50
- package/dist/list-LI4OGQFW.js +0 -57
- package/dist/list-MCEFXC6L.js +0 -63
- package/dist/list-P7NAFN6J.js +0 -76
- package/dist/list-WR7QYTON.js +0 -303
- package/dist/locations-74TPQWAT.js +0 -67
- package/dist/locations-J4G5RNPH.js +0 -40
- package/dist/log-U6IWZGOF.js +0 -92
- package/dist/logo-2IP663QO.js +0 -18
- package/dist/lookup-XK45W2SH.js +0 -22
- package/dist/make-RXFHEGUI.js +0 -593
- package/dist/make-RXFHEGUI.js.map +0 -1
- package/dist/map-TWL7T4KP.js +0 -404
- package/dist/map-TWL7T4KP.js.map +0 -1
- package/dist/mcp-HVAVJGGS.js +0 -476
- package/dist/mcp-HVAVJGGS.js.map +0 -1
- package/dist/media-6CQYG4UY.js +0 -89
- package/dist/media-M7E6V2XU.js +0 -15
- package/dist/media-sources-JWGO23BZ.js +0 -32
- package/dist/members-5FAW4YE7.js +0 -44
- package/dist/meta-EZ4SY25M.js +0 -69
- package/dist/metrics-SQDJ5NQO.js +0 -152
- package/dist/models-7U3GRYHF.js +0 -155
- package/dist/normalize-GW4GZNVY.js +0 -138
- package/dist/normalize-GW4GZNVY.js.map +0 -1
- package/dist/normalize-ICQF2AST.js +0 -806
- package/dist/options-NSUCENLU.js +0 -121
- package/dist/options-NSUCENLU.js.map +0 -1
- package/dist/output-RAH3TSIL.js +0 -24
- package/dist/page-GS3WLT2C.js +0 -105
- package/dist/pages-FXYQLHSJ.js +0 -66
- package/dist/performance-FGCDWHMC.js +0 -24
- package/dist/pinterest-AUH7WBA7.js +0 -96
- package/dist/pixels-45A55MOP.js +0 -60
- package/dist/pixels-ZFF4BGUH.js +0 -108
- package/dist/preview-AD4GKYIA.js +0 -169
- package/dist/promoted-tweet-writes-BPWTDESL.js +0 -180
- package/dist/promoted-tweets-OS3NHYVE.js +0 -119
- package/dist/properties-L2XIYQDS.js +0 -101
- package/dist/publish-SXZEWBVJ.js +0 -322
- package/dist/query-IEZRY6HV.js +0 -1341
- package/dist/query-IEZRY6HV.js.map +0 -1
- package/dist/query-SGGBCHTF.js +0 -236
- package/dist/query-VTGVZQIO.js +0 -247
- package/dist/read-LSF7DYTG.js +0 -140
- package/dist/read-LSF7DYTG.js.map +0 -1
- package/dist/reddit-TF6K37SB.js +0 -26
- package/dist/refresh-APVDWXRZ.js +0 -94
- package/dist/release-32SEJU4L.js +0 -60
- package/dist/relevant-pages-OWMNUCP7.js +0 -99
- package/dist/remove-6LGGKMLJ.js +0 -48
- package/dist/remove-U64GTHLQ.js +0 -50
- package/dist/reopen-5VS233SF.js +0 -63
- package/dist/rerun-7Z45QOOO.js +0 -85
- package/dist/rerun-7Z45QOOO.js.map +0 -1
- package/dist/research-O7CJV5IS.js +0 -62
- package/dist/research-QYSQ6LW4.js +0 -262
- package/dist/reset-22FC7BXQ.js +0 -54
- package/dist/reset-47B5VPT4.js +0 -54
- package/dist/resolve-7KQGVTQT.js +0 -121
- package/dist/retry-J5UVLS72.js +0 -62
- package/dist/retry-UJ5UF4BM.js +0 -60
- package/dist/retry-failed-6HXPUVXJ.js +0 -45
- package/dist/run-SI4FA32F.js +0 -65
- package/dist/run-TFLFBQU2.js +0 -60
- package/dist/scaffold-ad-SEXNE2K6.js +0 -1549
- package/dist/scaffold-ad-SEXNE2K6.js.map +0 -1
- package/dist/scaffold-static-ad-VBOL6CLN.js +0 -966
- package/dist/scaffold-static-ad-VBOL6CLN.js.map +0 -1
- package/dist/scaffold-video-Z37MIBDI.js +0 -873
- package/dist/scaffold-video-Z37MIBDI.js.map +0 -1
- package/dist/schedule-52ZM4KRQ.js +0 -61
- package/dist/schedule-O2K6M43V.js +0 -66
- package/dist/scheduled-agents-PCWCQAKP.js +0 -49
- package/dist/schema-6GR77VJG.js +0 -63
- package/dist/schema-FY6ORDXZ.js +0 -129
- package/dist/schema-FY6ORDXZ.js.map +0 -1
- package/dist/scrape-ETAMW43A.js +0 -2241
- package/dist/screenshot-YCQF25ZB.js +0 -102
- package/dist/search-742XSULP.js +0 -224
- package/dist/search-MEEM4D3W.js +0 -92
- package/dist/search-NS7XNRZC.js +0 -174
- package/dist/search-OQNGSMUH.js +0 -91
- package/dist/search-UO5KJTYS.js +0 -26
- package/dist/seeds-N6FF5S4T.js +0 -101
- package/dist/seeds-N6FF5S4T.js.map +0 -1
- package/dist/select-4XCYVV2G.js +0 -94
- package/dist/sends-WGJVQUMF.js +0 -309
- package/dist/sequences-OIPVR7JL.js +0 -146
- package/dist/set-prompt-TRJBYA3D.js +0 -186
- package/dist/set-prompt-TRJBYA3D.js.map +0 -1
- package/dist/setup-links-V3URI7DL.js +0 -141
- package/dist/shared-HJDFNID4.js +0 -31
- package/dist/site-WIQ7SSU3.js +0 -177
- package/dist/sitemaps-POPZJTAX.js +0 -87
- package/dist/sites-262H6LM4.js +0 -101
- package/dist/skills-6TQZLIMP.js +0 -47
- package/dist/sources-DWJXOLEH.js +0 -421
- package/dist/sources-DWJXOLEH.js.map +0 -1
- package/dist/sources-L453U5MT.js +0 -30
- package/dist/stale-6OVG6VME.js +0 -63
- package/dist/stats-NNXZMPZR.js +0 -34
- package/dist/status-WXWU54WR.js +0 -62
- package/dist/sticker-4KMBSMP5.js +0 -94
- package/dist/stock-2YCDN3N6.js +0 -179
- package/dist/studio-C5K3YX3P.js +0 -49
- package/dist/sync-CDZUTGV3.js +0 -54
- package/dist/sync-CF7FVUQJ.js +0 -54
- package/dist/sync-ZSNUBYPM.js +0 -265
- package/dist/sync-definition-BAJQUBE3.js +0 -53
- package/dist/tag-manager-DYZUOIAS.js +0 -43
- package/dist/tags-6RY23XOG.js +0 -20
- package/dist/tags-BHFQWNPL.js +0 -224
- package/dist/tags-SG3NVC3J.js +0 -26
- package/dist/tags-VN5HTL35.js +0 -20
- package/dist/tags-WR6PDIDR.js +0 -20
- package/dist/targeting-constants-XJ2VOW7K.js +0 -118
- package/dist/targeting-criteria-5EXP2NXF.js +0 -113
- package/dist/targets-WUVEJPSD.js +0 -102
- package/dist/templates-LOJQX2NG.js +0 -178
- package/dist/testimonials-6M5DXORT.js +0 -32
- package/dist/top-companies-E2OMMPSV.js +0 -108
- package/dist/translate-AW4CUKDA.js +0 -598
- package/dist/triggers-MRXIDCSN.js +0 -141
- package/dist/tweets-ATP3FQAC.js +0 -123
- package/dist/unfollow-CBVPGPF7.js +0 -46
- package/dist/unlink-HNL747YM.js +0 -67
- package/dist/unstage-4ZEULXEQ.js +0 -95
- package/dist/unstage-OL2JDCLK.js +0 -84
- package/dist/update-4KGIT4BF.js +0 -142
- package/dist/update-JPBUF7M2.js +0 -98
- package/dist/update-RTTC3SAK.js +0 -155
- package/dist/update-YNNRX5B2.js +0 -63
- package/dist/upload-L5SYZB3X.js +0 -150
- package/dist/upload-UIXPCSXJ.js +0 -126
- package/dist/upscale-YWRLFU22.js +0 -109
- package/dist/url-options-GGXAL3J4.js +0 -127
- package/dist/url-options-GGXAL3J4.js.map +0 -1
- package/dist/url-params-K47CE7Y5.js +0 -98
- package/dist/use-UT2DIZOG.js +0 -95
- package/dist/validate-TD2BY4VE.js +0 -89
- package/dist/validate-TD2BY4VE.js.map +0 -1
- package/dist/variant-FLZJYGYL.js +0 -338
- package/dist/videos-BP3BKNTY.js +0 -39
- package/dist/view-NPAG66QK.js +0 -121
- package/dist/viewer-check-HFRUJ4ZU.js +0 -69
- package/dist/web-RPSGFN4U.js +0 -140
- package/dist/winners-I5BMATJZ.js +0 -79
- package/dist/winners-I5BMATJZ.js.map +0 -1
- package/dist/winning-ads-WUENRDVJ.js +0 -62
- package/dist/winning-ads-WUENRDVJ.js.map +0 -1
- package/dist/write-commands-4WARNR2T.js +0 -1015
- package/dist/write-commands-ERKVRHTC.js +0 -206
- package/dist/write-commands-TAYGTJEZ.js +0 -737
- package/dist/write-commands-WTRSOSO3.js +0 -713
- package/dist/x-VZCELH3P.js +0 -47
- /package/dist/{account-2ZMZFPIU.js.map → account-JG7QD522.js.map} +0 -0
- /package/dist/{account-F6MHQ64I.js.map → account-V6PB6PA5.js.map} +0 -0
- /package/dist/{account-IEVEOFIK.js.map → account-VLPX7EZT.js.map} +0 -0
- /package/dist/{account-writes-ISE4U2FQ.js.map → account-writes-BGREY7ZL.js.map} +0 -0
- /package/dist/{accounts-KYJO3JC6.js.map → accounts-2FINK5GZ.js.map} +0 -0
- /package/dist/{accounts-4CDRK4S4.js.map → accounts-2UV5Z3Y6.js.map} +0 -0
- /package/dist/{accounts-VINHZRWA.js.map → accounts-3EX2PFJB.js.map} +0 -0
- /package/dist/{accounts-5QDKBZMH.js.map → accounts-G2QT3ZVP.js.map} +0 -0
- /package/dist/{accounts-RHGN5WMU.js.map → accounts-N63J5YTK.js.map} +0 -0
- /package/dist/{actions-5F4ZP6M4.js.map → actions-PA2BPIYO.js.map} +0 -0
- /package/dist/{active-entities-YUSOUR5M.js.map → active-entities-RDXDSMA2.js.map} +0 -0
- /package/dist/{activities-ZVQOBHZH.js.map → activities-RBTU2Q24.js.map} +0 -0
- /package/dist/{ad-group-writes-UU5NNKSO.js.map → ad-group-writes-5NTRJTVE.js.map} +0 -0
- /package/dist/{ad-groups-CGFXZNIA.js.map → ad-groups-4OTAKWUC.js.map} +0 -0
- /package/dist/{ad-writes-NALDYWOR.js.map → ad-writes-T7W3DDKK.js.map} +0 -0
- /package/dist/{add-CUWAW7KG.js.map → add-4VKA4NDH.js.map} +0 -0
- /package/dist/{add-577QWMCF.js.map → add-MQO33HL3.js.map} +0 -0
- /package/dist/{add-KBPMSK2P.js.map → add-QM7ANAVG.js.map} +0 -0
- /package/dist/{ads-H7GH7A26.js.map → ads-IJCFN2N3.js.map} +0 -0
- /package/dist/{ads-56OWZBXZ.js.map → ads-QKMLAPZC.js.map} +0 -0
- /package/dist/{ads-PV7GZXPR.js.map → ads-XYAWONXR.js.map} +0 -0
- /package/dist/{adsets-H7QT42U6.js.map → adsets-DPTIKGTG.js.map} +0 -0
- /package/dist/{advertisers-PM4WPG4N.js.map → advertisers-SZFDOPBQ.js.map} +0 -0
- /package/dist/{analytics-5FALU2GL.js.map → analytics-HFBYIPZ7.js.map} +0 -0
- /package/dist/{animate-FWWHSYPL.js.map → animate-LUKNHCF4.js.map} +0 -0
- /package/dist/{assign-KLYZ6USE.js.map → assign-QCICUD72.js.map} +0 -0
- /package/dist/{audience-size-JHB42DB4.js.map → audience-size-HML4BLHJ.js.map} +0 -0
- /package/dist/{audiences-VEKGLWBG.js.map → audiences-BSABKS5K.js.map} +0 -0
- /package/dist/{audiences-JACGRBNN.js.map → audiences-FWOOSUSJ.js.map} +0 -0
- /package/dist/{audiences-HFRVIE2X.js.map → audiences-VK4M7GLQ.js.map} +0 -0
- /package/dist/{audit-5XH7WZIM.js.map → audit-DUM55J5U.js.map} +0 -0
- /package/dist/{audit-AD4ZZNJN.js.map → audit-JR5R75XK.js.map} +0 -0
- /package/dist/{autocomplete-7F3PZLEY.js.map → autocomplete-VX4PMMLR.js.map} +0 -0
- /package/dist/{avatars-N4SRNQI7.js.map → avatars-5KCRSUJ3.js.map} +0 -0
- /package/dist/{bid-pricing-VYLVGU26.js.map → bid-pricing-AIUACXUH.js.map} +0 -0
- /package/dist/{brand-ASBS2HZM.js.map → brand-UBTC2WXR.js.map} +0 -0
- /package/dist/{businesses-JBDQZZIG.js.map → businesses-P3RX4UXS.js.map} +0 -0
- /package/dist/{campaign-groups-ATE2DE4V.js.map → campaign-groups-SJZEDIBL.js.map} +0 -0
- /package/dist/{campaign-writes-SX52CJYW.js.map → campaign-writes-5BPVXG4C.js.map} +0 -0
- /package/dist/{campaign-writes-ETT57KLQ.js.map → campaign-writes-VE6QLIDA.js.map} +0 -0
- /package/dist/{campaigns-J6VZBIV6.js.map → campaigns-JEWEDCTC.js.map} +0 -0
- /package/dist/{campaigns-WBEG5QA4.js.map → campaigns-MEIMSHJF.js.map} +0 -0
- /package/dist/{campaigns-FGBAS6AZ.js.map → campaigns-NCGJNJKS.js.map} +0 -0
- /package/dist/{campaigns-X3DPCCSN.js.map → campaigns-XY7QWHDN.js.map} +0 -0
- /package/dist/{capabilities-RDAERPYY.js.map → capabilities-W6SPXOPF.js.map} +0 -0
- /package/dist/{cards-4477BFEV.js.map → cards-CLD4WX6G.js.map} +0 -0
- /package/dist/{catalogs-G3YEVG6S.js.map → catalogs-DINPKQXY.js.map} +0 -0
- /package/dist/{changes-TP7ZZHB3.js.map → changes-N2YZXAPF.js.map} +0 -0
- /package/dist/{chatgpt-QNUN63YS.js.map → chatgpt-TPAP6BVY.js.map} +0 -0
- /package/dist/{chats-YIAQGQ3X.js.map → chats-FKVVBXVF.js.map} +0 -0
- /package/dist/{chunk-YBP7O5P4.js.map → chunk-24IQ6K7K.js.map} +0 -0
- /package/dist/{chunk-YC2TQ3VC.js.map → chunk-2FZG5DD2.js.map} +0 -0
- /package/dist/{chunk-7SDFKGQ4.js.map → chunk-2T3EH2MU.js.map} +0 -0
- /package/dist/{chunk-FXED3VZK.js.map → chunk-2Y5UE2CV.js.map} +0 -0
- /package/dist/{chunk-VB6WJJR3.js.map → chunk-3KPQDXIU.js.map} +0 -0
- /package/dist/{chunk-6G5K6ZC6.js.map → chunk-4AFGT3L3.js.map} +0 -0
- /package/dist/{chunk-MZL4H5PY.js.map → chunk-4JKBMKFC.js.map} +0 -0
- /package/dist/{chunk-RX6F3GEA.js.map → chunk-4KBWL7S4.js.map} +0 -0
- /package/dist/{chunk-KLNKEVIY.js.map → chunk-4R3QKEDV.js.map} +0 -0
- /package/dist/{chunk-VFIOJD5M.js.map → chunk-6SL6463H.js.map} +0 -0
- /package/dist/{chunk-HZ5DR5MX.js.map → chunk-7TRSFEHZ.js.map} +0 -0
- /package/dist/{chunk-4NDCTLI5.js.map → chunk-APNV7FMK.js.map} +0 -0
- /package/dist/{chunk-PBA3YCZA.js.map → chunk-BCSOWRQL.js.map} +0 -0
- /package/dist/{chunk-VVZBBKRC.js.map → chunk-BJEW3LST.js.map} +0 -0
- /package/dist/{chunk-LS5MTRFI.js.map → chunk-BYKUAX26.js.map} +0 -0
- /package/dist/{chunk-MADAAZZV.js.map → chunk-C7NPNSFO.js.map} +0 -0
- /package/dist/{chunk-EFSYTROP.js.map → chunk-CVIMIOPO.js.map} +0 -0
- /package/dist/{chunk-WS2GMOSG.js.map → chunk-DAKIMGUS.js.map} +0 -0
- /package/dist/{chunk-PWGWMIIJ.js.map → chunk-DCRUGS3G.js.map} +0 -0
- /package/dist/{chunk-C6U6UDHJ.js.map → chunk-DMA77LLI.js.map} +0 -0
- /package/dist/{chunk-JERXV5A3.js.map → chunk-EESOZY5S.js.map} +0 -0
- /package/dist/{chunk-6DB2B3GF.js.map → chunk-EIZMOICE.js.map} +0 -0
- /package/dist/{chunk-HIPDMQZ6.js.map → chunk-F3IVR3V3.js.map} +0 -0
- /package/dist/{chunk-LZ73CZGP.js.map → chunk-FSX6CQ2Z.js.map} +0 -0
- /package/dist/{chunk-STIB5DR5.js.map → chunk-G7LAQE56.js.map} +0 -0
- /package/dist/{chunk-MLU6STIN.js.map → chunk-G7QKXFQ2.js.map} +0 -0
- /package/dist/{chunk-VDHQJ6HD.js.map → chunk-G7XY4T6K.js.map} +0 -0
- /package/dist/{chunk-VAISMQQB.js.map → chunk-HCDCWXSU.js.map} +0 -0
- /package/dist/{chunk-G7UTTEBS.js.map → chunk-I4IVUAQN.js.map} +0 -0
- /package/dist/{chunk-2TK4DEOE.js.map → chunk-IWNZCYWI.js.map} +0 -0
- /package/dist/{chunk-K3PN7TN5.js.map → chunk-JF5LNI6O.js.map} +0 -0
- /package/dist/{chunk-ALTBBAYU.js.map → chunk-JJZBZYNK.js.map} +0 -0
- /package/dist/{chunk-WNFIJAUO.js.map → chunk-JZP5IODJ.js.map} +0 -0
- /package/dist/{chunk-EH4C4CZK.js.map → chunk-KWMYTVHI.js.map} +0 -0
- /package/dist/{chunk-VAJBWA2U.js.map → chunk-LFGCOAB4.js.map} +0 -0
- /package/dist/{chunk-6B7VKFS4.js.map → chunk-LPRUP3ZX.js.map} +0 -0
- /package/dist/{chunk-KNY76UGC.js.map → chunk-MD3VH5UG.js.map} +0 -0
- /package/dist/{chunk-ACANMASG.js.map → chunk-MFORE6F4.js.map} +0 -0
- /package/dist/{chunk-AWMFUGVX.js.map → chunk-MMBHCAON.js.map} +0 -0
- /package/dist/{chunk-XL3BMSYG.js.map → chunk-NIGGMK7L.js.map} +0 -0
- /package/dist/{chunk-ANCSKUWI.js.map → chunk-NN7A2ILR.js.map} +0 -0
- /package/dist/{chunk-UC6BWM5J.js.map → chunk-OUQMJRH6.js.map} +0 -0
- /package/dist/{chunk-T3BDNJIX.js.map → chunk-OXKUWTFL.js.map} +0 -0
- /package/dist/{chunk-HQSCJYZO.js.map → chunk-P5T7OZKV.js.map} +0 -0
- /package/dist/{chunk-RPUSTYHL.js.map → chunk-PAJJXZ3Z.js.map} +0 -0
- /package/dist/{chunk-QSN5MZGS.js.map → chunk-PC56KVAD.js.map} +0 -0
- /package/dist/{chunk-3CWL2LY4.js.map → chunk-PEWNEPDR.js.map} +0 -0
- /package/dist/{chunk-W3ZHJJVT.js.map → chunk-Q2T4XZG4.js.map} +0 -0
- /package/dist/{chunk-35XWJEWH.js.map → chunk-RCR6RVYE.js.map} +0 -0
- /package/dist/{chunk-VMDAXFRI.js.map → chunk-RH2H5PBV.js.map} +0 -0
- /package/dist/{chunk-PDTB5EX6.js.map → chunk-S3XM4LD3.js.map} +0 -0
- /package/dist/{chunk-75FDTDLH.js.map → chunk-SFHL3KWY.js.map} +0 -0
- /package/dist/{chunk-LIQ4SQ2T.js.map → chunk-SQ7DRYCC.js.map} +0 -0
- /package/dist/{chunk-YBMVHGY3.js.map → chunk-SSVZM3P6.js.map} +0 -0
- /package/dist/{chunk-XMD4SHFI.js.map → chunk-TMNLIA7R.js.map} +0 -0
- /package/dist/{chunk-ZPU3WDVK.js.map → chunk-UF55TADX.js.map} +0 -0
- /package/dist/{chunk-TD2P4HBP.js.map → chunk-UGI33KTO.js.map} +0 -0
- /package/dist/{chunk-BA7FDXQC.js.map → chunk-UK2OTLT3.js.map} +0 -0
- /package/dist/{chunk-DR34ZTWD.js.map → chunk-UU3FGKUW.js.map} +0 -0
- /package/dist/{chunk-5Z2KSVIV.js.map → chunk-UX7HIGS7.js.map} +0 -0
- /package/dist/{chunk-KQTYTCKQ.js.map → chunk-VDZIGI2C.js.map} +0 -0
- /package/dist/{chunk-U6SYRIOB.js.map → chunk-VKVIBQP3.js.map} +0 -0
- /package/dist/{chunk-65RIB7A6.js.map → chunk-VLF2M4GZ.js.map} +0 -0
- /package/dist/{chunk-7OFNN4CT.js.map → chunk-VTF7XNOP.js.map} +0 -0
- /package/dist/{chunk-2GK33EJV.js.map → chunk-WDA3L4NF.js.map} +0 -0
- /package/dist/{chunk-H26L3OQY.js.map → chunk-XDV6Q33B.js.map} +0 -0
- /package/dist/{chunk-U3HAMW5W.js.map → chunk-XYC26BDM.js.map} +0 -0
- /package/dist/{chunk-F2S5BLPE.js.map → chunk-YTWNY3RF.js.map} +0 -0
- /package/dist/{claim-V4F5GZJK.js.map → claim-JLVISHS4.js.map} +0 -0
- /package/dist/{client-VHN32ZRE.js.map → client-G6DGRGKT.js.map} +0 -0
- /package/dist/{code-YS6ZMGX3.js.map → code-AYN42EK7.js.map} +0 -0
- /package/dist/{companies-NJGJ7XNN.js.map → companies-XDMOP2GL.js.map} +0 -0
- /package/dist/{complete-MGNF5OAK.js.map → complete-XM7VLC4F.js.map} +0 -0
- /package/dist/{config-CQN5FHMZ.js.map → config-UE7GCROG.js.map} +0 -0
- /package/dist/{connect-PJOTRTT4.js.map → connect-VTDKGYP3.js.map} +0 -0
- /package/dist/{conversation-4DM26FRD.js.map → conversation-F53OE25Y.js.map} +0 -0
- /package/dist/{conversion-report-N4HANYOB.js.map → conversion-report-35MLL3FA.js.map} +0 -0
- /package/dist/{conversion-upload-command-TZTHU2CD.js.map → conversion-upload-command-CV2TA7OV.js.map} +0 -0
- /package/dist/{conversion-writes-LW4HQKK5.js.map → conversion-writes-NSZPNMPE.js.map} +0 -0
- /package/dist/{conversions-JGECVZSY.js.map → conversions-7YO6DDL3.js.map} +0 -0
- /package/dist/{conversions-TS723AZV.js.map → conversions-XNISCCC2.js.map} +0 -0
- /package/dist/{countries-ESAKTQAE.js.map → countries-NMWPKFFW.js.map} +0 -0
- /package/dist/{create-I2KVDTCQ.js.map → create-ARERZYCL.js.map} +0 -0
- /package/dist/{create-DSGQFBI7.js.map → create-C6ZVYIF5.js.map} +0 -0
- /package/dist/{create-WOHPIGBK.js.map → create-FAPJFCZE.js.map} +0 -0
- /package/dist/{create-SBQWVLXG.js.map → create-M7TUO3XS.js.map} +0 -0
- /package/dist/{creatives-4JGVZQGC.js.map → creatives-3YIV6IOK.js.map} +0 -0
- /package/dist/{creatives-DWO5KEQC.js.map → creatives-QZCO6WGH.js.map} +0 -0
- /package/dist/{creatives-PSWCNY7U.js.map → creatives-WJLJ3NKP.js.map} +0 -0
- /package/dist/{critique-TIZJ5GFM.js.map → critique-56MNXW7R.js.map} +0 -0
- /package/dist/{critique-NGMZK5LX.js.map → critique-KRIKEHF6.js.map} +0 -0
- /package/dist/{crm-2WAR565U.js.map → crm-OETFQNR3.js.map} +0 -0
- /package/dist/{crm-VDXUO2YU.js.map → crm-WXCFB4TU.js.map} +0 -0
- /package/dist/{crop-2J4RKJ6B.js.map → crop-VCP2JLQL.js.map} +0 -0
- /package/dist/{currency-XCGKQ7FE.js.map → currency-MNNDKY4Z.js.map} +0 -0
- /package/dist/{custom-conversions-6P555U2K.js.map → custom-conversions-CIU525HM.js.map} +0 -0
- /package/dist/{customers-ATENMXDO.js.map → customers-GTPEABJI.js.map} +0 -0
- /package/dist/{delete-3AV3ARMX.js.map → delete-5CURRI25.js.map} +0 -0
- /package/dist/{delete-H744GNS4.js.map → delete-CLC2Q2OE.js.map} +0 -0
- /package/dist/{delete-AVMZYNVT.js.map → delete-CQ6Q3URI.js.map} +0 -0
- /package/dist/{delete-A5XD52K4.js.map → delete-JIRZBBDD.js.map} +0 -0
- /package/dist/{delete-OEYPFATY.js.map → delete-LD3F4UIW.js.map} +0 -0
- /package/dist/{delete-MRM2S4Z5.js.map → delete-LGZ5OI4C.js.map} +0 -0
- /package/dist/{demographics-M5LJF3RZ.js.map → demographics-EK2ZPHWK.js.map} +0 -0
- /package/dist/{describe-6NVOWIBE.js.map → describe-BNB6643C.js.map} +0 -0
- /package/dist/{describe-P3PPIQME.js.map → describe-ZXGFTCDR.js.map} +0 -0
- /package/dist/{dimensions-EYAYO27I.js.map → dimensions-IU4ETG4U.js.map} +0 -0
- /package/dist/{discard-72I6SM7G.js.map → discard-VWCXYJWU.js.map} +0 -0
- /package/dist/{discover-BJPZNXUQ.js.map → discover-4EQWGIAN.js.map} +0 -0
- /package/dist/{domain-R4EIZD2W.js.map → domain-I2SAGVAB.js.map} +0 -0
- /package/dist/{download-7T6HIJKD.js.map → download-D7TB4744.js.map} +0 -0
- /package/dist/{draft-YDY2Q2K6.js.map → draft-4VOOSJQJ.js.map} +0 -0
- /package/dist/{draft-BBFJNZ5X.js.map → draft-6KG2YFOY.js.map} +0 -0
- /package/dist/{draft-YYYRWF7M.js.map → draft-APDGACIC.js.map} +0 -0
- /package/dist/{draft-BGUJDHXR.js.map → draft-D76C4JR3.js.map} +0 -0
- /package/dist/{draft-THPZFASM.js.map → draft-HFH2Y6F5.js.map} +0 -0
- /package/dist/{draft-34C3F5U4.js.map → draft-NVVWWQVC.js.map} +0 -0
- /package/dist/{draft-KIBMVKSR.js.map → draft-NWLPLTWM.js.map} +0 -0
- /package/dist/{env-KIP2J2UB.js.map → env-LHLGM2YJ.js.map} +0 -0
- /package/dist/{export-JQRMBJ7D.js.map → export-VGCFD7GL.js.map} +0 -0
- /package/dist/{extract-7QKLME7Z.js.map → extract-32J7V2RX.js.map} +0 -0
- /package/dist/{facets-F2H52MS4.js.map → facets-WVI6VBDC.js.map} +0 -0
- /package/dist/{favorites-NSGF4OV5.js.map → favorites-WKV5H5OF.js.map} +0 -0
- /package/dist/{feedback-IQKKT4MC.js.map → feedback-NMNKYEMU.js.map} +0 -0
- /package/dist/{feedback-record-UZV4Y7UD.js.map → feedback-record-2VYBMWMO.js.map} +0 -0
- /package/dist/{fetch-ZUAZPLAE.js.map → fetch-CENBDLT6.js.map} +0 -0
- /package/dist/{fetch-XF76JABV.js.map → fetch-XQFPE3MI.js.map} +0 -0
- /package/dist/{find-OTDIX6V4.js.map → find-PNDKEOXT.js.map} +0 -0
- /package/dist/{fit-2CA4JH7N.js.map → fit-SEWGCEW5.js.map} +0 -0
- /package/dist/{fonts-F2XUCIIW.js.map → fonts-KUCQAR7N.js.map} +0 -0
- /package/dist/{forecast-IDKJYM2B.js.map → forecast-PI52G2GL.js.map} +0 -0
- /package/dist/{funding-NYO65IMT.js.map → funding-ZRC25X5I.js.map} +0 -0
- /package/dist/{ga4-UDQ2HA2J.js.map → ga4-YDKXVJOC.js.map} +0 -0
- /package/dist/{generate-MMBYB44G.js.map → generate-BVMMX3SS.js.map} +0 -0
- /package/dist/{get-3L6W3E3T.js.map → get-7MSF4RVQ.js.map} +0 -0
- /package/dist/{get-XN5ZGDIK.js.map → get-KFVPIDIA.js.map} +0 -0
- /package/dist/{get-6WEYKOY6.js.map → get-NHQ2XYKZ.js.map} +0 -0
- /package/dist/{get-YIHTAMRT.js.map → get-UMMTY74K.js.map} +0 -0
- /package/dist/{get-P743RPSI.js.map → get-YM77HCL5.js.map} +0 -0
- /package/dist/{gif-53ULFVLR.js.map → gif-X323HXS2.js.map} +0 -0
- /package/dist/{google-KTO3PLEU.js.map → google-76A4MHQH.js.map} +0 -0
- /package/dist/{google-ads-Q37I2D5P.js.map → google-ads-S6O4MLKA.js.map} +0 -0
- /package/dist/{group-GKWCCX66.js.map → group-CTIZVYX2.js.map} +0 -0
- /package/dist/{group-EFZ3AJIE.js.map → group-HKWQ75CJ.js.map} +0 -0
- /package/dist/{gsc-P3QYGDV2.js.map → gsc-CORRYJBJ.js.map} +0 -0
- /package/dist/{history-4II5QA4B.js.map → history-4U7FJGEM.js.map} +0 -0
- /package/dist/{history-DBIEYQHY.js.map → history-BXOMJ5PL.js.map} +0 -0
- /package/dist/{hubspot-TTITJFBO.js.map → hubspot-I5MFAZ4G.js.map} +0 -0
- /package/dist/{icon-I43F77FV.js.map → icon-6QW63AHG.js.map} +0 -0
- /package/dist/{ideas-V4Q6JDKV.js.map → ideas-QDS5XA4S.js.map} +0 -0
- /package/dist/{images-SP5REF6E.js.map → images-NVTA2OHD.js.map} +0 -0
- /package/dist/{improve-BCCU5AS6.js.map → improve-WR23CHYH.js.map} +0 -0
- /package/dist/{ingest-574GIFAR.js.map → ingest-QAVJ2J7F.js.map} +0 -0
- /package/dist/{ingest-IC4T76W6.js.map → ingest-XJHV3GG6.js.map} +0 -0
- /package/dist/{insights-ZIU6FJMS.js.map → insights-AW7SOGHI.js.map} +0 -0
- /package/dist/{insights-NZWSJKU4.js.map → insights-IJEPLWQH.js.map} +0 -0
- /package/dist/{inspect-ATHYY6A2.js.map → inspect-7I53PWCF.js.map} +0 -0
- /package/dist/{inspiration-P265QJ2H.js.map → inspiration-TJJFUVY2.js.map} +0 -0
- /package/dist/{intent-E3UIVZBN.js.map → intent-VEUQS34Z.js.map} +0 -0
- /package/dist/{job-L7RJZMSG.js.map → job-K7LAIBYN.js.map} +0 -0
- /package/dist/{job-create-JUDAN52O.js.map → job-create-DFZL4CGA.js.map} +0 -0
- /package/dist/{job-status-U43WE3RJ.js.map → job-status-6Q2TVTEO.js.map} +0 -0
- /package/dist/{keep-55CPC7DG.js.map → keep-XJFCLVCP.js.map} +0 -0
- /package/dist/{keyword-gap-BG6M665A.js.map → keyword-gap-CUOGKUMM.js.map} +0 -0
- /package/dist/{keyword-metrics-J4UPUDN7.js.map → keyword-metrics-LK7FME4N.js.map} +0 -0
- /package/dist/{keywords-for-site-MWADFEO2.js.map → keywords-for-site-4E7UU44P.js.map} +0 -0
- /package/dist/{landing-R6DN7XLK.js.map → landing-I65PFN7H.js.map} +0 -0
- /package/dist/{languages-HORKPDNH.js.map → languages-KPPKX3E2.js.map} +0 -0
- /package/dist/{languages-JSGWCC7Z.js.map → languages-MGEBLO64.js.map} +0 -0
- /package/dist/{logo-2IP663QO.js.map → launches-E3Y6NCQE.js.map} +0 -0
- /package/dist/{layerize-RPD6SNP6.js.map → layerize-N4IQ2KE7.js.map} +0 -0
- /package/dist/{leads-7EVHMNUF.js.map → leads-PPMOBH7U.js.map} +0 -0
- /package/dist/{leads-JM6HUERX.js.map → leads-TNEQUOUN.js.map} +0 -0
- /package/dist/{learn-LGS2F5TR.js.map → learn-QQS323PS.js.map} +0 -0
- /package/dist/{library-ARKRLCNJ.js.map → library-4QQAVB6X.js.map} +0 -0
- /package/dist/{lighthouse-6ZC45E53.js.map → lighthouse-CD47CPJM.js.map} +0 -0
- /package/dist/{line-item-writes-KUYEXSIH.js.map → line-item-writes-QJZQUQ4E.js.map} +0 -0
- /package/dist/{line-items-GIWLP3FL.js.map → line-items-ESEAXGBV.js.map} +0 -0
- /package/dist/{link-PVM7XJQI.js.map → link-DPJYS4WY.js.map} +0 -0
- /package/dist/{linkedin-WX54EAX6.js.map → linkedin-EJPNC4VY.js.map} +0 -0
- /package/dist/{list-P7NAFN6J.js.map → list-A45NTPSJ.js.map} +0 -0
- /package/dist/{list-7MVBXOJT.js.map → list-GNP4GIV2.js.map} +0 -0
- /package/dist/{list-LI4OGQFW.js.map → list-KQFLOVC4.js.map} +0 -0
- /package/dist/{list-AL7N6X2P.js.map → list-MDHK3ENJ.js.map} +0 -0
- /package/dist/{list-A5UCIR2J.js.map → list-PRUFXMXW.js.map} +0 -0
- /package/dist/{list-WR7QYTON.js.map → list-S3BAQCTL.js.map} +0 -0
- /package/dist/{list-4ZKQZBCL.js.map → list-UU5NPLJ7.js.map} +0 -0
- /package/dist/{list-MCEFXC6L.js.map → list-V525A4Z4.js.map} +0 -0
- /package/dist/{locations-74TPQWAT.js.map → locations-J2PVPDZU.js.map} +0 -0
- /package/dist/{locations-J4G5RNPH.js.map → locations-TFOYESTF.js.map} +0 -0
- /package/dist/{log-U6IWZGOF.js.map → log-XQBEJOOW.js.map} +0 -0
- /package/dist/{lookup-XK45W2SH.js.map → logo-KQD5KUAH.js.map} +0 -0
- /package/dist/{output-RAH3TSIL.js.map → lookup-QCREWUV4.js.map} +0 -0
- /package/dist/{media-M7E6V2XU.js.map → media-2WENMOAA.js.map} +0 -0
- /package/dist/{media-6CQYG4UY.js.map → media-N4C6Q4IV.js.map} +0 -0
- /package/dist/{media-sources-JWGO23BZ.js.map → media-sources-BPOTW6IB.js.map} +0 -0
- /package/dist/{members-5FAW4YE7.js.map → members-BOYZKLNK.js.map} +0 -0
- /package/dist/{meta-EZ4SY25M.js.map → meta-PXYHWOOG.js.map} +0 -0
- /package/dist/{metrics-SQDJ5NQO.js.map → metrics-FZANUN7E.js.map} +0 -0
- /package/dist/{models-7U3GRYHF.js.map → models-W6EN3WB7.js.map} +0 -0
- /package/dist/{normalize-ICQF2AST.js.map → normalize-LOMDPNFJ.js.map} +0 -0
- /package/dist/{performance-FGCDWHMC.js.map → output-SR4DN3A4.js.map} +0 -0
- /package/dist/{page-GS3WLT2C.js.map → page-FS76L5WU.js.map} +0 -0
- /package/dist/{pages-FXYQLHSJ.js.map → pages-INMNJSX2.js.map} +0 -0
- /package/dist/{reddit-TF6K37SB.js.map → performance-53D43XVZ.js.map} +0 -0
- /package/dist/{pinterest-AUH7WBA7.js.map → pinterest-JMHFPNVW.js.map} +0 -0
- /package/dist/{pixels-45A55MOP.js.map → pixels-K6ZD7SXV.js.map} +0 -0
- /package/dist/{pixels-ZFF4BGUH.js.map → pixels-XPBBJYE3.js.map} +0 -0
- /package/dist/{preview-AD4GKYIA.js.map → preview-KXSNG3BS.js.map} +0 -0
- /package/dist/{promoted-tweet-writes-BPWTDESL.js.map → promoted-tweet-writes-I6HVQRDB.js.map} +0 -0
- /package/dist/{promoted-tweets-OS3NHYVE.js.map → promoted-tweets-YAQ5ZUXI.js.map} +0 -0
- /package/dist/{properties-L2XIYQDS.js.map → properties-NYNEONHI.js.map} +0 -0
- /package/dist/{publish-SXZEWBVJ.js.map → publish-Z5DVKZSG.js.map} +0 -0
- /package/dist/{run-TFLFBQU2.js.map → query-MSZPOHFL.js.map} +0 -0
- /package/dist/{query-SGGBCHTF.js.map → query-RK2TFMBI.js.map} +0 -0
- /package/dist/{query-VTGVZQIO.js.map → query-TWNH6GV7.js.map} +0 -0
- /package/dist/{search-UO5KJTYS.js.map → reddit-6DQTBTO6.js.map} +0 -0
- /package/dist/{refresh-APVDWXRZ.js.map → refresh-TP2TOGS6.js.map} +0 -0
- /package/dist/{release-32SEJU4L.js.map → release-PHQEZ2ZX.js.map} +0 -0
- /package/dist/{relevant-pages-OWMNUCP7.js.map → relevant-pages-ORVFFVAM.js.map} +0 -0
- /package/dist/{remove-6LGGKMLJ.js.map → remove-ETLMMDEA.js.map} +0 -0
- /package/dist/{remove-U64GTHLQ.js.map → remove-KTBM5YSH.js.map} +0 -0
- /package/dist/{reopen-5VS233SF.js.map → reopen-OURQR6U7.js.map} +0 -0
- /package/dist/{research-O7CJV5IS.js.map → research-P23YBKS3.js.map} +0 -0
- /package/dist/{research-QYSQ6LW4.js.map → research-WCNWT5Y5.js.map} +0 -0
- /package/dist/{reset-47B5VPT4.js.map → reset-2NCAWWN4.js.map} +0 -0
- /package/dist/{reset-22FC7BXQ.js.map → reset-65R2CUB5.js.map} +0 -0
- /package/dist/{resolve-7KQGVTQT.js.map → resolve-65FKZ23N.js.map} +0 -0
- /package/dist/{retry-UJ5UF4BM.js.map → retry-P5K6LE6K.js.map} +0 -0
- /package/dist/{retry-J5UVLS72.js.map → retry-UIPDQJ5F.js.map} +0 -0
- /package/dist/{retry-failed-6HXPUVXJ.js.map → retry-failed-QMWQ6TRL.js.map} +0 -0
- /package/dist/{shared-HJDFNID4.js.map → run-NDMEYUOI.js.map} +0 -0
- /package/dist/{run-SI4FA32F.js.map → run-OP3T4TCF.js.map} +0 -0
- /package/dist/{schedule-52ZM4KRQ.js.map → schedule-6D667AXB.js.map} +0 -0
- /package/dist/{schedule-O2K6M43V.js.map → schedule-KXLQVCZW.js.map} +0 -0
- /package/dist/{scheduled-agents-PCWCQAKP.js.map → scheduled-agents-LYWEX4PU.js.map} +0 -0
- /package/dist/{schema-6GR77VJG.js.map → schema-CCFLFAOY.js.map} +0 -0
- /package/dist/{scrape-ETAMW43A.js.map → scrape-DBZQFIW7.js.map} +0 -0
- /package/dist/{screenshot-YCQF25ZB.js.map → screenshot-MPFANYIH.js.map} +0 -0
- /package/dist/{search-OQNGSMUH.js.map → search-4AANIUUL.js.map} +0 -0
- /package/dist/{search-742XSULP.js.map → search-EMJABZYF.js.map} +0 -0
- /package/dist/{search-NS7XNRZC.js.map → search-HQDN7DOF.js.map} +0 -0
- /package/dist/{sync-definition-BAJQUBE3.js.map → search-OVHC4CRQ.js.map} +0 -0
- /package/dist/{search-MEEM4D3W.js.map → search-YSGZRANA.js.map} +0 -0
- /package/dist/{select-4XCYVV2G.js.map → select-C6BKHB4B.js.map} +0 -0
- /package/dist/{sends-WGJVQUMF.js.map → sends-HXN5HSF6.js.map} +0 -0
- /package/dist/{sequences-OIPVR7JL.js.map → sequences-FRK76ZQV.js.map} +0 -0
- /package/dist/{setup-links-V3URI7DL.js.map → setup-links-BM2GLSSO.js.map} +0 -0
- /package/dist/{viewer-check-HFRUJ4ZU.js.map → shared-EH5ZTQXC.js.map} +0 -0
- /package/dist/{site-WIQ7SSU3.js.map → site-3PEJYQJW.js.map} +0 -0
- /package/dist/{sitemaps-POPZJTAX.js.map → sitemaps-7KHY2KXI.js.map} +0 -0
- /package/dist/{sites-262H6LM4.js.map → sites-6B76JW6C.js.map} +0 -0
- /package/dist/{skills-6TQZLIMP.js.map → skills-SCTT3LCM.js.map} +0 -0
- /package/dist/{sources-L453U5MT.js.map → sources-ODJBHNGY.js.map} +0 -0
- /package/dist/{stale-6OVG6VME.js.map → stale-2O54QXY2.js.map} +0 -0
- /package/dist/{stats-NNXZMPZR.js.map → stats-4NBOAOR2.js.map} +0 -0
- /package/dist/{status-WXWU54WR.js.map → status-NE5OBM4B.js.map} +0 -0
- /package/dist/{sticker-4KMBSMP5.js.map → sticker-NLXBIOBO.js.map} +0 -0
- /package/dist/{stock-2YCDN3N6.js.map → stock-F3SA4VHV.js.map} +0 -0
- /package/dist/{studio-C5K3YX3P.js.map → studio-ZPDIOFKL.js.map} +0 -0
- /package/dist/{sync-CDZUTGV3.js.map → sync-5GJNZDGZ.js.map} +0 -0
- /package/dist/{sync-ZSNUBYPM.js.map → sync-FCNFXTFD.js.map} +0 -0
- /package/dist/{sync-CF7FVUQJ.js.map → sync-YXCZ3DHY.js.map} +0 -0
- /package/dist/{tag-manager-DYZUOIAS.js.map → tag-manager-YM4Q3CZT.js.map} +0 -0
- /package/dist/{tags-SG3NVC3J.js.map → tags-456UOYJU.js.map} +0 -0
- /package/dist/{tags-6RY23XOG.js.map → tags-5YPYHV5V.js.map} +0 -0
- /package/dist/{tags-BHFQWNPL.js.map → tags-HXMHEHG2.js.map} +0 -0
- /package/dist/{tags-WR6PDIDR.js.map → tags-K34666RY.js.map} +0 -0
- /package/dist/{tags-VN5HTL35.js.map → tags-NB35ISO3.js.map} +0 -0
- /package/dist/{targeting-constants-XJ2VOW7K.js.map → targeting-constants-3CMGPWRI.js.map} +0 -0
- /package/dist/{targeting-criteria-5EXP2NXF.js.map → targeting-criteria-UKQ4WF5C.js.map} +0 -0
- /package/dist/{targets-WUVEJPSD.js.map → targets-VQ4BQ657.js.map} +0 -0
- /package/dist/{templates-LOJQX2NG.js.map → templates-PMUIOVDX.js.map} +0 -0
- /package/dist/{testimonials-6M5DXORT.js.map → testimonials-XZCGVD6V.js.map} +0 -0
- /package/dist/{top-companies-E2OMMPSV.js.map → top-companies-VMRIDOOH.js.map} +0 -0
- /package/dist/{translate-AW4CUKDA.js.map → translate-F5KR62LF.js.map} +0 -0
- /package/dist/{triggers-MRXIDCSN.js.map → triggers-2MZX7W6Y.js.map} +0 -0
- /package/dist/{tweets-ATP3FQAC.js.map → tweets-XWE3VYQ4.js.map} +0 -0
- /package/dist/{unfollow-CBVPGPF7.js.map → unfollow-7U4UBAJX.js.map} +0 -0
- /package/dist/{unlink-HNL747YM.js.map → unlink-AWSNY3QS.js.map} +0 -0
- /package/dist/{unstage-4ZEULXEQ.js.map → unstage-OGB43ZXO.js.map} +0 -0
- /package/dist/{unstage-OL2JDCLK.js.map → unstage-RQBOQ4DY.js.map} +0 -0
- /package/dist/{update-YNNRX5B2.js.map → update-4KWYHMLS.js.map} +0 -0
- /package/dist/{update-4KGIT4BF.js.map → update-6DKEWM64.js.map} +0 -0
- /package/dist/{update-RTTC3SAK.js.map → update-G6EKHPIF.js.map} +0 -0
- /package/dist/{update-JPBUF7M2.js.map → update-OFV452AC.js.map} +0 -0
- /package/dist/{upload-UIXPCSXJ.js.map → upload-6CJWMQ24.js.map} +0 -0
- /package/dist/{upload-L5SYZB3X.js.map → upload-GUKMQ5MT.js.map} +0 -0
- /package/dist/{upscale-YWRLFU22.js.map → upscale-A456MESF.js.map} +0 -0
- /package/dist/{url-params-K47CE7Y5.js.map → url-params-OE3UMYMM.js.map} +0 -0
- /package/dist/{use-UT2DIZOG.js.map → use-HBVKVT5S.js.map} +0 -0
- /package/dist/{variant-FLZJYGYL.js.map → variant-HULP57YI.js.map} +0 -0
- /package/dist/{videos-BP3BKNTY.js.map → videos-ION7UT3M.js.map} +0 -0
- /package/dist/{view-NPAG66QK.js.map → view-GCDEJZII.js.map} +0 -0
- /package/dist/{web-RPSGFN4U.js.map → web-CCVD6UZ4.js.map} +0 -0
- /package/dist/{write-commands-WTRSOSO3.js.map → write-commands-47OP673X.js.map} +0 -0
- /package/dist/{write-commands-TAYGTJEZ.js.map → write-commands-IJ5IFHS6.js.map} +0 -0
- /package/dist/{write-commands-4WARNR2T.js.map → write-commands-NNVDWBLG.js.map} +0 -0
- /package/dist/{write-commands-ERKVRHTC.js.map → write-commands-OBMIVFZJ.js.map} +0 -0
- /package/dist/{x-VZCELH3P.js.map → x-U32DT24S.js.map} +0 -0
package/README.md
CHANGED
|
@@ -36,7 +36,7 @@ export BAKER_X_ADS_ACCOUNT_ID="18ce53xyz"
|
|
|
36
36
|
export BAKER_CHAT_ID="<chat-id>"
|
|
37
37
|
```
|
|
38
38
|
|
|
39
|
-
- `BAKER_API_KEY` must start with `bk_` (or `bkr_` for the read-only credential a Session review runs with)
|
|
39
|
+
- `BAKER_API_KEY` must start with `bk_` (or `bkr_` for the read-only credential a Session review runs with, or `bkv_` for the one a published report runs with)
|
|
40
40
|
- A missing or malformed `BAKER_API_KEY` / `BAKER_API_URL` ends any command that talks to Baker with `NOT_CONFIGURED` (non-retryable, with a `fix`) naming the variable and the rule it broke — never its value
|
|
41
41
|
- A malformed `BAKER_GOOGLE_ADS_CUSTOMER_ID`, `BAKER_LINKEDIN_AD_ACCOUNT_ID` or `BAKER_X_ADS_ACCOUNT_ID` ends it with `VALIDATION_ERROR` instead, whose `fix` says to correct or unset the variable
|
|
42
42
|
- `BAKER_API_URL` is your Convex site URL — the deployment the CLI talks to, not an address to show anybody
|
|
@@ -47,6 +47,7 @@ export BAKER_CHAT_ID="<chat-id>"
|
|
|
47
47
|
- `BAKER_X_ADS_ACCOUNT_ID` — default X Ads account ID (base36). Used when `--account-id` is not passed. If neither is set and exactly one X Ads account is connected, it is auto-selected.
|
|
48
48
|
- `BAKER_CHAT_ID` — chat context for staged Work Action commands and staged Scheduled agent create/update/delete/unstage. `scheduled-agents run` does not require it. When set, it is also sent as an `x-baker-chat-id` header on every request, so library additions that apply immediately (images, videos, followed brands) are listed in that chat's changes as already applied.
|
|
49
49
|
- `BAKER_THREAD_ID` — set per turn by the sandbox. Sent as an `x-baker-thread-id` header alongside the chat header, so the tools a command reports or changes are those of whoever sent this turn, even while someone else writes in another thread of the same chat.
|
|
50
|
+
- `BAKER_KEY_SCOPE` — `report` while a report's data endpoint runs in the chat preview (set by the reports runtime). Sent as an `x-baker-key-scope` header, Baker then holds the key to what a published report may do — reads only — so a report that writes fails in the preview rather than once published. It can only narrow the key.
|
|
50
51
|
|
|
51
52
|
## Debug logging
|
|
52
53
|
|
|
@@ -221,10 +222,10 @@ baker ads google currency --customer-id 5904042878
|
|
|
221
222
|
|
|
222
223
|
### `baker ads google url-options`
|
|
223
224
|
|
|
224
|
-
The UTM / tracking parameters in force on the account: the account-level Final URL Suffix and tracking template, plus every campaign that overrides them. Start here for any "add `utm_agency=…`" or agency-tag question.
|
|
225
|
+
The UTM / tracking parameters in force on the account: the account-level Final URL Suffix and tracking template, plus every campaign, ad group and ad that overrides them. Start here for any "add `utm_agency=…`" or agency-tag question.
|
|
225
226
|
|
|
226
227
|
```bash
|
|
227
|
-
baker ads google url-options --customer-id 1234567890 # overriding campaigns
|
|
228
|
+
baker ads google url-options --customer-id 1234567890 # overriding campaigns, ad groups and ads
|
|
228
229
|
baker ads google url-options --customer-id 1234567890 --full # every campaign read
|
|
229
230
|
```
|
|
230
231
|
|
|
@@ -235,15 +236,19 @@ Every value is a tagged union, never a bare string, so an unread level can never
|
|
|
235
236
|
"ok": true,
|
|
236
237
|
"data": {
|
|
237
238
|
"account": { "final_url_suffix": { "state": "set", "value": "utm_source=google" } },
|
|
238
|
-
"campaigns": { "
|
|
239
|
-
"
|
|
239
|
+
"campaigns": { "overrides": [], "omitted": 12 },
|
|
240
|
+
"ad_groups": { "read": true, "overrides": [], "truncated": false },
|
|
241
|
+
"ads": { "read": true, "overrides": [], "truncated": false },
|
|
242
|
+
"levels_not_read": []
|
|
240
243
|
}
|
|
241
244
|
}
|
|
242
245
|
```
|
|
243
246
|
|
|
244
247
|
`set` holds a value · `not_set` means Google carries none at that level · `not_read` means it was never observed. **Only `not_set` is a finding.**
|
|
245
248
|
|
|
246
|
-
Writing it: `baker ads google campaigns update <id> --final-url-suffix "utm_source=google&utm_agency=baker"` stages a campaign-level override (it *replaces* the account value for that campaign, it does not merge). The **account** level
|
|
249
|
+
Writing it: `baker ads google campaigns update <id> --final-url-suffix "utm_source=google&utm_agency=baker"` stages a campaign-level override (it *replaces* the account value for that campaign, it does not merge). The **account** level stages too: `baker ads google account update --customer-id … --final-url-suffix "utm_source=google&utm_agency=baker"` (or `campaigns update --level account --final-url-suffix …`, the same op) applies at publish with the rest of the draft; `""` clears it.
|
|
250
|
+
|
|
251
|
+
**Account settings** — `baker ads google account update --customer-id …` stages the account's own settings: `--final-url-suffix`, `--tracking-template`, `--auto-tagging` / `--auto-tagging=false`, `--call-reporting`, `--call-conversions`, `--video-inventory EXPANDED|STANDARD|LIMITED`. One card per account (staging again amends it), shown before → after; a setting the account already holds is a no-op. Turning auto-tagging off stages with a warning (conversion tracking loses the gclid). The conversion action that counts calls is not writable through Google's API.
|
|
247
252
|
|
|
248
253
|
---
|
|
249
254
|
|
|
@@ -317,19 +322,19 @@ baker ads google query --list-presets
|
|
|
317
322
|
|
|
318
323
|
Read it before interpreting any null. Field coverage is folded page by page on the `--out` path too, so the file summary reports it; `.resource_name` is never reported (the server strips it from every row).
|
|
319
324
|
|
|
320
|
-
**A page is not the data set.**
|
|
325
|
+
**A page is not the data set.** Every query is read a page at a time: without `--all` it returns one page of `--limit` rows (the preset's page size, else 200) and, when the account holds more, `pagination.cursor` — pass it back with `--cursor` (same query, same `--limit`) for the next page. `--all` follows every page until the account has no more rows; only a `LIMIT` written in the statement caps it. When the API returns a cursor the run did not follow, or the rows fill the statement's own `LIMIT`, the response carries a `TRUNCATED_RESULTS` warning:
|
|
321
326
|
|
|
322
327
|
```json
|
|
323
328
|
{
|
|
324
329
|
"ok": true,
|
|
325
330
|
"warnings": [{ "code": "TRUNCATED_RESULTS", "message": "INCOMPLETE READ — ..." }],
|
|
326
|
-
"pagination": { "hasMore": true, "cursor": "
|
|
331
|
+
"pagination": { "hasMore": true, "cursor": "skip:200.k3x9q2:" },
|
|
327
332
|
"data": [...],
|
|
328
333
|
"notice": "Read the \"warnings\" above before using these rows: TRUNCATED_RESULTS."
|
|
329
334
|
}
|
|
330
335
|
```
|
|
331
336
|
|
|
332
|
-
Never total or count from a response carrying it — re-run with `--all --
|
|
337
|
+
Never total or count from a response carrying it — re-run with `--all --out data.csv` (it pages through every row, however many) and check the re-run came back without the warning. A read that returns one row by construction — `FROM customer` with no segment selected, such as `--preset account-summary` — has no page to fill, so it never carries `TRUNCATED_RESULTS`, nor `CONVERSION_MIX`, since one account-wide row has no campaigns to total or compare. Warnings reach every output format, so no `--output` choice can hide one:
|
|
333
338
|
|
|
334
339
|
| `--output` | Where warnings land |
|
|
335
340
|
|------------|---------------------|
|
|
@@ -370,9 +375,10 @@ The same lines also go to stderr. A read with nothing to report prints none of i
|
|
|
370
375
|
| `--preset` | Named query template (see presets below) |
|
|
371
376
|
| `--date-range` | Override preset date range: a Google literal (LAST_7_DAYS, LAST_30_DAYS, LAST_MONTH, etc.) or `BETWEEN 'YYYY-MM-DD' AND 'YYYY-MM-DD'` — there is no LAST_90_DAYS |
|
|
372
377
|
| `--include-paused` | Include paused entities in preset results. Off by default: presets return only actually-serving entities (enabled campaign **and** ad group **and** ad). Google Ads has no single serving flag, so the whole chain must be `ENABLED` for an entity to serve. |
|
|
373
|
-
| `--
|
|
374
|
-
| `--
|
|
375
|
-
| `--
|
|
378
|
+
| `--gaql` | The GAQL statement as a flag, instead of the positional |
|
|
379
|
+
| `--limit` | Rows per page (default: the preset's page size, else 200; at most 8,192). A page size, not a cap |
|
|
380
|
+
| `--cursor` | `pagination.cursor` from the previous page (same query, same `--limit`) |
|
|
381
|
+
| `--all` | Follow every page until the account has no more rows. Only a `LIMIT` written in the statement stops it early, and a read that fills that `LIMIT` is flagged `TRUNCATED_RESULTS` |
|
|
376
382
|
| `--out` | Write data to file (format from extension: .csv, .jsonl, .json) |
|
|
377
383
|
| `--append` | Append to existing file (skip CSV headers) |
|
|
378
384
|
| `--output` | Output format: `json` \| `csv` \| `jsonl` \| `md` |
|
|
@@ -393,9 +399,21 @@ The same lines also go to stderr. A read with nothing to report prints none of i
|
|
|
393
399
|
| `negative-list-attachments`| Which campaigns each shared list covers | ALL_TIME |
|
|
394
400
|
| `search-terms` | Actual user queries triggering ads | LAST_7_DAYS |
|
|
395
401
|
| `ad-copy-performance` | Ad headline/description effectiveness | LAST_30_DAYS |
|
|
396
|
-
| `asset-performance` | PMax
|
|
402
|
+
| `asset-performance` | PMax assets: serving status + metrics | LAST_30_DAYS |
|
|
397
403
|
| `shopping-products` | Product-level shopping metrics | LAST_30_DAYS |
|
|
398
404
|
| `account-summary` | Account-level totals | LAST_30_DAYS |
|
|
405
|
+
| `pmax-channels` | PMax spend/results per channel (Search, YouTube, Display, …) | LAST_30_DAYS |
|
|
406
|
+
| `pmax-placements` | Where PMax ads showed (impressions) | LAST_30_DAYS |
|
|
407
|
+
| `placements` | Display / Video / Demand Gen placements with cost and conversions | LAST_30_DAYS |
|
|
408
|
+
| `rsa-assets` | Each RSA headline/description: pin, approval, own metrics | LAST_30_DAYS |
|
|
409
|
+
| `landing-pages` | Final URLs with clicks, cost, speed score, mobile-friendly share | LAST_30_DAYS |
|
|
410
|
+
| `geo-performance` | Results by country and location type (in vs interested in) | LAST_30_DAYS |
|
|
411
|
+
| `age-performance` / `gender-performance` | Results by age range / gender per ad group | LAST_30_DAYS |
|
|
412
|
+
| `ai-max-search-terms` | AI Max search terms with the headline and landing page used | LAST_30_DAYS |
|
|
413
|
+
| `account-budget` | Account budget: limit, served, pending change | — |
|
|
414
|
+
| `recommendations` | Google's open recommendations with impact | — |
|
|
415
|
+
| `campaign-simulations` / `keyword-bid-simulations` | Google's what-if points (budget, tCPA, tROAS, CPC bid) | — |
|
|
416
|
+
| `campaigns`, `budgets`, `ad-groups`, `keywords`, `ads`, `assets`, `asset-groups`, `audiences`, `conversion-actions`, `bidding-strategies`, `labels`, `campaign-criteria`, `ad-group-criteria`, `ad-group-bid-modifiers`, `account-exclusions`, `shared-sets`, `campaign-negative-keywords`, `ad-group-negative-keywords` | Inventories behind the `<thing> list` commands | — |
|
|
399
417
|
|
|
400
418
|
Every preset except the negatives lists and `account-summary` filters to **actually-serving entities** by default — the full status chain (`campaign.status = 'ENABLED' AND ad_group.status = 'ENABLED' AND ad_group_ad.status = 'ENABLED'`, as applicable) — and selects the status columns so you can see them. Pass `--include-paused` to widen to `!= 'REMOVED'` (keeps paused, still drops removed). Raw GAQL (no `--preset`) has no such default: a query over a serving-hierarchy resource without a status filter emits a `SERVING_SCOPE` warning reminding you to add the chain, because Google Ads has no single serving flag.
|
|
401
419
|
|
|
@@ -411,13 +429,12 @@ The CLI rejects or automatically corrects common GAQL mistakes before hitting th
|
|
|
411
429
|
|
|
412
430
|
| Pattern | Behavior | Warning/error emitted |
|
|
413
431
|
|---------|----------|-----------------------|
|
|
414
|
-
| Missing LIMIT | Adds `LIMIT 200` | `"Added LIMIT 200. Use --limit to override."` |
|
|
415
432
|
| Bare `keyword.text` / `keyword.match_type` | Rewrites to `ad_group_criterion.*` (resource-scoped forms like `shared_criterion.keyword.text` pass through untouched) | `"keyword.text → ad_group_criterion.keyword.text"` |
|
|
416
433
|
| `shopping_performance_view.product_*` | Rewrites to `segments.product_*` | Field renamed |
|
|
417
434
|
| `campaign.status = 'ACTIVE'` | Rewrites to `= 'ENABLED'` | Enum corrected |
|
|
418
435
|
| `segments.conversion_action_name` with `metrics.cost_micros` | Rejects; split into separate conversion-action and spend queries | `INCOMPATIBLE_FIELDS` with `fix.action: "split_query"` |
|
|
419
436
|
| `DURING` with a literal Google does not accept (`LAST_90_DAYS`, `LAST_12_MONTHS`, `THIS_YEAR` …) | Rejects before any request; `DURING` takes only `TODAY`, `YESTERDAY`, `LAST_7_DAYS`, `LAST_14_DAYS`, `LAST_30_DAYS`, `LAST_BUSINESS_WEEK`, `THIS_MONTH`, `LAST_MONTH`, `THIS_WEEK_SUN_TODAY`, `THIS_WEEK_MON_TODAY`, `LAST_WEEK_SUN_SAT`, `LAST_WEEK_MON_SUN` | `INVALID_DATE_RANGE`, with `fix.correctedCommand` spelling the same window as `BETWEEN 'YYYY-MM-DD' AND 'YYYY-MM-DD'` |
|
|
420
|
-
| `--limit` outside 1–8,192
|
|
437
|
+
| `--limit` outside 1–8,192 | Rejects before any request — one page holds at most 8,192 rows | `VALIDATION_ERROR` pointing at `--all --out` for bigger reads |
|
|
421
438
|
| `FROM ad_group_criterion` without `negative` field | Warns | `"ad_group_criterion returns BOTH positive and negative keywords. Use --preset positive-keywords or negative-keywords."` |
|
|
422
439
|
|
|
423
440
|
Auto-fixed queries proceed normally. Warnings appear in the response:
|
|
@@ -456,7 +473,7 @@ Google keeps account history in two layers, and neither reaches past 90 days:
|
|
|
456
473
|
|
|
457
474
|
| Scope | Reach | What you get |
|
|
458
475
|
|-------------|---------|---------------------------------------------------------------------|
|
|
459
|
-
| `detail` | 30 days | What changed, old
|
|
476
|
+
| `detail` | 30 days | What changed — a `changes` list of `{ field, old, new }` per changed field — and who changed it |
|
|
460
477
|
| `summary` | 90 days | Which resources were added, changed or removed — no values, no user |
|
|
461
478
|
|
|
462
479
|
Beyond 90 days there is no API. Infer the change from a monthly spend trend per campaign
|
|
@@ -481,6 +498,43 @@ baker ads google changes --customer-id 1234567890 --days 60 --scope summary
|
|
|
481
498
|
|
|
482
499
|
---
|
|
483
500
|
|
|
501
|
+
### `baker ads google keywords forecast` / `keywords themes`
|
|
502
|
+
|
|
503
|
+
```bash
|
|
504
|
+
baker ads google keywords forecast --customer-id 1234567890 --text "running shoes:PHRASE,trail shoes:EXACT" --max-cpc 1.2 --location 2724 --language 1003
|
|
505
|
+
baker ads google keywords forecast --customer-id 1234567890 --text "crm software" --match-type BROAD --daily-spend 20 --strategy MAXIMIZE_CONVERSIONS --start 2026-11-01 --end 2026-11-30
|
|
506
|
+
baker ads google keywords themes --customer-id 1234567890 --keywords "trail shoes,road shoes" --ad-groups 111,222
|
|
507
|
+
```
|
|
508
|
+
|
|
509
|
+
`forecast` returns Google's Keyword Planner forecast (v25) for the whole period under one bidding strategy: `{ source: "keyword_planner_forecast", period, forecast_clicks, forecast_cost_micros, forecast_conversions, forecast_average_cpc_micros, forecast_average_cpa_micros }`. `--max-cpc` alone is Manual CPC; `--daily-spend` is Maximize clicks (or Maximize conversions with `--strategy`). Without `--start/--end` it forecasts the 30 days from tomorrow. `themes` returns which existing ad group each keyword fits (`suggestions`) and the ad groups Google could not read a theme from (`unusable_ad_groups`).
|
|
510
|
+
|
|
511
|
+
### `baker ads google previews` / `invoices` / `identity-verification` / `brands`
|
|
512
|
+
|
|
513
|
+
```bash
|
|
514
|
+
baker ads google previews --customer-id 1234567890 --asset-groups 6743268912 # Performance Max, Google's preview page
|
|
515
|
+
baker ads google previews --customer-id 1234567890 --ads 111~222 # a Video campaign's ad, live on YouTube
|
|
516
|
+
baker ads google invoices --customer-id 1234567890 --month 2026-09
|
|
517
|
+
baker ads google identity-verification --customer-id 1234567890
|
|
518
|
+
baker ads google brands --customer-id 1234567890 --prefix nike # brand entity ids for a BRANDS list
|
|
519
|
+
```
|
|
520
|
+
|
|
521
|
+
Read-only. A refusal that is the account's situation comes back as a structured error the agent carries on from: `NOT_INVOICED` (not billed by monthly invoicing — no invoices through the API), `VERIFICATION_NOT_READABLE` (verification status is only readable through the API on monthly invoicing), `NO_PREVIEW_FOR_AD_TYPE` (only video ads of Video campaigns preview by ad). Each `error.fix` says where the answer lives instead.
|
|
522
|
+
|
|
523
|
+
### `baker ads google <thing> list`
|
|
524
|
+
|
|
525
|
+
What exists, with the id or resource name each write command takes — one inventory preset read through `query`, so it pages (`--limit`, `--cursor`, `--all --out`) and formats (`--output`) the same way. Paused entities are listed; removed ones are not; `--serving-only` narrows to what serves.
|
|
526
|
+
|
|
527
|
+
```bash
|
|
528
|
+
baker ads google campaigns list --customer-id 1234567890
|
|
529
|
+
baker ads google keywords list --customer-id 1234567890 --all --out keywords.csv
|
|
530
|
+
baker ads google negative-keywords list --customer-id 1234567890 --level adGroup
|
|
531
|
+
baker ads google keyword-lists list --customer-id 1234567890 --members
|
|
532
|
+
```
|
|
533
|
+
|
|
534
|
+
Lists exist for `campaigns`, `budgets`, `ad-groups`, `keywords`, `negative-keywords` (`--level campaign|adGroup`), `keyword-lists` (`--members` for the terms), `ads`, `assets`, `asset-groups`, `audiences`, `conversions`, `bidding-strategies`, `labels`, `campaign-criteria`, `ad-group-criteria`, `ad-group-bid-modifiers` and `account-exclusions`.
|
|
535
|
+
|
|
536
|
+
---
|
|
537
|
+
|
|
484
538
|
### `baker ads google keywords discover`
|
|
485
539
|
|
|
486
540
|
Discover keyword ideas from seed keywords or URLs.
|
|
@@ -488,6 +542,7 @@ Discover keyword ideas from seed keywords or URLs.
|
|
|
488
542
|
```bash
|
|
489
543
|
baker ads google keywords discover --customer-id 1234567890 --seeds "running shoes,athletic footwear"
|
|
490
544
|
baker ads google keywords discover --customer-id 1234567890 --url "https://competitor.com" --limit 50
|
|
545
|
+
baker ads google keywords discover --customer-id 1234567890 --seeds "running shoes" --cursor <next_page_token> # next page
|
|
491
546
|
```
|
|
492
547
|
|
|
493
548
|
**Response:**
|
|
@@ -601,6 +656,8 @@ Reference not-yet-created resources with `g_temp_*` refs returned by earlier `cr
|
|
|
601
656
|
```bash
|
|
602
657
|
# Build a Search campaign bottom-up, chaining temp refs
|
|
603
658
|
baker ads google budgets create --customer-id 1234567890 --name "Search budget" --amount 50
|
|
659
|
+
# Delivery is always STANDARD: --delivery ACCELERATED is refused (Google stores such a budget but will
|
|
660
|
+
# not attach it to a campaign).
|
|
604
661
|
# → { ref: "g_temp_ab12", ... }
|
|
605
662
|
baker ads google campaigns create --customer-id 1234567890 --name "Brand — Search" \
|
|
606
663
|
--channel-type SEARCH --budget-ref g_temp_ab12 --bidding-strategy MANUAL_CPC \
|
|
@@ -633,6 +690,10 @@ baker ads google campaigns update <campaign-id> --customer-id 1234567890 \
|
|
|
633
690
|
# --ai-max-url-expansion (final URL expansion, needs text customization). An omitted switch
|
|
634
691
|
# keeps the campaign's value; a combination Google refuses is refused at staging.
|
|
635
692
|
baker ads google campaigns update <campaign-id> --customer-id 1234567890 --ai-max --ai-max-text
|
|
693
|
+
# Bidding is per campaign type — staging refuses a pair Google does not take and names the ones it does.
|
|
694
|
+
# Target impression share (Search only) needs its whole goal on a new strategy:
|
|
695
|
+
baker ads google campaigns update <campaign-id> --customer-id 1234567890 --bidding-strategy TARGET_IMPRESSION_SHARE \
|
|
696
|
+
--impression-share 70 --impression-share-location ABSOLUTE_TOP_OF_PAGE --max-cpc 2
|
|
636
697
|
baker ads google ad-groups create --customer-id 1234567890 --name "Brand terms" --campaign-ref g_temp_<campaign>
|
|
637
698
|
baker ads google keywords add --customer-id 1234567890 --ad-group-ref g_temp_<adgroup> --text "brand name" --match-type EXACT
|
|
638
699
|
# Shared negative keyword list → attach to the campaign
|
|
@@ -666,7 +727,7 @@ baker ads google ads create --customer-id 1234567890 --ad-group-ref g_temp_<adgr
|
|
|
666
727
|
# Video ad — the YouTube video is its own asset first, then referenced by --video-assets
|
|
667
728
|
baker ads google assets create --customer-id 1234567890 --file '{"type":"youtubeVideo","youtubeVideoId":"dQw4w9WgXcQ"}'
|
|
668
729
|
baker ads google ads create --customer-id 1234567890 --ad-group-ref g_temp_<adgroup> --format video \
|
|
669
|
-
--video-assets g_temp_<video> --final-url https://example.com
|
|
730
|
+
--video-assets g_temp_<video> --business-name "Acme" --logo-image-assets g_temp_<img_logo> --final-url https://example.com
|
|
670
731
|
# Demand Gen ad — image refs the same way
|
|
671
732
|
baker ads google ads create --customer-id 1234567890 --ad-group-ref g_temp_<adgroup> --format demandGen \
|
|
672
733
|
--headlines "Discover the app" --descriptions "Try it free today" --business-name "Acme" --final-url https://example.com \
|
|
@@ -681,6 +742,8 @@ baker ads google ads create --customer-id 1234567890 --ad-group-ref g_temp_<adgr
|
|
|
681
742
|
# App campaign ad — images are fields on the ad itself, same asset-ref flow
|
|
682
743
|
baker ads google ads create --customer-id 1234567890 --ad-group-ref g_temp_<adgroup> --format app \
|
|
683
744
|
--headlines "Insure your dog" --descriptions "Refunds in 2 hours" --image-assets g_temp_<img1>,g_temp_<img2>
|
|
745
|
+
# Call ads are retired — Google's API has no call ad, so --format call is refused. Stage a responsive
|
|
746
|
+
# search ad and have the user add the phone number as a call asset in Google Ads.
|
|
684
747
|
# Change a live ad's content — every field you pass replaces its current value, so list what you want to keep
|
|
685
748
|
baker ads google ads update <adId> --customer-id 1234567890 --format app \
|
|
686
749
|
--headlines "Insure your dog" --descriptions "Refunds in 2 hours" \
|
|
@@ -702,9 +765,16 @@ baker ads google asset-groups attach --customer-id 1234567890 \
|
|
|
702
765
|
baker ads google asset-groups detach customers/1234567890/assetGroupAssets/6718302454~402654762568~PORTRAIT_MARKETING_IMAGE \
|
|
703
766
|
--customer-id 1234567890
|
|
704
767
|
|
|
768
|
+
# Audiences — each type carries what Google builds it from (a type alone is refused)
|
|
769
|
+
baker ads google audiences create --customer-id 1234567890 --file '{"name":"Pricing visitors","type":"RULE_BASED","rule":{"include":[{"conditions":[{"operator":"CONTAINS","value":"/pricing"}],"lookbackWindowDays":30}],"prefill":true}}'
|
|
770
|
+
# BASIC takes "conversionActions", LOGICAL "logic", LOOKALIKE "lookalike" — each naming lists/actions
|
|
771
|
+
# that already exist in the account (not g_temp_* refs). `baker ads google audiences create --help` has one example per type.
|
|
772
|
+
|
|
705
773
|
# Review / undo / amend staged changes
|
|
706
774
|
baker ads google draft list # readable campaign ▸ ad group ▸ ad tree + completeness advisories
|
|
707
775
|
baker ads google draft list --json # raw JSON envelope for scripting
|
|
776
|
+
baker ads google draft validate # dry run the whole draft against Google (validateOnly) — per-op verdicts
|
|
777
|
+
baker ads google draft validate --full # every op, with the built request and Google's raw answer
|
|
708
778
|
baker ads google draft show g_temp_ab12 # full staged payload — the receipt before publish
|
|
709
779
|
baker ads google draft amend g_temp_ab12 --patch '{"amountMicros": 60000000}' # update in place, never remove+recreate
|
|
710
780
|
baker ads google draft remove g_temp_ab12 # cascades to dependents
|
|
@@ -719,7 +789,17 @@ baker tag-manager draft show --chat <chat-id> gtm_temp_ab12
|
|
|
719
789
|
baker actions draft --chat <chat-id>
|
|
720
790
|
```
|
|
721
791
|
|
|
722
|
-
|
|
792
|
+
**Budgets and portfolios** — `budgets create --total 300` stages a total budget (one amount over the campaign's flight; Search, Performance Max and Demand Gen; the campaign needs `--end-date`; never shared) instead of `--amount`'s daily one, and `budgets update --total` moves it. `campaigns create|update --portfolio-ref <ref>` puts a campaign on a portfolio bid strategy (checked against the campaign type); staging a campaign's own `--bidding-strategy` while it is on a portfolio takes it off (with a warning). `budgets remove <id>` and `bidding-strategies remove <id>` remove a budget / portfolio once no campaign uses it — staging refuses while one does, unless the same draft removes or moves those campaigns; publish removes the campaigns first.
|
|
793
|
+
|
|
794
|
+
**Shopping campaigns** — `campaigns create --channel-type SHOPPING --merchant-id <id>` (`merchant-center list` shows the Merchant Center accounts linked to the account; staging refuses any other) with optional `--feed-label`, `--shopping-priority low|medium|high` and `--local-inventory`; `campaigns update` changes those three (`--clear-feed-label`), never the Merchant Center. `ad-groups create --type SHOPPING_PRODUCT_ADS` creates the ad group with its "All products" listing group, and `ads create --format shoppingProduct` its product ad (no copy — the feed supplies it). A retail Performance Max campaign takes `--merchant-id` / `--feed-label` too.
|
|
795
|
+
|
|
796
|
+
**App, Travel and Hotel campaigns** — App: `campaigns create --channel-type MULTI_CHANNEL --sub-type APP_CAMPAIGN|APP_CAMPAIGN_FOR_ENGAGEMENT --app-id <package or App Store id> --app-store google|apple --app-goal installs|installs-volume|in-app|in-app-install-cost|value [--app-conversions <ids>]` (each goal takes one bidding strategy; App ads are created enabled — Google refuses a paused one, so `ads create --format app` defaults to `ENABLED`). Travel: `--channel-type TRAVEL --travel-account-id <id>` on Maximize conversion value with `--target-roas`. Hotel: `--channel-type HOTEL --hotel-center-id <id>`. Staging asks Google (validate-only) whether the app, the travel account or Hotel Center is there and refuses with what to ask the user when it is not. Smart campaigns are refused (their business setting cannot be validated).
|
|
797
|
+
|
|
798
|
+
**Dynamic Search Ads and frequency caps** — `campaigns create|update --dsa-domain <domain> --dsa-language <code> [--dsa-supplied-urls-only]` (Search only; an update may change one field; it cannot be removed) and `--frequency-cap <cap>/<day|week|month>[/<campaign|ad-group|ad>][/<impressions|video-views>]` (repeatable, replaces the campaign's caps; `--clear-frequency-caps`; Display and existing Video campaigns only).
|
|
799
|
+
|
|
800
|
+
**Performance Max creative controls** — `campaigns create|update` take `--term-exclusion` / `--messaging-restriction` (text guidelines; a Search create needs `--ai-max --ai-max-text`), the generated-asset switches `--generated-text --url-expansion --video-enhancement --image-enhancement --image-extraction --image-design-versions` (each `=false` to turn off), `--brand-guidelines` on create (link the business name and a square logo to the campaign in the same draft) and `--main-color --accent-color --font`. `campaigns enable-brand-guidelines <id> --business-name-asset --logo-assets [--landscape-logo-assets] [--final-url-domain] | --auto-populate` turns brand guidelines on for an existing campaign at publish (no dry run: `draft validate` shows it unchecked).
|
|
801
|
+
|
|
802
|
+
Command groups: `account` (update), `budgets` (create/update/remove), `campaigns`, `ad-groups`, `keywords` (add/update/pause/resume/remove), `negative-keywords` (add/update/remove — `update <resource name> --text --match-type` publishes as a replace of the live negative), `keyword-lists` (create/rename/delete a list — `--type NEGATIVE_KEYWORDS|NEGATIVE_PLACEMENTS|BRANDS|ACCOUNT_LEVEL_NEGATIVE_KEYWORDS`; add/remove its members — keywords, or `--placement/--app/--youtube-channel/--youtube-video/--brand`; attach/detach), `ads`, `assets` (create/update/attach/detach), `asset-groups` (create/update/attach/detach — Performance Max), `audiences`, `conversions` (create/update/goal/upload), `bidding-strategies` (create/update/remove), `labels` (create/update/remove; attach/detach on a campaign, ad group, ad or keyword — `--level --on --label-ref`), `campaign-criteria` (add/update/remove — locations, languages, schedule, devices, radius, carriers, operating systems, and exclusions of placements, apps, YouTube, topics, demographics, content types, IP addresses, web pages, brand lists), `ad-group-criteria` (add/update/remove — placements, topics, demographics, web pages, Demand Gen locations/languages/combined audience; `update --bid-modifier --max-cpc --status`), `ad-group-bid-modifiers` (add/update/remove — one ad group's own device bid), `account-exclusions` (add/remove — account-wide site, app, YouTube, content-type, IP and negative-keyword-list exclusions; `add --placement --youtube-channel --youtube-video --app --content-label --ip` comma-separated, or `--file`), `merchant-center` (list), and `draft`. `audiences attach` takes `--user-list`, `--interest` or `--custom-segment`. Amounts are in major currency units (converted to micros). Money/bids: `--amount`, `--cpc-bid`, `--target-cpa`, `--target-cpc`, `--max-cpc` take major units; `--target-roas` a ratio. `--target-cpc` pairs with `--bidding-strategy TARGET_CPC` and is Demand Gen only. `--max-cpc` sets the max CPC bid ceiling for `TARGET_IMPRESSION_SHARE` / `TARGET_SPEND` / `PERCENT_CPC` and must be paired with `--bidding-strategy`. Less-common ops accept a `--file` payload — a path to a JSON file, or the JSON object written inline (flags override its keys). Updates target a resource name or bare id as the positional argument; a target that names an op staged earlier **amends it in place**.
|
|
723
803
|
|
|
724
804
|
**A device criterion can be added, but never removed** — `campaign-criteria add` with a device criterion works, but Google then rejects `campaign-criteria remove` on it forever, including on a criterion you added yourself (and Baker refuses the removal before publish). Adjust it instead with `campaign-criteria update customers/<cid>/campaignCriteria/<campaignId>~<criterionId> --bid-modifier <n>`: `1` for no adjustment, `1.25` to bid 25% more, `0.9` to bid 10% less, `0` to stop serving on that device. Locations, languages and ad schedules remove normally.
|
|
725
805
|
|
|
@@ -733,16 +813,22 @@ Command groups: `budgets`, `campaigns`, `ad-groups`, `keywords` (add/update/remo
|
|
|
733
813
|
|
|
734
814
|
**Retiring a conversion action** — `status` accepts `ENABLED` and `REMOVED` only. Google denies `HIDDEN` on every conversion-action write, so to stop bidding toward an action while it keeps measuring use `--no-primary`, and to stop it counting at all use `"status": "REMOVED"`. Conversion actions **Google owns** cannot be changed at all — Smart campaign call/directions actions, the in-ad lead form's submit, YouTube subscriptions and follow-on views, Floodlight and Search Ads 360 imports, store visits, codeless webpage actions. Staging any edit to one, a rename included, is refused up front; there is no manual route either, since the Google Ads interface will not change them.
|
|
735
815
|
|
|
816
|
+
**Validating the draft** — `baker ads google draft validate` sends the whole staged draft to Google exactly as publish would (same batching and order), with `validateOnly: true`, so nothing is applied. Each op comes back `accepted`, `refused` (with the reason publish would record), `blocked` (a change it depends on is refused), `unchecked` (only publish can check it — a new asset group, whose text assets are created first) or `applied` (an earlier publish did). Compact by default (counts plus the ops that need attention); `--full` lists every op with its request and Google's raw answer.
|
|
817
|
+
|
|
736
818
|
**Reviewing the draft** — `baker ads google draft list` renders everything you've staged as a grouped campaign ▸ ad group ▸ ad tree (with non-blocking completeness advisories), the CLI counterpart to the dashboard's Google Ads tab. Pass `--json` for the raw envelope. Once the chat has published it reports the outcome instead — `published · N applied, M failed`, with a `✗` line naming each op that did not land and why. Aim for a fully built campaign — 2–4 ad groups, ≥5 keywords each, 2–4 RSAs with 8–12 headlines, ≥4 sitelinks / ≥3 callouts / ≥1 structured snippet, and ≥1 shared negative list; the advisories flag what's still thin.
|
|
737
819
|
|
|
738
820
|
**Amending a staged op** — `draft amend <ref> (--file patch.json | --patch '<json>')` merges a JSON patch into an already-staged op's payload (objects deep-merge, `null` deletes a key, arrays/scalars replace) and re-validates it in full. Always prefer this over removing and re-staging — it preserves the op's ref (so dependents don't break) and its position in the draft. `draft show <ref>` prints the full staged payload (including warnings/annotations) so you can verify a change looks right before publish.
|
|
739
821
|
|
|
822
|
+
**Tracking warnings** — Tag Manager stage, amend, list and show responses provide repair hints whenever warnings remain. The compact `tag-manager draft list` prints the warnings beside their changes. Resolve the intended event role and technical gaps, then read the draft again before finishing; progress and diagnostics are not counted just to clear an alert. Adding and then removing a conversion that was never live cancels that proposal, so it disappears from the review.
|
|
823
|
+
|
|
740
824
|
**Reading an earlier chat's changes** — `draft list` and `draft show` take `--chat <chat-id>` to read another chat in the same company instead of the current one. Every staged-draft family accepts it: `ads google|meta|linkedin draft list|show`, `tag-manager draft list|show`, `actions draft`, `tags draft`, and `scheduled-agents list|get` (`list` leaves briefs out; `get <id>` or `list --full` returns them). A published draft is kept in full, so this returns what that chat actually wrote — every headline, bid and target — plus each op's outcome and error. Use it when asked to redo or reapply earlier work rather than reconstructing copy from a summary. Read-only: staging, `amend`, `remove` and `clear` stay bound to `BAKER_CHAT_ID`, so one chat can never edit another's draft. To re-run only the changes a publish failed to land, use the chat's **Retry** control in the dashboard — it re-sends exactly those and leaves the ones that applied untouched.
|
|
741
825
|
|
|
742
826
|
**Already-satisfied writes aren't staged** — an update or pause/resume whose every field already holds the requested value on the live account is dropped instead of staged: the envelope returns `"staged": false, "noop": true` with a `reason` ("this ad is already Paused on Google Ads"), plus a hint. This is a success, not an error — there is nothing to publish. Only a positively-read live snapshot can trigger it; a failed or empty read always stages. Batch responses list the dropped ops under `skipped`, and `count` reflects what actually entered the draft.
|
|
743
827
|
|
|
744
828
|
**Batch keyword adds** — `keywords add`, `negative-keywords add`, and `keyword-lists add` take a whole batch in one command: comma-separate `--text` entries and/or pass `--file <list.txt>` (one keyword per line). A `:EXACT`/`:PHRASE`/`:BROAD` suffix per entry overrides the `--match-type` default. Batches stage all-or-nothing as one request (limit 500); each keyword still lands as its own draft op, so it stays individually removable/amendable.
|
|
745
829
|
|
|
830
|
+
**Bulk changes — one file, one call** — `draft stage --file ops.json [--customer-id <id>]` stages up to 500 ops of any mix of kinds in one request: the file is a JSON array (or JSON Lines) of whole ops `{"kind","customerId"?,"target"?,"payload"?}`; `--customer-id` fills ops that leave it out. All-or-nothing on validity (an error names `ops[i]`); ops the account already satisfies come back as `skipped`. An op may name a `g_temp_*` ref from an earlier call, not one from the same file. `draft amend --file amends.json` (no ref) amends many staged ops at once from `[{"ref","patch"}, …]`, all or none. The `--file` create commands (`assets create|attach`, `audiences create`, `conversions create`, `bidding-strategies create`, `labels attach`, `campaign-criteria add`, `ad-group-criteria add`) take a JSON array of payloads too. `keywords pause|resume <target>…` (or `--file`, one resource name per line) change many keywords' status in one call, and `keyword-lists remove --list-ref <id> --text "a,b:EXACT"` takes terms out of a shared negative list — the CLI reads the list to find each member (no `:MATCH_TYPE` = every match type), or takes members by resource name / `listId~criterionId`. Five single stages of one kind in a row on a chat earn a `LOOP:` hint pointing at these. A chat's draft holds any number of ops (each is its own record); only one op over `GOOGLE_DRAFT_OP_MAX_BYTES` (512 KB) is refused — the stage or amend stages nothing and answers `OP_TOO_LARGE` with an `error.fix` (split that change).
|
|
831
|
+
|
|
746
832
|
**Pausing or removing a keyword returns a per-ad-group hint** — `keywords update --status PAUSED|REMOVED` and `keywords remove` come back with hints telling you to base the decision on `keyword_view` rows carrying `ad_group.id` + `ad_group_criterion.criterion_id`, never on campaign totals. A keyword's criterion id is derived from its text + match type, so every copy of the same keyword across ad groups shares one id and any aggregate blends the copy holding the history with the copies that never served. The `keyword-analysis` and `positive-keywords` presets select both ids so one query identifies each copy. A bid or URL edit gets no hint — only a pause/removal can strand history.
|
|
747
833
|
|
|
748
834
|
---
|
|
@@ -1441,8 +1527,11 @@ baker analytics sources --map --source <id> --field email={{contact.email}} --fi
|
|
|
1441
1527
|
baker analytics sources --create-hubspot --property lifecyclestage --value customer # an event HubSpot keeps for Baker each time the property changes
|
|
1442
1528
|
baker analytics sources --create-hubspot --property deal_value --operator greaterThan --value 1000 # any condition a Form's filter can say
|
|
1443
1529
|
baker analytics sources --map --source <id> --field email={{work_email}} --field value={{deal_value}} --field currency=EUR # repoint a HubSpot read
|
|
1530
|
+
baker analytics sources --create-activecampaign --events subscribe,deal_update # ActiveCampaign's webhook sends these; each is an activecampaign.<event>
|
|
1444
1531
|
```
|
|
1445
1532
|
|
|
1533
|
+
**ActiveCampaign events.** `--create-activecampaign [--events …] [--name …] [--account <id>]` makes a source that ActiveCampaign's own webhook sends to — set up on the account when the chat is published (at once outside a chat), deleted when the source is removed. Each arrival is an event named `activecampaign.<event>` (`activecampaign.subscribe`, `activecampaign.deal_update`, …), about its contact, with the rest of the payload as `properties.*` — the name a scheduled agent on `event.received` is narrowed to.
|
|
1534
|
+
|
|
1446
1535
|
**Sources: where events reach Baker from a server.** Measure → Sources is three built-in doors — the Baker landings, the website tag, and **the client's own server** — plus the connections Baker reads (HubSpot today). `--server` prints the server's one address: made once, the same for ever, `counting` at once, Baker's own format (`sending-events` is the contract; `X-Baker-Mode: test` rehearses). A HubSpot event is a trigger in HubSpot's own words, kept by HubSpot's journal each time the property changes and counted within a minute. `--create --name <tool>` still makes an address for a tool that cannot be told what to send — its first send is a masked sample counted as nothing until `--map` confirms the rows — but the dashboard no longer offers those; a tool worth reading is a connection, requested from the Sources page. Each `--field` is a **template**: text with `{{path}}` mentions, one thing per mention (`--field currency=EUR` types a value, `--field first_name="{{who.first}} {{who.last}}"` joins two; there is no `{{a|b}}` fallback); a bare path is read as its mention when the sample has it. From then on every arrival is an ordinary event carrying `baker_source: <name>`, listed by `feed --source <name>`, and `--pause`, `--resume` and `--remove` are by `--source <id>`.
|
|
1447
1536
|
|
|
1448
1537
|
**`--preview` then `--create-hubspot --property <name> [--operator <op>] --value <value>… [--name <name>] [--field <field>=<template>…] [--amount-property <n> --currency <c>]`: a HubSpot event.** HubSpot keeps each change to the property for Baker, filtered to the condition — on any plan, nothing to set up in HubSpot, an account of any size — and every contact whose new value satisfies the condition is one event, within a minute, named after the source (default: the trigger's words). The condition is any a Form's filter can say, by the property's kind: `is` / `isNot` (a dropdown, `--value` repeated for several), `contains` / `startsWith` / `endsWith` (text), `greaterThan` / `lessThanOrEqual` … (numbers), `isAfter` / `isBetween` (dates, `YYYY-MM-DD`), `isEmpty` / `isNotEmpty` (any); `--operator` is `is` when unsaid. Names, kinds and operators come from `baker hubspot contacts properties` and row properties from `baker hubspot contacts fields`; `--preview --property … [--operator …] --value … [--field …] [--contact <id or email>]` says how many contacts satisfy it today (NOT counted — only contacts that come to satisfy it from now on are) and returns `preview.record`, the one most recently there or the one asked for, to check every row against before making anything. `--set-trigger --source <id> --property … [--operator …] --value …` changes what an event watches later: the rows stay and `countingSince` moves to now. The connection must be allowed to read contacts, and a refusal names the reconnect. `counting` at once, no URL; the source carries `hubspot { property, propertyLabel, kind, operator, values, valueLabels }`, `countingSince`, `listening` (whether HubSpot has been told to keep its changes: `listening`, `not_configured` or `failed`, with a `detail`), `lastError` and `mapping` — the same field → template table as an address, over the contact's properties plus `{{id}}`, defaulting to HubSpot's standard ones (email, phone, the contact id, name, address, `hs_google_click_id`, `hs_facebook_click_id`); a `--field` row at creation replaces the default it names, `--map --field` replaces the whole set later, and `--amount-property … --currency …` is the short spelling for the `value` and `currency` rows. `--field properties.<name>=<template>` adds an extra property of the event (`--field properties.plan={{plan_tier}}`): it breaks the event down on Measure → Events and a send reads it back as `{{properties.<name>}}`. A deal is watched the same way with `--object deal`, and a lead with `--object lead` (`baker hubspot leads properties|fields`) — where HubSpot records qualification and disqualification as the lead's stage. A deal's or a lead's event is about its contacts (`--contacts every|first`), read as `{{contact.<name>}}`; a lead has no amount. Leads need Sales Hub Professional or Enterprise. Where the event is sent on (Meta, Google Ads…) is `sends`, edited on the event's own card on the Sources page.
|
|
@@ -1553,14 +1642,15 @@ baker experiment update --id a3f91c2b --because "…" # a live one
|
|
|
1553
1642
|
baker experiment status # the verdict on every test, first; dates as calendar dates
|
|
1554
1643
|
baker experiment status --id a3f91c2b --full # one test, with everything the dashboard reads and the posteriors
|
|
1555
1644
|
baker experiment history --landing oferta # every finished test on a page: claim, numbers, decision, learning
|
|
1645
|
+
baker experiment start … --hold # publish both versions with the split off, for the client to approve by link first
|
|
1556
1646
|
baker experiment pause --id a3f91c2b # everyone sees the original for now
|
|
1557
|
-
baker experiment resume --id a3f91c2b # the split picks up with the same sides
|
|
1647
|
+
baker experiment resume --id a3f91c2b # the split picks up with the same sides; a held test starts here, dated from now
|
|
1558
1648
|
baker experiment finish --id a3f91c2b --keep variant --learning "…" # end it now; say which version stays and what it taught
|
|
1559
1649
|
baker experiment cancel --id a3f91c2b # call it off: staged → gone, live → ended, original kept
|
|
1560
1650
|
baker experiment fold # make the page's own content the version that was kept
|
|
1561
1651
|
```
|
|
1562
1652
|
|
|
1563
|
-
**A page has variants. A variant is never a page.** The variant is a real built folder at `src/pages/oferta--1/`, so it gets every quality gate a page gets — which matters, because it is about to be shown to half the client's visitors. What it does not get is a public address: it is absent from the Landings list and the sitemap, names the page's URL as its canonical, and `/oferta--1/` returns **404** at the edge. It is as indexable as the page it is a version of, deliberately — half the crawls of `/oferta/` are served the variant, so a `noindex` on it is a `noindex` on the live page. Both versions answer at `/oferta/`. Assignment happens while the HTML is served, so there is no flicker and nothing for an ad blocker to suppress, and the split is a path rewrite and never a redirect. To look at one side deliberately, `/oferta/?_bkr_preview=a` and `?_bkr_preview=b` serve it exactly, with no assignment and no cookie.
|
|
1653
|
+
**A page has variants. A variant is never a page.** The variant is a real built folder at `src/pages/oferta--1/`, so it gets every quality gate a page gets — which matters, because it is about to be shown to half the client's visitors. What it does not get is a public address: it is absent from the Landings list and the sitemap, names the page's URL as its canonical, and `/oferta--1/` returns **404** at the edge. It is as indexable as the page it is a version of, deliberately — half the crawls of `/oferta/` are served the variant, so a `noindex` on it is a `noindex` on the live page. Both versions answer at `/oferta/`. Assignment happens while the HTML is served, so there is no flicker and nothing for an ad blocker to suppress, and the split is a path rewrite and never a redirect. To look at one side deliberately, `/oferta/?_bkr_preview=a` and `?_bkr_preview=b` serve it exactly, with no assignment and no cookie — and they keep answering while the test is paused and after it ends, up to `fold`, which removes the other version's file. That window is how a client is shown a version at all.
|
|
1564
1654
|
|
|
1565
1655
|
**The goal is one event, named by its key.** `--goal submit:book-a-call` — the same vocabulary the event stream uses (`form:<flow>:<node>:<trigger>`, `submit:<flow>`, `page:<name>`, `exit:<host>`), and `baker analytics conversions --candidates` lists the keys these pages produce. Not a conversion *name*, which groups several keys: a variant that swaps the page's Form for a shorter one converts on a different key, and a name would either count both endings as one outcome or count the new version as never converting at all — `--variant-goal` gives the new version its own event when it has one. The goal is fixed for the life of the test and the verdict is read on it alone. Every other conversion the company counts comes back under `secondary` on every result, with the same interval and a one-word reading, and decides nothing. A conversion counts for a visitor wherever it happens after they were shown a version — on the page, on another page, in a delivered lead, or in a deal the CRM posted a week later by email.
|
|
1566
1656
|
|
|
@@ -1771,6 +1861,38 @@ baker ga4 draft clear
|
|
|
1771
1861
|
|
|
1772
1862
|
---
|
|
1773
1863
|
|
|
1864
|
+
### ActiveCampaign reads (`baker activecampaign`)
|
|
1865
|
+
|
|
1866
|
+
Read the connected ActiveCampaign account live; nothing is stored and nothing in ActiveCampaign changes.
|
|
1867
|
+
|
|
1868
|
+
```bash
|
|
1869
|
+
baker activecampaign account # contacts, site tracking on/off + tracking account id, allowed domains, event tracking
|
|
1870
|
+
baker activecampaign campaigns [--status completed] [--since 2026-09-01] [--limit 20] # email reports, most recently sent first
|
|
1871
|
+
baker activecampaign automations [--active-only] # on/off, entered/exited, what starts each one
|
|
1872
|
+
baker activecampaign contacts [--email a@b.com | --tag <id|name> | --list <id|name> | --search <text>] [--limit 20]
|
|
1873
|
+
baker activecampaign deals [--pipeline <id|title>] [--stage <id|title>] [--status open|won|lost] [--owner <id|username|email>]
|
|
1874
|
+
baker activecampaign pipelines | lists | tags [--search <text>] | fields | users
|
|
1875
|
+
```
|
|
1876
|
+
|
|
1877
|
+
Campaign rows carry `sends`, `opens`, `uniqueOpens`, `clicks`, `uniqueClicks`, `unsubscribes`, `hardBounces`, `softBounces` and `rates` (`open`, `click`, `unsubscribe` and `bounce` as shares of sends; `clickToOpen` as unique clicks over unique opens; `null` before anything is sent). Deal values are in the currency's major units, and `totals` sums every matching deal per currency. Every command takes `--account <id>` when the company has more than one ActiveCampaign connection, and `--full` adds each row's untouched ActiveCampaign payload as `raw`. Nothing connected answers `NO_ACTIVECAMPAIGN_CONNECTION`, a key ActiveCampaign stopped accepting `ACTIVECAMPAIGN_RECONNECT_REQUIRED` — both with a `request_connection` fix.
|
|
1878
|
+
|
|
1879
|
+
### ActiveCampaign changes (`baker activecampaign stage` / `unstage` / `drafts`)
|
|
1880
|
+
|
|
1881
|
+
Stage a custom contact field, list, tag or deal pipeline on the connected ActiveCampaign account. Nothing changes in ActiveCampaign until the chat is published; then each change is created — or, when the account already has it (a field by its personalization tag, the rest by name), reused rather than duplicated.
|
|
1882
|
+
|
|
1883
|
+
```bash
|
|
1884
|
+
baker activecampaign stage field --utm # UTM_SOURCE, UTM_MEDIUM, UTM_CAMPAIGN, UTM_CONTENT, UTM_TERM
|
|
1885
|
+
baker activecampaign stage field --title "Plan" --type dropdown --options "Basic,Pro"
|
|
1886
|
+
baker activecampaign stage list --name "Webinar sign-ups"
|
|
1887
|
+
baker activecampaign stage tag --name "hot-lead"
|
|
1888
|
+
baker activecampaign stage pipeline --title "Inbound" --stages "New lead,Qualified,Won" --currency usd
|
|
1889
|
+
baker activecampaign drafts [--chat <id>] # what is staged; after Publish, what happened to each
|
|
1890
|
+
baker activecampaign unstage <ref|name|perstag> # drop one staged change
|
|
1891
|
+
baker activecampaign unstage --all # drop every staged change
|
|
1892
|
+
```
|
|
1893
|
+
|
|
1894
|
+
A field is put on every list. Field types: `text`, `textarea`, `date`, `datetime`, `dropdown`, `listbox`, `radio`, `checkbox`, `hidden`; `dropdown`, `listbox`, `radio` and `checkbox` need `--options`. A new pipeline gets exactly `--stages`; an existing one only gains the stages it lacks. Every `stage` takes `--account <id>` when the company has more than one ActiveCampaign connection.
|
|
1895
|
+
|
|
1774
1896
|
### Google Search Console (`baker gsc`)
|
|
1775
1897
|
|
|
1776
1898
|
GSC commands for PPC-SEO arbitrage, brand halo analysis, and negative keyword discovery.
|
|
@@ -1850,7 +1972,7 @@ Ads start from what customers said. Three commands carry the process; the agent
|
|
|
1850
1972
|
```bash
|
|
1851
1973
|
baker creatives brief [--adset <id>] [--account-id act_<id>] [--no-research] # one read: viewer, account bottleneck, what works, taste, customer quotes, ideas on file
|
|
1852
1974
|
baker creatives ideas [--full] # check and rank src/creatives/_ideas/*.md; build_next
|
|
1853
|
-
baker creatives make <idea> [--slug <s>] [--adset <id>] [--reference <adId>] [--spec <beats.json>] [--from-idea] [--series <lead>]
|
|
1975
|
+
baker creatives make <idea> [--slug <s>] [--adset <id>] [--reference <adId> [--platform meta|linkedin|tiktok|google]] [--spec <beats.json>] [--from-idea] [--series <lead>]
|
|
1854
1976
|
baker creatives translate --slug <ad> --to es-MX,es-CO,pt-BR [--copy-file <json>] [--note "<brief>"] [--again] # the same ad in other languages, one design
|
|
1855
1977
|
baker creatives learn [--days <n>] [--dry-run] # what each idea's ads did, written back onto the idea
|
|
1856
1978
|
```
|
|
@@ -2005,7 +2127,7 @@ baker research customers --dry-run # print, write nothing
|
|
|
2005
2127
|
|
|
2006
2128
|
### `baker research advertisers "keyword"`
|
|
2007
2129
|
|
|
2008
|
-
Returns a ranked list of **domains** competing for one keyword in Google, with average SERP position, relevance rating, estimated traffic value and visibility — domain economics, **NOT ad copy**. Despite the name it returns no headlines, descriptions or creative of any kind; for a competitor's actual ad copy use `baker winning-ads content <adId>` (Meta
|
|
2130
|
+
Returns a ranked list of **domains** competing for one keyword in Google, with average SERP position, relevance rating, estimated traffic value and visibility — domain economics, **NOT ad copy**. Despite the name it returns no headlines, descriptions or creative of any kind; for a competitor's actual ad copy use `baker winning-ads content <adId>` (Meta, LinkedIn, TikTok and Google, for brands the library tracks) or, for a one-off Google read, `baker research google-ads <domain> --copy`.
|
|
2009
2131
|
|
|
2010
2132
|
Defaults to `--location us` and `--language en` when omitted; the response carries a `query_context` showing which pair was used, so always set both for non-US or non-English markets.
|
|
2011
2133
|
|
|
@@ -3405,12 +3527,20 @@ A Google Drive folder is never added with `add`: the agent calls `request_connec
|
|
|
3405
3527
|
|
|
3406
3528
|
Search the **ad-dna** corpus of scored "winning" competitor ads for reference creatives to reproduce (e.g. with `baker canvas`), and manage the brands your library tracks (`follow` / `following` / `feed` / `unfollow`). Each result carries a presigned media URL (~1h TTL), the ad's DNA summary, and scores. The CLI authenticates with the normal `BAKER_API_KEY`; the Baker backend proxies the request to the ad-dna service with a server-held token — no extra credential in the sandbox.
|
|
3407
3529
|
|
|
3408
|
-
> The corpus
|
|
3530
|
+
> The corpus reads **Meta, LinkedIn, TikTok and Google Ads** (`--platform meta,linkedin,tiktok,google`). Google search text ads are `--format text`; only Google display and YouTube ads can be a design reference.
|
|
3531
|
+
|
|
3532
|
+
> Rows are compact by default. `--fields a,b` keeps only those columns in every `--output` on `search`, `feed`, `winners`, `ads`, `advertisers`, `following` and `content`; on ad rows a name only `--full` carries (`angle`, `hook_archetype`, …) comes back on its own, and a name no row carries is refused with `error.fix.validValues`.
|
|
3409
3533
|
|
|
3410
3534
|
> Backend env: the Convex deployment must have `AD_DNA_API_TOKEN` set (`npx convex env set AD_DNA_API_TOKEN …`). `AD_DNA_API_URL` is optional and defaults to `https://ads.withbaker.com`.
|
|
3411
3535
|
|
|
3412
3536
|
> Replaces the old `baker ads google library` tree, which has been removed. Competitor-by-keyword discovery still lives at `baker research advertisers`.
|
|
3413
3537
|
|
|
3538
|
+
`baker winning-ads profile <advertiserId>` returns what one brand is doing: an estimated spend in USD (a range over every ad since `since`, the last 30 days, and a minimum, split by channel in `by_platform` — a channel that publishes no delivery is marked `unpriced`; `ads_counted` says how many ads were measured, estimated from similar ads, or not counted for lack of reach), what it launched lately and which of those still run, the concepts it tested and the version it kept, its format and platform mix, top landing pages, audiences and similar brands. `--platform` narrows it, `--full` returns everything. `baker winning-ads launches [--since 7] [--advertiser a,b]` lists what the followed brands (or the named ones) launched in the last N days and which still run. Both say, for every launch, whether it was a `new` idea, another version of one still in `testing`, or a version built on a `winner` the brand had already kept; the profile also counts new ideas per week and `unique_ideas` overall.
|
|
3539
|
+
|
|
3540
|
+
`baker winning-ads landings <advertiserId>` lists every landing page the brand's ads point to, most ads first, with how many ads point there, how many still run, the platforms and when each was last used. `address_only` marks an address only Google search ads print: Google publishes no search ad's destination, so it may not be a real page and is never analysed. `--analyse` studies the top 5 pages not analysed yet (`--pages a,b` to name them): each page's headline, value propositions, offer, pricing, calls to action, proof, audience and sections in order. Analysis takes a few minutes per page and is shared by every company, so a page analysed once is ready for all. `--platform` narrows it, `--full` returns every field.
|
|
3541
|
+
|
|
3542
|
+
`baker winning-ads search-copy <advertiserId>` reads what a brand says on Google Search from its search ads: every headline with its hook (category, brand, free, price_discount, outcome, proof, new_timely, comparison, audience, location, feature, call_to_action, question), its descriptions, sitelinks and callouts. Each is `running` or `dropped` (every ad that carried it has stopped), with how many ads carried it and the longest any ran. `hooks` compares the running headlines' hooks with the dropped ones; `rival_headlines` lists headlines naming a competitor. `part_totals` counts every part of each kind; `--part <headlines|descriptions|sitelinks|callouts> --offset <n>` reads one list a page at a time (`next_offset` until null). `--running` keeps what still runs, `--limit` sets rows per list or page (default 15), `--full` adds dates and every address the ads show (Google publishes no search ad's destination, only that address).
|
|
3543
|
+
|
|
3414
3544
|
`baker winning-ads refresh <advertiserId>` re-scrapes a followed brand so its newest ads land in the library. It applies immediately and runs at most once every 6 hours per brand; inside that window it answers `RATE_LIMITED` with an `error.fix` naming when the brand can be refreshed again. While a follow or the last refresh is still collecting the brand's ads, it starts nothing and says so.
|
|
3415
3545
|
|
|
3416
3546
|
### `baker winning-ads search <query>`
|
|
@@ -3461,6 +3591,7 @@ baker winning-ads search "delivery driver recruitment" --audience-temperature 0_
|
|
|
3461
3591
|
| `--hook-archetype <list>` | Narrow to ads on a proven hook **seed** (from `winning-ads hooks`) |
|
|
3462
3592
|
| `--format-pattern <list>` | Narrow to statics in these containers (from `winning-ads formats`, e.g. `comparison_table`) |
|
|
3463
3593
|
| `--diverse` | One varied page (different brands, containers, hooks) instead of rank order; ignores paging |
|
|
3594
|
+
| `--all-kinds` | Also return Google search text, Shopping and app ads. By default only designed pictures and videos come back; `--format text` (or a query asking for search ads) returns search ads alone |
|
|
3464
3595
|
| `--output json\|md\|files` | Output format (default json) |
|
|
3465
3596
|
| `--fields <list>` | Only these row fields (e.g. `advertiser,container,mechanism`); a `--full`-only field turns `--full` on, an unknown one is refused with `error.fix.validValues` |
|
|
3466
3597
|
| `--full` | Include DNA detail + longevity |
|
|
@@ -3520,7 +3651,7 @@ billed; the hint names the platform the fit was asked on, so a TikTok or LinkedI
|
|
|
3520
3651
|
|
|
3521
3652
|
| Flag | Default | Description |
|
|
3522
3653
|
|---|---|---|
|
|
3523
|
-
| `--platform <meta\|linkedin\|tiktok>` | `meta` | Which platform the id is on |
|
|
3654
|
+
| `--platform <meta\|linkedin\|tiktok\|google>` | `meta` | Which platform the id is on. The fit reads a still picture: a video ad (YouTube included) is refused (`VIDEO_REFERENCE`, read it with `content`), and on Google a search text ad, Shopping listing or app-install ad is refused (`NOT_A_DESIGN_REFERENCE`) |
|
|
3524
3655
|
| `--full` | off | The whole answer, with the reasoning per element |
|
|
3525
3656
|
|
|
3526
3657
|
### `baker winning-ads advertisers <brand>`
|
|
@@ -3532,17 +3663,31 @@ baker winning-ads advertisers "Acme" --output md # find our own adverti
|
|
|
3532
3663
|
baker winning-ads advertisers "Deel" --platform meta --output md
|
|
3533
3664
|
```
|
|
3534
3665
|
|
|
3535
|
-
### `baker winning-ads follow "<
|
|
3666
|
+
### `baker winning-ads follow "<website | brand | link>"`
|
|
3536
3667
|
|
|
3537
|
-
Add **all** of a brand's ads to your library — every platform (Meta
|
|
3668
|
+
Add **all** of a brand's ads to your library — every platform (Meta, LinkedIn, TikTok, Google Ads), every account it runs there, and every country → `POST /api/ad-library/follow`. Paste whatever you have: a website is best — we resolve every Facebook page and LinkedIn company the site links (a brand often runs one per market), its TikTok account, and every Google Ads entity running its ads (never a reseller) — but a brand name or any profile / ad-library link works too. Discovery is never region-scoped. `--platform` is accepted and ignored. The result `status` is one of:
|
|
3538
3669
|
|
|
3539
3670
|
- `following` — the brand is already in the corpus; you're now subscribed (no wait).
|
|
3540
3671
|
- `added` — a new brand was queued for ingestion; its ads appear as discovery completes (a `hints[]` note flags this).
|
|
3541
|
-
- `ambiguous` — the input mapped to multiple brands; pick one from `candidates` and re-run with a more specific
|
|
3672
|
+
- `ambiguous` — the input mapped to multiple brands; pick one from `candidates` and re-run with a more specific website/link.
|
|
3673
|
+
|
|
3674
|
+
`suggestions` lists accounts only *named* like the brand (say, another country's Facebook page its site doesn't link). They are not tracked; `hints[]` carries a ready `add-accounts` command for them.
|
|
3542
3675
|
|
|
3543
3676
|
```bash
|
|
3544
|
-
baker winning-ads follow "deel.com"
|
|
3545
|
-
baker winning-ads follow "https://www.linkedin.com/company/acme" --
|
|
3677
|
+
baker winning-ads follow "deel.com"
|
|
3678
|
+
baker winning-ads follow "https://www.linkedin.com/company/acme" --label "Acme (competitor)"
|
|
3679
|
+
```
|
|
3680
|
+
|
|
3681
|
+
### `baker winning-ads discover "<website | brand | link>"`
|
|
3682
|
+
|
|
3683
|
+
The `accounts` and `suggestions` a follow would find, without following anything → `POST /api/ad-library/discover`. Paid lookups. Each account is compact — `platform`, `name`, `followers`, `ads_url` (its public ad library, to check it is the brand's) and `input` (what to paste into `add-accounts`); `--full` adds every other field the lookup read.
|
|
3684
|
+
|
|
3685
|
+
### `baker winning-ads add-accounts <advertiser> "<link,link,...>"`
|
|
3686
|
+
|
|
3687
|
+
Track more accounts under a brand you already follow — another market's Facebook page, a second LinkedIn company, another Google Ads entity → `POST /api/ad-library/accounts/add`. Each input is a profile or ad-library link, a Google advertiser id (`AR…`) or a website; up to 20. The response lists `added`, `already_tracked`, and `failed` (with a reason per input); one input failing never blocks the rest. An account that already belongs to a different brand in the library is refused — follow it as its own brand.
|
|
3688
|
+
|
|
3689
|
+
```bash
|
|
3690
|
+
baker winning-ads add-accounts adv_123 "https://www.facebook.com/barkibu.it,AR01614014350098432001"
|
|
3546
3691
|
```
|
|
3547
3692
|
|
|
3548
3693
|
### `baker winning-ads following`
|
|
@@ -3576,18 +3721,28 @@ baker winning-ads feed --advertiser adv_123,adv_456 --platform meta --output md
|
|
|
3576
3721
|
| `--limit <n>` | Total winners across all follows 1–200 (default 40) |
|
|
3577
3722
|
| `--winner-category <list>` | Restrict to specific winner categories |
|
|
3578
3723
|
| `--format <list>` | Restrict to specific formats (e.g. `static,video`) |
|
|
3724
|
+
| `--all-kinds` | Also return Google search text, Shopping and app ads (default: designed pictures and videos only; `--format text` returns search ads alone) |
|
|
3579
3725
|
|
|
3580
3726
|
### `baker winning-ads winners <advertiser>`
|
|
3581
3727
|
|
|
3582
|
-
Top winning ads for one advertiser id → `GET /api/ad-library/advertiser-winners` (use `feed` for all your follows at once). Same lean winner cards as `search` (add `--full` for DNA + longevity). Supports `--top N` and `--platform
|
|
3728
|
+
Top winning ads for one advertiser id → `GET /api/ad-library/advertiser-winners` (use `feed` for all your follows at once). Same lean winner cards as `search` (add `--full` for DNA + longevity). Supports `--top N`, `--platform meta|linkedin|tiktok|google` (omit it for the top winners across every platform) and `--per-platform`, which adds `by_platform`: each platform's own top winners, since scores don't compare across platforms.
|
|
3583
3729
|
|
|
3584
3730
|
```bash
|
|
3585
|
-
baker winning-ads winners adv_123 --top
|
|
3731
|
+
baker winning-ads winners adv_123 --per-platform --top 5 --output md
|
|
3732
|
+
```
|
|
3733
|
+
|
|
3734
|
+
### `baker winning-ads ads <advertiser>`
|
|
3735
|
+
|
|
3736
|
+
Every ad one advertiser has run → `GET /api/ad-library/advertiser-ads`, one row per distinct ad, the same cards as `winners`. `--platform meta|linkedin|tiktok|google` narrows it to one platform (omit it for all together), `--format video,static,carousel,text` to those formats (`text` is a Google search ad), `--running all|running|stopped` to what still runs or what stopped. Rows come strongest first. Pages with `--limit` (1-100, default 24) and `--offset`: the response carries `total` and `next_offset` (`null` on the last page).
|
|
3737
|
+
|
|
3738
|
+
```bash
|
|
3739
|
+
baker winning-ads ads adv_123 --platform google --running running --output md
|
|
3740
|
+
baker winning-ads ads adv_123 --offset 24
|
|
3586
3741
|
```
|
|
3587
3742
|
|
|
3588
3743
|
### `baker winning-ads content <ad-id>`
|
|
3589
3744
|
|
|
3590
|
-
Read what's **inside** one ad → `GET /api/ad-library/ad-content`. `search`/`winners`/`feed` return a lean shortlist; this opens a single `ad_id` so you can understand a reference before reproducing it. For a **video** it returns the spoken `transcript`, the `on_screen_text` overlays, and the ad `copy` (`primary_text`/`headline`/`cta`). A **static** or **carousel** ad returns the text drawn into the image, each line led by its job and card (`card 2 · headline: …`); a static also returns its `format_pattern`. Add `--full` for how the ad is built (composition, colours, CTA drawn in the image, markers such as price tags or badges), how it persuades (awareness stage, mechanism, pain points, desires, value props, proof, objections handled), what it offers (offer type, pricing, entry price, guarantee, urgency, bonus), and for video its speech, pacing, soundtrack and each overlay's role + position (e.g. `GLOBAL PAYROLL @0.5s [hook, top]`). Fields the ad does not carry are left out. `--platform meta|linkedin|tiktok` selects which platform the id is on (default `meta`).
|
|
3745
|
+
Read what's **inside** one ad → `GET /api/ad-library/ad-content`. `search`/`winners`/`feed` return a lean shortlist; this opens a single `ad_id` so you can understand a reference before reproducing it. For a **video** it returns the spoken `transcript`, the `on_screen_text` overlays, and the ad `copy` (`primary_text`/`headline`/`cta`, plus `landing_url`; a Google ad also carries `google_ad_type`). A **static** or **carousel** ad returns the text drawn into the image, each line led by its job and card (`card 2 · headline: …`); a static also returns its `format_pattern`. Add `--full` for how the ad is built (composition, colours, CTA drawn in the image, markers such as price tags or badges), how it persuades (awareness stage, mechanism, pain points, desires, value props, proof, objections handled), what it offers (offer type, pricing, entry price, guarantee, urgency, bonus), and for video its speech, pacing, soundtrack and each overlay's role + position (e.g. `GLOBAL PAYROLL @0.5s [hook, top]`). Fields the ad does not carry are left out. `--platform meta|linkedin|tiktok|google` selects which platform the id is on (default `meta`).
|
|
3591
3746
|
|
|
3592
3747
|
```bash
|
|
3593
3748
|
baker winning-ads content adg_123 # transcript + on-screen text + copy
|
|
@@ -3603,6 +3758,22 @@ Stop following a brand by advertiser id → `POST /api/ad-library/unfollow`. Ret
|
|
|
3603
3758
|
baker winning-ads unfollow adv_123
|
|
3604
3759
|
```
|
|
3605
3760
|
|
|
3761
|
+
### Decisions about text (`baker decide`)
|
|
3762
|
+
|
|
3763
|
+
Typed questions about text, answered by Jev (a decision model) with a probability: a yes/no (`noul`), one option of your set (`choice`) or a level on a scale (`score`). Read-only, text only, never generates prose. Works with a `bk_`, `bkr_` or `bkv_` key, so a published Report can call it.
|
|
3764
|
+
|
|
3765
|
+
```bash
|
|
3766
|
+
baker decide --questions '{"b2b":{"type":"noul","question":"Is `message` written for a business buyer?"}}' --state '{"message":"…"}'
|
|
3767
|
+
baker decide --questions questions.json --items ads.json --state '{"advertiser":"Notion"}' [--full]
|
|
3768
|
+
```
|
|
3769
|
+
|
|
3770
|
+
- `--questions` (required): `{ "<name>": { "type": "noul", "question" } | { "type": "choice", "question", "options": { "<key>": "<meaning>" } } | { "type": "score", "question", "levels": [lowest, …, highest] } }`.
|
|
3771
|
+
- `--items`: `[{ "id", "text": "…" | { "<field>": "…" } }]`. Every question is asked about every item, which reaches Jev as `` `item` `` inside its own question. Up to 500 items of 4,000 characters, 2,000 questions per call; packed into requests of up to 200 questions sent at once.
|
|
3772
|
+
- `--state`: shared context, or the text itself when there are no items (inline JSON, a file, `-`, or plain text).
|
|
3773
|
+
- Each flag that takes JSON accepts it inline, as a file path, or `-` for stdin.
|
|
3774
|
+
- Output: `{ model, answers | items: [{ id, answers | null }], unanswered, requests, costUsd }`. A noul is `{ noul }`; a choice `{ choice, probability, confidence }`; a score `{ score, level, confidence }`. `--full` adds every option's `probabilities`.
|
|
3775
|
+
- When the model does not answer, the error carries `fix.action: "degrade"`: carry on without the answers rather than abort.
|
|
3776
|
+
|
|
3606
3777
|
### Scheduled agents (`baker scheduled-agents`)
|
|
3607
3778
|
|
|
3608
3779
|
A Scheduled agent is a **trigger** and a **prompt**. When the trigger fires, a Session opens with that prompt and does the job — there is no Task in between. `create`, `update`, and `delete` stage draft ops on `BAKER_CHAT_ID` and apply when the chat is published. `unstage` takes back what this chat staged on one item before Publish (`--index <n>` for one change only, by its index in `list` → `draft.ops`). `list` and `get` include draft state when `BAKER_CHAT_ID` is set; `get` on a published item also returns `runsAs` — who each run acts as and which tools it loads. `run` fires a published item immediately and does not require a chat id. Publishing every run unreviewed is switched on by the user on the item, never through the CLI: `--auto-publish` is refused with an `ask_user` fix.
|
|
@@ -3726,11 +3897,11 @@ Read and shape this workspace's Forms (flows). Operates on the local `_data.json
|
|
|
3726
3897
|
|
|
3727
3898
|
For ChatGPT Ads conversions, add a `chatgptAds` side effect to the Form step, choose a supported event name, and use `baker flows map` to map `advancedMatching` and optional `eventParams` (`value` and `currency`).
|
|
3728
3899
|
|
|
3729
|
-
**A Form has two halves, split by a trust boundary.** Its *structure* — steps, conditions, side effects, field mappings — is yours, and the write subcommands below edit exactly that. Its *confidential* half — connection secrets, OAuth accounts, third-party field definitions (HubSpot, Calendly, HighLevel, SavvyCal) — is
|
|
3900
|
+
**A Form has two halves, split by a trust boundary.** Its *structure* — steps, conditions, side effects, field mappings — is yours, and the write subcommands below edit exactly that. Its *confidential* half — connection secrets, OAuth accounts, third-party field definitions (HubSpot, Calendly, HighLevel, SavvyCal) — is set with `baker flows connect` whenever the agent knows the answer (an email's recipients and subject always; a connected platform's resource; a webhook with no token), and otherwise through the `request_flow_input` tool (`baker_ui` MCP server): the agent authors the surrounding structure and references it by `nodeId`/`sideEffectId`, and the user enters secrets, connects accounts, and picks resources in the dashboard. Those values are written (encrypted, where a secret) into the Form on the chat's branch and go live when the chat is published. Nothing any of these commands does touches a live system.
|
|
3730
3901
|
|
|
3731
3902
|
```bash
|
|
3732
3903
|
baker flows list # every Form + how many confidential fields still need setup
|
|
3733
|
-
baker flows show contact # confidential fields
|
|
3904
|
+
baker flows show contact # confidential fields, where each sealed destination sends (never a credential), and drift
|
|
3734
3905
|
baker flows show contact --full # include the full flow tree (secret values redacted)
|
|
3735
3906
|
|
|
3736
3907
|
baker flows schema # both vocabularies + the customForm field types
|
|
@@ -3745,11 +3916,14 @@ baker flows options calendly # what a step/destination ca
|
|
|
3745
3916
|
baker flows connect contact --node book --resource <id> # fill a Calendly/SavvyCal/GoHighLevel step yourself
|
|
3746
3917
|
baker flows connect contact --side-effect se-gsheet-1 --resource <spreadsheetId> # a sheet Baker can reach (--tab to pick the tab)
|
|
3747
3918
|
baker flows connect contact --side-effect se-gsheet-1 --new-sheet "Contact leads" --columns "Name,Email" # create one and wire it
|
|
3748
|
-
baker flows connect contact --side-effect se-pipedrive-1 # Pipedrive / GoHighLevel contact: the account is the destination
|
|
3919
|
+
baker flows connect contact --side-effect se-pipedrive-1 # Pipedrive / GoHighLevel / ActiveCampaign contact: the account is the destination
|
|
3920
|
+
baker flows connect contact --side-effect se-email-1 --email "ana@x.com, luis@x.com" --subject "New lead — Contact" # an email destination: the agent states it, never a card
|
|
3921
|
+
baker flows connect contact --side-effect se-httpWebhook-1 --url https://hooks.example.com/lead # a webhook that needs no token
|
|
3749
3922
|
baker flows connect contact --all --type googleSpreadsheet --same-as madrid:se-gsheet-1 # copy another Form's destination
|
|
3750
3923
|
baker flows map contact --from map.json --write # a whole mapping at once — past ~3 fields, use this
|
|
3751
3924
|
baker flows map contact --map A=nombre --write # one or two fields
|
|
3752
3925
|
baker flows map contact --hubspot-form <guid> --from map.json --write # HubSpot: field types read off the form
|
|
3926
|
+
baker flows map contact --map email=email --map 'tags="withbaker-"+tracking:page_path' --write # ActiveCampaign: fields read off the account; tag each lead with its page
|
|
3753
3927
|
baker flows map contact --side-effect <id> --hubspot-form <guid> --prune-missing --write # drop dead mappings
|
|
3754
3928
|
baker flows map contact --from map.json --replace --write # the slot becomes exactly this; drops everything not named
|
|
3755
3929
|
baker flows normalize contact --write # repairs a nulled optional; runs pre-commit anyway
|
|
@@ -3759,12 +3933,13 @@ Notes:
|
|
|
3759
3933
|
|
|
3760
3934
|
- **`schema` takes the kind as an argument because `hubspot` is both** — a node type (embeds a form on the page) and a side-effect type (fires a behavioural event). They are different things with one name.
|
|
3761
3935
|
- **`connect` wires a HubSpot form without asking the user.** When HubSpot is connected and the agent knows which form is meant, `baker flows connect <slug> --hubspot-form <formId> [--side-effect <id>]` attaches the account and the form to a `hubspotForm` side effect (`--all`: every one in the Form still missing it, never repointing one already wired) — the same thing the chat card writes, sealed by Baker so the config never passes through the agent. It refuses a form with spam prevention (captcha) on, and returns `destination.formGuid` for `map --hubspot-form`. The card (`request_flow_input`) stays for an unconnected account or an ambiguous choice.
|
|
3762
|
-
- **`options` + `connect` do the same for every other connected platform.** `baker flows options <kind>` lists what the connected account holds (Calendly events, SavvyCal links, GoHighLevel calendars and forms, the Google spreadsheets Baker can reach); `connect --node|--side-effect <id> --resource <id>` writes exactly what the card would. Pipedrive
|
|
3936
|
+
- **`options` + `connect` do the same for every other connected platform.** `baker flows options <kind>` lists what the connected account holds (Calendly events, SavvyCal links, GoHighLevel calendars and forms, the Google spreadsheets Baker can reach); `connect --node|--side-effect <id> --resource <id>` writes exactly what the card would. Pipedrive, a GoHighLevel contact and an ActiveCampaign contact take no resource. `--new-sheet` creates a spreadsheet in the connected Google account (Google only lets Baker reach sheets it created or the user chose), `--same-as <slug>:<id>` copies another Form's wired destination, `--all --type <kind>` fills every unwired one of a kind. Nothing connected answers `NOT_CONNECTED` with the `request_connection` fix; several accounts connected need `--account <id>`.
|
|
3937
|
+
- **`--email` / `--url` replace a destination whole, so they leave alone what only the user can set.** `--all --email` passes over an email that replies to the visitor's own answer (and says so in its hints); naming one is refused. A webhook that sends a credential keeps its address until the user re-enters both through `request_flow_input`. Unreadable settings are also left alone by default. For one unreadable email, `--replace-unreadable --email <complete list> --subject <text>` replaces the old setup when the user intends replacement, without revealing it. Never use this to add to an unknown recipient list; it cannot override `--all`, a known visitor reply, or a webhook. `flows show` reads back only destinations sealed for this company.
|
|
3763
3938
|
- **Configure the destination before you map.** `columnMapping`/`fieldMapping` describe a *specific* destination — sheet columns, a portal's field names — that only `connect` or `request_flow_input` can set, and both return it. A mapping written first is valid JSON that ships and drops every submission; `verify` blocks the half-wired result.
|
|
3764
|
-
- **`map` reads the record shape off the side effect's type.** One property name, four record shapes: a Sheet is addressed by column letter, HubSpot by property name, Pipedrive and GoHighLevel by field key, Crmble by field id. That is why there is no `--key`, and why `--entity` and `--custom`/`--standard` are required rather than defaulted.
|
|
3939
|
+
- **`map` reads the record shape off the side effect's type.** One property name, four record shapes: a Sheet is addressed by column letter, HubSpot by property name, Pipedrive and GoHighLevel by field key, ActiveCampaign by field key (`email`, `firstName`, a custom field's id, `tags`, `lists`, `automations`, `note`, or a qualified `deal.title` / `account.name` / `event.name`), Crmble by field id. That is why there is no `--key`, and why `--entity` and `--custom`/`--standard` are required rather than defaulted for Pipedrive and GoHighLevel.
|
|
3765
3940
|
- **A mapping is usually eight to fifteen fields, so `--from` is the main door.** It takes `{ "map": { "<destField>": "<value>" } }` from a file or stdin; `--map` flags are for one or two. Both produce identical output.
|
|
3766
3941
|
- **Most CRM fields are not fed by a form field.** The value grammar is a bare form field (`nombre`), `field:Step.name` when two steps share a name, `tracking:utm_source`, `global:Name`, `code:exposed_value`, a `"literal"`, or any of those joined with `+`. Tracking names are validated against the engine's own `TRACKING_FIELD_IDS`, read out of the workspace rather than copied — attribution columns are the most common CRM mapping there is, and they were unexpressible before.
|
|
3767
|
-
- **A CRM mapping's field type is derived from the destination, never defaulted.** Every CRM record types `fieldType` as required, and it is the account's answer, not the agent's — HubSpot builds its submission key as `<objectTypeId>.<fieldType>.<fieldName>`, so a wrong type on a date property skips the `YYYY-MM-DD` coercion and the value is dropped. `--hubspot-form <formGuid>` (or `"hubspotForm"` in the mapping file) reads every property's type and object type off the form, so nothing has to state one. Where a destination cannot be read, put the type on the LEFT — `c0ffee:varchar=email` — which leaves `:` on the right for the value kinds. A mapping with no type from either route is refused, never written without one.
|
|
3942
|
+
- **A CRM mapping's field type is derived from the destination, never defaulted.** Every CRM record types `fieldType` as required, and it is the account's answer, not the agent's — HubSpot builds its submission key as `<objectTypeId>.<fieldType>.<fieldName>`, so a wrong type on a date property skips the `YYYY-MM-DD` coercion and the value is dropped. `--hubspot-form <formGuid>` (or `"hubspotForm"` in the mapping file) reads every property's type and object type off the form, so nothing has to state one. An `activeCampaignContact` mapping reads the connected ActiveCampaign account's field list on every call — no flag — so its types (`standard`, `custom`, `tags`, `lists`, `automations`, `deal`, `account`, `note`, `event`) are derived too, a custom field may be named by its id, personalization tag or label (stored as the id) — or as `custom.<TAG>` for one that is only staged so far, resolved when each lead is sent — and a name the account does not have is refused with the list of the ones it does. Its `tags`, `lists` and `automations` mappings are comma-separated names or ids that may mix text and variables, e.g. `tags="withbaker-"+tracking:page_path`; `deal.title` or `deal.pipeline` creates a deal (`deal.value` in major units, `deal.stage` / `deal.owner` by name or id), `account.name` finds or creates the lead's company, `note` leaves a note and `event.name` records an event (it needs the account's event key on the connection). The answer's `hints` name a list, automation, pipeline, stage or user the account does not have, a deal nothing creates, and an event with no event key. Where a destination cannot be read, put the type on the LEFT — `c0ffee:varchar=email` — which leaves `:` on the right for the value kinds. A mapping with no type from either route is refused, never written without one.
|
|
3768
3943
|
- **`email` maps like anything else**, into `body.fields`, while `body.format` is `"json"`. A `"body"`-format email is one written message with no keys to address, and `map` refuses it rather than reshaping the body.
|
|
3769
3944
|
- **A Form can look finished and be losing every lead.** HubSpot refuses a submission that names a property it does not have — the whole submission, not the field — and the visitor still reaches the thank-you screen. Baker re-checks each Form's destination and `baker flows show <slug>` reports what it found: `data.drift[]` carries **one entry per drifted destination** — a Form with two HubSpot side effects has two mappings, two form ids and two repairs — each with the severity, a sentence naming the fields, the side-effect id and that destination's HubSpot form id; the hints carry one repair command per entry. `drift: null` means the check could not be made and is not the same answer as `[]`.
|
|
3770
3945
|
- **`--prune-missing` is the repair; `--replace` is not.** With `--side-effect <id>` and `--hubspot-form <guid>`, `--prune-missing` drops exactly the mappings whose destination field is absent from that form's live field list, names each one in `dropped`, and leaves every other mapping alone. It needs no `--map` and runs on its own. `--replace` drops everything the call does not name, so using it to remove three dead mappings means first restating the ten good ones correctly.
|
|
@@ -3774,7 +3949,7 @@ Notes:
|
|
|
3774
3949
|
- **`normalize` exists so authoring a Form does not require remembering an exception.** `oauthProviderId` is an optional `string`, so a `null` there fails typecheck one build later — it is repaired and staged instead of rejected.
|
|
3775
3950
|
|
|
3776
3951
|
- **Secrets never travel through this CLI or the chat.** `show` reports only whether each field is configured (`[set]`/`[missing]`, `[connected]`/`[needs connection]`, selected/not selected) — never a value. Configured secrets appear only as `[configured]` ciphertext markers.
|
|
3777
|
-
- Confidential side-effect types: `httpWebhook`, `zapier`, `crmble` (typed credentials); `pipedrive`, `googleSpreadsheet`, `hubspotForm`, `goHighlevelContact` (
|
|
3952
|
+
- Confidential side-effect types: `httpWebhook`, `zapier`, `crmble` (typed credentials); `pipedrive`, `googleSpreadsheet`, `hubspotForm`, `goHighlevelContact`, `activeCampaignContact` (connected account + resource); `email`. Widget node types needing a resource pick: `calendly`, `savvycal`, `hubspot`, `hubspotMeeting`, `highlevel`, `highlevelForm`.
|
|
3778
3953
|
- `request_flow_input` changes stage on the chat's branch and apply when the chat is published; discarding the chat drops them.
|
|
3779
3954
|
|
|
3780
3955
|
### Action Items (`baker actions`)
|
|
@@ -4309,10 +4484,14 @@ A skill fills only what you did **not** pin — `--model`, `--aspect-ratio` and
|
|
|
4309
4484
|
|
|
4310
4485
|
## Creative Canvas
|
|
4311
4486
|
|
|
4487
|
+
Static-ad guidance prefers a ready company Avatar whenever an actor is needed, chosen for the buyer context. A real founder or testimonial author uses their verified likeness; if it cannot be found, use initials or no face. The shared creative instructions also call for deliberate complete-logo selection, one consistent primary CTA treatment, and deterministic rendering of recognizable interfaces. Screen guidance distinguishes laptops and notebook computers from paper notebooks beside a phone.
|
|
4488
|
+
|
|
4312
4489
|
The creative canvas runs declarative JSON pipelines. You author a graph of nodes (text, image, video, audio, composition, control-flow), `baker canvas run` it, and every node's output drops to disk under `canvas/<run_id>/` so you can watch progress and consume the artifacts.
|
|
4313
4490
|
|
|
4314
4491
|
Auth: same `BAKER_API_KEY` + `BAKER_API_URL` as the rest of the CLI.
|
|
4315
4492
|
|
|
4493
|
+
Static resizes, fixes and series continuations keep why the original ad works and the elements its concept depends on, alongside the previous image. Older specs carry their persuasion mechanism and its reason instead. Automatic spec repairs preserve the concept, mechanism, message, brand (including the CTA color) and native interface; they can correct the execution without changing the idea. Change those choices explicitly in `prompt.json` when the brief changes.
|
|
4494
|
+
|
|
4316
4495
|
### Quick start
|
|
4317
4496
|
|
|
4318
4497
|
```bash
|
|
@@ -5972,7 +6151,7 @@ A completed render the review calls ready (`verdict` `ready` or `ready_with_note
|
|
|
5972
6151
|
|
|
5973
6152
|
**Static ads: the run corrects a blocking defect itself.** When the review of a static ad finds a blocking defect, `baker canvas run` makes up to 3 more renders (`AUTO_FIX_ROUNDS` in `static-autofix.ts`) before it reports, correcting each defect at the layer that causes it: words or a logo where an interface covers them (Reels, Stories) or the frame cuts them are **placed and extended** (`withExtendedSizes`): a `static_place` node reads where everything sits and shrinks the ad (to 60% at most) into the size's safe area, and a `static_extend_merge` node has the ad's own model paint the margins that leaves and keeps its painting as one picture across the whole frame, laying the ad's own pixels back only over the words, logo and buttons the placing read (padded and feathered, so no edge of the shrunk ad shows; the whole ad is laid back, as before, when nothing was read or the painting moved the words), so the model is never asked to move anything (a size already inside its area is passed on with nothing painted or billed, and one whose words sit too far out for a shrink to clear, or that the placing found inside its area while the review still blocks it, is laid out again instead, never placed the same way twice; a button is placed by its shape, its words grown by 0.7 of their height on every side, as the review judges it); a defect the spec asked for (a second subject, stars with no named source, a concept that does not read) and any defect of a native screen corrects the spec first (`static-spec-repair.ts`: a model rewrites `prompt.json` for those findings alone, every line of the copy kept word for word), then draws the ad again from it (a native screen redraws free); a picture wrong as a whole or in three places or more is made again from its brief, told what the last one got wrong, but only in a round with another after it unless the brief caused the defect; anything else on the picture is a `--fix` of the chosen picture for its own findings (`correctionOf`: the words to erase, the line to re-letter or add), naming what the last edit was already asked for, while each re-laid size the review flagged follows as an edit of its own last layout (`withSizesFollowingFix`), keeping what an earlier round fixed in it, and a size it found nothing blocking on is delivered as it was (`keep`, nothing in it made again or placed); anything else on a re-laid size alone edits just that size from its own last layout (`withRelayEdit`); sizes that do not show the same ad (`SIZES:`) are always the re-laid ones' fault, since every size follows the chosen picture, so they are laid out again to show exactly what it shows, never the picture edited to match them. A size a round did not touch (its file the same byte for byte) keeps the round before's verdict (`carryUnchanged`) and is not read again: the review reads only the sizes the round changed. Each correction is told what earlier rounds fixed so it keeps it right (`keptRules`), and starts from the best attempt so far: one that came out with more blocking defects than an earlier attempt is set aside and the earlier one corrected instead (`correctFrom`). Each round is one render (a fix, or one request per re-laid size) and prints `[autofix] round N of 3: …` on stdout; the final JSON's hints start with "Corrected automatically before this result, …" and its review is of the corrected version. Blocking findings left after the rounds keep the hints below. A round that would only repeat the correction that just left its defect in place (a chosen option, `--use-variant`, is only ever corrected) is not run: that version is reported as it is. `--no-autofix` reports after the first render.
|
|
5974
6153
|
|
|
5975
|
-
**Static ads: correct a version, or use another of its variants.** Correct a finished version with `--fix "<what to change>"`: one render takes that version (the last one, or `--from <run_id>`) as its first reference and changes only what you said, keeping the picture, the layout and every other word
|
|
6154
|
+
**Static ads: correct a version, or use another of its variants.** Correct a finished version with `--fix "<what to change>"`: one render takes that version (the last one, or `--from <run_id>`) as its first reference and changes only what you said, keeping the picture, the layout and every other word, and every size is made again from the corrected picture. **A correction grows on top of the version it starts from**: the run executes that version's own graph (its variants, the prefilter and pick, every earlier correction) with each of those steps pinned to the outputs that version recorded (free, never re-rendered, whatever `prompt.json` says now), then appends `edit_1` (the picture as its first reference, framed for the master as a variant is) and makes the sizes from it; a second correction appends `edit_2` on `edit_1`. `--use-variant` wires the chosen variant from the version's own `gen` as a `chosen` step, and a `--regenerate adapt_<size>` keeps the version's picture the same way. So the run record, and the dashboard's workflow of each version, show the whole history: options, pick, edits, sizes. The canvas file is never rewritten. Every static run keeps the graph it executed in the asset store (`graphUrl` on its run record, up to 4 MB), so a version rendered in another workspace ("Edit creative …" from a new chat, `--from <run_id>`) grows the same way, its steps pinned to the outputs its run record holds; only a run recorded before graphs were kept is corrected from its picture by URL. **A `prompt.json` changed only in its words, their positions or its colours** since the version shown is made the same way, as an edit of that version (`[edit]` in the output, the instruction read off the change); three new options are asked for only with `--regenerate static_variants`. A `--fix` whose defect is still blocking afterwards is recorded, and asking for it again with the same words exits 2 with `no_progress`. When every blocking finding is on re-laid-out sizes, the first hint says to lay out those sizes again (`--regenerate adapt_<size>`) before any `--fix`. Every static run's hints say what it cost in credits and what for. There is no render limit per creative. Use another variant with `--use-variant <sha256>` (`--from <run_id>`, default the last render): when the person asks in the chat for another of a version's variants over the judge's pick, every size is made again from that picture, and the only requests re-lay it out for each other size; `--regenerate adapt_9x16` lays out one size again from the same chosen picture when only that size came out wrong (after a `--fix` or `--use-variant`, from that corrected or chosen picture, so the size never brings back the uncorrected one; `--from <run_id>` names another version).
|
|
5976
6155
|
|
|
5977
6156
|
#### `baker canvas scaffold-video <video> [flags]`
|
|
5978
6157
|
|
|
@@ -6102,11 +6281,11 @@ The canvas is validated before it is written. stdout returns `{ ok, canvas_path,
|
|
|
6102
6281
|
|
|
6103
6282
|
**Who sees the ad.** `--target-adset <id>` names the Meta ad set the ad will run in. Before anything is billed, the viewer its targeting reaches is read exactly as `baker ads meta adsets --audience` reads it (`temperature`, what they already `knows`, `placements`) and written to `_definition.md` as `targetAdSet` and `viewer` (an existing definition keeps every other field). The sizes, the brief and the prefilter keep clear of that viewer's placements (`staticSafeArea`; `automatic`, a bare `facebook`/`instagram` or no placements is Advantage+, Reels included), and every `baker canvas run` checks the ad against that viewer. With no ad account, give the viewer from the Knowledge: `--viewer-temperature cold|warm|hot [--viewer-knows brand,offer,product] [--viewer-placements <placement,…>]`, recorded with `source: knowledge`; next to `--target-adset` they correct the read, and its `reasons` say so. A bad value exits 2 (`invalid_viewer`) before any billed pass; an ad set that cannot be read never stops the scaffold (a hint says why, and the sizes keep clear of every placement). With neither flag, a `viewer` (or `targetAdSet`) already in `_definition.md` is used as it is. stdout carries `target_adset`, `viewer` and a `checklist.viewer` line.
|
|
6104
6283
|
|
|
6105
|
-
**After a run** the CLI reads the finished ad back on what makes a static win, not a checklist of elements: every delivered image's pixel shape against its format; **every line of `prompt.json`'s copy (in-scene and designed alike) read back with its box by a box reader and compared** (a line more than 2% off, missing, or joined by words nobody asked for is blocking; case and punctuation fold, as does a capital I read as an l (one stroke in a sans-serif), accents do not; words the picture adds are blocking only when set at the copy's usual size or making a claim (a figure, a price, an offer), and otherwise a note, as a screen's code, a poster or a mug in the scene, except a price (a currency sign beside a figure) the copy does not hold, blocking at any size and blurred by the correction, the document it is on kept; every render is asked for no readable prices on a bill, quote, receipt, screen or price tag beyond the copy; a copy line is "on the ad twice" only when most of its words repeat, never a word or two echoed on a prop; on a native screen, which code typesets from the spec, a line read differently is the reader's error and only a missing one counts); **the ad's own copy and its logo measured against the format's safe area** (`staticSafeArea`, the one owner of those areas; `must-show.ts` decides what is measured: never what the scene prints, nor a copy line printed again in the scene while the line itself sits clear). On a 9:16, which runs in Stories and Reels alike, what Stories' header or bottom bar covers (and any other app's interface named) is said as "where Stories and Reels cover it" ("where Reels covers it" for an ad set that runs only in Reels) and blocks for the logo, the button, the headline, the figure and the offer, while a supporting line (body, caption, label, small print) there is a note; what only Reels' taller footer covers is one note, and only for the lead line, since Stories shows it and the 9:16 is laid out in Stories' band; words merely close to where an app draws are no finding. The steps that place a size clear of an interface (`static_safe_fit`, `static_place`) are told the same copy (`prompt.json`'s lines, their roles, and the brand's name and the logo's words, a wordmark read close to them counting as the logo) and move the ad for those alone, a supporting line included only where the frame cuts it; on a feed image such as a 4:5, only a design margin, so words close to the edge are a warning and only words the frame cuts are blocking); a copy line written over two lines (`"15%\noff"`) is matched part by part wherever the reader finds each; designed type in a colour far from the brand palette is a warning; supporting lines too small to read on a phone are one note per size; the main line set smaller than a supporting one is a note, the brand's wordmark never counted as part of a line that starts with its name; the logo set twice is a note, a far smaller mark printed on something in the scene (a hoodie, a bag) is not. When the copy names a real person ("Lautaro Suarez, CTO at Vibiz", "田中 美咲、Acme 創業者"; read by a text model in any language, cached by copy, `scripts/named-people-evals`), the run casts them as themselves before it renders (`baker avatars research --create`, their avatar's sheet added to `prompt.json` `references` as a `PERSON_n`), and a face shown as a named person the ad has no photo of is blocking. When the reader cannot answer, the vision pass transcribes the copy instead and judges the safe zones by eye. Then one vision pass for clipping, overlaps, artifacts, one dominant idea, the brand with the logo covered and the concept's mechanisms (each finding typed by the model with the item it answers, what it is about, what is wrong and the edges that cut it, which the grading and the automatic correction read instead of its words), with every format shown a second time at phone-feed thumbnail size (240px wide, same call): a lead message unreadable at that size is blocking. A missing logo, CTA or copy is never a finding; a logo that is drawn and broken is. stdout carries `verdict` (`ready` | `ready_with_notes` | `needs_fixes` | `not_reviewed`), `judge` (the per-candidate scores) and hints that end with what the run made; the findings are stored on the run as its `review`. `needs_fixes` means the ad is not done even though every node completed, and the run is recorded with `presentable: false` so it is never shown as a version; every fix is an edit to `prompt.json` and a re-run (wrong words: the lines in `copy`; wrong picture: the `scene`; a bad roll: `--regenerate static_variants`; one size wrong while the chosen picture is right: `--regenerate adapt_<size>`, which re-lays it out, named in the hints); a blocking defect is first corrected by the run itself (`--autofix`, above). The checks rank the variants before the pick and the judge only breaks an exact tie, comparing pairwise against the compiled brief, knowing the brand and the viewer; every variant stays on offer to the person in Baker. Within one chat turn an ad gets two runs you start (each with its automatic corrections) and about 12 minutes in all: a correction round that would take it past that is not started (`[autofix] not started`), the version shown as it stands, and no render starts once it is spent
|
|
6284
|
+
**After a run** the CLI reads the finished ad back on what makes a static win, not a checklist of elements: every delivered image's pixel shape against its format; **every line of `prompt.json`'s copy (in-scene and designed alike) read back with its box by a box reader and compared** (a line more than 2% off, missing, or joined by words nobody asked for is blocking; case and punctuation fold, as does a capital I read as an l (one stroke in a sans-serif), accents do not; words the picture adds are blocking only when set at the copy's usual size or making a claim (a figure, a price, an offer), and otherwise a note, as a screen's code, a poster or a mug in the scene, except a price (a currency sign beside a figure) the copy does not hold, blocking at any size and blurred by the correction, the document it is on kept; every render is asked for no readable prices on a bill, quote, receipt, screen or price tag beyond the copy; a copy line is "on the ad twice" only when most of its words repeat, never a word or two echoed on a prop; on a native screen, which code typesets from the spec, a line read differently is the reader's error and only a missing one counts); **the ad's own copy and its logo measured against the format's safe area** (`staticSafeArea`, the one owner of those areas; `must-show.ts` decides what is measured: never what the scene prints, nor a copy line printed again in the scene while the line itself sits clear). On a 9:16, which runs in Stories and Reels alike, what Stories' header or bottom bar covers (and any other app's interface named) is said as "where Stories and Reels cover it" ("where Reels covers it" for an ad set that runs only in Reels) and blocks for the logo, the button, the headline, the figure and the offer, while a supporting line (body, caption, label, small print) there is a note; what only Reels' taller footer covers is one note, and only for the lead line, since Stories shows it and the 9:16 is laid out in Stories' band; words merely close to where an app draws are no finding. The steps that place a size clear of an interface (`static_safe_fit`, `static_place`) are told the same copy (`prompt.json`'s lines, their roles, and the brand's name and the logo's words, a wordmark read close to them counting as the logo) and move the ad for those alone, a supporting line included only where the frame cuts it; on a feed image such as a 4:5, only a design margin, so words close to the edge are a warning and only words the frame cuts are blocking); a copy line written over two lines (`"15%\noff"`) is matched part by part wherever the reader finds each; designed type in a colour far from the brand palette is a warning; supporting lines too small to read on a phone are one note per size; the main line set smaller than a supporting one is a note, the brand's wordmark never counted as part of a line that starts with its name; the logo set twice is a note, a far smaller mark printed on something in the scene (a hoodie, a bag) is not. When the copy names a real person ("Lautaro Suarez, CTO at Vibiz", "田中 美咲、Acme 創業者"; read by a text model in any language, cached by copy, `scripts/named-people-evals`), the run casts them as themselves before it renders (`baker avatars research --create`, their avatar's sheet added to `prompt.json` `references` as a `PERSON_n`), and a face shown as a named person the ad has no photo of is blocking. When the reader cannot answer, the vision pass transcribes the copy instead and judges the safe zones by eye. Then one vision pass for clipping, overlaps, artifacts, one dominant idea, the brand with the logo covered and the concept's mechanisms (each finding typed by the model with the item it answers, what it is about, what is wrong and the edges that cut it, which the grading and the automatic correction read instead of its words), with every format shown a second time at phone-feed thumbnail size (240px wide, same call): a lead message unreadable at that size is blocking. A missing logo, CTA or copy is never a finding; a logo that is drawn and broken is. stdout carries `verdict` (`ready` | `ready_with_notes` | `needs_fixes` | `not_reviewed`), `judge` (the per-candidate scores) and hints that end with what the run made; the findings are stored on the run as its `review`. `needs_fixes` means the ad is not done even though every node completed, and the run is recorded with `presentable: false` so it is never shown as a version; every fix is an edit to `prompt.json` and a re-run (wrong words: the lines in `copy`; wrong picture: the `scene`; a bad roll: `--regenerate static_variants`; one size wrong while the chosen picture is right: `--regenerate adapt_<size>`, which re-lays it out, named in the hints); a blocking defect is first corrected by the run itself (`--autofix`, above). The checks rank the variants before the pick and the judge only breaks an exact tie, comparing pairwise against the compiled brief, knowing the brand and the viewer; every variant stays on offer to the person in Baker. Within one chat turn an ad gets two runs you start (each with its automatic corrections) and about 12 minutes in all: a correction round that would take it past that is not started (`[autofix] not started`), the version shown as it stands, and no render starts once it is spent; once the ad is `ready` or `ready_with_notes` only a correction of it starts (`--fix`, `--regenerate adapt_<size>`, or an edit of its words or colours), within the same two runs, and anything else is refused (`CONFLICT`, exit 2) with what to show instead; the person's next message starts a new turn (`turn-renders.ts`). When a defect still stands after the automatic rounds, the hints say to fix it with a `--fix`, then by changing the spec or the approach, and if it still cannot be fixed to show the best version and name what is left in one plain sentence, without a question.
|
|
6106
6285
|
|
|
6107
6286
|
The render prompt is **model-aware**: each model's profile (`src/engine/lib/prompt-profiles.ts`) sets its shape, word budget, picture order and request params. gpt-image gets short labelled sections with the constraints last; Gemini gets sentences that give the reason and a positive closing list of the only words allowed. A profile change, or a new model on the router (`src/engine/lib/image-model-router.ts`), is re-run on the static bench (`scripts/creative-evals`, `--job static`) before it ships. Run `baker canvas critique` on the scaffolded canvas for an advisory read before you spend.
|
|
6108
6287
|
|
|
6109
|
-
**A reference from the winners library goes in by id.** `--source-ad-id <ad_id> --source-platform meta|linkedin|tiktok [--source-advertiser-id <id>]` (the ids beside the ad in `baker winning-ads search`) fetches the library's structured read of that ad, the same one `baker winning-ads content <ad_id> --full` returns, and writes it into `prompt.json` as a `reference` block: `{ ad_id, platform, advertiser, advertiser_id, format_pattern, layout: { composition, focal_subject, aspect_ratio, background, palette_mood, colors, production, aesthetic, cta_in_image, markers }, message: { mechanism, awareness, sophistication, angle, hook_archetype, pain_points, desires, value_props, objections_handled, proof, risk_reversal }, offer: { offer_type, pricing_model, entry_price, no_credit_card, guarantee, guarantee_days, urgency, bonus }, text_blocks: [{ text, role, position }], copy: { primary_text, headline, cta } }` (filled fields only). The describe pass still reads the pixels but is told that read as grounding, so the two cannot disagree on the container or the mechanism; when it names no `winning_mechanisms`, the library's container + mechanism seeds the list. The source ids (`sourceAdId`, `sourcePlatform`, `sourceAdvertiserId`, and `sourceAdvertiser` from the library when `--advertiser` is absent) are written to `_definition.md` and synced to the creative at scaffold time. A library read that fails warns, records the ids anyway and scaffolds from the picture alone (`hints`: `REFERENCE NOT READ`); with no picture either, the command exits 2 (`source_unavailable`). `baker canvas sync-definition` re-reads the three ids from `_definition.md` on every sync.
|
|
6288
|
+
**A reference from the winners library goes in by id.** `--source-ad-id <ad_id> --source-platform meta|linkedin|tiktok|google [--source-advertiser-id <id>]` (the ids beside the ad in `baker winning-ads search`) fetches the library's structured read of that ad, the same one `baker winning-ads content <ad_id> --full` returns, and writes it into `prompt.json` as a `reference` block: `{ ad_id, platform, advertiser, advertiser_id, format_pattern, layout: { composition, focal_subject, aspect_ratio, background, palette_mood, colors, production, aesthetic, cta_in_image, markers }, message: { mechanism, awareness, sophistication, angle, hook_archetype, pain_points, desires, value_props, objections_handled, proof, risk_reversal }, offer: { offer_type, pricing_model, entry_price, no_credit_card, guarantee, guarantee_days, urgency, bonus }, text_blocks: [{ text, role, position }], copy: { primary_text, headline, cta } }` (filled fields only). The describe pass still reads the pixels but is told that read as grounding, so the two cannot disagree on the container or the mechanism; when it names no `winning_mechanisms`, the library's container + mechanism seeds the list. The source ids (`sourceAdId`, `sourcePlatform`, `sourceAdvertiserId`, and `sourceAdvertiser` from the library when `--advertiser` is absent) are written to `_definition.md` and synced to the creative at scaffold time. A library read that fails warns, records the ids anyway and scaffolds from the picture alone (`hints`: `REFERENCE NOT READ`); with no picture either, the command exits 2 (`source_unavailable`). `baker canvas sync-definition` re-reads the three ids from `_definition.md` on every sync.
|
|
6110
6289
|
|
|
6111
6290
|
```bash
|
|
6112
6291
|
baker canvas scaffold-static-ad --source-ad-id adg_123 --source-platform meta --slug spring-offer --platform meta --target-adset 120249211706990208
|
|
@@ -6138,6 +6317,10 @@ baker canvas run ./static-ad.canvas.json
|
|
|
6138
6317
|
|
|
6139
6318
|
Scaffolding runs (and bills) the two vision passes; **running** the result generates billed images. `baker canvas validate` does not check that the `[TODO]` paths exist — supply the real files before `run`.
|
|
6140
6319
|
|
|
6320
|
+
Size adaptations move and proportionally scale the existing composition first, keeping its background treatment, including intentional flat colour. Generation, adaptation, correction and series briefs preserve plausible anatomy, device proportions, scale, perspective and support, and reflow text while preserving letter shapes. Recognizable app controls remain native; marketing overlays stay visibly separate. Shared guidance records applicable intent and constraints briefly in `_definition.md`, then carries them into `prompt.json` (Markdown is not a render input). Direct briefs need no invented winner or fixed template; reference adaptations reason through the mechanism, transfer hypothesis and what must survive. `creatives make` returns this preparation hint before rendering. Choose the represented role and inspect existing Avatars before creating a new actor; a real founder or customer keeps their verified identity.
|
|
6321
|
+
|
|
6322
|
+
During continuations, the accepted image's screen content takes priority over geometry references unless explicitly changed. Laptop scenes receive guidance for a real laptop and consistent display, keyboard and hinge perspective.
|
|
6323
|
+
|
|
6141
6324
|
#### `baker canvas rerun <slug> [flags]` (deprecated)
|
|
6142
6325
|
|
|
6143
6326
|
Now `baker canvas run --slug <slug>`; `rerun` stays as a hidden alias for one release and prints a deprecation note. Every `canvas run` of a creative records a portable snapshot (the canvas JSON plus the local files it ingests: prompt blueprints, composition dirs, reference images) in durable storage, so `run --slug` can rebuild `src/creatives/<slug>/` in a workspace that never had it. A snapshot whose files are exactly the last one uploaded for the creative is reused without a request, and a file the store already holds is not uploaded again. Files the snapshot could not include (missing at run time, or oversized) are listed as warnings.
|
|
@@ -7019,3 +7202,9 @@ Pushing to `main` with changes in `packages/cli/` triggers the GitHub Actions wo
|
|
|
7019
7202
|
npx convex env set BAKER_CLI_VERSION <version> # Override sandbox version
|
|
7020
7203
|
npx convex env remove BAKER_CLI_VERSION # Clean up after testing
|
|
7021
7204
|
```
|
|
7205
|
+
|
|
7206
|
+
### Agreed tracking setup and external questionnaire diagnostics
|
|
7207
|
+
|
|
7208
|
+
`baker analytics plan [--full]` reads the effective session plan. `--json @preparation.json` stages journeys, event purposes and readiness, optionally wiring conversion definitions, funnel steps and a managed Tag Manager installation. The generated base queues early events and runs before event tags; repeating preparation replaces its own draft operations. These changes apply only at Publish. Waiting events record the missing change and owner; prepared tags do not imply accepted events. The full request contract and example are in the scaffold's [analytics tool doc](../../apps/scaffold-template/__tooling__/docs/tools/baker/analytics.md#shared-journey-and-tracking-plan).
|
|
7209
|
+
|
|
7210
|
+
`baker analytics questionnaire [--name questionnaire_step] [--days 7] [--inactivity 30]` reports distinct attempts reaching/completing/skipping questions and distinguishes pending, abandoned and incomplete steps. The external app must emit the documented attempt/version/sequence contract. The report refuses truncated histories above 600 events and excludes attempts without an observed start; no observations do not establish zero abandonment.
|