Files
wehub-resource-sync 9b395f5cc3
E2E Headed Chrome / e2e-headed (macos-15) (push) Has been cancelled
E2E Headed Chrome / e2e-headed (ubuntu-latest) (push) Has been cancelled
E2E Headed Chrome / e2e-headed (windows-latest) (push) Has been cancelled
CI / build (macos-latest) (push) Has been cancelled
CI / build (ubuntu-latest) (push) Has been cancelled
CI / build (windows-latest) (push) Has been cancelled
CI / unit-test (push) Has been cancelled
CI / bun-test (push) Has been cancelled
CI / adapter-test (push) Has been cancelled
CI / smoke-test (macos-latest) (push) Has been cancelled
CI / smoke-test (ubuntu-latest) (push) Has been cancelled
Security Audit / audit (push) Has been cancelled
Build Chrome Extension / build (push) Has been cancelled
Trigger Website Rebuild (Docs Updated) / dispatch (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:39:48 +08:00

2.2 KiB
Raw Permalink Blame History

schema_version, page_id, url_patterns, purpose, last_verified, source
schema_version page_id url_patterns purpose last_verified source
1.1 profile
https://x.com/<handle>
https://x.com/<handle>/with_replies
https://x.com/<handle>/media
https://x.com/<handle>/likes
a user's profile + their tabs (posts / replies / media / likes) 2026-06-02 global

Visual anchors

  • a11y: role=main + role=region name="Timeline: <handle>"
  • testid: [data-testid="UserName"] / [data-testid*="-follow"] / [data-testid*="-unfollow"] / [data-testid="primaryColumn"]
  • pattern: tab strip role="tablist"Posts / Replies / Highlights / Articles / Media / Likes
  • selector_pattern: URL <handle> 纯字母数字+下划线 1-15 长度,不带 @

Actions

### action:follow_user
pre: logged-in user != target user AND follow button testid shows "Follow"
do: opencli twitter follow <handle> || click [data-testid*="-follow"]
post: button text -> "Following", testid -> [data-testid*="-unfollow"]
fail: button text unchanged | login modal | "Follow blocked" toast
recover: adapter_health_update: opencli twitter follow -> suspect; dom_click [data-testid*="-follow"]; rollback via unfollow button
evidence: opencli twitter follow
### action:switch_tab
pre: on profile page AND target tab visible in tablist
do: click role="tab" matching Posts|Replies|Media|Likes || goto /<handle>/<sub-path>
post: URL switches to sub-path, timeline region re-renders
fail: tab unresponsive | URL unchanged
recover: use goto with explicit URL instead of click
evidence: opencli browser click + state

Tweet card actions

profile timeline 上每个 tweet card 用 pages/_tweet_card.md 定义的 actionlike / reply / repost / bookmark / open_status)。

Linked APIs

  • endpoint:UserByScreenName — handle → numeric userId 解析(所有 profile-keyed adapter 第一步)
  • endpoint:UserTweets — Posts tab 数据源

Page pitfalls

  • pinned tweet 永远在最顶不按时间排(adapter 内部处理,task agent 无需 distinguish
  • <handle> 大小写不敏感但 URL 保留原样,adapter 内 normalize
  • suspended/banned user 显示 "Account suspended" 占位,结构完全不同 → 标 stale 抛 EmptyResult