Communitygithub.com

MarkItDown - Conversión de Archivos a Markdown

Convierte archivos y documentos de oficina a Markdown. Admite PDF, DOCX, PPTX, XLSX, imágenes (con OCR), audio (con transcripción), HTML, CSV, JSON, XML, ZIP, URLs de YouTube, EPubs y más.

¿Qué es MarkItDown - Conversión de Archivos a Markdown?

MarkItDown es una herramienta de Python desarrollada por Microsoft que convierte más de 15 formatos de archivo a Markdown, un formato eficiente en tokens y bien comprendido por los modelos de lenguaje modernos. Esta habilidad es ideal para preparar documentos para el procesamiento por parte de LLMs (como Claude, GPT, etc.), ya que el Markdown resultante es limpio, estructurado y fácil de analizar. Soporta desde formatos comunes como PDF, DOCX y PPTX hasta formatos más especializados como imágenes (con OCR), audio (con transcripción), HTML, CSV, JSON, XML, archivos ZIP, EPUB y URLs de YouTube. Además, ofrece funciones avanzadas como descripciones de imágenes mejoradas por IA (a través de OpenRouter), integración con Azure Document Intelligence para PDFs complejos y un sistema de plugins extensible. La habilidad también incluye recomendaciones para generar diagramas científicos de alta calidad utilizando la habilidad 'scientific-schematics', lo que la convierte en una herramienta valiosa para flujos de trabajo de documentación técnica e investigación.

Compatible con✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/David-Li0406/meta-skill-evloving/tree/HEAD/AgentSkillOS/data/skill_seeds/markitdown

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

¿Qué hace MarkItDown - Conversión de Archivos a Markdown?

Descripción General

MarkItDown es una herramienta de Python desarrollada por Microsoft para convertir varios formatos de archivo a Markdown. Es particularmente útil para convertir documentos en un formato de texto amigable para LLMs, ya que Markdown es eficiente en tokens y bien comprendido por los modelos de lenguaje modernos.

Beneficios Clave:

  • Convierte documentos a Markdown limpio y estructurado
  • Formato eficiente en tokens para el procesamiento con LLMs
  • Soporta más de 15 formatos de archivo
  • Descripciones de imágenes mejoradas por IA (opcional)
  • OCR para imágenes y documentos escaneados
  • Transcripción de voz para archivos de audio

Mejora Visual con Esquemas Científicos

Al crear documentos con esta habilidad, considere siempre agregar diagramas y esquemas científicos para mejorar la comunicación visual.

Si su documento aún no contiene esquemas o diagramas:

  • Use la habilidad esquemas-científicos para generar diagramas de calidad de publicación impulsados por IA
  • Simplemente describa el diagrama deseado en lenguaje natural
  • Nano Banana Pro generará, revisará y refinará automáticamente el esquema

Para documentos nuevos: Los esquemas científicos deben generarse por defecto para representar visualmente conceptos clave, flujos de trabajo, arquitecturas o relaciones descritas en el texto.

Cómo generar esquemas:

python scripts/generate_schematic.py "su descripción del diagrama" -o figures/output.png

La IA automáticamente:

  • Creará imágenes de calidad de publicación con formato adecuado
  • Revisará y refinará a través de múltiples iteraciones
  • Garantizará accesibilidad (compatible con daltonismo, alto contraste)
  • Guardará los resultados en el directorio figures/

Cuándo agregar esquemas:

  • Diagramas de flujo de trabajo de conversión de documentos
  • Ilustraciones de arquitectura de formatos de archivo
  • Diagramas de tuberías de procesamiento OCR
  • Visualizaciones de flujo de trabajo de integración
  • Diagramas de arquitectura de sistemas
  • Diagramas de flujo de datos
  • Cualquier concepto complejo que se beneficie de la visualización

Para obtener una guía detallada sobre la creación de esquemas, consulte la documentación de la habilidad esquemas-científicos.


Formatos Soportados

FormatoDescripciónNotas
PDFFormato de Documento PortátilExtracción de texto completa
DOCXMicrosoft WordTablas, formato preservado
PPTXPowerPointDiapositivas con notas
XLSXHojas de cálculo de ExcelTablas y datos
ImágenesJPEG, PNG, GIF, WebPMetadatos EXIF + OCR
AudioWAV, MP3Metadatos + transcripción
HTMLPáginas webConversión limpia
CSVValores separados por comasFormato de tabla
JSONDatos JSONRepresentación estructurada
XMLDocumentos XMLFormato estructurado
ZIPArchivos comprimidosItera sobre contenidos
EPUBLibros electrónicosExtracción de texto completa
YouTubeURLs de videoObtener transcripciones

Inicio Rápido

Instalación

# Instalar con todas las características
pip install 'markitdown[all]'

# O desde la fuente
git clone https://github.com/microsoft/markitdown.git
cd markitdown
pip install -e 'packages/markitdown[all]'

Uso en Línea de Comandos

# Conversión básica
markitdown document.pdf > output.md

# Especificar archivo de salida
markitdown document.pdf -o output.md

# Tubería de contenido
cat document.pdf | markitdown > output.md

# Habilitar plugins
markitdown --list-plugins  # Listar plugins disponibles
markitdown --use-plugins document.pdf -o output.md

API de Python

from markitdown import MarkItDown

# Uso básico
md = MarkItDown()
result = md.convert("document.pdf")
print(result.text_content)

# Convertir desde un flujo
with open("document.pdf", "rb") as f:
    result = md.convert_stream(f, file_extension=".pdf")
    print(result.text_content)

Características Avanzadas

1. Descripciones de Imágenes Mejoradas por IA

Use LLMs a través de OpenRouter para generar descripciones detalladas de imágenes (para archivos PPTX e imágenes):

from markitdown import MarkItDown
from openai import OpenAI

# Inicializar cliente OpenRouter (API compatible con OpenAI)
client = OpenAI(
    api_key="su-clave-api-openrouter",
    base_url="https://openrouter.ai/api/v1"
)

md = MarkItDown(
    llm_client=client,
    llm_model="anthropic/claude-sonnet-4.5",  # recomendado para visión científica
    llm_prompt="Describa esta imagen en detalle para documentación científica"
)

result = md.convert("presentation.pptx")
print(result.text_content)

2. Azure Document Intelligence

Para conversión mejorada de PDF con Microsoft Document Intelligence:

# Línea de comandos
markitdown document.pdf -o output.md -d -e "<endpoint_de_document_intelligence>"
# API de Python
from markitdown import MarkItDown

md = MarkItDown(docintel_endpoint="<endpoint_de_document_intelligence>")
result = md.convert("complex_document.pdf")
print(result.text_content)

3. Sistema de Plugins

MarkItDown admite plugins de terceros para ampliar la funcionalidad:

# Listar plugins instalados
markitdown --list-plugins

# Habilitar plugins
markitdown --use-plugins file.pdf -o output.md

Encuentre plugins en GitHub con el hashtag: #markitdown-plugin

Dependencias Opcionales

Controle qué formatos de archivo soporta:

# Instalar formatos específicos
pip install 'markitdown[pdf, docx, pptx]'

# Todas las opciones disponibles:
# [all]                  - Todas las dependencias opcionales
# [pptx]                 - Archivos de PowerPoint
# [docx]                 - Documentos de Word
# [xlsx]                 - Hojas de cálculo de Excel
# [xls]                  - Archivos de Excel antiguos
# [pdf]                  - Documentos PDF
# [outlook]              - Mensajes de Outlook
# [az-doc-intel]         - Azure Document Intelligence
# [audio-transcription]  - Transcripción de WAV y MP3
# [youtube-transcription] - Transcripción de videos de YouTube

Casos de Uso Comunes

1. Convertir Artículos Científicos a Markdown

from markitdown import MarkItDown

md = MarkItDown()

# Convertir PDF de artículo
result = md.convert("research_paper.pdf")
with open("paper.md", "w") as f:
    f.write(result.text_content)

2. Extraer Datos de Excel para Análisis

from markitdown import MarkItDown

md = MarkItDown()
result = md.convert("data.xlsx")

# El resultado estará en formato de tabla Markdown
print(result.text_content)

3. Procesar Múltiples Documentos

from markitdown import MarkItDown
import os
from pathlib import Path

md = MarkItDown()

# Procesar todos los PDFs en un directorio
pdf_dir = Path("papers/")
output_dir = Path("markdown_output/")
output_dir.mkdir(exist_ok=True)

for pdf_file in pdf_dir.glob("*.pdf"):
    result = md.convert(str(pdf_file))
    output_file = output_dir / f"{pdf_file.stem}.md"
    output_file.write_text(result.text_content)
    print(f"Convertido: {pdf_file.name}")

4. Convertir PowerPoint con Descripciones de IA

from markitdown import MarkItDown
from openai import OpenAI

# Usar OpenRouter para acceder a múltiples modelos de IA
client = OpenAI(
    api_key="su-clave-api-openrouter",
    base_url="https://openrouter.ai/api/v1"
)

md = MarkItDown(
    llm_client=client,
    llm_model="anthropic/claude-sonnet-4.5",  # recomendado para presentaciones
    llm_prompt="Describa esta imagen de diapositiva en detalle, enfocándose en elementos visuales clave y datos"
)

result = md.convert("presentation.pptx")
with open("presentation.md", "w") as f:
    f.write(result.text_content)

5. Conversión por Lotes con Diferentes Formatos

from markitdown import MarkItDown
from pathlib import Path

md = MarkItDown()

# Archivos a convertir
files = [
    "document.pdf",
    "spreadsheet.xlsx",
    "presentation.pptx",
    "notes.docx"
]

for file in files:
    try:
        result = md.convert(file)
        output = Path(file).stem + ".md"
        with open(output, "w") as f:
            f.write(result.text_content)
        print(f"✓ Convertido {file}")
    except Exception as e:
        print(f"✗ Error al convertir {file}: {e}")

6. Extraer Transcripción de Video de YouTube

from markitdown import MarkItDown

md = MarkItDown()

# Convertir video de YouTube a transcripción
result = md.convert("https://www.youtube.com/watch?v=VIDEO_ID")
print(result.text_content)

Uso con Docker

# Construir imagen
docker build -t markitdown:latest .

# Ejecutar conversión
docker run --rm -i markitdown:latest < ~/document.pdf > output.md

Mejores Prácticas

1. Elegir el Método de Conversión Correcto

  • Documentos simples: Usar MarkItDown() básico
  • PDFs complejos: Usar Azure Document Intelligence
  • Contenido visual: Habilitar descripciones de imágenes con IA
  • Documentos escaneados: Asegurar que las dependencias de OCR estén instaladas

2. Manejar Errores de Forma Elegante

from markitdown import MarkItDown

md = MarkItDown()

try:
    result = md.convert("document.pdf")
    print(result.text_content)
except FileNotFoundError:
    print("Archivo no encontrado")
except Exception as e:
    print(f"Error de conversión: {e}")

3. Procesar Archivos Grandes de Manera Eficiente

from markitdown import MarkItDown

md = MarkItDown()

# Para archivos grandes, usar flujo
with open("large_file.pdf", "rb") as f:
    result = md.convert_stream(f, file_extension=".pdf")
    
    # Procesar en fragmentos o guardar directamente
    with open("output.md", "w") as out:
        out.write(result.text_content)

4. Optimizar para Eficiencia de Tokens

La salida Markdown ya es eficiente en tokens, pero puede:

  • Eliminar espacios en blanco excesivos
  • Consolidar secciones similares
  • Eliminar metadatos si no son necesarios
from markitdown import MarkItDown
import re

md = MarkItDown()
result = md.convert("document.pdf")

# Limpiar espacios en blanco adicionales
clean_text = re.sub(r'\n{3,}', '\n\n', result.text_content)
clean_text = clean_text.strip()

print(clean_text)

Integración con Flujos de Trabajo Científicos

Convertir Literatura para Revisión

from markitdown import MarkItDown
from pathlib import Path

md = MarkItDown()

# Convertir todos los artículos en la carpeta de literatura
papers_dir = Path("literature/pdfs")
output_dir = Path("literature/markdown")
output_dir.mkdir(exist_ok=True)

for paper in papers_dir.glob("*.pdf"):
    result = md.convert(str(paper))
    
    # Guardar con metadatos
    output_file = output_dir / f"{paper.stem}.md"
    content = f"# {paper.stem}\n\n"
    content += f"**Fuente**: {paper.name}\n\n"
    content += "---\n\n"
    content += result.text_content
    
    output_file.write_text(content)

# Para conversión mejorada con IA que incluya figuras
from openai import OpenAI

client = OpenAI(
    api_key="su-clave-api-openrouter",
    base_url="https://openrouter.ai/api/v1"
)

md_ai = MarkItDown(
    llm_client=client,
    llm_model="anthropic/claude-sonnet-4.5",
    llm_prompt="Describa figuras científicas con precisión técnica"
)

Extraer Tablas para Análisis

from markitdown import MarkItDown
import re

md = MarkItDown()
result = md.convert("data_tables.xlsx")

# Las tablas Markdown se pueden analizar o usar directamente
print(result.text_content)

Solución de Problemas

Problemas Comunes

  1. Dependencias faltantes: Instalar paquetes de características específicas

    pip install 'markitdown[pdf]'  # Para soporte de PDF
    
  2. Errores de archivos binarios: Asegurar que los archivos se abran en modo binario

    with open("file.pdf", "rb") as f:  # Note el "rb"
        result = md.convert_stream(f, file_extension=".pdf")
    
  3. OCR no funciona: Instalar tesseract

    # macOS
    brew install tesseract
    
    # Ubuntu
    sudo apt-get install tesseract-ocr
    

Consideraciones de Rendimiento

  • Archivos PDF: Los PDFs grandes pueden llevar tiempo; considere rangos de páginas si son compatibles
  • OCR de imágenes: El procesamiento OCR requiere mucha CPU
  • Transcripción de audio: Requiere recursos computacionales adicionales
  • Descripciones de imágenes con IA: Requiere llamadas a API (pueden aplicarse costos)

Próximos Pasos

  • Consulte references/api_reference.md para la documentación completa de la API
  • Revise references/file_formats.md para detalles específicos de formato
  • Examine scripts/batch_convert.py para ejemplos de automatización
  • Explore scripts/convert_with_ai.py para conversiones mejoradas con IA

Recursos

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

David-Li0406/meta-skill-evloving

Browser automation with persistent page state. Use when users ask to navigate websites, fill forms, take screenshots, extract web data, test web apps, or automate browser workflows. Trigger phrases include "go to [url]", "click on", "fill out the form", "take a screenshot", "scrape", "automate", "test the website", "log into", or any browser interaction request.

David-Li0406/meta-skill-evloving

Create technical diagrams using Mermaid syntax for architecture, sequences, ERDs, flowcharts, and state machines. Use for visualizing system design, data flows, and processes. Triggers: diagram, mermaid, architecture diagram, sequence diagram, flowchart, ERD, entity relationship, state diagram, C4 model, component diagram, visualize, draw.

David-Li0406/meta-skill-evloving

Comprehensive document creation, editing, and analysis with support for tracked changes, comments, formatting preservation, and text extraction. When Claude needs to work with professional documents (.docx files) for: (1) Creating new documents, (2) Modifying or editing content, (3) Working with tracked changes, (4) Adding comments, or any other document tasks

David-Li0406/meta-skill-evloving

Complete color manipulation and green screen effects system. PROACTIVELY activate for: (1) Green screen/chromakey removal, (2) Color grading with LUTs, (3) Color correction (levels, curves, white balance), (4) Colorkey/color removal effects, (5) Hue/saturation manipulation, (6) Color space conversions (BT.709, BT.2020, HDR), (7) Color isolation effects, (8) Teal and orange look, (9) Vintage/film looks, (10) Color keying for transparency. Provides: chromakey and colorkey filters, LUT application (lut3d), curves and levels adjustment, color balance, selective color manipulation, color space handling, HDR tone mapping, professional color grading chains.

David-Li0406/meta-skill-evloving

Guide for creating high-quality MCP (Model Context Protocol) servers that enable LLMs to interact with external services through well-designed tools. Use when building MCP servers to integrate external APIs or services, whether in Python (FastMCP) or Node/TypeScript (MCP SDK).

David-Li0406/meta-skill-evloving

Build with OpenAI's stateless APIs - Chat Completions (GPT-5, GPT-4o), Embeddings, Images (DALL-E 3), Audio (Whisper + TTS), and Moderation. Includes Node.js SDK and fetch-based approaches for Cloudflare Workers. Use when: implementing chat completions with GPT-5/GPT-4o, streaming responses with SSE, using function calling/tools, creating structured outputs with JSON schemas, generating embeddings for RAG (text-embedding-3-small/large), generating images with DALL-E 3, editing images with GPT-Image-1, transcribing audio with Whisper, synthesizing speech with TTS (11 voices), moderating content (11 safety categories), or troubleshooting rate limits (429), invalid API keys (401), function calling failures, streaming parse errors, embeddings dimension mismatches, or token limit exceeded.

David-Li0406/meta-skill-evloving

Comprehensive PDF manipulation toolkit for extracting text and tables, creating new PDFs, merging/splitting documents, and handling forms. When Claude needs to fill in a PDF form or programmatically process, generate, or analyze PDF documents at scale.

David-Li0406/meta-skill-evloving

Presentation creation, editing, and analysis. When Claude needs to work with presentations (.pptx files) for: (1) Creating new presentations, (2) Modifying or editing content, (3) Working with layouts, (4) Adding comments or speaker notes, or any other presentation tasks

David-Li0406/meta-skill-evloving

Comprehensive spreadsheet creation, editing, and analysis with support for formulas, formatting, data analysis, and visualization. When Claude needs to work with spreadsheets (.xlsx, .xlsm, .csv, .tsv, etc) for: (1) Creating new spreadsheets with formulas and formatting, (2) Reading or analyzing data, (3) Modify existing spreadsheets while preserving formulas, (4) Data analysis and visualization in spreadsheets, or (5) Recalculating formulas

David-Li0406/meta-skill-evloving

Download YouTube videos with customizable quality and format options. Use this skill when the user asks to download, save, or grab YouTube videos. Supports various quality settings (best, 1080p, 720p, 480p, 360p), multiple formats (mp4, webm, mkv), and audio-only downloads as MP3.

David-Li0406/meta-skill-evloving

Best practices for Remotion - Video creation in React

David-Li0406/meta-skill-evloving

Provides bidirectional translation (Chinese/English), grammar checking, and sentence polishing. Supports specific tense constraints, context-aware tone adjustment, and natural expression optimization. Outputs direct text without formatting.

David-Li0406/meta-skill-evloving

指导如何通过自定义注解(如@Unicom)标识Dubbo接口,利用BeanDefinitionRegistryPostProcessor在启动时扫描并动态注册ReferenceBean,实现RPC调用的封装。

David-Li0406/meta-skill-evloving

生成Python脚本,利用FFmpeg将图片序列按3x3布局合并,或将合并图拆分。要求使用subprocess模块执行命令,并支持用户交互式输入路径。

David-Li0406/meta-skill-evloving

SOP for extracting and analyzing promotional activity details, handling time formatting, location mapping, payment logic, and step-by-step process validation.

David-Li0406/meta-skill-evloving

Specializes in creating TikTok short video scripts using an anthropomorphic 'Chef' perspective to explain wildlife food chains and survival environments, utilizing real field footage.

David-Li0406/meta-skill-evloving

针对TikTok平台,以拟人化视角(如动物作为厨师)创作系列短视频脚本。重点介绍野生动物、食物链及生态环境,要求使用野外实拍素材,风格幽默且具有教育意义。

David-Li0406/meta-skill-evloving

Generates KWL (Know, Want to know, Learned) charts for educational videos, specifically BrainPOP, using simple 7th-grade language and short, concise bullet points.

David-Li0406/meta-skill-evloving

Develops DAX measures to calculate promo and regular volumes and generates a calculated table of dates excluding continuous promo date ranges, handling multiple periods and nulls.

David-Li0406/meta-skill-evloving

Tracks complex, multi-session work using the Beads issue tracker and dependency graphs, and provides persistent memory that survives conversation compaction. Use when work spans multiple sessions, has complex dependencies, or needs persistent context across compaction cycles. Trigger with phrases like "create task for", "what's ready to work on", "show task", "track this work", "what's blocking", or "update status".

Skills relacionados