# Blog Brand > Crea contexto editorial duradero para el resto de subskills: genera BRAND.md (audiencia, posicionamiento, reglas editoriales, frases prohibidas, competencia) y VOICE.md (la persona en prosa legible) en la raíz del proyecto. Fuente: https://skillsagentes.com/skills/agricidaniel/claude-blog/blog-brand Markdown: https://skillsagentes.com/skills/agricidaniel/claude-blog/blog-brand.md Repositorio: https://github.com/AgriciDaniel/claude-blog Autor: AgriciDaniel Licencia: MIT Actualizado: el mes pasado Coste de contexto: 160 tok instalada, 2.3k tok al activarse, 2.3k tok con todos los archivos del bundle Bundle: 1 archivo, 9 KB Permisos que pide: ninguno declarado ## Instalación Un skill son archivos markdown: los mismos archivos valen para cualquier agente y lo único que cambia es el directorio de destino, es decir la bandera `--agent`. Añade `-g` para instalarlo en todos los proyectos de la máquina. ```bash # Claude Code npx -y skills add AgriciDaniel/claude-blog --skill blog-brand --agent claude-code # Cursor npx -y skills add AgriciDaniel/claude-blog --skill blog-brand --agent cursor # Codex npx -y skills add AgriciDaniel/claude-blog --skill blog-brand --agent codex # Gemini CLI npx -y skills add AgriciDaniel/claude-blog --skill blog-brand --agent gemini # Windsurf npx -y skills add AgriciDaniel/claude-blog --skill blog-brand --agent windsurf # Cline npx -y skills add AgriciDaniel/claude-blog --skill blog-brand --agent cline ``` ## Qué hace - Hace una entrevista de 5 pasos: audiencia, posicionamiento y entidad canónica, reglas editoriales, límites temáticos y voz - Escribe `BRAND.md` y `VOICE.md` en la raíz del proyecto con la plantilla completa y la fecha de última actualización - Rellena las respuestas de voz desde el JSON de blog-persona si ya existe, sin sustituirlo como fuente de verdad - El orquestador los carga en write, rewrite, brief, outline, calendar y strategy; si no existen, el comportamiento no cambia - `show` muestra el contenido actual y `update` repite la entrevista con los valores vigentes como predeterminados ## Cuándo usarla - El usuario dice "blog brand", "crear contexto de marca", "BRAND.md", "VOICE.md" o "guía editorial del blog" ## Cuándo no - Necesitas la persona estructurada en JSON para control programático de tono y legibilidad: eso lo gestiona blog-persona ## Qué la activa - "Crea el BRAND.md y el VOICE.md de mi blog" - "Muéstrame el contexto de marca actual" - "Actualiza las reglas editoriales del blog" ## Archivos - SKILL.md — 9 KB ## SKILL.md Reproducido tal cual desde AgriciDaniel/claude-blog bajo MIT. Esta sección es el documento original y está en inglés. # Blog Brand: Durable Editorial Context Generates two project-root files that the blog orchestrator auto-loads for supported writing and planning commands when present: - `BRAND.md`: who the audience is, what the brand stands for, what to never say - `VOICE.md`: how the brand sounds, structurally and lexically These are the editorial equivalent of impeccable's PRODUCT.md / DESIGN.md pattern: persistent context that survives across sessions and propagates to every command. ## Why this exists Today, persona JSON (from `blog-persona`) is loaded by some skills and not others. Topic-cluster context lives inside cluster vaults. Competitor positioning lives nowhere. Each blog command re-derives "what is the brand" from whatever context it has. `BRAND.md` and `VOICE.md` fix this: one canonical source, loaded by the `blog` orchestrator at the start of every command. When neither file exists, behavior is unchanged from v1.7.1. Backward compatible. ## Commands | Command | Purpose | |---|---| | `/blog brand init` | Interactive interview, writes BRAND.md and VOICE.md to project root | | `/blog brand show` | Display current contents (or report missing) | | `/blog brand update` | Re-run the interview with current values as defaults | ## Init Workflow Run the 5-step interactive interview. Ask each step, wait for response, then proceed. If `blog-persona` JSON already exists, pre-fill voice answers from it. ### Step 1: Audience Ask: - **Primary audience role** (e.g. "head of marketing at a 50-500 person B2B SaaS") - **Secondary audience** (optional) - **Reader expertise level**: beginner / intermediate / advanced / mixed - **Problems the reader is actively trying to solve** (3 to 5 bullets) - **Common misconceptions the audience holds** (used to anchor information gain) ### Step 2: Positioning and Canonical Entity Ask: - **Official entity name** (legal or public brand name) - **Homepage URL** (canonical brand front door) - **Logo URL or file path** (preferred square or SVG asset) - **sameAs profiles** (LinkedIn, X, YouTube, Crunchbase, GitHub, or other official profiles) - **Wikidata Q-ID** if one exists; leave blank if not notable - **One-sentence brand mission** (what the brand helps people do) - **Distinctive point of view** (the contrarian or non-obvious belief that shapes content) - **What this brand is NOT** (anti-positioning, what to never be confused with) - **Top 3 direct competitors** with the one-line differentiator vs each ### Step 3: Editorial rules Ask: - **Do list** (3 to 7 things the blog will always do; e.g. "cite primary sources only," "name the practitioner not the product") - **Don't list** (3 to 7 things the blog will never do; e.g. "no clickbait titles," "no listicle filler") - **Taboo phrases** (specific words or phrases this brand never uses; separate from the repository's optional project style list) - **Required disclosures** (e.g. affiliate disclosure, AI-content disclosure, conflict-of-interest patterns) ### Step 4: Topic boundaries Ask: - **Topics fully in scope** (core content pillars) - **Topics partially in scope** (adjacent; covered only with original angle) - **Topics out of scope** (will not cover; redirect to partner content) - **Recurring formats / column names** if any (e.g. "Monthly Field Notes," "Reader Q&A") ### Step 5: Voice (auto-fill from blog-persona if present) Ask: - **Pronoun stance**: first-person (we / I), second-person (you), third-person (the team), or mixed - **Acceptable contractions**: full / partial / none - **Sentence ceiling**: max words per sentence as a hard cap - **Paragraph ceiling**: max words per paragraph (default 150) - **Headline patterns to favor**: numbered / question / promise / statement - **Headline patterns to avoid**: any patterns banned for this brand - **Summary box label**: from blog-persona, or pick one ## Output Files ### BRAND.md template Write to project root as: ```markdown # Brand Context > This file is auto-loaded by all blog sub-skills. Last updated: YYYY-MM-DD. ## Audience - **Primary**: [role + context] - **Secondary**: [if any] - **Expertise**: [level] - **Active problems**: - [problem 1] - [problem 2] - [problem 3] - **Common misconceptions**: - [misconception 1] - [misconception 2] ## Positioning - **Official entity name**: [brand/entity] - **Homepage**: [canonical URL] - **Logo**: [URL or file path] - **sameAs profiles**: - [profile URL 1] - [profile URL 2] - **Wikidata Q-ID**: [QID or none] - **Mission**: [one sentence] - **Distinctive POV**: [contrarian or non-obvious belief] - **What we are NOT**: [anti-positioning] - **Competitors**: - [Competitor A]: [our one-line differentiator] - [Competitor B]: [our one-line differentiator] - [Competitor C]: [our one-line differentiator] ## Editorial Rules ### Always do - [rule 1] - [rule 2] - [rule 3] ### Never do - [rule 1] - [rule 2] - [rule 3] ### Taboo phrases - [phrase 1] - [phrase 2] ### Required disclosures - [disclosure rule] ## Topic Scope - **In scope**: [pillars] - **Partial scope**: [adjacent topics] - **Out of scope**: [topics to refuse] - **Recurring formats**: [if any] ``` ### VOICE.md template Write to project root as: ```markdown # Voice Context > This file is auto-loaded by all blog sub-skills. Last updated: YYYY-MM-DD. ## Pronoun stance [first-person / second-person / third-person / mixed] ## Lexical rules - **Contractions**: [full / partial / none] - **Sentence ceiling**: [N words max] - **Paragraph ceiling**: [N words max, default 150] - **Summary label**: [Key Takeaways / TL;DR / etc.] ## Headline patterns - **Favor**: [list] - **Avoid**: [list] ## Voice fingerprint (from blog-persona) - Funny vs serious: [0.0 to 1.0] - Formal vs casual: [0.0 to 1.0] - Respectful vs irreverent: [0.0 to 1.0] - Enthusiastic vs matter-of-fact: [0.0 to 1.0] ## Readability target - Audience tier: [consumer / professional / technical] - Flesch Grade: [range] - Flesch Ease: [range] ## Reference samples - [URL 1] (extracted patterns: [summary]) - [URL 2] (extracted patterns: [summary]) ``` ## Show Workflow 1. Check for `BRAND.md` and `VOICE.md` at project root. 2. If both exist, print a summary table (key sections only) and the file paths. 3. If one or both are missing, print which are missing and suggest `/blog brand init`. ## Update Workflow Same as Init, but pre-fills every answer with the current value. The user can press enter to accept or type a new value. After collecting all answers, overwrite both files with the new contents and update the `Last updated:` line. ## Integration with the blog orchestrator When `/blog write`, `/blog rewrite`, `/blog brief`, `/blog outline`, `/blog calendar`, or `/blog strategy` runs, the orchestrator (`skills/blog/SKILL.md`) checks for `BRAND.md` and `VOICE.md` at the project root. If present, the contents are injected into the system prompt for downstream agents (`blog-researcher`, `blog-writer`, `blog-seo`, `blog-reviewer`). If absent, behavior is unchanged. The orchestrator does not prompt the user to create them; they are opt-in context. ## Relationship to blog-persona | Concern | blog-persona | blog-brand | |---|---|---| | Structured persona JSON for programmatic use | Yes | No | | Readable brand context for cross-skill prompts | No | Yes | | Audience and positioning | No | Yes | | Taboo phrases and editorial don'ts | Partial (don't list) | Full (taboo + disclosures + scope) | | Competitor differentiation | No | Yes | | Topic boundaries | No | Yes | | Voice fingerprint (tone sliders) | Yes (canonical) | Mirror (read-only) | `blog-brand` does not replace `blog-persona`; it consumes it. The persona JSON remains the source of truth for tone dimensions, sentence-length distribution, and contraction frequency. `VOICE.md` mirrors the readable parts so prompts are self-contained. If no persona exists when `/blog brand init` runs, the voice questions still produce a `VOICE.md`. Users who want programmatic enforcement can run `/blog persona create` after. ## Error Handling - **Project root unclear**: ask the user where to write the files. Default is the current working directory. - **Files already exist on init**: ask whether to overwrite or run update instead. - **Persona referenced but missing**: ask whether to leave the persona reference blank or create one. - **Reader provides minimal answers**: prompt for at least 2 audience bullets and 3 editorial rules; refuse to write skeletons. ## Dónde encaja - Categoría: [Marketing](https://skillsagentes.com/categorias/marketing.md) — Campañas, copy, lanzamientos y ciclos de crecimiento. - Creador: [AgriciDaniel](https://skillsagentes.com/creators/agricidaniel.md) — 80 skills en el directorio - [Todas las skills](https://skillsagentes.com/skills.md) - [Ranking de instalaciones](https://skillsagentes.com/ranking.md) ## Otras skills del mismo repositorio - [Blog](https://skillsagentes.com/skills/agricidaniel/claude-blog/blog.md): Motor de blog de ciclo completo con 31 subskills, 12 plantillas, puntuación sobre 100 y 5 agentes. Enruta cada petición a la subskill correcta: escribir, reescribir, analizar, auditar, schema, clusters y publicación multilingüe. - [Blog Google](https://skillsagentes.com/skills/agricidaniel/claude-blog/blog-google.md): Integración con las APIs de Google para rendimiento de blog: PageSpeed Insights, CrUX con 25 semanas de histórico, Search Console, URL Inspection, Indexing API, GA4, NLP de entidades, YouTube y Keyword Planner. - [Blog Notebooklm](https://skillsagentes.com/skills/agricidaniel/claude-blog/blog-notebooklm.md): Consulta cuadernos de Google NotebookLM para obtener respuestas ancladas en tus propios documentos y con citas: gestiona la biblioteca de cuadernos, la autenticación con Google y el descubrimiento de contenido. - [Blog Audio](https://skillsagentes.com/skills/agricidaniel/claude-blog/blog-audio.md): Genera narración en audio de posts con Google Gemini TTS: resumen hablado, lectura completa o diálogo tipo pódcast a dos voces, con 30 voces y salida MP3 más el código de inserción HTML5. - [Blog Image](https://skillsagentes.com/skills/agricidaniel/claude-blog/blog-image.md): Generación y edición de imágenes con IA para contenido de blog mediante Gemini por MCP: portadas, ilustraciones, tarjetas sociales y OG, con 6 modos de dominio y retorno silencioso si el MCP no está disponible. --- Skills Agentes · [Índice de páginas en markdown](https://skillsagentes.com/sitemap.md) · [Inicio](https://skillsagentes.com/index.md)