[{"data":1,"prerenderedAt":1599},["ShallowReactive",2],{"article-alternates":3,"article-\u002Fes\u002Fmarketing\u002Fcreative-operations-variaciones-algoritmo-bidding":13},{"i18nKey":4,"paths":5},"marketing-005-2026-05",{"de":6,"en":7,"es":8,"fr":9,"it":10,"ru":11,"tr":12},"\u002Fde\u002Fmarketing\u002Fcreative-operations-variation-strategie-fuer-bidding-algorithmen","\u002Fen\u002Fmarketing\u002Fcreative-operations-bidding-algorithm-variation-strategy","\u002Fes\u002Fmarketing\u002Fcreative-operations-variaciones-algoritmo-bidding","\u002Ffr\u002Fmarketing\u002Fstrategie-des-variations-pour-l-algorithme-d-encheres","\u002Fit\u002Fmarketing\u002Fcreative-operations-bidding-algoritmi-per-variations","\u002Fru\u002Fmarketing\u002Fcreative-operations-bidding-algoritmasina-beslenecek-variation-stratejisi","\u002Ftr\u002Fmarketing\u002Fcreative-operations-bidding-algoritmasina-beslenecek-variation-stratej",{"_path":8,"_dir":14,"_draft":15,"_partial":15,"_locale":16,"title":17,"description":18,"publishedAt":19,"modifiedAt":19,"category":14,"i18nKey":4,"tags":20,"readingTime":26,"author":27,"body":28,"_type":1593,"_id":1594,"_source":1595,"_file":1596,"_stem":1597,"_extension":1598},"marketing",false,"","Creative Operations: Estrategia de Variaciones para Alimentar el Algoritmo de Bidding","Arquitectura de testing creativo en Performance Max y Advantage+: generar señales para el algoritmo, construir sistemas de variación, escalar ganadores.","2026-05-16",[21,22,23,24,25],"creative-operations","performance-max","advantage-plus","bidding-algorithm","creative-testing",8,"Roibase",{"type":29,"children":30,"toc":1585},"root",[31,39,46,51,56,72,78,83,88,93,563,569,574,579,707,712,717,723,728,733,759,773,779,784,843,848,1514,1520,1525,1569,1574,1579],{"type":32,"tag":33,"props":34,"children":35},"element","p",{},[36],{"type":37,"value":38},"text","En Google Performance Max y Meta Advantage+, la creatividad ya no es solo mensaje — es el material de aprendizaje del algoritmo. La potencia del bidding automático es directamente proporcional a la riqueza del conjunto de variaciones que lo alimenta. Pero la mayoría de equipos siguen delegando creatividad al departamento de diseño y esperan \"visuals bonitos\". El resultado: la campaña pasa 2 semanas sin señal, el algoritmo se queda atrapado en un óptimo local estrecho, el CPA sube. Creative operations — construir la producción creativa, la arquitectura de testing y el proceso de alimentación de señales con disciplina de ingeniería — es crítico para romper ese ciclo.",{"type":32,"tag":40,"props":41,"children":43},"h2",{"id":42},"la-creatividad-ya-no-es-un-problema-de-diseño-es-un-problema-de-iteración",[44],{"type":37,"value":45},"La creatividad ya no es un problema de diseño, es un problema de iteración",{"type":32,"tag":33,"props":47,"children":48},{},[49],{"type":37,"value":50},"En formatos de campaña automática como Performance Max y Advantage+, la creatividad se convirtió en una operación diaria, tanto como ajustar pujas. Dar 3 imágenes + 5 headlines a una campaña y esperar \"fase de aprendizaje de 14 días\" ni siquiera cubre el mínimo pool de datos que el algoritmo necesita para tomar decisiones razonables. En sus propias guías, Google recomienda al menos 4 grupos de assets en Performance Max, cada uno con 5-15 imágenes + 5 combinaciones de headlines — la razón es que el algoritmo necesita suficiente variedad para equilibrar exploración y explotación.",{"type":32,"tag":33,"props":52,"children":53},{},[54],{"type":37,"value":55},"Pero el problema no es solo cantidad — si no hay diferencias significativas entre creatividades, el algoritmo sigue girando en el mismo cluster estrecho. Cinco fotos del mismo producto desde diferentes ángulos son el mismo signal cluster para la máquina. En lugar de eso, hay que construir variación desde diferentes value propositions (precio vs. envío vs. prueba social), diferentes formatos (estático vs. carrusel vs. video), diferentes proxies de audiencia (lifestyle vs. product-focus). La producción creativa debe salir del archivo Adobe del diseñador y convertirse en una matriz de plantilla × variables del equipo de growth.",{"type":32,"tag":33,"props":57,"children":58},{},[59,61,70],{"type":37,"value":60},"En la práctica de ",{"type":32,"tag":62,"props":63,"children":67},"a",{"href":64,"rel":65},"https:\u002F\u002Fwww.roibase.com.tr\u002Fes\u002Fdijitalpazarlama",[66],"nofollow",[68],{"type":37,"value":69},"marketing digital",{"type":37,"value":71}," de Roibase, configuramos creative operations así: sprint creativo semanal, cada sprint produce 8-12 nuevas variaciones, cada variación testea una hipótesis (cambio de ángulo, test de hook, iteración de CTA). El diseñador no ralentiza el proceso — con component libraries + variable sets + bulk export en Figma, la operación acelera. Se pueden alimentar 20+ creatividades únicas a una campaña en 2 semanas, suficiente para que en la segunda semana el algoritmo ya haya encontrado el cluster ganador.",{"type":32,"tag":40,"props":73,"children":75},{"id":74},"generar-señales-a-través-de-arquitectura-de-testing-cohortes-holdout",[76],{"type":37,"value":77},"Generar señales a través de arquitectura de testing: cohortes + holdout",{"type":32,"tag":33,"props":79,"children":80},{},[81],{"type":37,"value":82},"Producir variaciones creativas no es suficiente — hay que organizarlas de forma que el algoritmo pueda aprender. En Performance Max, cada grupo de assets funciona como una celda de test aislada — pero si distribuyes variaciones al azar, no sabes cuál gana, porque el rendimiento a nivel de grupo de assets se queda en la caja negra de Google. En lugar de eso, construimos arquitectura de testing basada en cohortes: cada período (digamos 2 semanas) creas un nuevo grupo de assets, alimentas en él el conjunto de variaciones del período, los ganadores anteriores quedan en el grupo \"control\". Dos semanas después, comparas el rendimiento del nuevo grupo (ROAS, CVR, CPA) contra el control y expandes las variaciones ganadoras.",{"type":32,"tag":33,"props":84,"children":85},{},[86],{"type":37,"value":87},"Esta estructura se combina con lógica Bayesiana: cada grupo de assets genera una distribución independiente, la actualización posterior se calcula en tiempo real (extrae datos de conversión + costo vía Google Ads API y haces tu propio cálculo). Si una variación alcanza %95 de confianza dentro de 7 días, la mueves inmediatamente al grupo de assets principal. Si no, esperas hasta el día 14 y cierras esa cohorte. Así, en lugar de \"setup estático de campaña\", construyes un pipeline de señales continuo.",{"type":32,"tag":33,"props":89,"children":90},{},[91],{"type":37,"value":92},"En Meta Advantage+, es un poco diferente — el rendimiento a nivel de asset es visible en \"Ads Reporting\", pero con desglose limitado. Aquí es más crítico usar una celda de holdout: usas una campaña separada (creatividades nuevas) vs. campaña de control (ganadores antiguos) para testear el nuevo conjunto. Split del presupuesto 20\u002F80. Durante 1 semana, asegúrate de que ambas tengan acceso a la misma audiencia targeting (CBO activo, placements automáticos, lookalike amplio). El día 7, si el CPA de la campaña de test es %15+ más bajo que el control, declara ganador el nuevo set y migra la campaña de control a creatividad nueva.",{"type":32,"tag":94,"props":95,"children":99},"pre",{"className":96,"code":97,"language":98,"meta":16,"style":16},"language-python shiki shiki-themes github-dark","# Cálculo simple de ganador Bayesiano (después de extraer conversiones + costo de Google Ads API)\nimport numpy as np\nfrom scipy import stats\n\ndef bayesian_winner(conversions_a, cost_a, conversions_b, cost_b, prior_alpha=1, prior_beta=1):\n    # Posterior con distribución Beta para conversion rate\n    posterior_a = stats.beta(prior_alpha + conversions_a, prior_beta + (cost_a\u002F10 - conversions_a))\n    posterior_b = stats.beta(prior_alpha + conversions_b, prior_beta + (cost_b\u002F10 - conversions_b))\n    \n    # Monte Carlo: P(B > A)\n    samples = 10000\n    prob_b_wins = np.mean(posterior_b.rvs(samples) > posterior_a.rvs(samples))\n    \n    return prob_b_wins\n\n# Ejemplo: Grupo A: 120 conversiones, $2400 costo vs. B: 95 conversiones, $1800 costo\nprob = bayesian_winner(120, 2400, 95, 1800)\nprint(f\"Probabilidad de que B gane: {prob:.2%}\")\n# Si > 0.95, B es ganador, traslada presupuesto a B\n","python",[100],{"type":32,"tag":101,"props":102,"children":103},"code",{"__ignoreMap":16},[104,116,142,165,175,224,233,290,341,350,359,377,405,413,427,435,444,500,554],{"type":32,"tag":105,"props":106,"children":109},"span",{"class":107,"line":108},"line",1,[110],{"type":32,"tag":105,"props":111,"children":113},{"style":112},"--shiki-default:#6A737D",[114],{"type":37,"value":115},"# Cálculo simple de ganador Bayesiano (después de extraer conversiones + costo de Google Ads API)\n",{"type":32,"tag":105,"props":117,"children":119},{"class":107,"line":118},2,[120,126,132,137],{"type":32,"tag":105,"props":121,"children":123},{"style":122},"--shiki-default:#F97583",[124],{"type":37,"value":125},"import",{"type":32,"tag":105,"props":127,"children":129},{"style":128},"--shiki-default:#E1E4E8",[130],{"type":37,"value":131}," numpy ",{"type":32,"tag":105,"props":133,"children":134},{"style":122},[135],{"type":37,"value":136},"as",{"type":32,"tag":105,"props":138,"children":139},{"style":128},[140],{"type":37,"value":141}," np\n",{"type":32,"tag":105,"props":143,"children":145},{"class":107,"line":144},3,[146,151,156,160],{"type":32,"tag":105,"props":147,"children":148},{"style":122},[149],{"type":37,"value":150},"from",{"type":32,"tag":105,"props":152,"children":153},{"style":128},[154],{"type":37,"value":155}," scipy ",{"type":32,"tag":105,"props":157,"children":158},{"style":122},[159],{"type":37,"value":125},{"type":32,"tag":105,"props":161,"children":162},{"style":128},[163],{"type":37,"value":164}," stats\n",{"type":32,"tag":105,"props":166,"children":168},{"class":107,"line":167},4,[169],{"type":32,"tag":105,"props":170,"children":172},{"emptyLinePlaceholder":171},true,[173],{"type":37,"value":174},"\n",{"type":32,"tag":105,"props":176,"children":178},{"class":107,"line":177},5,[179,184,190,195,200,206,211,215,219],{"type":32,"tag":105,"props":180,"children":181},{"style":122},[182],{"type":37,"value":183},"def",{"type":32,"tag":105,"props":185,"children":187},{"style":186},"--shiki-default:#B392F0",[188],{"type":37,"value":189}," bayesian_winner",{"type":32,"tag":105,"props":191,"children":192},{"style":128},[193],{"type":37,"value":194},"(conversions_a, cost_a, conversions_b, cost_b, prior_alpha",{"type":32,"tag":105,"props":196,"children":197},{"style":122},[198],{"type":37,"value":199},"=",{"type":32,"tag":105,"props":201,"children":203},{"style":202},"--shiki-default:#79B8FF",[204],{"type":37,"value":205},"1",{"type":32,"tag":105,"props":207,"children":208},{"style":128},[209],{"type":37,"value":210},", prior_beta",{"type":32,"tag":105,"props":212,"children":213},{"style":122},[214],{"type":37,"value":199},{"type":32,"tag":105,"props":216,"children":217},{"style":202},[218],{"type":37,"value":205},{"type":32,"tag":105,"props":220,"children":221},{"style":128},[222],{"type":37,"value":223},"):\n",{"type":32,"tag":105,"props":225,"children":227},{"class":107,"line":226},6,[228],{"type":32,"tag":105,"props":229,"children":230},{"style":112},[231],{"type":37,"value":232},"    # Posterior con distribución Beta para conversion rate\n",{"type":32,"tag":105,"props":234,"children":236},{"class":107,"line":235},7,[237,242,246,251,256,261,265,270,275,280,285],{"type":32,"tag":105,"props":238,"children":239},{"style":128},[240],{"type":37,"value":241},"    posterior_a ",{"type":32,"tag":105,"props":243,"children":244},{"style":122},[245],{"type":37,"value":199},{"type":32,"tag":105,"props":247,"children":248},{"style":128},[249],{"type":37,"value":250}," stats.beta(prior_alpha ",{"type":32,"tag":105,"props":252,"children":253},{"style":122},[254],{"type":37,"value":255},"+",{"type":32,"tag":105,"props":257,"children":258},{"style":128},[259],{"type":37,"value":260}," conversions_a, prior_beta ",{"type":32,"tag":105,"props":262,"children":263},{"style":122},[264],{"type":37,"value":255},{"type":32,"tag":105,"props":266,"children":267},{"style":128},[268],{"type":37,"value":269}," (cost_a",{"type":32,"tag":105,"props":271,"children":272},{"style":122},[273],{"type":37,"value":274},"\u002F",{"type":32,"tag":105,"props":276,"children":277},{"style":202},[278],{"type":37,"value":279},"10",{"type":32,"tag":105,"props":281,"children":282},{"style":122},[283],{"type":37,"value":284}," -",{"type":32,"tag":105,"props":286,"children":287},{"style":128},[288],{"type":37,"value":289}," conversions_a))\n",{"type":32,"tag":105,"props":291,"children":292},{"class":107,"line":26},[293,298,302,306,310,315,319,324,328,332,336],{"type":32,"tag":105,"props":294,"children":295},{"style":128},[296],{"type":37,"value":297},"    posterior_b ",{"type":32,"tag":105,"props":299,"children":300},{"style":122},[301],{"type":37,"value":199},{"type":32,"tag":105,"props":303,"children":304},{"style":128},[305],{"type":37,"value":250},{"type":32,"tag":105,"props":307,"children":308},{"style":122},[309],{"type":37,"value":255},{"type":32,"tag":105,"props":311,"children":312},{"style":128},[313],{"type":37,"value":314}," conversions_b, prior_beta ",{"type":32,"tag":105,"props":316,"children":317},{"style":122},[318],{"type":37,"value":255},{"type":32,"tag":105,"props":320,"children":321},{"style":128},[322],{"type":37,"value":323}," (cost_b",{"type":32,"tag":105,"props":325,"children":326},{"style":122},[327],{"type":37,"value":274},{"type":32,"tag":105,"props":329,"children":330},{"style":202},[331],{"type":37,"value":279},{"type":32,"tag":105,"props":333,"children":334},{"style":122},[335],{"type":37,"value":284},{"type":32,"tag":105,"props":337,"children":338},{"style":128},[339],{"type":37,"value":340}," conversions_b))\n",{"type":32,"tag":105,"props":342,"children":344},{"class":107,"line":343},9,[345],{"type":32,"tag":105,"props":346,"children":347},{"style":128},[348],{"type":37,"value":349},"    \n",{"type":32,"tag":105,"props":351,"children":353},{"class":107,"line":352},10,[354],{"type":32,"tag":105,"props":355,"children":356},{"style":112},[357],{"type":37,"value":358},"    # Monte Carlo: P(B > A)\n",{"type":32,"tag":105,"props":360,"children":362},{"class":107,"line":361},11,[363,368,372],{"type":32,"tag":105,"props":364,"children":365},{"style":128},[366],{"type":37,"value":367},"    samples ",{"type":32,"tag":105,"props":369,"children":370},{"style":122},[371],{"type":37,"value":199},{"type":32,"tag":105,"props":373,"children":374},{"style":202},[375],{"type":37,"value":376}," 10000\n",{"type":32,"tag":105,"props":378,"children":380},{"class":107,"line":379},12,[381,386,390,395,400],{"type":32,"tag":105,"props":382,"children":383},{"style":128},[384],{"type":37,"value":385},"    prob_b_wins ",{"type":32,"tag":105,"props":387,"children":388},{"style":122},[389],{"type":37,"value":199},{"type":32,"tag":105,"props":391,"children":392},{"style":128},[393],{"type":37,"value":394}," np.mean(posterior_b.rvs(samples) ",{"type":32,"tag":105,"props":396,"children":397},{"style":122},[398],{"type":37,"value":399},">",{"type":32,"tag":105,"props":401,"children":402},{"style":128},[403],{"type":37,"value":404}," posterior_a.rvs(samples))\n",{"type":32,"tag":105,"props":406,"children":408},{"class":107,"line":407},13,[409],{"type":32,"tag":105,"props":410,"children":411},{"style":128},[412],{"type":37,"value":349},{"type":32,"tag":105,"props":414,"children":416},{"class":107,"line":415},14,[417,422],{"type":32,"tag":105,"props":418,"children":419},{"style":122},[420],{"type":37,"value":421},"    return",{"type":32,"tag":105,"props":423,"children":424},{"style":128},[425],{"type":37,"value":426}," prob_b_wins\n",{"type":32,"tag":105,"props":428,"children":430},{"class":107,"line":429},15,[431],{"type":32,"tag":105,"props":432,"children":433},{"emptyLinePlaceholder":171},[434],{"type":37,"value":174},{"type":32,"tag":105,"props":436,"children":438},{"class":107,"line":437},16,[439],{"type":32,"tag":105,"props":440,"children":441},{"style":112},[442],{"type":37,"value":443},"# Ejemplo: Grupo A: 120 conversiones, $2400 costo vs. B: 95 conversiones, $1800 costo\n",{"type":32,"tag":105,"props":445,"children":447},{"class":107,"line":446},17,[448,453,457,462,467,472,477,481,486,490,495],{"type":32,"tag":105,"props":449,"children":450},{"style":128},[451],{"type":37,"value":452},"prob ",{"type":32,"tag":105,"props":454,"children":455},{"style":122},[456],{"type":37,"value":199},{"type":32,"tag":105,"props":458,"children":459},{"style":128},[460],{"type":37,"value":461}," bayesian_winner(",{"type":32,"tag":105,"props":463,"children":464},{"style":202},[465],{"type":37,"value":466},"120",{"type":32,"tag":105,"props":468,"children":469},{"style":128},[470],{"type":37,"value":471},", ",{"type":32,"tag":105,"props":473,"children":474},{"style":202},[475],{"type":37,"value":476},"2400",{"type":32,"tag":105,"props":478,"children":479},{"style":128},[480],{"type":37,"value":471},{"type":32,"tag":105,"props":482,"children":483},{"style":202},[484],{"type":37,"value":485},"95",{"type":32,"tag":105,"props":487,"children":488},{"style":128},[489],{"type":37,"value":471},{"type":32,"tag":105,"props":491,"children":492},{"style":202},[493],{"type":37,"value":494},"1800",{"type":32,"tag":105,"props":496,"children":497},{"style":128},[498],{"type":37,"value":499},")\n",{"type":32,"tag":105,"props":501,"children":503},{"class":107,"line":502},18,[504,509,514,519,525,530,535,540,545,550],{"type":32,"tag":105,"props":505,"children":506},{"style":202},[507],{"type":37,"value":508},"print",{"type":32,"tag":105,"props":510,"children":511},{"style":128},[512],{"type":37,"value":513},"(",{"type":32,"tag":105,"props":515,"children":516},{"style":122},[517],{"type":37,"value":518},"f",{"type":32,"tag":105,"props":520,"children":522},{"style":521},"--shiki-default:#9ECBFF",[523],{"type":37,"value":524},"\"Probabilidad de que B gane: ",{"type":32,"tag":105,"props":526,"children":527},{"style":202},[528],{"type":37,"value":529},"{",{"type":32,"tag":105,"props":531,"children":532},{"style":128},[533],{"type":37,"value":534},"prob",{"type":32,"tag":105,"props":536,"children":537},{"style":122},[538],{"type":37,"value":539},":.2%",{"type":32,"tag":105,"props":541,"children":542},{"style":202},[543],{"type":37,"value":544},"}",{"type":32,"tag":105,"props":546,"children":547},{"style":521},[548],{"type":37,"value":549},"\"",{"type":32,"tag":105,"props":551,"children":552},{"style":128},[553],{"type":37,"value":499},{"type":32,"tag":105,"props":555,"children":557},{"class":107,"line":556},19,[558],{"type":32,"tag":105,"props":559,"children":560},{"style":112},[561],{"type":37,"value":562},"# Si > 0.95, B es ganador, traslada presupuesto a B\n",{"type":32,"tag":40,"props":564,"children":566},{"id":565},"diversidad-de-formato-estático-carrusel-video-collection",[567],{"type":37,"value":568},"Diversidad de formato: estático, carrusel, video, collection",{"type":32,"tag":33,"props":570,"children":571},{},[572],{"type":37,"value":573},"El punto donde los algoritmos más señales reciben es en variación de formato. Testear el mismo mensaje en imagen estática, video y carrusel le da a la máquina la oportunidad de aprender diferentes patrones de comportamiento de usuario. En Performance Max, por ejemplo, los assets de video típicamente se sirven en discovery y YouTube, las imágenes estáticas en display — pero no sabes cuál da mejor ROAS, el algoritmo sí. Si no le das opciones, usa su mix de placement predeterminado y nunca encuentra la distribución óptima.",{"type":32,"tag":33,"props":575,"children":576},{},[577],{"type":37,"value":578},"En la práctica, puedes construir el pipeline creativo así:",{"type":32,"tag":580,"props":581,"children":582},"table",{},[583,612],{"type":32,"tag":584,"props":585,"children":586},"thead",{},[587],{"type":32,"tag":588,"props":589,"children":590},"tr",{},[591,597,602,607],{"type":32,"tag":592,"props":593,"children":594},"th",{},[595],{"type":37,"value":596},"Formato",{"type":32,"tag":592,"props":598,"children":599},{},[600],{"type":37,"value":601},"Tiempo producción",{"type":32,"tag":592,"props":603,"children":604},{},[605],{"type":37,"value":606},"Tiempo test",{"type":32,"tag":592,"props":608,"children":609},{},[610],{"type":37,"value":611},"Win rate (promedio Roibase)",{"type":32,"tag":613,"props":614,"children":615},"tbody",{},[616,640,663,686],{"type":32,"tag":588,"props":617,"children":618},{},[619,625,630,635],{"type":32,"tag":620,"props":621,"children":622},"td",{},[623],{"type":37,"value":624},"Estático (5 variaciones)",{"type":32,"tag":620,"props":626,"children":627},{},[628],{"type":37,"value":629},"2 días",{"type":32,"tag":620,"props":631,"children":632},{},[633],{"type":37,"value":634},"7 días",{"type":32,"tag":620,"props":636,"children":637},{},[638],{"type":37,"value":639},"%40 (al menos 1 ganador sale)",{"type":32,"tag":588,"props":641,"children":642},{},[643,648,653,658],{"type":32,"tag":620,"props":644,"children":645},{},[646],{"type":37,"value":647},"Carrusel (3 sets, 3 cards cada)",{"type":32,"tag":620,"props":649,"children":650},{},[651],{"type":37,"value":652},"3 días",{"type":32,"tag":620,"props":654,"children":655},{},[656],{"type":37,"value":657},"10 días",{"type":32,"tag":620,"props":659,"children":660},{},[661],{"type":37,"value":662},"%25 (menos winners pero lift grande cuando ganan)",{"type":32,"tag":588,"props":664,"children":665},{},[666,671,676,681],{"type":32,"tag":620,"props":667,"children":668},{},[669],{"type":37,"value":670},"Video (15 seg, 3 variaciones)",{"type":32,"tag":620,"props":672,"children":673},{},[674],{"type":37,"value":675},"5 días",{"type":32,"tag":620,"props":677,"children":678},{},[679],{"type":37,"value":680},"14 días",{"type":32,"tag":620,"props":682,"children":683},{},[684],{"type":37,"value":685},"%50 (cuando gana, reducción de costo %20+)",{"type":32,"tag":588,"props":687,"children":688},{},[689,694,698,702],{"type":32,"tag":620,"props":690,"children":691},{},[692],{"type":37,"value":693},"Collection (1 hero + 4 productos)",{"type":32,"tag":620,"props":695,"children":696},{},[697],{"type":37,"value":629},{"type":32,"tag":620,"props":699,"children":700},{},[701],{"type":37,"value":634},{"type":32,"tag":620,"props":703,"children":704},{},[705],{"type":37,"value":706},"%30 (potente para e-commerce)",{"type":32,"tag":33,"props":708,"children":709},{},[710],{"type":37,"value":711},"La producción de video parece 5 días pero no es producción profesional — es stock footage + product shot + text overlay con plantillas. Herramientas como CapCut y Canva ya hacen auto-assembly con IA. Lo importante no es que el video sea \"cinemático\", es que tenga hook en los primeros 3 segundos y CTA claro. El guidance creativo de Meta mira watch rate de 3 segundos — si está por debajo de %50, el video no funciona.",{"type":32,"tag":33,"props":713,"children":714},{},[715],{"type":37,"value":716},"En carrusel, la clave es que cada card sea un mensaje independiente. \"Card 1: producto, Card 2: precio, Card 3: envío\" como narrativa secuencial no genera señal para el algoritmo, porque %80 de usuarios no pasa de la primera card. Cada card debe mostrar una value prop diferente o un SKU diferente — así el algoritmo aprende \"este usuario hizo swipe en card 2, entonces le interesa X atributo\".",{"type":32,"tag":40,"props":718,"children":720},{"id":719},"medir-incrementalidad-fue-la-creatividad-ganadora-o-el-algoritmo-cambió-de-audiencia",[721],{"type":37,"value":722},"Medir incrementalidad: ¿fue la creatividad ganadora, o el algoritmo cambió de audiencia?",{"type":32,"tag":33,"props":724,"children":725},{},[726],{"type":37,"value":727},"La trampa más grande al interpretar resultados de tests creativos: lanzas el nuevo conjunto, el ROAS sube, dices \"ganamos\" — pero en realidad el algoritmo solo pivotó a un segmento de audiencia más fácil de convertir, y el volumen total de conversiones bajó. Eso es un pseudo-ganador. Para evitarlo, necesitas hacer un check de incrementalidad: al testear el nuevo conjunto, asegúrate de que el número total de conversiones (no solo ROAS) no bajó. Si ROAS subió %20 pero conversiones bajaron %15, el algoritmo se concentró en un segmento estrecho — problema de escala a largo plazo.",{"type":32,"tag":33,"props":729,"children":730},{},[731],{"type":37,"value":732},"Dos métodos:",{"type":32,"tag":734,"props":735,"children":736},"ol",{},[737,749],{"type":32,"tag":738,"props":739,"children":740},"li",{},[741,747],{"type":32,"tag":742,"props":743,"children":744},"strong",{},[745],{"type":37,"value":746},"Test geo con holdout:",{"type":37,"value":748}," Divide por estados en US (por ejemplo, California + Texas con creatividad nueva, Florida + New York con antigua). Después de 2 semanas, mira el aumento total de conversiones. Si los geos con creatividad nueva tienen %10+ más conversiones, ese es lift real.",{"type":32,"tag":738,"props":750,"children":751},{},[752,757],{"type":32,"tag":742,"props":753,"children":754},{},[755],{"type":37,"value":756},"Budget pacing check:",{"type":37,"value":758}," Le diste a la campaña de test %20 presupuesto, a control %80. Si la campaña de test consume rápido su presupuesto (\"limited by budget\") y aún así mantiene ROAS alto, eso es ganador real. Si consume lentamente pero mantiene ROAS alto, el algoritmo está circulando en segmento estrecho.",{"type":32,"tag":33,"props":760,"children":761},{},[762,764,771],{"type":37,"value":763},"En proyectos de ",{"type":32,"tag":62,"props":765,"children":768},{"href":766,"rel":767},"https:\u002F\u002Fwww.roibase.com.tr\u002Fes\u002Fppc",[66],[769],{"type":37,"value":770},"marketing de performance",{"type":37,"value":772}," de Roibase, hacemos test geo obligatorio — especialmente con presupuestos $50K+ mensuales. Usamos un script Python con Google Ads API + BigQuery para splitear datos de conversión por dimensión geo y correr t-test. Si hay lift con %95 confianza, la creatividad es ganador, sino iteración continúa.",{"type":32,"tag":40,"props":774,"children":776},{"id":775},"automatización-figma-api-pipeline-de-bulk-upload",[777],{"type":37,"value":778},"Automatización: Figma API + pipeline de bulk upload",{"type":32,"tag":33,"props":780,"children":781},{},[782],{"type":37,"value":783},"El proceso de upload creativo manual no escala. 20 variaciones × 3 formatos = 60 assets, subirlos uno a uno a Google Ads toma 2 horas. En su lugar, construye un pipeline de automatización:",{"type":32,"tag":734,"props":785,"children":786},{},[787,797,807,833],{"type":32,"tag":738,"props":788,"children":789},{},[790,795],{"type":32,"tag":742,"props":791,"children":792},{},[793],{"type":37,"value":794},"Figma → Export:",{"type":37,"value":796}," Plugin en Figma que auto-exporta todas las variaciones de la component library (con Figma REST API). Cada variación es un archivo JSON + PNG\u002FMP4 export.",{"type":32,"tag":738,"props":798,"children":799},{},[800,805],{"type":32,"tag":742,"props":801,"children":802},{},[803],{"type":37,"value":804},"Inyección de metadata:",{"type":37,"value":806}," En el JSON, etiqueta cada variación (ángulo, formato, proxy de audiencia). Estas etiquetas se usan después en assignment de grupo de assets.",{"type":32,"tag":738,"props":808,"children":809},{},[810,815,817,823,825,831],{"type":32,"tag":742,"props":811,"children":812},{},[813],{"type":37,"value":814},"Google Ads \u002F Meta bulk upload:",{"type":37,"value":816}," Usa el endpoint ",{"type":32,"tag":101,"props":818,"children":820},{"className":819},[],[821],{"type":37,"value":822},"AssetService",{"type":37,"value":824}," de Google Ads API para batch upload. En Meta, usa Campaign Creation API, construye objeto ",{"type":32,"tag":101,"props":826,"children":828},{"className":827},[],[829],{"type":37,"value":830},"ad_creative",{"type":37,"value":832}," por cada creatividad.",{"type":32,"tag":738,"props":834,"children":835},{},[836,841],{"type":32,"tag":742,"props":837,"children":838},{},[839],{"type":37,"value":840},"Auto asset group assignment:",{"type":37,"value":842}," Asigna automáticamente nuevas variaciones al grupo de assets con menores impressiones (acelera el test).",{"type":32,"tag":33,"props":844,"children":845},{},[846],{"type":37,"value":847},"Con este pipeline, el tiempo de upload creativo baja de 2 horas a 15 minutos. Incluso puedes correr como cron job cada lunes a la mañana para trasladar automáticamente creatividades ganadoras de la semana anterior al grupo de assets principal.",{"type":32,"tag":94,"props":849,"children":853},{"className":850,"code":851,"language":852,"meta":16,"style":16},"language-javascript shiki shiki-themes github-dark","\u002F\u002F Export de componentes con Figma REST API (ejemplo Node.js)\nconst axios = require('axios');\nconst fs = require('fs');\n\nconst FIGMA_TOKEN = process.env.FIGMA_TOKEN;\nconst FILE_KEY = 'your-figma-file-key';\n\nasync function exportVariations() {\n  const response = await axios.get(`https:\u002F\u002Fapi.figma.com\u002Fv1\u002Ffiles\u002F${FILE_KEY}`, {\n    headers: { 'X-Figma-Token': FIGMA_TOKEN }\n  });\n  \n  const components = response.data.document.children\n    .filter(node => node.type === 'COMPONENT')\n    .map(node => ({ id: node.id, name: node.name }));\n\n  for (const comp of components) {\n    const imageUrl = await axios.get(`https:\u002F\u002Fapi.figma.com\u002Fv1\u002Fimages\u002F${FILE_KEY}?ids=${comp.id}&format=png`, {\n      headers: { 'X-Figma-Token': FIGMA_TOKEN }\n    });\n    \n    \u002F\u002F Descarga y sube a Google Cloud Storage\n    const image = await axios.get(imageUrl.data.images[comp.id], { responseType: 'arraybuffer' });\n    fs.writeFileSync(`.\u002Fexports\u002F${comp.name}.png`, image.data);\n  }\n}\n\nexportVariations();\n","javascript",[854],{"type":32,"tag":101,"props":855,"children":856},{"__ignoreMap":16},[857,865,902,935,942,973,998,1005,1028,1084,1111,1119,1127,1148,1195,1224,1231,1263,1334,1358,1367,1375,1384,1428,1474,1483,1492,1500],{"type":32,"tag":105,"props":858,"children":859},{"class":107,"line":108},[860],{"type":32,"tag":105,"props":861,"children":862},{"style":112},[863],{"type":37,"value":864},"\u002F\u002F Export de componentes con Figma REST API (ejemplo Node.js)\n",{"type":32,"tag":105,"props":866,"children":867},{"class":107,"line":118},[868,873,878,883,888,892,897],{"type":32,"tag":105,"props":869,"children":870},{"style":122},[871],{"type":37,"value":872},"const",{"type":32,"tag":105,"props":874,"children":875},{"style":202},[876],{"type":37,"value":877}," axios",{"type":32,"tag":105,"props":879,"children":880},{"style":122},[881],{"type":37,"value":882}," =",{"type":32,"tag":105,"props":884,"children":885},{"style":186},[886],{"type":37,"value":887}," require",{"type":32,"tag":105,"props":889,"children":890},{"style":128},[891],{"type":37,"value":513},{"type":32,"tag":105,"props":893,"children":894},{"style":521},[895],{"type":37,"value":896},"'axios'",{"type":32,"tag":105,"props":898,"children":899},{"style":128},[900],{"type":37,"value":901},");\n",{"type":32,"tag":105,"props":903,"children":904},{"class":107,"line":144},[905,909,914,918,922,926,931],{"type":32,"tag":105,"props":906,"children":907},{"style":122},[908],{"type":37,"value":872},{"type":32,"tag":105,"props":910,"children":911},{"style":202},[912],{"type":37,"value":913}," fs",{"type":32,"tag":105,"props":915,"children":916},{"style":122},[917],{"type":37,"value":882},{"type":32,"tag":105,"props":919,"children":920},{"style":186},[921],{"type":37,"value":887},{"type":32,"tag":105,"props":923,"children":924},{"style":128},[925],{"type":37,"value":513},{"type":32,"tag":105,"props":927,"children":928},{"style":521},[929],{"type":37,"value":930},"'fs'",{"type":32,"tag":105,"props":932,"children":933},{"style":128},[934],{"type":37,"value":901},{"type":32,"tag":105,"props":936,"children":937},{"class":107,"line":167},[938],{"type":32,"tag":105,"props":939,"children":940},{"emptyLinePlaceholder":171},[941],{"type":37,"value":174},{"type":32,"tag":105,"props":943,"children":944},{"class":107,"line":177},[945,949,954,958,963,968],{"type":32,"tag":105,"props":946,"children":947},{"style":122},[948],{"type":37,"value":872},{"type":32,"tag":105,"props":950,"children":951},{"style":202},[952],{"type":37,"value":953}," FIGMA_TOKEN",{"type":32,"tag":105,"props":955,"children":956},{"style":122},[957],{"type":37,"value":882},{"type":32,"tag":105,"props":959,"children":960},{"style":128},[961],{"type":37,"value":962}," process.env.",{"type":32,"tag":105,"props":964,"children":965},{"style":202},[966],{"type":37,"value":967},"FIGMA_TOKEN",{"type":32,"tag":105,"props":969,"children":970},{"style":128},[971],{"type":37,"value":972},";\n",{"type":32,"tag":105,"props":974,"children":975},{"class":107,"line":226},[976,980,985,989,994],{"type":32,"tag":105,"props":977,"children":978},{"style":122},[979],{"type":37,"value":872},{"type":32,"tag":105,"props":981,"children":982},{"style":202},[983],{"type":37,"value":984}," FILE_KEY",{"type":32,"tag":105,"props":986,"children":987},{"style":122},[988],{"type":37,"value":882},{"type":32,"tag":105,"props":990,"children":991},{"style":521},[992],{"type":37,"value":993}," 'your-figma-file-key'",{"type":32,"tag":105,"props":995,"children":996},{"style":128},[997],{"type":37,"value":972},{"type":32,"tag":105,"props":999,"children":1000},{"class":107,"line":235},[1001],{"type":32,"tag":105,"props":1002,"children":1003},{"emptyLinePlaceholder":171},[1004],{"type":37,"value":174},{"type":32,"tag":105,"props":1006,"children":1007},{"class":107,"line":26},[1008,1013,1018,1023],{"type":32,"tag":105,"props":1009,"children":1010},{"style":122},[1011],{"type":37,"value":1012},"async",{"type":32,"tag":105,"props":1014,"children":1015},{"style":122},[1016],{"type":37,"value":1017}," function",{"type":32,"tag":105,"props":1019,"children":1020},{"style":186},[1021],{"type":37,"value":1022}," exportVariations",{"type":32,"tag":105,"props":1024,"children":1025},{"style":128},[1026],{"type":37,"value":1027},"() {\n",{"type":32,"tag":105,"props":1029,"children":1030},{"class":107,"line":343},[1031,1036,1041,1045,1050,1055,1060,1064,1069,1074,1079],{"type":32,"tag":105,"props":1032,"children":1033},{"style":122},[1034],{"type":37,"value":1035},"  const",{"type":32,"tag":105,"props":1037,"children":1038},{"style":202},[1039],{"type":37,"value":1040}," response",{"type":32,"tag":105,"props":1042,"children":1043},{"style":122},[1044],{"type":37,"value":882},{"type":32,"tag":105,"props":1046,"children":1047},{"style":122},[1048],{"type":37,"value":1049}," await",{"type":32,"tag":105,"props":1051,"children":1052},{"style":128},[1053],{"type":37,"value":1054}," axios.",{"type":32,"tag":105,"props":1056,"children":1057},{"style":186},[1058],{"type":37,"value":1059},"get",{"type":32,"tag":105,"props":1061,"children":1062},{"style":128},[1063],{"type":37,"value":513},{"type":32,"tag":105,"props":1065,"children":1066},{"style":521},[1067],{"type":37,"value":1068},"`https:\u002F\u002Fapi.figma.com\u002Fv1\u002Ffiles\u002F${",{"type":32,"tag":105,"props":1070,"children":1071},{"style":202},[1072],{"type":37,"value":1073},"FILE_KEY",{"type":32,"tag":105,"props":1075,"children":1076},{"style":521},[1077],{"type":37,"value":1078},"}`",{"type":32,"tag":105,"props":1080,"children":1081},{"style":128},[1082],{"type":37,"value":1083},", {\n",{"type":32,"tag":105,"props":1085,"children":1086},{"class":107,"line":352},[1087,1092,1097,1102,1106],{"type":32,"tag":105,"props":1088,"children":1089},{"style":128},[1090],{"type":37,"value":1091},"    headers: { ",{"type":32,"tag":105,"props":1093,"children":1094},{"style":521},[1095],{"type":37,"value":1096},"'X-Figma-Token'",{"type":32,"tag":105,"props":1098,"children":1099},{"style":128},[1100],{"type":37,"value":1101},": ",{"type":32,"tag":105,"props":1103,"children":1104},{"style":202},[1105],{"type":37,"value":967},{"type":32,"tag":105,"props":1107,"children":1108},{"style":128},[1109],{"type":37,"value":1110}," }\n",{"type":32,"tag":105,"props":1112,"children":1113},{"class":107,"line":361},[1114],{"type":32,"tag":105,"props":1115,"children":1116},{"style":128},[1117],{"type":37,"value":1118},"  });\n",{"type":32,"tag":105,"props":1120,"children":1121},{"class":107,"line":379},[1122],{"type":32,"tag":105,"props":1123,"children":1124},{"style":128},[1125],{"type":37,"value":1126},"  \n",{"type":32,"tag":105,"props":1128,"children":1129},{"class":107,"line":407},[1130,1134,1139,1143],{"type":32,"tag":105,"props":1131,"children":1132},{"style":122},[1133],{"type":37,"value":1035},{"type":32,"tag":105,"props":1135,"children":1136},{"style":202},[1137],{"type":37,"value":1138}," components",{"type":32,"tag":105,"props":1140,"children":1141},{"style":122},[1142],{"type":37,"value":882},{"type":32,"tag":105,"props":1144,"children":1145},{"style":128},[1146],{"type":37,"value":1147}," response.data.document.children\n",{"type":32,"tag":105,"props":1149,"children":1150},{"class":107,"line":415},[1151,1156,1161,1165,1171,1176,1181,1186,1191],{"type":32,"tag":105,"props":1152,"children":1153},{"style":128},[1154],{"type":37,"value":1155},"    .",{"type":32,"tag":105,"props":1157,"children":1158},{"style":186},[1159],{"type":37,"value":1160},"filter",{"type":32,"tag":105,"props":1162,"children":1163},{"style":128},[1164],{"type":37,"value":513},{"type":32,"tag":105,"props":1166,"children":1168},{"style":1167},"--shiki-default:#FFAB70",[1169],{"type":37,"value":1170},"node",{"type":32,"tag":105,"props":1172,"children":1173},{"style":122},[1174],{"type":37,"value":1175}," =>",{"type":32,"tag":105,"props":1177,"children":1178},{"style":128},[1179],{"type":37,"value":1180}," node.type ",{"type":32,"tag":105,"props":1182,"children":1183},{"style":122},[1184],{"type":37,"value":1185},"===",{"type":32,"tag":105,"props":1187,"children":1188},{"style":521},[1189],{"type":37,"value":1190}," 'COMPONENT'",{"type":32,"tag":105,"props":1192,"children":1193},{"style":128},[1194],{"type":37,"value":499},{"type":32,"tag":105,"props":1196,"children":1197},{"class":107,"line":429},[1198,1202,1207,1211,1215,1219],{"type":32,"tag":105,"props":1199,"children":1200},{"style":128},[1201],{"type":37,"value":1155},{"type":32,"tag":105,"props":1203,"children":1204},{"style":186},[1205],{"type":37,"value":1206},"map",{"type":32,"tag":105,"props":1208,"children":1209},{"style":128},[1210],{"type":37,"value":513},{"type":32,"tag":105,"props":1212,"children":1213},{"style":1167},[1214],{"type":37,"value":1170},{"type":32,"tag":105,"props":1216,"children":1217},{"style":122},[1218],{"type":37,"value":1175},{"type":32,"tag":105,"props":1220,"children":1221},{"style":128},[1222],{"type":37,"value":1223}," ({ id: node.id, name: node.name }));\n",{"type":32,"tag":105,"props":1225,"children":1226},{"class":107,"line":437},[1227],{"type":32,"tag":105,"props":1228,"children":1229},{"emptyLinePlaceholder":171},[1230],{"type":37,"value":174},{"type":32,"tag":105,"props":1232,"children":1233},{"class":107,"line":446},[1234,1239,1244,1248,1253,1258],{"type":32,"tag":105,"props":1235,"children":1236},{"style":122},[1237],{"type":37,"value":1238},"  for",{"type":32,"tag":105,"props":1240,"children":1241},{"style":128},[1242],{"type":37,"value":1243}," (",{"type":32,"tag":105,"props":1245,"children":1246},{"style":122},[1247],{"type":37,"value":872},{"type":32,"tag":105,"props":1249,"children":1250},{"style":202},[1251],{"type":37,"value":1252}," comp",{"type":32,"tag":105,"props":1254,"children":1255},{"style":122},[1256],{"type":37,"value":1257}," of",{"type":32,"tag":105,"props":1259,"children":1260},{"style":128},[1261],{"type":37,"value":1262}," components) {\n",{"type":32,"tag":105,"props":1264,"children":1265},{"class":107,"line":502},[1266,1271,1276,1280,1284,1288,1292,1296,1301,1305,1310,1315,1320,1325,1330],{"type":32,"tag":105,"props":1267,"children":1268},{"style":122},[1269],{"type":37,"value":1270},"    const",{"type":32,"tag":105,"props":1272,"children":1273},{"style":202},[1274],{"type":37,"value":1275}," imageUrl",{"type":32,"tag":105,"props":1277,"children":1278},{"style":122},[1279],{"type":37,"value":882},{"type":32,"tag":105,"props":1281,"children":1282},{"style":122},[1283],{"type":37,"value":1049},{"type":32,"tag":105,"props":1285,"children":1286},{"style":128},[1287],{"type":37,"value":1054},{"type":32,"tag":105,"props":1289,"children":1290},{"style":186},[1291],{"type":37,"value":1059},{"type":32,"tag":105,"props":1293,"children":1294},{"style":128},[1295],{"type":37,"value":513},{"type":32,"tag":105,"props":1297,"children":1298},{"style":521},[1299],{"type":37,"value":1300},"`https:\u002F\u002Fapi.figma.com\u002Fv1\u002Fimages\u002F${",{"type":32,"tag":105,"props":1302,"children":1303},{"style":202},[1304],{"type":37,"value":1073},{"type":32,"tag":105,"props":1306,"children":1307},{"style":521},[1308],{"type":37,"value":1309},"}?ids=${",{"type":32,"tag":105,"props":1311,"children":1312},{"style":128},[1313],{"type":37,"value":1314},"comp",{"type":32,"tag":105,"props":1316,"children":1317},{"style":521},[1318],{"type":37,"value":1319},".",{"type":32,"tag":105,"props":1321,"children":1322},{"style":128},[1323],{"type":37,"value":1324},"id",{"type":32,"tag":105,"props":1326,"children":1327},{"style":521},[1328],{"type":37,"value":1329},"}&format=png`",{"type":32,"tag":105,"props":1331,"children":1332},{"style":128},[1333],{"type":37,"value":1083},{"type":32,"tag":105,"props":1335,"children":1336},{"class":107,"line":556},[1337,1342,1346,1350,1354],{"type":32,"tag":105,"props":1338,"children":1339},{"style":128},[1340],{"type":37,"value":1341},"      headers: { ",{"type":32,"tag":105,"props":1343,"children":1344},{"style":521},[1345],{"type":37,"value":1096},{"type":32,"tag":105,"props":1347,"children":1348},{"style":128},[1349],{"type":37,"value":1101},{"type":32,"tag":105,"props":1351,"children":1352},{"style":202},[1353],{"type":37,"value":967},{"type":32,"tag":105,"props":1355,"children":1356},{"style":128},[1357],{"type":37,"value":1110},{"type":32,"tag":105,"props":1359,"children":1361},{"class":107,"line":1360},20,[1362],{"type":32,"tag":105,"props":1363,"children":1364},{"style":128},[1365],{"type":37,"value":1366},"    });\n",{"type":32,"tag":105,"props":1368,"children":1370},{"class":107,"line":1369},21,[1371],{"type":32,"tag":105,"props":1372,"children":1373},{"style":128},[1374],{"type":37,"value":349},{"type":32,"tag":105,"props":1376,"children":1378},{"class":107,"line":1377},22,[1379],{"type":32,"tag":105,"props":1380,"children":1381},{"style":112},[1382],{"type":37,"value":1383},"    \u002F\u002F Descarga y sube a Google Cloud Storage\n",{"type":32,"tag":105,"props":1385,"children":1387},{"class":107,"line":1386},23,[1388,1392,1397,1401,1405,1409,1413,1418,1423],{"type":32,"tag":105,"props":1389,"children":1390},{"style":122},[1391],{"type":37,"value":1270},{"type":32,"tag":105,"props":1393,"children":1394},{"style":202},[1395],{"type":37,"value":1396}," image",{"type":32,"tag":105,"props":1398,"children":1399},{"style":122},[1400],{"type":37,"value":882},{"type":32,"tag":105,"props":1402,"children":1403},{"style":122},[1404],{"type":37,"value":1049},{"type":32,"tag":105,"props":1406,"children":1407},{"style":128},[1408],{"type":37,"value":1054},{"type":32,"tag":105,"props":1410,"children":1411},{"style":186},[1412],{"type":37,"value":1059},{"type":32,"tag":105,"props":1414,"children":1415},{"style":128},[1416],{"type":37,"value":1417},"(imageUrl.data.images[comp.id], { responseType: ",{"type":32,"tag":105,"props":1419,"children":1420},{"style":521},[1421],{"type":37,"value":1422},"'arraybuffer'",{"type":32,"tag":105,"props":1424,"children":1425},{"style":128},[1426],{"type":37,"value":1427}," });\n",{"type":32,"tag":105,"props":1429,"children":1431},{"class":107,"line":1430},24,[1432,1437,1442,1446,1451,1455,1459,1464,1469],{"type":32,"tag":105,"props":1433,"children":1434},{"style":128},[1435],{"type":37,"value":1436},"    fs.",{"type":32,"tag":105,"props":1438,"children":1439},{"style":186},[1440],{"type":37,"value":1441},"writeFileSync",{"type":32,"tag":105,"props":1443,"children":1444},{"style":128},[1445],{"type":37,"value":513},{"type":32,"tag":105,"props":1447,"children":1448},{"style":521},[1449],{"type":37,"value":1450},"`.\u002Fexports\u002F${",{"type":32,"tag":105,"props":1452,"children":1453},{"style":128},[1454],{"type":37,"value":1314},{"type":32,"tag":105,"props":1456,"children":1457},{"style":521},[1458],{"type":37,"value":1319},{"type":32,"tag":105,"props":1460,"children":1461},{"style":128},[1462],{"type":37,"value":1463},"name",{"type":32,"tag":105,"props":1465,"children":1466},{"style":521},[1467],{"type":37,"value":1468},"}.png`",{"type":32,"tag":105,"props":1470,"children":1471},{"style":128},[1472],{"type":37,"value":1473},", image.data);\n",{"type":32,"tag":105,"props":1475,"children":1477},{"class":107,"line":1476},25,[1478],{"type":32,"tag":105,"props":1479,"children":1480},{"style":128},[1481],{"type":37,"value":1482},"  }\n",{"type":32,"tag":105,"props":1484,"children":1486},{"class":107,"line":1485},26,[1487],{"type":32,"tag":105,"props":1488,"children":1489},{"style":128},[1490],{"type":37,"value":1491},"}\n",{"type":32,"tag":105,"props":1493,"children":1495},{"class":107,"line":1494},27,[1496],{"type":32,"tag":105,"props":1497,"children":1498},{"emptyLinePlaceholder":171},[1499],{"type":37,"value":174},{"type":32,"tag":105,"props":1501,"children":1503},{"class":107,"line":1502},28,[1504,1509],{"type":32,"tag":105,"props":1505,"children":1506},{"style":186},[1507],{"type":37,"value":1508},"exportVariations",{"type":32,"tag":105,"props":1510,"children":1511},{"style":128},[1512],{"type":37,"value":1513},"();\n",{"type":32,"tag":40,"props":1515,"children":1517},{"id":1516},"escalar-el-ganador-ciclo-de-creative-refresh",[1518],{"type":37,"value":1519},"Escalar el ganador: ciclo de creative refresh",{"type":32,"tag":33,"props":1521,"children":1522},{},[1523],{"type":37,"value":1524},"Cuando una creatividad gana, usarla para siempre es un error — el creative fatigue es real. En Meta, después de 14 días en promedio la frecuencia de la misma creatividad llega a 3.5+, el CTR cae %30+. En Google Performance Max, fatigue es más lento (por la diversidad de placements) pero después de 30 días el efecto se ve. Para eso, establece un ciclo de creative refresh:",{"type":32,"tag":1526,"props":1527,"children":1528},"ul",{},[1529,1539,1549,1559],{"type":32,"tag":738,"props":1530,"children":1531},{},[1532,1537],{"type":32,"tag":742,"props":1533,"children":1534},{},[1535],{"type":37,"value":1536},"Días 0-14:",{"type":37,"value":1538}," Testea nueva variación, encuentra ganador.",{"type":32,"tag":738,"props":1540,"children":1541},{},[1542,1547],{"type":32,"tag":742,"props":1543,"children":1544},{},[1545],{"type":37,"value":1546},"Días 14-30:",{"type":37,"value":1548}," Escala el ganador a %70 presupuesto, mantén control en %30.",{"type":32,"tag":738,"props":1550,"children":1551},{},[1552,1557],{"type":32,"tag":742,"props":1553,"children":1554},{},[1555],{"type":37,"value":1556},"Días 30-45:",{"type":37,"value":1558}," Testea micro-iteraciones del ganador (mismo ángulo, diferentes visuals).",{"type":32,"tag":738,"props":1560,"children":1561},{},[1562,1567],{"type":32,"tag":742,"props":1563,"children":1564},{},[1565],{"type":37,"value":1566},"Días 45+:",{"type":37,"value":1568}," Retira la creatividad ganadora, inicia nuevo ciclo.",{"type":32,"tag":33,"props":1570,"children":1571},{},[1572],{"type":37,"value":1573},"Con este ciclo, la campaña nunca depende de una sola creatividad, hay flow constante de señal. En algunos sectores (moda, gaming especialmente) el ciclo es más rápido — puede requerir refresh cada 7 días. Lo detectas con caída instantánea de CTR: si el CTR de los últimos 3 días de una creatividad cae %20+ vs. los primeros 3, fatigue comenzó.",{"type":32,"tag":33,"props":1575,"children":1576},{},[1577],{"type":37,"value":1578},"Convertir creative operations en un sistema disciplinado es proporcionar el combustible fundamental que los algoritmos impulsados por máquina necesitan. Llevar la producción de variaciones a sprints semanales, construir la arquitectura de testing en base a cohortes, medir incrementalidad y acelerar con automatización — estos cuatro pilares alimentan continuamente la máquina con el material que necesita para aprender. El resultado: el bidding automático encuentra la distribución óptima a partir de la semana 2, el CPA baja, la escala es posible.",{"type":32,"tag":1580,"props":1581,"children":1582},"style",{},[1583],{"type":37,"value":1584},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":16,"searchDepth":144,"depth":144,"links":1586},[1587,1588,1589,1590,1591,1592],{"id":42,"depth":118,"text":45},{"id":74,"depth":118,"text":77},{"id":565,"depth":118,"text":568},{"id":719,"depth":118,"text":722},{"id":775,"depth":118,"text":778},{"id":1516,"depth":118,"text":1519},"markdown","content:es:marketing:creative-operations-variaciones-algoritmo-bidding.md","content","es\u002Fmarketing\u002Fcreative-operations-variaciones-algoritmo-bidding.md","es\u002Fmarketing\u002Fcreative-operations-variaciones-algoritmo-bidding","md",1778940271460]