PageSourceSearch

https://pavimurcia.com/assets/AdminContenido-KN687QuN.js

js pavimurcia.com collected 2026-10-07 06:58:09 UTC 6,672 bytes, 20 lines download raw bytes

1import{c as N,i as v,r as g,d as S,j as e,B as p,e as t}from"./index-DtAHY5rU.js";import{N as w}from"./Navbar-D3oZcgnM.js";import{L as x}from"./drawer-DpEAGw3O.js";import{R as h}from"./refresh-cw-BpTQ_6Fq.js";import{C as f}from"./circle-check-big-DARkDoHS.js";import"./phone-BeNHH-UC.js";import"./index-BKLkO1cx.js";import"./proxy-Bnk4c2UY.js";/**
2 * @license lucide-react v0.475.0 - ISC
3 *
4 * This source code is licensed under the ISC license.
5 * See the LICENSE file in the root directory of this source tree.
6 */const A=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]],z=N("CircleAlert",A),b=[{slug:"murcia",name:"Murcia"},{slug:"cartagena",name:"Cartagena"},{slug:"lorca",name:"Lorca"},{slug:"molina-de-segura",name:"Molina de Segura"},{slug:"aguilas",name:"Águilas"},{slug:"cieza",name:"Cieza"},{slug:"alcantarilla",name:"Alcantarilla"},{slug:"mazarron",name:"Mazarrón"},{slug:"caravaca-de-la-cruz",name:"Caravaca de la Cruz"},{slug:"totana",name:"Totana"},{slug:"yecla",name:"Yecla"},{slug:"torre-pacheco",name:"Torre Pacheco"},{slug:"san-javier",name:"San Javier"},{slug:"jumilla",name:"Jumilla"},{slug:"alhama-de-murcia",name:"Alhama de Murcia"},{slug:"las-torres-de-cotillas",name:"Las Torres de Cotillas"},{slug:"la-union",name:"La Unión"},{slug:"archena",name:"Archena"},{slug:"mula",name:"Mula"},{slug:"san-pedro-del-pinatar",name:"San Pedro del Pinatar"},{slug:"cehegin",name:"Cehegín"},{slug:"bullas",name:"Bullas"},{slug:"puerto-lumbreras",name:"Puerto Lumbreras"},{slug:"beniel",name:"Beniel"},{slug:"fuente-alamo",name:"Fuente Álamo"},{slug:"los-alcazares",name:"Los Alcázares"},{slug:"fortuna",name:"Fortuna"},{slug:"abaran",name:"Abarán"},{slug:"blanca",name:"Blanca"},{slug:"calasparra",name:"Calasparra"},{slug:"lorqui",name:"Lorquí"},{slug:"ceuti",name:"Ceutí"},{slug:"alguazas",name:"Alguazas"},{slug:"librilla",name:"Librilla"},{slug:"campos-del-rio",name:"Campos del Río"},{slug:"pliego",name:"Pliego"},{slug:"moratalla",name:"Moratalla"},{slug:"ricote",name:"Ricote"},{slug:"ojos",name:"Ojós"},{slug:"ulea",name:"Ulea"},{slug:"villanueva-del-rio-segura",name:"Villanueva del Río Segura"},{slug:"aledo",name:"Aledo"},{slug:"abanilla",name:"Abanilla"},{slug:"santomera",name:"Santomera"}];async function O(m,n){return(await t.integrations.Core.InvokeLLM({prompt:`Eres un experto en SEO local para empresas de construcción en España. 
7Genera 4 párrafos de contenido SEO optimizado para la página de "Hormigón Impreso en ${n}" de la empresa PAVIMURCIA, especialista en hormigón impreso en la Región de Murcia.
8
9INSTRUCCIONES:
10- Escribe de forma NATURAL y fluida, como lo haría un profesional murciano hablando a un cliente. NO repitas "hormigón impreso en ${n}" más de 2-3 veces en TODO el texto, no por párrafo.
11- NO ensartes frases hechas tipo "precio hormigón impreso ${n}", "instaladores hormigón impreso ${n}", "presupuesto hormigón impreso ${n}" literalmente enlazadas. Si hablas del precio o la instalación, hazlo con lenguaje natural (ej: "el precio del pavimento", "nuestros instaladores", "pedir presupuesto") sin forzar el nombre de la población detrás.
12- Varía el vocabulario: usa "pavimento decorativo", "suelo exterior", "acabado", "superficie", etc. No ancles siempre a "hormigón impreso".
13- Menciona PAVIMURCIA una sola vez como empresa de referencia, sin repetirla.
14- Aporta valor real y específico a ${n}: datos del clima, urbanizaciones reales del municipio, usos típicos de la zona, algo que un cliente de ${n} reconocería como auténtico.
15- Tono profesional y cercano, en español de España.
16- Cada párrafo entre 80-120 palabras.
17- NO incluyas títulos ni cabeceras, solo los párrafos de texto.
18- CRÍTICO: Evita sonar como SEO spam o marketing. Redacta contenido que un humano leería con placer y que aportaría información útil aunque Google no existiera.
19
20Devuelve un JSON con la clave "parrafos" conteniendo un array de 4 strings.`,response_json_schema:{type:"object",properties:{parrafos:{type:"array",items:{type:"string"}}}}})).parrafos}function T(){const m=v(),[n,c]=g.useState(null),[y,u]=g.useState({}),{data:j=[]}=S({queryKey:["contenidos"],queryFn:()=>t.entities.ContenidoPoblacion.list(),staleTime:60*1e3}),l=Object.fromEntries(j.map(a=>[a.slug,a])),d=async(a,s)=>{c(a),u(r=>({...r,[a]:null}));try{const r=await O(a,s),o=l[a];o?await t.entities.ContenidoPoblacion.update(o.id,{parrafos:r,generado_en:new Date().toISOString()}):await t.entities.ContenidoPoblacion.create({slug:a,nombre:s,parrafos:r,generado_en:new Date().toISOString()}),u(i=>
20({...i,[a]:"ok"})),m.invalidateQueries({queryKey:["contenidos"]})}catch{u(o=>({...o,[a]:"error"}))}finally{c(null)}},C=async()=>{for(const a of b)await d(a.slug,a.name)};return e.jsxs("div",{className:"min-h-screen bg-background pb-16",children:[e.jsx(w,{}),e.jsxs("div",{className:"max-w-4xl mx-auto px-4 pt-32",children:[e.jsxs("div",{className:"flex items-center justify-between mb-8",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"font-heading text-3xl font-bold text-foreground",children:"Contenido SEO por Población"}),e.jsx("p",{className:"font-body text-muted-foreground mt-1",children:"Genera contenido optimizado con IA para cada página de población."})]}),e.jsxs(p,{onClick:C,disabled:!!n,className:"bg-primary text-primary-foreground gap-2",children:[n?e.jsx(x,{className:"w-4 h-4 animate-spin"}):e.jsx(h,{className:"w-4 h-4"}),"Generar Todas"]})]}),e.jsx("div",{className:"space-y-3",children:b.map(a=>{var i;const s=!!l[a.slug],r=n===a.slug,o=y[a.slug];return e.jsxs("div",{className:"flex items-center justify-between bg-card border border-border rounded-xl px-5 py-4",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[o==="ok"?e.jsx(f,{className:"w-4 h-4 text-green-500"}):o==="error"?e.jsx(z,{className:"w-4 h-4 text-destructive"}):s?e.jsx(f,{className:"w-4 h-4 text-green-500"}):e.jsx("div",{className:"w-4 h-4 rounded-full border-2 border-muted-foreground/30"}),e.jsx("span",{className:"font-body font-medium text-foreground",children:a.name}),s&&((i=l[a.slug])==null?void 0:i.generado_en)&&e.jsx("span",{className:"text-xs text-muted-foreground",children:new Date(l[a.slug].generado_en).toLocaleDateString("es-ES")})]}),e.jsx(p,{size:"sm",variant:s?"outline":"default",disabled:!!n,onClick:()=>d(a.slug,a.name),className:"gap-2",children:r?e.jsxs(e.Fragment,{children:[e.jsx(x,{className:"w-3 h-3 animate-spin"})," Generando..."]}):s?e.jsxs(e.Fragment,{children:[e.jsx(h,{className:"w-3 h-3"})," Regenerar"]}):"Generar"})]},a.slug)})})]})]})}export{T as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.