Files
storyforge/scripts/douyin-browser-capture

Douyin Browser Capture

This tool drives a real Playwright Chromium session, lets a human log into Douyin, captures the loaded profile and work pages, and can sync the captured bundle into StoryForge's existing /v2/douyin/accounts/sync endpoint.

Install

cd /Users/kris/code/StoryForge-gitea/scripts/douyin-browser-capture
npm install
npx playwright install chromium

Run

cd /Users/kris/code/StoryForge-gitea/scripts/douyin-browser-capture
npm run capture -- \
  --profile-url https://www.douyin.com/user/your_account \
  --storyforge-username kris \
  --storyforge-password 'Asd123456.'

The browser uses a persistent state directory under ~/.storyforge/douyin-playwright, so Douyin login can survive between runs.

What it captures

  • current profile page JSON blobs extracted from <script> tags
  • selected window globals such as __INITIAL_STATE__
  • relevant JSON network responses
  • creator-center pages using the same logged-in browser context
  • a limited number of video detail pages linked from the profile

Output

Default output directory:

/Users/kris/code/StoryForge-gitea/output/playwright/douyin

Each run writes:

  • profile-bundle.json
  • creator-*.json
  • video-*.json
  • storyforge-sync-request.json
  • storyforge-sync-response.json when sync is enabled
  • summary.json

Notes

  • This is designed as a browser-assisted capture flow, not a fully headless anti-bot bypass.
  • If Douyin shows a slider or challenge page, solve it manually in the opened browser window and then continue.
  • Use --no-sync if you only want to save a local bundle for inspection.