Skip to content

feat(youtube/xiaohongshu/xiaoe): surface dropped ids/url on listings (sweep)#1305

Merged
jackwener merged 2 commits intomainfrom
feat/silent-column-drop-round8
May 4, 2026
Merged

feat(youtube/xiaohongshu/xiaoe): surface dropped ids/url on listings (sweep)#1305
jackwener merged 2 commits intomainfrom
feat/silent-column-drop-round8

Conversation

@jackwener
Copy link
Copy Markdown
Owner

Summary

Round 8 sweep — same silent-column-drop class as #1300 / #1301 / #1302. Row builds the id/url, columns array forgets to list it, table view drops it, agent loses the chain into detail commands.

3 files, 4 insertions, 4 deletions:

  • youtube/feed: rename row key videoIdvideo_id (snake_case to match project convention — twitter is_retweet/created_at/has_media, douban subject_id/photo_id, hupu thread_title), add to columns. youtube/video already accepts both URL and id, so url-based round-trip wasn't broken, but exposing the canonical id removes a url-parse step for chained calls.
  • xiaohongshu/feed: pipeline map already extracts id from the homefeed payload — columns now projects it.
  • xiaoe/catalog: pipeline map already projects url — columns now lists it. xiaoe/detail takes positional url, so this completes the round-trip path explicitly.

Why

Same --format table (default) bug as last 3 sweeps. JSON output was already correct; agents reading the default rendered output couldn't see the id and had to re-derive from url or re-search.

Validation

  • check:listing-id-pairing --strict ✓ (34 sites, 77 listings, 10 exempt, 0 violations)
  • typecheck clean
  • vitest run clis/youtube/ clis/xiaohongshu/ → 13 files / 114 tests pass
  • Manifest 660 → 660 entries (no count change, only column shape)

Notes

  • youtube/feed's videoIdvideo_id rename is a -f json schema change. The field was hidden (not in columns), so it's not a publicized contract. Leaning on convention consistency over backward compat for an undocumented field.
  • xiaohongshu/feed pairs with xiaohongshu/note which requires xsec_token in the URL — adding id exposes the canonical id but the url-with-token flow is what actually round-trips. Both visible now.
  • Audit follow-ups still queued: xiaohongshu/search drops author_url from columns; xhs row never extracts the note id even though url contains it. Will be a separate PR.

Adapter-only fast merge candidate.

jackwener added 2 commits May 4, 2026 21:54
…(sweep)

Round 8 same silent-column-drop class as #1300/#1301/#1302 — row already
emits the id/url field but `columns` array forgot to project it, so table
view drops it and agent loses the chain into detail commands.

- youtube/feed: rename row.videoId → video_id (snake_case convention),
  add to columns. youtube/video accepts both URL and id, so url-based
  round-trip already worked, but exposing the canonical id removes the
  url-parse step for chained calls.
- xiaohongshu/feed: pipeline map already extracts `id` from the homefeed
  payload, columns now lists it.
- xiaoe/catalog: pipeline map already projects `url`, columns now lists
  it. xiaoe/detail takes a positional url, so this completes the
  round-trip explicitly.

Also fixes one camelCase column violation on youtube/feed (videoId vs the
project's snake_case convention as in twitter `is_retweet`/`created_at`,
douban `subject_id`/`photo_id`, hupu `thread_title`).

CI gate `check:listing-id-pairing` ✓ (34 sites, 77 listings, 10 exempt).
typecheck clean. 114 tests pass for youtube + xiaohongshu.
@jackwener jackwener merged commit f482a6b into main May 4, 2026
11 checks passed
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.

1 participant