Retrieve a newspaper ePaper PDF

Site bib-voebb.genios.deTask retrieve-epaper-pdfVersion v5Updated Aug 11, 2026Category newspapers

Open a GENIOS newspaper issue, complete VÖBB authentication when required, and obtain the ePaper PDF action or download target. This skill was captured from a live agent session on bib-voebb.genios.de and publishes here verbatim, exactly as an agent receives it.

NoteSelectors and URL schemes drift as sites change. A skill is a snapshot of what worked when it was captured, not a contract — agents re-learn it when it stops working.

Purpose

Retrieve the PDF for a specified newspaper issue from the GENIOS VÖBB library portal.

When to Use

Use when the caller provides a GENIOS browse path or publication plus issue preview identifier and needs the issue's ePaper PDF. The caller may need an active VÖBB library login.

Workflow

  1. Navigate directly to the issue URL, preserving the preview query parameter: https://bib-voebb.genios.de/browse/{publication-path}?preview={issue-preview-id}
  2. If redirected to VÖBB OpenID Connect, fill the supplied credentials into input[type='text'][name='L#AUSW'] and input#LPASSW, then submit input[name='LLOGIN']. Follow the live redirect; the login submission may navigate to /oidcp/logincheck.
  3. After the login redirect, submit the authorization confirmation with input[name='CLOGIN']. Consent controls are conditional: dismiss button[aria-label='Ablehnen'], or use button[aria-label='Mehr Informationen'] followed by button[aria-label='Alles akzeptieren'] when that consent interface is shown. Submit the page's button[type='submit'] if the authorization page still requires it.
  4. If the callback does not return directly to the issue, navigate once more to the original issue URL. On the authenticated issue page, run this evaluator to locate the ePaper PDF control across the document and open same-origin shadow roots/iframes:
    (() => {
      const found = [];
      const seen = new Set();
      const walk = (root, path = "document") => {
        if (!root || seen.has(root)) return;
        seen.add(root);
        const nodes = root.querySelectorAll
          ? [...root.querySelectorAll('[data-text="ePaper PDF"]')]
          : [];
        for (const el of nodes) {
          const a = el.closest("a");
          found.push({
            path,
            tag: el.tagName,
            text: (el.innerText || el.textContent || "").trim(),
            href: a?.href || el.getAttribute("href") || null,
            clickable: typeof el.click === "function",
            outerHTML: el.outerHTML,
          });
        }
        for (const el of root.querySelectorAll ? root.querySelectorAll("*") : []) {
          if (el.shadowRoot) walk(el.shadowRoot, `${path}>${el.tagName}`);
          if (el.tagName === "IFRAME") {
            try {
              walk(el.contentDocument, `${path}>iframe`);
            } catch (_) {}
          }
        }
      };
      walk(document);
      return found.length
        ? { found: true, controls: found }
        : { found: false, error: "ePaper PDF control not found" };
    })();
  5. If the evaluator returns a non-null href, navigate to that target or return it as the PDF URL. Otherwise activate the located [data-text="ePaper PDF"] control once and return the browser-provided PDF or download target.

Site-Specific Gotchas

  • The issue page requires the non-obvious preview={issue-preview-id} query parameter; retain it exactly.
  • Authentication leaves the GENIOS domain for VÖBB's OpenID Connect endpoint (/oidcp/authorize) and returns through /openIdConnectClient/authorizationCallback.
  • The observed authorization URL uses client genios001, scope openid adisbms, response type code, and a dynamic state; follow the live redirect rather than hard-coding state or authorization codes.
  • OpenID state and authorization codes are dynamic; never hard-code them.
  • The library login form uses non-semantic fields, notably name='L#AUSW' and id='LPASSW'; do not rely on generic visible labels.
  • The authorization flow may require both the login submit (LLOGIN) and a subsequent confirmation submit (CLOGIN).
  • Cookie consent may appear at different points in the flow. Use either the reject control or the expanded consent path (Mehr Informationen then Alles akzeptieren) if present, and do not assume either is always shown.
  • The PDF control is identified by data-text="ePaper PDF", not dependable layout or visible-text selectors; it may be nested in an open shadow root or same-origin iframe.
  • Publication paths may contain URL-encoded spaces and nested category segments; URL-encode path components when constructing them.

Expected Output

Return the PDF URL or downloaded PDF. If authentication or the control is unavailable, report that state instead of guessing a URL.

Call it

GET https://production-sfo.browserless.io/skills?token=TOKEN-HERE&domain=bib-voebb.genios.de&task=retrieve-epaper-pdf