em-kb-article

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Knowledge Base Article para Easymailing

为Easymailing创建知识库文章

Crea artículos de base de conocimiento para Easymailing, consultando código, navegando la app cuando sea necesario, y publicando como borrador en Zendesk.
为Easymailing创建知识库文章,可查阅代码、必要时浏览应用,并在Zendesk中以草稿形式发布。

Configuración requerida

必要配置

Archivo de configuración

配置文件

Verifica que existe
.kb-config.json
en la carpeta de esta skill. Si no existe, pregunta:
  1. "¿Cuál es la ruta del proyecto Easymailing?"
  2. "¿Cuál es la ruta del vault de Obsidian?"
  3. "¿Cuál es tu email de Zendesk?"
Crea el archivo con esta estructura:
json
{
  "project_path": "{ruta al proyecto}",
  "obsidian_vault_path": "{ruta al vault}",
  "zendesk_subdomain": "easymailing",
  "zendesk_email": "{email del usuario}",
  "test_app": {
    "url": "http://dfutura.easymailing.test",
    "user": "jhon@acme.com"
  }
}
Y recuerda al usuario:
Configuración guardada en .kb-config.json

Recuerda configurar las variables de entorno:
- ZENDESK_API_TOKEN: tu token de API de Zendesk
- EASYMAILING_TEST_PASSWORD: password del usuario de test
请确认此skill目录下存在
.kb-config.json
文件。若不存在,请询问用户以下问题:
  1. "Easymailing项目的路径是什么?"
  2. "Obsidian知识库的路径是什么?"
  3. "你的Zendesk邮箱是什么?"
创建如下结构的配置文件:
json
{
  "project_path": "{项目路径}",
  "obsidian_vault_path": "{知识库路径}",
  "zendesk_subdomain": "easymailing",
  "zendesk_email": "{用户邮箱}",
  "test_app": {
    "url": "http://dfutura.easymailing.test",
    "user": "jhon@acme.com"
  }
}
并提醒用户:
配置已保存至.kb-config.json

请记得配置以下环境变量:
- ZENDESK_API_TOKEN: 你的Zendesk API令牌
- EASYMAILING_TEST_PASSWORD: 测试用户的密码

Variables de entorno

环境变量

El archivo
.env
en la carpeta de la skill debe contener:
ZENDESK_API_TOKEN=tu_token_de_zendesk
EASYMAILING_TEST_PASSWORD=password_del_usuario_test
skill目录下的
.env
文件需包含:
ZENDESK_API_TOKEN=tu_token_de_zendesk
EASYMAILING_TEST_PASSWORD=password_del_usuario_test

Script de Zendesk

Zendesk脚本

La skill incluye un script CLI para interactuar con la API de Zendesk:
bash
undefined
此skill包含一个CLI脚本,用于与Zendesk API交互:
bash
undefined

Listar categorías

列出分类

npx bun kb-article/scripts/zendesk.ts categories
npx bun kb-article/scripts/zendesk.ts categories

Listar secciones de una categoría

列出某分类下的章节

npx bun kb-article/scripts/zendesk.ts sections <category_id>
npx bun kb-article/scripts/zendesk.ts sections <category_id>

Buscar artículos

搜索文章

npx bun kb-article/scripts/zendesk.ts search "término de búsqueda"
npx bun kb-article/scripts/zendesk.ts search "搜索关键词"

Obtener un artículo (para análisis de estilo)

获取单篇文章(用于风格分析)

npx bun kb-article/scripts/zendesk.ts article <article_id>
npx bun kb-article/scripts/zendesk.ts article <article_id>

Crear artículo como borrador

创建草稿文章

npx bun kb-article/scripts/zendesk.ts create <section_id> --title "Título" --body "<html>" --locale es --draft
npx bun kb-article/scripts/zendesk.ts create <section_id> --title "标题" --body "<html>" --locale es --draft

Añadir traducción

添加翻译版本

npx bun kb-article/scripts/zendesk.ts translate <article_id> --title "Title" --body "<html>" --locale en

El script lee automáticamente `.kb-config.json` y `.env` de la carpeta de la skill.
npx bun kb-article/scripts/zendesk.ts translate <article_id> --title "Title" --body "<html>" --locale en

该脚本会自动读取skill目录下的`.kb-config.json`和`.env`文件。

Flujo principal

主流程

FASE 1: Contexto inicial
FASE 2: Investigación
FASE 3: Preguntas interactivas
FASE 4: Propuesta de estructura
FASE 5: Generación (ES → EN)
FASE 6: Publicación
阶段1: 初始上下文
阶段2: 调研
阶段3: 交互式提问
阶段4: 结构提案
阶段5: 内容生成(西语→英语)
阶段6: 发布

Fase 1: Contexto inicial

阶段1: 初始上下文

Paso 1.1: Preguntar origen

步骤1.1: 询问文章来源

Pregunta usando AskUserQuestion:
¿De dónde surge este artículo?

A) Ticket/pregunta de soporte - Usuarios preguntan frecuentemente sobre esto
B) Feature nueva - Hay que documentar una funcionalidad recién lanzada
C) Documentación faltante - Detecté que falta explicar esto
使用AskUserQuestion提问:
这篇文章的需求来自哪里?

A) 支持工单/用户提问 - 用户经常咨询此问题
B) 新功能 - 需要记录刚上线的功能
C) 缺失的文档 - 发现此处缺少相关说明

Paso 1.2: Preguntar tema

步骤1.2: 询问文章主题

Pregunta abierta:
"¿Sobre qué funcionalidad o tema quieres crear el artículo?"
开放式提问:
"你想要创建的文章是关于哪个功能或主题的?"

Paso 1.3: Consultar Zendesk

步骤1.3: 查询Zendesk

Usa el script de Zendesk para obtener contexto:
  1. Listar categorías y secciones:
    bash
    npx bun kb-article/scripts/zendesk.ts categories
    npx bun kb-article/scripts/zendesk.ts sections <category_id>
    Presenta las opciones al usuario para elegir dónde ubicar el artículo.
  2. Buscar artículos relacionados:
    bash
    npx bun kb-article/scripts/zendesk.ts search "{tema}"
    Si encuentra artículos similares:
    • Informa al usuario para evitar duplicados
    • Sugiere posibles enlaces cruzados
  3. Leer 2-3 artículos existentes (para análisis de estilo):
    bash
    npx bun kb-article/scripts/zendesk.ts article <article_id>
    Analiza el estilo y formato para mantener consistencia.
使用Zendesk脚本获取上下文:
  1. 列出分类和章节:
    bash
    npx bun kb-article/scripts/zendesk.ts categories
    npx bun kb-article/scripts/zendesk.ts sections <category_id>
    将选项展示给用户,以便选择文章的存放位置。
  2. 搜索相关文章:
    bash
    npx bun kb-article/scripts/zendesk.ts search "{主题}"
    如果找到相似文章:
    • 告知用户以避免重复
    • 建议添加交叉链接
  3. 阅读2-3篇现有文章(用于风格分析):
    bash
    npx bun kb-article/scripts/zendesk.ts article <article_id>
    分析现有文章的风格和格式,保持一致性。

Fase 2: Investigación

阶段2: 调研

Paso 2.1: Revisar código

步骤2.1: 查阅代码

Según el tema, busca en el proyecto Easymailing:
  • Controllers y vistas relacionadas
  • Modelos y lógica de negocio
  • Documentación existente en docs/
Determina la profundidad necesaria:
  • Solo UI → revisar vistas y JS
  • Flujo completo → añadir controllers
  • Lógica compleja → incluir modelos y servicios
根据文章主题,在Easymailing项目中查找:
  • 相关的控制器和视图
  • 模型和业务逻辑
  • docs/目录下的现有文档
确定所需的调研深度:
  • 仅UI层面 → 查看视图和JS代码
  • 完整流程 → 额外查看控制器
  • 复杂逻辑 → 包含模型和服务

Paso 2.2: Navegar la app (si necesario)

步骤2.2: 浏览应用(如有必要)

Si crees que necesitas ver la UI para entender mejor, pregunta:
"Para entender mejor [X], ¿quieres que navegue la app y explore [pantalla/flujo específico]?"
Si el usuario confirma:
  1. Usa Chrome para abrir
    {test_app.url}
    de la config
  2. Haz login:
    • Usuario:
      {test_app.user}
      de la config
    • Password: valor de
      EASYMAILING_TEST_PASSWORD
  3. Navega a la sección relevante
  4. Explora la funcionalidad (solo lectura, no modificar datos)
  5. Reporta lo observado
如果认为需要查看UI来更好地理解功能,可提问:
"为了更好地理解[X],是否需要我浏览应用并探索[特定页面/流程]?"
如果用户同意:
  1. 使用Chrome打开配置中的
    {test_app.url}
  2. 登录:
    • 用户名:配置中的
      {test_app.user}
    • 密码:
      EASYMAILING_TEST_PASSWORD
      的值
  3. 导航至相关章节
  4. 探索功能(仅浏览,不修改数据)
  5. 汇报观察结果

Paso 2.3: Presentar hallazgos

步骤2.3: 展示调研结果

Resume lo encontrado:
  • Qué hace la funcionalidad
  • Cómo se accede
  • Flujo principal
  • Casos especiales detectados
总结调研发现:
  • 功能的作用
  • 访问路径
  • 主流程
  • 发现的特殊场景

Fase 3: Preguntas interactivas

阶段3: 交互式提问

Haz preguntas UNA A UNA para clarificar el artículo:
  1. "¿Qué nivel de usuario es el target? (principiante, intermedio, avanzado)"
  2. "¿Cuál es el problema principal que el usuario intenta resolver?"
  3. "¿Hay pasos previos que el usuario debe conocer antes?"
  4. "¿Qué errores comunes cometen los usuarios con esto?"
  5. "¿Hay limitaciones o casos especiales que debamos mencionar?"
Adapta las preguntas según el contexto. No todas son necesarias en todos los casos.
逐个提问以明确文章细节:
  1. "目标用户的水平是什么?(初级、中级、高级)"
  2. "用户主要想解决什么问题?"
  3. "用户在阅读本文之前需要了解哪些前置步骤?"
  4. "用户在使用此功能时常见的错误有哪些?"
  5. "是否有需要提及的限制或特殊场景?"
根据上下文调整问题,并非所有问题都适用于所有场景。

Fase 4: Propuesta de estructura

阶段4: 结构提案

Presenta un outline con títulos y bullets:
markdown
undefined
展示包含标题和项目符号的大纲:
markdown
undefined

Estructura propuesta

提案结构

1. Introducción

1. 简介

  • Qué es [funcionalidad]
  • Para qué sirve
  • 什么是[功能]
  • 功能用途

2. Cómo acceder

2. 访问方式

  • Ruta de navegación
  • Permisos necesarios
  • 导航路径
  • 所需权限

3. [Sección principal según el tema]

3. [根据主题的主要章节]

  • Punto clave 1
  • Punto clave 2
  • Punto clave 3
  • 关键点1
  • 关键点2
  • 关键点3

4. Casos de uso

4. 使用场景

  • Ejemplo práctico
  • 实用示例

5. Preguntas frecuentes (si aplica)

5. 常见问题(如适用)

  • Pregunta común 1
  • Pregunta común 2

Pregunta: "¿Esta estructura te parece bien o ajustamos algo?"

Itera hasta que el usuario apruebe.
  • 常见问题1
  • 常见问题2

提问:"这个结构你觉得合适吗?还是需要调整?"

反复迭代直到用户认可。

Fase 5: Redacción y revisión

阶段5: 撰写与审核

Paso 5.1: Redactar artículo en español (Markdown)

步骤5.1: 撰写西语文章(Markdown格式)

Genera el artículo completo en Markdown para que el usuario pueda revisarlo fácilmente.
Usa el formato estándar de Markdown:
  • #
    ,
    ##
    ,
    ###
    para títulos
  • **texto**
    para negritas
  • -
    o
    *
    para listas
  • 1.
    ,
    2.
    ,
    3.
    para pasos numerados
  • > texto
    para notas o tips importantes
  • [IMAGEN: descripción]
    para placeholders de imágenes
Muestra el Markdown y pregunta: "¿El artículo en español está bien o ajustamos algo?"
Itera con el usuario hasta que apruebe el contenido.
生成完整的Markdown格式西语文章,方便用户审核。
使用标准Markdown格式:
  • #
    ,
    ##
    ,
    ###
    用于标题
  • **文本**
    用于加粗
  • -
    *
    用于无序列表
  • 1.
    ,
    2.
    ,
    3.
    用于有序步骤
  • > 文本
    用于重要提示或说明
  • [IMAGEN: 描述]
    用于图片占位符
展示Markdown内容并提问:"西语文章的内容是否合适?还是需要调整?"
与用户反复迭代直到内容获得认可。

Paso 5.2: Redactar artículo en inglés (Markdown)

步骤5.2: 撰写英语文章(Markdown格式)

Una vez aprobado el español, genera la versión en inglés en Markdown.
Muestra el Markdown y pregunta: "¿La versión en inglés está bien?"
Itera hasta que el usuario apruebe.
西语版本获批后,生成Markdown格式的英语版本。
展示Markdown内容并提问:"英语版本的内容是否合适?"
反复迭代直到用户认可。

Paso 5.3: Generar HTML final

步骤5.3: 生成最终HTML

Una vez aprobados ambos idiomas, convierte el Markdown a HTML usando los componentes de Zendesk:
Alertas (información importante):
html
<div class="alert alert-info">
  Texto informativo o tip
</div>

<div class="alert alert-warning">
  Advertencia o precaución
</div>
Pasos numerados:
html
<p>
  <span class="number">1</span> Descripción del paso
</p>
<p>
  <span class="number">2</span> Siguiente paso
</p>
Índice de contenidos (artículos largos):
html
<div class="content-index">
  <p>Índice de contenidos</p>
  <p><a href="#seccion1">1. Primera sección</a></p>
  <p><a href="#seccion2">2. Segunda sección</a></p>
</div>

<h2 id="seccion1">Primera sección</h2>
Tablas:
html
<table>
  <tbody>
    <tr>
      <td class="gray"><strong>Destacado</strong></td>
      <td>Contenido normal</td>
    </tr>
  </tbody>
</table>
Placeholders de imágenes:
html
<p>(IMAGEN PENDIENTE: Descripción detallada de qué mostrar)</p>
El HTML se genera automáticamente sin mostrar al usuario (ya aprobó el contenido en Markdown).
两种语言版本都获批后,将Markdown转换为使用Zendesk组件的HTML:
提示框(重要信息):
html
<div class="alert alert-info">
  提示信息或技巧
</div>

<div class="alert alert-warning">
  警告或注意事项
</div>
有序步骤:
html
<p>
  <span class="number">1</span> 步骤描述
</p>
<p>
  <span class="number">2</span> 下一步骤
</p>
内容索引(长文章适用):
html
<div class="content-index">
  <p>内容索引</p>
  <p><a href="#seccion1">1. 第一章节</a></p>
  <p><a href="#seccion2">2. 第二章节</a></p>
</div>

<h2 id="seccion1">第一章节</h2>
表格:
html
<table>
  <tbody>
    <tr>
      <td class="gray"><strong>重点</strong></td>
      <td>普通内容</td>
    </tr>
  </tbody>
</table>
图片占位符:
html
<p>(待添加图片: 详细描述展示内容)</p>
HTML会自动生成,无需展示给用户(用户已认可Markdown内容)。

Fase 6: Publicación

阶段6: 发布

Paso 6.1: Guardar en Obsidian

步骤6.1: 保存至Obsidian

Crea la carpeta y archivos:
{obsidian_vault_path}/Areas/Easymailing/Knowledge-Base/{YYYY-MM-DD}-{slug}/
├── article-brief.md
├── article-es.md
├── article-en.md
└── images.md
article-brief.md:
markdown
undefined
创建如下目录和文件:
{obsidian_vault_path}/Areas/Easymailing/Knowledge-Base/{YYYY-MM-DD}-{slug}/
├── article-brief.md
├── article-es.md
├── article-en.md
└── images.md
article-brief.md:
markdown
undefined

{Título del artículo}

{文章标题}

Metadata

元数据

  • Fecha: {YYYY-MM-DD}
  • Categoría Zendesk: {categoría elegida}
  • Sección Zendesk: {sección elegida}
  • Origen: {soporte/feature nueva/faltaba documentación}
  • 日期: {YYYY-MM-DD}
  • Zendesk分类: {所选分类}
  • Zendesk章节: {所选章节}
  • 来源: {支持工单/新功能/缺失文档}

Resumen

摘要

{Breve descripción de qué explica el artículo}
{文章内容的简短描述}

Artículos relacionados

相关文章

  • {links a artículos existentes si los hay}
  • {如有相关现有文章的链接}

Zendesk

Zendesk

  • Borrador ES: {URL después de publicar}
  • Borrador EN: {URL después de publicar}

**article-es.md** (HTML en bloque de código):
```markdown
  • 西语草稿: {发布后的URL}
  • 英语草稿: {发布后的URL}

**article-es.md**(代码块中包含HTML):
```markdown

{Título en español}

{西语标题}

HTML

HTML

```html {HTML del artículo en español} ```

**article-en.md** (HTML en bloque de código):
```markdown
```html {西语文章的HTML} ```

**article-en.md**(代码块中包含HTML):
```markdown

{Título en inglés}

{英语标题}

HTML

HTML

```html {HTML del artículo en inglés} ```

**images.md**:
```markdown
```html {英语文章的HTML} ```

**images.md**:
```markdown

Imágenes requeridas

所需图片

1. {nombre-descriptivo}.png

1. {描述性名称}.png

  • Ubicación en HTML: Sección "{nombre}"
  • Qué mostrar: {descripción detallada}
  • Notas: {indicaciones especiales si las hay}
  • 在HTML中的位置: 章节“{名称}”
  • 展示内容: {详细描述}
  • 备注: {如有特殊说明}

2. {nombre-descriptivo}.png

2. {描述性名称}.png

...
undefined
...
undefined

Paso 6.2: Publicar borrador en Zendesk

步骤6.2: 在Zendesk发布草稿

  1. Crear artículo en español:
    bash
    npx bun kb-article/scripts/zendesk.ts create {section_id} --title "{título}" --body "{HTML español}" --locale es --draft
    El comando devuelve el
    article_id
    y la URL del borrador.
  2. Añadir traducción en inglés:
    bash
    npx bun kb-article/scripts/zendesk.ts translate {article_id} --title "{título en inglés}" --body "{HTML inglés}" --locale en
  3. Actualizar article-brief.md con las URLs de los borradores
  4. Confirmar al usuario:
    Artículo publicado como borrador en Zendesk:
    - Español: {URL}
    - Inglés: {URL}
    
    Archivos guardados en:
    {ruta en Obsidian}
    
    Recuerda añadir las imágenes listadas en images.md antes de publicar.
  1. 创建西语文章:
    bash
    npx bun kb-article/scripts/zendesk.ts create {section_id} --title "{标题}" --body "{西语HTML}" --locale es --draft
    该命令会返回
    article_id
    和草稿的URL。
  2. 添加英语翻译版本:
    bash
    npx bun kb-article/scripts/zendesk.ts translate {article_id} --title "{英语标题}" --body "{英语HTML}" --locale en
  3. 更新article-brief.md中的草稿URL
  4. 向用户确认:
    文章已在Zendesk以草稿形式发布:
    - 西语: {URL}
    - 英语: {URL}
    
    文件已保存至:
    {Obsidian中的路径}
    
    请记得在正式发布前添加images.md中列出的图片。

Rutas del proyecto

项目路径

Leer de
.kb-config.json
:
  • Proyecto Easymailing:
    project_path
  • Vault Obsidian:
    obsidian_vault_path
  • App de test:
    test_app.url
.kb-config.json
读取:
  • Easymailing项目:
    project_path
  • Obsidian知识库:
    obsidian_vault_path
  • 测试应用:
    test_app.url

Invocación

调用方式

bash
/kb-article
bash
/kb-article