Proyecto independiente No afiliado, patrocinado ni avalado por la Watch Tower Bible and Tract Society o Jehovah's Witnesses.
jw-agent-toolkit
EN

Concepto

Glosario JW.org

Términos del ecosistema jw.org / wol.jw.org / Watch Tower que aparecen en el código y la documentación.

Sitios y dominios

TérminoDescripción
jw.orgSitio público principal de los Testigos de Jehová. Contiene publicaciones, videos, audios.
wol.jw.org”Watchtower ONLINE Library”. Vista web de la biblioteca completa: Biblia (varias ediciones), libros, folletos, revistas. Es la fuente principal de contenido que parseamos.
b.jw-cdn.orgCDN de jw.org. Sirve la API de búsqueda JSON (/apis/search/...), los tokens JWT (/tokens/...) y el pub-media (descargas: PDF, EPUB, JWPUB, MP3).
data.jw-api.orgEndpoint público no autenticado para metadata: registro de idiomas (/mediator/v1/languages/...), finder de contenido (/mediator/finder).

Códigos de publicaciones

JW asigna un “pub code” corto a cada publicación. Aparecen en URLs y en el inventario GETPUBMEDIALINKS.

CódigoPublicación
nwtNew World Translation (Traducción del Nuevo Mundo) — versión estándar
nwtstyNWT Study Edition (Edición de Estudio del Nuevo Mundo) — incluye notas de estudio + cross-refs. Solo inglés por ahora.
Rbi8Edición Reference Bible 1984 (legado)
fgFolleto Good News from God! (¡Buenas noticias de parte de Dios!)
bhLibro What Does the Bible Really Teach? (¿Qué enseña realmente la Biblia?)
bhsVersión corta del anterior
lffLibro Enjoy Life Forever! (Disfruta de la vida para siempre)
w / wsWatchtower edición pública / edición de estudio
gAwake! (¡Despertad!)
it-1 / it-2Insight on the Scriptures, volúmenes 1 y 2
tiFolleto Should You Believe in the Trinity?
rrLibro Pure Worship of Jehovah — Restored at Last!

Códigos de idioma

JW usa tres convenciones simultáneas:

ConvenciónEjemplo (Inglés)Ejemplo (Español)Ejemplo (Portugués)
JW code (interno)EST
ISO 639-1 (URLs jw.org)enespt
lp-tag (URLs wol.jw.org)lp-elp-slp-t

Adicionalmente, cada idioma tiene una versión de recurso wol_resource:

Idiomawol_resourceBiblia por defecto
Inglésr1nwtsty
Españolr4nwt
Portuguésr5nwt

El número r{N} es la versión del bundle de recursos que sirve WOL para ese idioma. Cambia con el tiempo y entre idiomas; debe mantenerse al día en jw_core.languages._REGISTRY.

App oficial JW Library (Fase 19)

TérminoDescripción
JW LibraryApp nativa oficial. Windows: UWP (Microsoft Store). macOS: app de iPad ejecutándose en Mac App Store sandbox. iOS/Android nativas. No tiene versión web.
jwlibrary://Esquema URL registrado por la app. Sintaxis: ?bible=BBCCCVVV o ?docid=N&par=P. Es la única vía cross-plataforma de control externo oficial.
.jwlibraryBackup que la app exporta (User Data Backup). ZIP con manifest.json + userData.db (SQLite). Sólo contiene datos del usuario, NO el corpus público.
userData.dbSQLite del usuario (notas, marcadores, resaltados, respuestas a campos). Schema oficial v16 al cierre de Fase 19. Tablas: Location, UserMark, BlockRange, Note, Bookmark, Tag, TagMap, InputField, PlaylistItem*.
publications.dbSQLite del catálogo de publicaciones instaladas por la app (Windows). Tabla Publication. Vive en %LOCALAPPDATA%\Packages\…JWLibrary…\LocalState\.
document_idIdentificador MEPS de un documento dentro de una publicación. Es el N en jwlibrary://?docid=N. El catálogo local (meps_catalog.db) mapea pub_code → document_id.
meps_document_idVariante con el ID MEPS canónico cross-edición. Útil para encontrar la misma publicación en otra edición/idioma.
MEPS catalogSQLite local en ~/.jw-agent-toolkit/meps_catalog.db que el toolkit construye al indexar .jwpub ya descifrados. Pobla publication + document.
TCCTransparency, Consent & Control. Subsistema de macOS que controla el acceso a directorios protegidos como Application Support, Documents y Containers. Bloquea la lectura del container de JW Library por defecto.
Full Disk Access (FDA)Permiso TCC que, una vez concedido a un proceso, le permite leer el container de la app. Configurable en System Settings → Privacy & Security → Full Disk Access.

Estructura de URLs en wol.jw.org

https://wol.jw.org/{iso}/wol/{tipo}/{wol_resource}/{lp_tag}/{...path...}

donde {tipo} es uno de:

TipoSignificadoPath adicional
bBible — capítulo/{pub}/{book_num}/{chapter}
dDocumento — artículo o página de tema/{docid}
hHomepage del idioma — contiene el texto diario(vacío)
bcCross-reference panel/{doc_id}/{group}/{index}
pcPublication citation panel/{doc_id}/{group}/{index}
tcTable-of-contents/{doc_id}/{group}/{index}

Anclas:

  • #study=discover&v={book}:{chapter}:{verse} posiciona en el versículo objetivo y abre el panel de estudio.

Estructura HTML que parseamos

Capítulo bíblico (/wol/b/...)

  • <article id="article"> contiene todo el cuerpo del capítulo.
  • Cada párrafo: <p id="pN" data-pid="N">.
  • Cada versículo dentro de un párrafo: <span class="v" id="v{book}-{ch}-{verse}-{instance}">.
  • Marcadores inline de cross-refs: <a class="b" href="/{iso}/wol/bc/...">+</a>.
  • Marcas de pronunciación: · (interpunct), ʹ (Modifier Letter Prime), * (asterisco para notas al pie).

Página de tema del Índice de Publicaciones (/wol/d/...{subject_docid})

  • <p class="st">TÍTULO DEL TEMA</p> — título.
  • <p class="sa">(See also …)</p> — referencias a otros temas relacionados.
  • <p class="su">subtítulo: <a>cita</a>; <a>cita</a></p> — subtítulo de nivel superior con citas.
  • <p class="sv">sub-subtítulo: <a>cita</a></p> — entrada de nivel valor (anidada).

Las citas se distinguen por el path del href:

Pathkind
/bc/bible
/pc/publication
/tc/section
/d/document
otroother

Notas de estudio (/wol/b/.../{nwtsty}/...)

Cada nota: <li class="item studyNote">.

  • <strong>headword:</strong> — palabra/frase que la nota anota.
  • Cuerpo: comentario en texto plano.
  • Referencias inline dentro del cuerpo: <a class="b" href="...">.

Texto diario (/wol/h/...)

  • Contenedor: <div class="todayItem"> (o .dailyText, varía).
  • Fecha: .itemHeader o <h2>.
  • Versículo + cita: .themeScrp.
  • Comentario: .sb o <p> no-themeScrp.

Endpoint que devuelve un JSON con todos los archivos descargables de una publicación, agrupados por idioma y formato. Cada entrada incluye URL, checksum, tamaño, mime-type. Útil para:

  • Descargar la Biblia entera en EPUB.
  • Bajar el JWPUB de un libro para procesarlo offline (futura Fase 5).
  • Listar archivos de audio (MP3) de una revista.

Parámetros principales: pub (código), langwritten (JW code), issue (yyyymm para revistas), booknum (1-66 para libros bíblicos), fileformat (PDF/EPUB/JWPUB/MP3/RTF), alllangs (booleano).

Índice de Publicaciones (Publications Index / Research Guide)

Index temático maestro de Watch Tower. Cada tema (p.ej. “Trinity”, “Soul”, “Last Days”) es una página d en WOL con la siguiente estructura semántica:

  • Título (<p class="st">).
  • Ver también (<p class="sa">): referencias a otros temas.
  • Subtítulos (<p class="su">): categorías de nivel superior.
  • Sub-entradas (<p class="sv">): entradas anidadas bajo un subtítulo.
  • Citas: cada <a> dentro de un subtítulo. Pueden ser referencias bíblicas (clase b, path /bc/), códigos de publicación (/pc/), secciones (/tc/) o documentos completos (/d/).

Es la fuente autoritativa para investigación doctrinal: el agente apologetics lo consulta primero antes que cualquier otra fuente.

JWPUB

Formato de archivo offline de Watch Tower. Estructura (revertida en Fase 5.5):

  1. Archivo .jwpub = ZIP estándar.
  2. Dentro: manifest.json con metadata + un ZIP interno (entry "contents").
  3. ZIP interno: imágenes + un SQLite .db con:
    • Tabla Document: una fila por documento. Columna Content cifrada AES-128-CBC sobre zlib (contentFormat="z-a").
    • Tabla DocumentParagraph: párrafos enlazados a documentos.

Descifrado (Fase 5.5): la clave se deriva de SHA256(f"{lang}_{symbol}_{year}") XOR magic_32byte_constant. La constante se descubrió en gokusander/jwpub-toolkit (MIT) inspeccionando JW Library. Implementado en jw_core.parsers.jwpub._compute_key_iv.

API pública: parse_jwpub_metadata() (sin decryption) y parse_jwpub() (con decryption + paragraphs extraídos del XHTML).

Fase 9 — Infraestructura

Módulos añadidos en Fase 9 que cualquier cliente HTTP puede opt-in:

TérminoSignificado
DiskCacheCache SQLite con TTL, WAL, lazy eviction. Bytes adentro, bytes afuera. Ver jw_core.cache.DiskCache.
TokenBucket / ThrottlerRate limit per-host con bucket clásico. Default: 2 req/s, burst 5. Ver jw_core.throttle.
backoff_delayExponential backoff con full jitter (estilo AWS). Para retry loops manuales.
TelemetryDetector opt-in de drift de la API. Opt-in vía JW_TELEMETRY_ENABLED=1. Hashea SHAPE de respuestas (no contenido) y compara contra baseline persistente.
JWTManagerHolder async-safe del JWT para b.jw-cdn.org. Extraído de CDNClient en Fase 9.
politely_getWrapper interno (jw_core.clients._polite) que cablea throttler + cache + telemetry en cada GET.
ClientSuite / build_clientsFactory (jw_core.clients.factory) que arma los 6 clientes con infraestructura compartida.
WeblangClientCliente alterno (jw_core.clients.weblang) para www.jw.org/{iso}/languages/. Más campos por idioma que mediator.

Términos cross-reference / “cross-ref”

Watch Tower distingue:

  • Referencia cruzada inline (<a class="b">+</a> dentro de un versículo): es solo un marcador que dice “este versículo tiene paralelos; abre el panel”. El panel real se sirve en una URL aparte (/bc/...).
  • Panel de referencias cruzadas: HTML separado con la lista de paralelos bíblicos para esa posición. Se obtiene con WOLClient.get_cross_reference_panel(href).

Por eficiencia, los marcadores se extraen del HTML del capítulo pero los paneles solo se descargan cuando se piden explícitamente (resolve_panel=True en la herramienta MCP).

Editar esta página en docs/conceptos/glosario.md