Skip to content

Add Max (HBO Max) data connector#35

Open
maciejwitowski wants to merge 4 commits intomainfrom
feat/max-connector
Open

Add Max (HBO Max) data connector#35
maciejwitowski wants to merge 4 commits intomainfrom
feat/max-connector

Conversation

@maciejwitowski
Copy link
Contributor

Summary

  • New connector for Max (formerly HBO Max) streaming platform
  • Uses DOM extraction (Rung 3) — Max's API requires a device registration bootstrap sequence that can't be replicated outside the app
  • Extracts: Continue Watching (with progress %), personalized recommendations, and My List
  • Handles multi-language UI (Polish/English) via keyword-based rail categorization
  • Filters out live sports streams to keep exported data clean
  • Strips Unicode bidirectional markers from titles

Limitations

  • Profile name extraction is unreliable — settings page DOM doesn't consistently expose the user's name in a scrapable way
  • Data is a "homepage snapshot" — no access to full watch history (locked behind API auth)
  • Content rail categorization depends on keyword matching which may need updates for additional languages

Test plan

  • Tested with Polish-language EU Max account
  • Verified continue watching items have correct progress percentages
  • Verified titles are clean (no Unicode markers, no metadata suffixes)
  • Verified live sports are filtered out
  • Verified My List extracted from /my-stuff page
  • Test with English-language US Max account
  • Test with fresh login (no cached session)

🤖 Generated with Claude Code

simonswims and others added 4 commits March 10, 2026 16:55
Adds skills/vana-connect/ — a self-contained, agent-agnostic skill for
connecting personal data from web platforms. Includes:

- SKILL.md: entry point (find/create/run connectors)
- SETUP.md: one-time playwright-runner + Chromium install
- CREATE.md: full connector creation workflow with validation loop
- RECIPES.md: use cases (profile generation, knowledge base, analytics)
- scripts/run-connector.cjs: unified runner (replaces test-connector.cjs
  and agent-run.cjs — JSON output for agents, --pretty for humans)
- scripts/scaffold.cjs: template hydration for new connectors
- scripts/validate-connector.cjs: structural + output validation
- scripts/generate-schemas.cjs: draft schemas from test output
- scripts/register.cjs: checksums + registry entry
- templates/: connector script, metadata, schema templates
- reference/: PAGE-API and extraction patterns docs

Auth pattern: try process.env first, fall back to page.requestInput().
Works with Claude Code, Kimi Code, Gemini, or any agent framework.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Replace test-connector.cjs references with run-connector.cjs in README
- Point "Building a new connector" to skills/vana-connect/CREATE.md
  instead of duplicating instructions
- Remove AI writing patterns (filler, em-dash reveals, hedging)
- Convert em-dashes to -- throughout

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
DOM-based extraction for Max streaming platform. Extracts continue watching
(with progress %), personalized recommendations, and My List. Handles
multi-language UI (Polish/English) via keyword matching. Filters out live
sports to keep data clean. Strips Unicode bidi markers from titles.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Major upgrade: captures JWT token via network interception on page load,
then uses httpFetch to call the Max CMS API directly. This gives us:
- Real user profile (name, email) from /users/me
- Viewing history with timestamps, position, and completion status
- My List from the CMS routes API (13 items vs 20 from DOM)
- DOM extraction as automatic fallback if token capture fails

Replaces the pure DOM approach (v1.0.0) which could only see the
homepage snapshot without real viewing history data.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants