[{"data":1,"prerenderedAt":580},["ShallowReactive",2],{"navigation":3,"\u002Fes\u002Farticles\u002F2026\u002Fapril\u002Fhow-i-made-my-fork-bilingual-and-published-it-right":177},[4,62],{"title":5,"path":6,"stem":7,"children":8},"About","\u002Fen","en\u002F1.index",[9,10,56],{"title":5,"path":6,"stem":7},{"title":11,"path":12,"stem":13,"children":14},"Blog","\u002Fen\u002Farticles","en\u002F2.articles",[15],{"title":16,"path":17,"stem":18,"children":19,"page":33},"2026","\u002Fen\u002Farticles\u002F2026","en\u002Farticles\u002F2026",[20,34,47],{"title":21,"path":22,"stem":23,"children":24,"page":33},"April","\u002Fen\u002Farticles\u002F2026\u002Fapril","en\u002Farticles\u002F2026\u002Fapril",[25,29],{"title":26,"path":27,"stem":28},"Improving My App's Vibes with DESIGN.md","\u002Fen\u002Farticles\u002F2026\u002Fapril\u002Fexploring-llm-ui","en\u002Farticles\u002F2026\u002Fapril\u002Fexploring-llm-ui",{"title":30,"path":31,"stem":32},"How I Made My Fork Bilingual and Published It Right","\u002Fen\u002Farticles\u002F2026\u002Fapril\u002Fhow-i-made-my-fork-bilingual-and-published-it-right","en\u002Farticles\u002F2026\u002Fapril\u002Fhow-i-made-my-fork-bilingual-and-published-it-right",false,{"title":35,"path":36,"stem":37,"children":38,"page":33},"July","\u002Fen\u002Farticles\u002F2026\u002Fjuly","en\u002Farticles\u002F2026\u002Fjuly",[39,43],{"title":40,"path":41,"stem":42},"From Idea to MS Teams: Deploying an Agent","\u002Fen\u002Farticles\u002F2026\u002Fjuly\u002Ffrom-idea-to-ms-teams-agent","en\u002Farticles\u002F2026\u002Fjuly\u002Ffrom-idea-to-ms-teams-agent",{"title":44,"path":45,"stem":46},"Legally Spying on Your Competition is Possible","\u002Fen\u002Farticles\u002F2026\u002Fjuly\u002Fspying-on-your-rivals","en\u002Farticles\u002F2026\u002Fjuly\u002Fspying-on-your-rivals",{"title":48,"path":49,"stem":50,"children":51,"page":33},"May","\u002Fen\u002Farticles\u002F2026\u002Fmay","en\u002Farticles\u002F2026\u002Fmay",[52],{"title":53,"path":54,"stem":55},"Building an Agent's Personality Around the Customer Journey","\u002Fen\u002Farticles\u002F2026\u002Fmay\u002Fbuilding-agents-with-personality","en\u002Farticles\u002F2026\u002Fmay\u002Fbuilding-agents-with-personality",{"title":57,"path":58,"stem":59,"children":60},"Index","\u002Fen\u002Farticles_index","en\u002F4.articles_index",[61],{"title":57,"path":58,"stem":59},{"title":63,"path":64,"stem":65,"children":66},"Acerca De","\u002Fes","es\u002F1.index",[67,68,153,171],{"title":63,"path":64,"stem":65},{"title":11,"path":69,"stem":70,"children":71},"\u002Fes\u002Farticles","es\u002F2.articles",[72,95,117],{"title":73,"path":74,"stem":75,"children":76,"page":33},"2024","\u002Fes\u002Farticles\u002F2024","es\u002Farticles\u002F2024",[77,86],{"title":78,"path":79,"stem":80,"children":81,"page":33},"Diciembre","\u002Fes\u002Farticles\u002F2024\u002Fdiciembre","es\u002Farticles\u002F2024\u002Fdiciembre",[82],{"title":83,"path":84,"stem":85},"Diciembre es un mes más","\u002Fes\u002Farticles\u002F2024\u002Fdiciembre\u002Fhaikus","es\u002Farticles\u002F2024\u002Fdiciembre\u002Fhaikus",{"title":87,"path":88,"stem":89,"children":90,"page":33},"Octubre","\u002Fes\u002Farticles\u002F2024\u002Foctubre","es\u002Farticles\u002F2024\u002Foctubre",[91],{"title":92,"path":93,"stem":94},"Viaje de regreso","\u002Fes\u002Farticles\u002F2024\u002Foctubre\u002Fhaikus","es\u002Farticles\u002F2024\u002Foctubre\u002Fhaikus",{"title":96,"path":97,"stem":98,"children":99,"page":33},"2025","\u002Fes\u002Farticles\u002F2025","es\u002Farticles\u002F2025",[100,109],{"title":101,"path":102,"stem":103,"children":104,"page":33},"Agosto","\u002Fes\u002Farticles\u002F2025\u002Fagosto","es\u002Farticles\u002F2025\u002Fagosto",[105],{"title":106,"path":107,"stem":108},"Hola Mundo","\u002Fes\u002Farticles\u002F2025\u002Fagosto\u002Fholamundo","es\u002Farticles\u002F2025\u002Fagosto\u002Fholamundo",{"title":87,"path":110,"stem":111,"children":112,"page":33},"\u002Fes\u002Farticles\u002F2025\u002Foctubre","es\u002Farticles\u002F2025\u002Foctubre",[113],{"title":114,"path":115,"stem":116},"El Antipatrón de la Red Veloz","\u002Fes\u002Farticles\u002F2025\u002Foctubre\u002Flatencia","es\u002Farticles\u002F2025\u002Foctubre\u002Flatencia",{"title":16,"path":118,"stem":119,"children":120,"page":33},"\u002Fes\u002Farticles\u002F2026","es\u002Farticles\u002F2026",[121,133,145],{"title":21,"path":122,"stem":123,"children":124,"page":33},"\u002Fes\u002Farticles\u002F2026\u002Fapril","es\u002Farticles\u002F2026\u002Fapril",[125,129],{"title":126,"path":127,"stem":128},"Mejorando las VIBES de mi aplicación con DESIGN.md","\u002Fes\u002Farticles\u002F2026\u002Fapril\u002Fexploring-llm-ui","es\u002Farticles\u002F2026\u002Fapril\u002Fexploring-llm-ui",{"title":130,"path":131,"stem":132},"Cómo volví mi fork multilenguaje y lo publiqué bien","\u002Fes\u002Farticles\u002F2026\u002Fapril\u002Fhow-i-made-my-fork-bilingual-and-published-it-right","es\u002Farticles\u002F2026\u002Fapril\u002Fhow-i-made-my-fork-bilingual-and-published-it-right",{"title":35,"path":134,"stem":135,"children":136,"page":33},"\u002Fes\u002Farticles\u002F2026\u002Fjuly","es\u002Farticles\u002F2026\u002Fjuly",[137,141],{"title":138,"path":139,"stem":140},"De Idea a Ms Teams: Desplegando un Agente","\u002Fes\u002Farticles\u002F2026\u002Fjuly\u002Ffrom-idea-to-ms-teams-agent","es\u002Farticles\u002F2026\u002Fjuly\u002Ffrom-idea-to-ms-teams-agent",{"title":142,"path":143,"stem":144},"Espiar a Tu Competencia de Manera Legal es Posible","\u002Fes\u002Farticles\u002F2026\u002Fjuly\u002Fspying-on-your-rivals","es\u002Farticles\u002F2026\u002Fjuly\u002Fspying-on-your-rivals",{"title":48,"path":146,"stem":147,"children":148,"page":33},"\u002Fes\u002Farticles\u002F2026\u002Fmay","es\u002Farticles\u002F2026\u002Fmay",[149],{"title":150,"path":151,"stem":152},"Construyendo la personalidad de un agente en base a la travesía del cliente","\u002Fes\u002Farticles\u002F2026\u002Fmay\u002Fbuilding-agents-with-personality","es\u002Farticles\u002F2026\u002Fmay\u002Fbuilding-agents-with-personality",{"title":154,"path":155,"stem":156,"children":157},"Galería","\u002Fes\u002Fgallery","es\u002F3.gallery",[158],{"title":96,"path":159,"stem":160,"children":161,"page":33},"\u002Fes\u002Fgallery\u002F2025","es\u002Fgallery\u002F2025",[162],{"title":163,"path":164,"stem":165,"children":166,"page":33},"Septiembre","\u002Fes\u002Fgallery\u002F2025\u002Fseptiembre","es\u002Fgallery\u002F2025\u002Fseptiembre",[167],{"title":168,"path":169,"stem":170},"Cielo de Oyón","\u002Fes\u002Fgallery\u002F2025\u002Fseptiembre\u002Fholamundo","es\u002Fgallery\u002F2025\u002Fseptiembre\u002Fholamundo",{"title":172,"path":173,"stem":174,"children":175},"Lista","\u002Fes\u002Farticles_index","es\u002F4.articles_index",[176],{"title":172,"path":173,"stem":174},{"id":178,"title":130,"author":179,"badges":182,"body":183,"canonical":182,"cover":567,"date":568,"description":569,"extension":570,"layout":571,"meta":572,"navigation":294,"path":131,"seo":578,"stem":132,"__hash__":579},"content\u002Fes\u002Farticles\u002F2026\u002Fapril\u002Fhow-i-made-my-fork-bilingual-and-published-it-right.md",{"name":180,"url":181},"Ever Burga","https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Feverburga\u002F",null,{"type":184,"value":185,"toc":561},"minimark",[186,190,194,197,200,205,228,231,234,237,240,248,491,518,530,533,536,557],[187,188,130],"h1",{"id":189},"cómo-volví-mi-fork-multilenguaje-y-lo-publiqué-bien",[191,192,193],"p",{},"Este post marca el renacer de mi blog. No porque ahora tenga ideas a desbordar que contar al mundo; simplemente porque por fin volví a tocarlo en serio.\nRecuerdo ver una publicación sobre el creador de OpenClaw: decenas de repos, el primer viral fue OpenClaw.",[191,195,196],{},"Es como la vida, pensé. De muchos tiros alguno da en el blanco. Así que seguimos.",[191,198,199],{},"Ahora que he vuelto y ha salido Claude 4.6 y demás, todo es muy incierto. Mis propias correcciones que ahora te comparto fueron contribuidas en su mayor parte por Claude. No sé cuánto crédito debería tomar. Si por curiosidad sigues leyendo y te interesa cómo publicar a node, te dejo aquí abajo mi brief:",[201,202,204],"h2",{"id":203},"índice","Índice",[206,207,208,216,222],"ol",{},[209,210,211],"li",{},[212,213,215],"a",{"href":214},"#lo-que-si-trabaje","Lo que sí trabajé",[209,217,218],{},[212,219,221],{"href":220},"#las-lineas-que-de-verdad-importan","Las líneas que de verdad importan",[209,223,224],{},[212,225,227],{"href":226},"#repo","Repo",[201,229,215],{"id":230},"lo-que-sí-trabajé",[191,232,233],{},"Miré el historial de mi rama y, para ser honesto, me di cuenta de que hubo un error en el que tuve que ser el human in the loop y cambiar el scope de mi cuenta de npmjs creando una organización.",[191,235,236],{},"Lo que pasa es que debes tener el mismo handle en github y en npmjs (o en una org). Ese detalle te lo comparto.",[201,238,221],{"id":239},"las-líneas-que-de-verdad-importan",[191,241,242,243,247],{},"Esto es lo principal de mi ",[244,245,246],"code",{},"publish.yml",":",[249,250,255],"pre",{"className":251,"code":252,"language":253,"meta":254,"style":254},"language-yaml shiki shiki-themes github-light github-dark","on:\n  workflow_run:\n    workflows: [\"ci-main\", \"ci-dev\"]\n    types: [completed]\n    branches: [main, dev]\n\njobs:\n  publish:\n    if: ${{ github.event.workflow_run.conclusion == 'success' }}\n\n    steps:\n      - uses: actions\u002Fcheckout@v4\n        with:\n          ref: ${{ github.event.workflow_run.head_branch }}\n\n      - uses: actions\u002Fsetup-node@v4\n        with:\n          node-version: 22.14\n          registry-url: https:\u002F\u002Fregistry.npmjs.org\n\n      - name: Upgrade npm\n        run: npm install -g npm@latest\n\n      - name: Install dependencies\n        run: pnpm install --ignore-scripts\n\n      - name: Bump version with dev suffix\n        if: ${{ github.event.workflow_run.head_branch == 'dev' }}\n        run: |\n          COMMIT=$(git rev-parse --short HEAD)\n          VERSION=$(node -p \"require('.\u002Fpackage.json').version\")\n          npm version \"${VERSION}-dev.${COMMIT}\" --no-git-tag-version\n\n      - name: Publish to npm\n        run: npm publish --access public\n\n      - name: Publish to GitHub Packages\n        env:\n          NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n        run: npm publish --access public\n","yaml","",[244,256,257,265,271,277,283,289,296,302,308,314,319,325,331,337,343,348,354,359,365,371,376,382,388,393,399,405,410,416,422,428,434,440,446,451,457,463,468,474,480,486],{"__ignoreMap":254},[258,259,262],"span",{"class":260,"line":261},"line",1,[258,263,264],{},"on:\n",[258,266,268],{"class":260,"line":267},2,[258,269,270],{},"  workflow_run:\n",[258,272,274],{"class":260,"line":273},3,[258,275,276],{},"    workflows: [\"ci-main\", \"ci-dev\"]\n",[258,278,280],{"class":260,"line":279},4,[258,281,282],{},"    types: [completed]\n",[258,284,286],{"class":260,"line":285},5,[258,287,288],{},"    branches: [main, dev]\n",[258,290,292],{"class":260,"line":291},6,[258,293,295],{"emptyLinePlaceholder":294},true,"\n",[258,297,299],{"class":260,"line":298},7,[258,300,301],{},"jobs:\n",[258,303,305],{"class":260,"line":304},8,[258,306,307],{},"  publish:\n",[258,309,311],{"class":260,"line":310},9,[258,312,313],{},"    if: ${{ github.event.workflow_run.conclusion == 'success' }}\n",[258,315,317],{"class":260,"line":316},10,[258,318,295],{"emptyLinePlaceholder":294},[258,320,322],{"class":260,"line":321},11,[258,323,324],{},"    steps:\n",[258,326,328],{"class":260,"line":327},12,[258,329,330],{},"      - uses: actions\u002Fcheckout@v4\n",[258,332,334],{"class":260,"line":333},13,[258,335,336],{},"        with:\n",[258,338,340],{"class":260,"line":339},14,[258,341,342],{},"          ref: ${{ github.event.workflow_run.head_branch }}\n",[258,344,346],{"class":260,"line":345},15,[258,347,295],{"emptyLinePlaceholder":294},[258,349,351],{"class":260,"line":350},16,[258,352,353],{},"      - uses: actions\u002Fsetup-node@v4\n",[258,355,357],{"class":260,"line":356},17,[258,358,336],{},[258,360,362],{"class":260,"line":361},18,[258,363,364],{},"          node-version: 22.14\n",[258,366,368],{"class":260,"line":367},19,[258,369,370],{},"          registry-url: https:\u002F\u002Fregistry.npmjs.org\n",[258,372,374],{"class":260,"line":373},20,[258,375,295],{"emptyLinePlaceholder":294},[258,377,379],{"class":260,"line":378},21,[258,380,381],{},"      - name: Upgrade npm\n",[258,383,385],{"class":260,"line":384},22,[258,386,387],{},"        run: npm install -g npm@latest\n",[258,389,391],{"class":260,"line":390},23,[258,392,295],{"emptyLinePlaceholder":294},[258,394,396],{"class":260,"line":395},24,[258,397,398],{},"      - name: Install dependencies\n",[258,400,402],{"class":260,"line":401},25,[258,403,404],{},"        run: pnpm install --ignore-scripts\n",[258,406,408],{"class":260,"line":407},26,[258,409,295],{"emptyLinePlaceholder":294},[258,411,413],{"class":260,"line":412},27,[258,414,415],{},"      - name: Bump version with dev suffix\n",[258,417,419],{"class":260,"line":418},28,[258,420,421],{},"        if: ${{ github.event.workflow_run.head_branch == 'dev' }}\n",[258,423,425],{"class":260,"line":424},29,[258,426,427],{},"        run: |\n",[258,429,431],{"class":260,"line":430},30,[258,432,433],{},"          COMMIT=$(git rev-parse --short HEAD)\n",[258,435,437],{"class":260,"line":436},31,[258,438,439],{},"          VERSION=$(node -p \"require('.\u002Fpackage.json').version\")\n",[258,441,443],{"class":260,"line":442},32,[258,444,445],{},"          npm version \"${VERSION}-dev.${COMMIT}\" --no-git-tag-version\n",[258,447,449],{"class":260,"line":448},33,[258,450,295],{"emptyLinePlaceholder":294},[258,452,454],{"class":260,"line":453},34,[258,455,456],{},"      - name: Publish to npm\n",[258,458,460],{"class":260,"line":459},35,[258,461,462],{},"        run: npm publish --access public\n",[258,464,466],{"class":260,"line":465},36,[258,467,295],{"emptyLinePlaceholder":294},[258,469,471],{"class":260,"line":470},37,[258,472,473],{},"      - name: Publish to GitHub Packages\n",[258,475,477],{"class":260,"line":476},38,[258,478,479],{},"        env:\n",[258,481,483],{"class":260,"line":482},39,[258,484,485],{},"          NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n",[258,487,489],{"class":260,"line":488},40,[258,490,462],{},[492,493,494,503,509,512,515],"ul",{},[209,495,496,499,500],{},[244,497,498],{},"dev"," publica con sufijo en base al commit y sin ensuciar ",[244,501,502],{},"latest",[209,504,505,508],{},[244,506,507],{},"main"," publica limpio",[209,510,511],{},"npm no depende de tokens eternos vulnerables",[209,513,514],{},"GitHub Packages queda sincronizado",[209,516,517],{},"el publish solo corre si CI pasó antes",[191,519,520,526],{},[521,522],"img",{"alt":523,"src":524,"title":525},"Configuración de trusted publisher en npmjs","\u002Farticles\u002F2026\u002Fapril\u002Ftrusted_publisher_npmjs.png","Trusted publisher conectado con GitHub Actions",[527,528,529],"em",{},"No olvidar tener el mismo handle, así tienes tu publicación bonita sincronizada en Github",[201,531,227],{"id":532},"repo",[191,534,535],{},"Estas son las fuentes.",[492,537,538,547],{},[209,539,540,541],{},"repo: ",[212,542,546],{"href":543,"rel":544},"https:\u002F\u002Fgithub.com\u002F4xeverburga\u002Fnuxt-alpine-spanishplus",[545],"nofollow","4xeverburga\u002Fnuxt-alpine-spanishplus",[209,548,549,550],{},"workflows: ",[212,551,554],{"href":552,"rel":553},"https:\u002F\u002Fgithub.com\u002F4xeverburga\u002Fnuxt-alpine-spanishplus\u002Ftree\u002Fmain\u002F.github\u002Fworkflows",[545],[244,555,556],{},".github\u002Fworkflows",[558,559,560],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":254,"searchDepth":267,"depth":267,"links":562},[563,564,565,566],{"id":203,"depth":267,"text":204},{"id":230,"depth":267,"text":215},{"id":239,"depth":267,"text":221},{"id":532,"depth":267,"text":227},"\u002Farticles\u002F2026\u002Fapril\u002Fel_blog_renace.png","2026-04-13T10:00:00.000Z","Este post marca el renacer de mi blog","md","article",{"head":573},{"meta":574},[575],{"name":576,"content":577},"keywords","nuxt theme, bilingual blog, npm publish, github actions, github workflows, npmjs, github, i18n, OIDC, trusted publishing, ci-cd, open source",{"title":130,"description":569},"4RjtSmgdpulXT5T-yPilRX5tNkYcmrOHYgrIaE9ShXA",1785323411284]