chemavxandClaude Opus 4.8 999efe6956 researchowl: SEO_AUTOFILL on → dryrun
Cierra el cambio de orden del flujo editorial. Con 'on', ResearchOwl escribía
el SEO en el borrador nada más generarlo — pero el SEO es DERIVADO del
artículo, y la revisión editorial posterior cambia el texto: la meta acababa
describiendo algo que ya no existía y había que rehacerla a mano en cada post.
Caso real del 2026-07-20: la meta del artículo belga decía 'A declassified
case unsolved' cuando el artículo argumenta que los datos crudos siguen
clasificados.

Con 'dryrun' el borrador se crea sin SEO y autofill solo lo PROPONE por
Telegram. El SEO se deriva del texto FINAL en el remate (seo_finish.py), que
además escribe el feature_image_alt — imposible en generación porque la imagen
destacada aún no se ha elegido (de ahí el 'human adds later' de autofill.py,
un paso humano que no ocurría: 9 posts publicados sin alt entre el 29-jun y
el 16-jul).

Contrapartida asumida: si un post se publica SIN pasar por el remate, saldrá
sin SEO. Red de seguridad: seo_watch marca meta_description.missing como HIGH,
y seo-check sigue disponible como puerta pre-publicación.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-20 11:27:38 +00:00
2026-07-18 14:57:46 +00:00
2026-07-18 14:57:46 +00:00
2026-07-18 14:57:46 +00:00
2026-07-18 14:57:46 +00:00
2026-07-18 14:57:46 +00:00
2026-07-18 14:57:46 +00:00

k8s-manifests

Manifests de Kubernetes gestionados por ArgoCD para el cluster chemavx.

Regla crítica: secrets en git

Los secrets con datos sensibles NO se guardan en este repo.

Los archivos de secret en este repo sólo contienen metadata (name, namespace, labels, annotations). Los campos data / stringData se gestionan manualmente fuera de git.

Por qué

Un valor placeholder como REDACTED es base64 válido que decodifica a bytes no-UTF-8. Si ArgoCD aplica ese manifest, corrompe el secret en el cluster, lo que puede:

  • Romper certificados TLS (ERR_CERT_AUTHORITY_INVALID)
  • Impedir que pods arranquen (grpc: error while marshaling: string field contains invalid UTF-8)
  • Cifrar credenciales con una clave incorrecta

Secrets TLS (cert-manager)

Los secrets TLS los gestiona cert-manager automáticamente a partir del recurso Certificate. No crear archivos secret-*-tls.yaml con datos.

Secrets de aplicación — crear manualmente antes del primer deploy

Namespace Secret Comando
n8n n8n-secret kubectl create secret generic n8n-secret --from-literal=encryption-key='<valor-en-vaultwarden>' -n n8n
authentik authentik-secret Ver Vaultwarden → "authentik"
cloudflare-ddns cloudflare-ddns-secret Ver Vaultwarden → "cloudflare-ddns"
vaultwarden vaultwarden-secret Ver Vaultwarden → "vaultwarden"
ghost-en ghost-en-smtp kubectl create secret generic ghost-en-smtp --from-literal=SMTP_USER='<user-gmail>' --from-literal=SMTP_PASS='<app-password>' -n ghost-en
argocd argocd-secret Gestionado por ArgoCD bootstrap
argocd argocd-redis Gestionado por ArgoCD bootstrap
monitoring kube-prometheus-stack-grafana Ver Vaultwarden → "grafana"
monitoring kube-prometheus-stack-admission Generado por helm (webhook TLS)

ArgoCD ignoreDifferences para secrets

Toda ArgoCD Application que gestione un namespace con secrets debe incluir ignoreDifferences para el campo /data:

spec:
  ignoreDifferences:
    - group: ""
      kind: Secret
      name: <nombre-del-secret>
      namespace: <namespace>
      jsonPointers:
        - /data
  syncPolicy:
    syncOptions:
      - RespectIgnoreDifferences=true

Ver n8n ArgoCD Application como referencia.

Pre-commit hook

Este repo incluye un pre-commit hook que rechaza commits con REDACTED en archivos .yaml. Instalar con:

cp .githooks/pre-commit .git/hooks/pre-commit
chmod +x .git/hooks/pre-commit

Renovate Bot

Secret renovate-token gestionado manualmente (no está en el repo). Para recrearlo:

kubectl create secret generic renovate-token \
  --from-literal=RENOVATE_TOKEN=<token-gitea> \
  -n renovate

Token en https://git.chemavx.xyz/user/settings/applications con permisos: issue: Read/Write, repository: Read/Write, user: Read

Imagen fijada a 38.0.0 — no actualizar a latest sin probar autenticación primero.

ArgoCD patches

Después de instalar ArgoCD aplicar: kubectl apply -f argocd-patches/redis-patch.yaml

S
Description
Kubernetes manifests
Readme
1.4 MiB
Languages
Python 77.3%
JavaScript 19.6%
Shell 3.1%