Migrar blog Ghost a SPA (Vuepress) con Markdown
Obtener y convertir la información, fácil y rápido.
Preámbulo
El dia de hoy queria compartir el proceso para exportar el contenido que alojé durante un tiempo en un CMS llamado Ghost. Este sistema de blogging es muy bueno, cuenta con muchas carateristicas que facilitan a los editores a construir buen contenido, sin embargo, para el caso de uso que yo tenia en mente, quiza no era la mejor opción.
Hoy en día como desarrolladores podemos realizar una SPA con alguna libreria que procese los archivos basados en Markdown. Esto nos permite crear sitios estaticos con un buen nivel de SEO y un costo reducido, practiamente muchos de los host de SPA ofrecen capaz gratuitas en las que puedes publicar tu sitio y enlazar tu dominio.
Sin mas preambulos, a continuación se describen los pasos que segui para lograr migrar mi contenido alojado en Digitalocean/Ghost a Vuepress.
Comencemos
Para iniciar con el proceso es necesario contar con tus credenciales de tu host actualizadas y accesible a la información. En mi caso tuve que reiniciar mis credenciales debido a que las extravie en la migracion de equipo :(
Los principales requisitos son:
- Acceso a la cuenta de administrador de Ghost
- Acceso a tú VPS (SSH o password)
- Node.js 13 o superior
Exportar información
Ghost a JSON
Comenzaremos exportando la información contenida en nuestro blog a una archivo JSON. Para eso puedes seguir esta guia oficial de Ghost: Exportar información
En esta guía nos muestran los pasos para poder obtener la información de nuestros artículos en formato JSON. Esta opción la puedes encontrar en Settings/Labs y en el apartado de exportar.
Descargar imágenes de VPS
Tras obtener la información de los articulos, para el caso de los VPS, tendremos que obtener la información dentro de nuestra instancia por medio de la linea de comandos.
Basicamente el proceso consiste en:
- Tener acceso al vps (credenciales).
- Ejecutar SPC en tu equipo a la par del inicio de sesion.
- Alojar la información en una carpeta destino.
El comando que utilice, fue el siguiente (puede variar dependiendo el SO)
scp -r <your-user>@<your-ip>:/var/www/ghost/content/images ~/Downloads
Con esto basicamente tenemos un respaldo de toda nuestra información y esta lista para ser convertida a markdown.
Procesamiento de información
JSON a Markdown
Podemos transformar la información de un archivo JSON con la siguiente libreria https://github.com/hswolff/ghost-to-md
Este proyecto realizar exactament lo que necesitamos, entonces solo debemos realizar una instalacion del modulo de npm para lograrlo.
Es recomendable tener una carpeta con la informacion en un sitio, para poder instalar los modulos que ncesitamos.
Para instalar el modulo, podemos hacerlo de forma global, pero como este proceso solo se realizara una vez, seria conveniente hacer la instalacion local
Para ello podemos realizar un archivo de configuracion
npm init
con la configuracion basica (todo si)
Posteriormente, instalar la dependencia
yarn add ghost-to-md
Y ejecutar el comando apuntando al archivo JSON que obtuvimos de Ghost
./node_modules/.bin/ghost-to-md your-json-blog.json
Esto deberia generarnos una carpeta con los archivos MD que necesitamos.
Lo que restaria es identificar la ruta de los ficheros y hacer coincidir con la localizacion actual o la estrucutra dada:
Ghost maneja la siguiente estructura: content/images/< year >
Wrap up
En resumen, con las herramientas y pasos correctos podemos extraer la info de forma rápida y confiable. Solo necesitamos obtener la informacion (texto e imagenes) y realizar el proceso de conversion, pero, debido a que esta libreria nos facilita el trabajo, esto es muy simple hoy por hoy.