Skip to main content

cvlac-json

CI PyPI Python

Convierte la página pública del CvLAC de un investigador (Minciencias, Colombia) en un único documento JSON: perfil, formación, experiencia, producción bibliográfica en el esquema de obras de ImpactU, proyectos, eventos, tesis dirigidas y todas las demás secciones.

  • Sin dependencias: solo la biblioteca estándar de Python (3.10 o superior).
  • Agrega los identificadores ROR de las instituciones de la experiencia y de las tesis.
  • Con una clave de apis.colav.co, agrega los identificadores Scienti (COD_RH-COD_PRODUCTO, -COD_PROYECTO, -COD_EVENTO) de las entradas que coinciden.

Instalación

pip install cvlac-json

Uso en la terminal

cvlac-json 0000026549                         # escribe cvlac_0000026549.json
cvlac-json 26549 -o zapata.json               # los ceros a la izquierda se agregan solos
cvlac-json 0000026549 --save-html cv.html     # guarda también la página descargada
cvlac-json 0000026549 --html cv.html          # analiza una página guardada, sin descargar
cvlac-json 0000026549 -o -                    # JSON por la salida estándar
cvlac-json 0000026549 --scienti off --ror off # solo la página pública, sin otras APIs
Opción Efecto
--scienti auto (por defecto) Si hay clave de apis.colav.co, agrega los ids Scienti de las entradas que coinciden.
--scienti full Además agrega los registros de Scienti que no están en la página (origin: "scienti").
--scienti off No consulta Scienti.
--institution, --model-year Volcado de Scienti (udea, univalle, uec, unaula) y año del modelo.
--apikey CLAVE Clave de apis.colav.co para esta ejecución.
--siiu auto / off Con Scienti activo, agrega o no a los proyectos el código de SIIU (UdeA) del proyecto con el mismo título y un año compatible.
--ror auto / off Consulta o no el registro ROR.
--format json / jsonld Salida JSON (por defecto) o JSON-LD (ver más abajo). Sin -o, el archivo es cvlac_COD_RH.json o cvlac_COD_RH.jsonld.
--base URL Con --format jsonld, prefijo del IRI del perfil, al que se agrega el COD_RH. Por defecto, el IRI es la URL de la página del CvLAC.
--no-progress No muestra la barra de progreso.

Mientras trabaja, el comando muestra en la terminal una barra de progreso con la etapa actual (descarga, análisis, cada consulta a Scienti, ROR) y el tiempo transcurrido:

⠼ ████████░░░░░░░░░░░░░░░░░░░░░░  27% 4/11 Scienti products 1:12

La consulta de productos de Scienti puede tardar varios minutos en un CV grande: el indicador que gira y el reloj muestran que el programa sigue trabajando. La barra va por la salida de error y solo aparece cuando esta es una terminal, así que no se mezcla con el JSON (-o -) ni con las redirecciones a archivos.

La clave de apis.colav.co se toma, en este orden, de --apikey, de la variable de entorno COLAV_APIKEY o del archivo ~/.config/colav/apikey. Nunca se imprime. Para no dejarla en el historial de la terminal, use --apikey "$(cat archivo)".

Uso como biblioteca

from cvlac_json import extract

data = extract("0000026549", scienti="off")  # descarga y analiza la página
print(data["profile"]["Nombre"], len(data["works"]))

html = open("cv.html", encoding="latin-1").read()
data = extract("0000026549", html=html, ror=False)

# progreso propio: progress(etapa, hechas=None, total=None)
data = extract("0000026549", progress=lambda etapa, hechas=None, total=None: print(etapa))  # página guardada

JSON-LD

--format jsonld (o to_jsonld(data) en Python) entrega el mismo documento con @context, @id y @type, listo para convertirlo a RDF:

cvlac-json 0000026549 --format jsonld                                   # @id = URL de la página del CvLAC
cvlac-json 0000026549 --format jsonld --base https://ejemplo.org/cvlac/ # @id = https://ejemplo.org/cvlac/0000026549
  • Ninguna clave cambia de nombre ni de valor; el contexto usa schema.org donde el significado es claro y el vocabulario de este esquema en lo demás.
  • Obras, proyectos, eventos e ítems de las demás secciones tienen un @id con un JSON Pointer a su lugar en el documento: …/0000026549#/works/0.
  • authors es una lista ordenada (el orden de la cita se conserva en RDF); counts y fields quedan como literales JSON.
  • El contexto completo, con la correspondencia de cada clave, está en la sección 20 del esquema.

Esquema del JSON

El esquema completo, campo por campo, está en docs/cvlac_json_esquema.md y en versión navegable en docs/cvlac_json_esquema.html.

Desarrollo

git clone https://github.com/restrepo/cvlac-json.git
cd cvlac-json
python -m pip install -e ".[dev]"
python -m pytest
ruff check . && ruff format --check .

Las pruebas no usan la red: corren sobre una página sintética (tests/fixtures/cvlac_sintetico.html) con una persona ficticia y la misma estructura HTML del CvLAC.

Cómo publicar una versión nueva en PyPI: PUBLISHING.md.

Avisos

  • La página del CvLAC es pública, pero contiene datos personales (nombre, nacionalidad, sexo). Úselos de acuerdo con la normativa de protección de datos que aplique.
  • Sea moderado con el servidor de Minciencias: haga una pausa de uno o dos segundos entre CV cuando procese muchos.
  • Las afiliaciones de las obras son inferidas de la experiencia (dónde trabajaba la persona ese año); el CvLAC no las declara.

Licencia

MIT

Metadata

Release files for cvlac-json 0.5.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for cvlac-json 0.5.0
File Size Uploaded Provenance Actions
cvlac_json-0.5.0.tar.gz 69.2 kB With provenance Details for cvlac_json-0.5.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for cvlac-json 0.5.0
File Interpreter ABI Platform Actions
cvlac_json-0.5.0-py3-none-any.whl Python 3 none any Details for cvlac_json-0.5.0-py3-none-any.whl

Total release size: 106.5 kB

Release files / cvlac_json-0.5.0.tar.gz

Download URL cvlac_json-0.5.0.tar.gz
Size 69.2 kB
Tags Source
SHA-256 checksum
How to use checksums
03b22a0579c6d34d0cc23056138681958b5127ba93023d08581ea84f6ce38f99
BLAKE2b-256 checksum
How to use checksums
3edf35d18c5a77fceaea302466d4572818c5fe830bf25c18c86aed8f318bbf62
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 31, 2026.

Transparency log

Release files / cvlac_json-0.5.0-py3-none-any.whl

Download URL cvlac_json-0.5.0-py3-none-any.whl
Size 37.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
cbb052b166fc282de3296e0ed740a481c6e35e5dd76285f47815174cdf61228e
BLAKE2b-256 checksum
How to use checksums
36cd38f2f9dcd6cf21ca7b204a40cbae4a20e3971bebe7247355df9ab22cffa0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 31, 2026.

Transparency log

Security for cvlac-json 0.5.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for cvlac_json-0.5.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 31, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page