| name | blog-writer |
| description | Write bilingual blog articles for the personal website. Use when creating a new blog post, article, or writing content for the blog. Handles EN/ES translations, frontmatter, and content structure. |
Blog Article Writer
Create bilingual (English/Spanish) blog articles for javieraguilar.ai.
File Locations
- English:
src/content/blog/en/[slug].md - Spanish:
src/content/blog/es/[slug].md - Images:
public/blog/[image-name].png(referenced as/blog/[image-name].png)
Required Frontmatter Format
Both EN and ES files must include this exact frontmatter:
---
title: "Article Title Here"
description: "A concise description for SEO and preview cards (1-2 sentences)."
pubDate: YYYY-MM-DD
tags: ["Tag1", "Tag2", "Tag3"]
lang: en # or es
translationKey: article-slug
---
Field Requirements
| Field | Required | Notes |
|---|---|---|
title |
Yes | Translated per language |
description |
Yes | Translated, SEO-friendly, 1-2 sentences |
pubDate |
Yes | Same date for both languages |
tags |
Yes | Translated (e.g., "AI" → "IA") |
lang |
Yes | Must be en or es |
translationKey |
Yes | Same value for EN/ES pair (kebab-case) |
Bilingual Workflow
- Always create both files with matching
translationKey - Use the same
pubDatefor synchronized release - Translate tags appropriately (common: AI→IA, Automation→Automatización)
- Keep
translationKeyidentical in both files
Content Structure
Follow this pattern:
Opening paragraph establishing context and the problem/topic.
## Section Heading
Content with clear explanations. Focus on "why" not just "how".
### Subsection (if needed)
- Bullet points for lists
- Keep them concise
## Another Section
Include practical examples:
```language
code block with syntax highlighting
Conclusion/Next Steps
Wrap up with actionable takeaways or links.
Footer with links to resources, repos, etc.
## Writing Style
- **Tone**: Professional but conversational
- **Focus**: Practical value, real examples
- **Length**: 800-2000 words typically
- **Structure**: Clear headings, scannable sections
- **Code**: Include relevant code snippets with language identifiers
- **Images**: Reference as `/blog/image-name.png`
## Tag Conventions
Common tag translations:
| English | Spanish |
|---------|---------|
| AI | IA |
| Automation | Automatización |
| Machine Learning | Machine Learning |
| Development | Desarrollo |
| Architecture | Arquitectura |
## Example Frontmatter Pair
**English** (`src/content/blog/en/my-new-post.md`):
```yaml
---
title: "Building Something Cool"
description: "How I built a tool that solves a real problem."
pubDate: 2025-01-03
tags: ["AI", "Automation", "Claude"]
lang: en
translationKey: my-new-post
---
Spanish (src/content/blog/es/my-new-post.md):
---
title: "Construyendo Algo Genial"
description: "Cómo construí una herramienta que resuelve un problema real."
pubDate: 2025-01-03
tags: ["IA", "Automatización", "Claude"]
lang: es
translationKey: my-new-post
---
Writing from LinkedIn Posts
When repurposing a LinkedIn post into a blog article:
- Fetch the post using WebFetch to extract the content
- Download any images from the post to
public/blog/ - Expand the content - LinkedIn posts are short; blog articles should:
- Add more context and background
- Include code examples if relevant
- Expand on points that were condensed
- Add sections the post didn't have room for
- Keep the core message but make it more comprehensive
- Use original post date as
pubDatefor authenticity
LinkedIn Image Download
Images from LinkedIn posts should be:
- Downloaded to
public/blog/[descriptive-name].png - Named descriptively (e.g.,
azure-content-filter-demo.png) - Referenced in markdown as
/blog/[name].png
Checklist Before Publishing
- Both EN and ES files created
- Matching
translationKeyin both - Same
pubDatein both - Tags translated appropriately
-
langfield matches file location - Images placed in
public/blog/ - Links are valid and functional