feat(x-thread): Twitter/X thread provider with browser-flow draft#4
Merged
Conversation
Introduces a new `thread` media_type and `x-thread` provider that drives x.com/compose/post via OpenCLI Browser Bridge — fills tweets one by one into the modal and stops before "Post all", mirroring x-article's autosave-then-user-confirms contract. Tweets are separated by `---` lines in the manifest body; lint enforces 280 char/tweet and 25 tweets/thread. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
threadmedia_type +x-threadprovider — drivesx.com/compose/postvia OpenCLI Browser Bridge, fills each tweet, stops before "Post all" (user reviews + ships)---; lint enforces 280 chars/tweet and 25 tweets/thread (non-Premium baselines)x-article's contract: stub fallback when bridge isn't connected, draft-first, no publish pathTest plan
pytest -q— 173/173 green (16 new tests cover split/lint/prepare/dry-run/stub fallback/browser-flow mock/publish refused/health/login redirect)ruff check+ruff format --checkcleanmeti validate examples/thread.yaml→ OKmeti list providers→x-thread (bundled) media=['thread'] caps=drafttweetTextarea_<n>/addButtonare best-guess; failure messages point to the exact constants to patch inproviders/x_thread/internal/browser_flow.py🤖 Generated with Claude Code