7.6 KiB
Context
The referenced project, dreammis/social-auto-upload, currently documents sau CLI commands as the main path and keeps the historical web UI as legacy. Its active model supports login, check, upload-video, and upload-note commands for core platforms such as Douyin, Kuaishou, Xiaohongshu, Bilibili, and YouTube, with additional uploader modules for Video Channel, Baijiahao, TikTok, and others.
TrueGrowth already has a React/Nx workbench shell, a left navigation, local runtime bridges, task queues, prompt history result previews, and unified asset concepts. The integration should feel native to TrueGrowth instead of exposing a foreign web app.
The historical sau_frontend is still useful as a workflow reference. Its actual pages are Dashboard, AccountManagement, MaterialManagement, PublishCenter, and About. The behaviors to carry forward are account status loading/validation, QR/SSE login feedback, material upload/preview/selection, tabbed publish drafts, per-draft account/platform/topic/schedule configuration, batch publishing progress, cancellation, and per-draft success/failure reporting.
Goals
- Let users review all publishable finished images and videos in one place.
- Let users authorize and manage multiple social accounts per platform.
- Let users compose one publishing draft and fan it out to multiple channels/accounts.
- Let users publish immediately or schedule supported platforms.
- Reuse
social-auto-uploadbehavior through a local bridge so platform automation remains isolated and upgradeable. - Preserve a clear audit trail from generated asset to publish job to channel result.
Non-Goals
- Do not copy the legacy
sau_frontendUI into TrueGrowth. - Do not promise every upstream uploader has the same maturity; surface unsupported fields and unsupported media types per channel.
- Do not store raw cookies or credentials in frontend state.
- Do not block the proposal on a remote cloud service; the first implementation can use the local runtime.
Decisions
- Decision: Create a native TrueGrowth publish workspace with tabs for "发布任务" and "账号授权"; publishable asset selection lives inside the publish-task form and publish history lives beside the form.
- Decision: Represent publishable content as normalized
PublishableAssetrecords derived from existing tasks/assets/history rather than duplicating large media blobs. - Decision: Add a local runtime adapter with operations equivalent to
sau <platform> login,check,upload-video, andupload-note. - Decision: Start with the CLI-supported stable channels from upstream CLI docs: Douyin, Kuaishou, Xiaohongshu, and Bilibili. YouTube can be visible only after the local bridge exposes its CLI command surface. Other upstream uploaders can appear as planned/experimental until their command wrappers are implemented.
- Decision: Store only account aliases, platform, status, cookie/session file references, last check time, and capability metadata in app-facing state. Secrets remain under the local runtime's controlled directory.
- Decision: Replace the upstream "multiple publish tabs" UI with TrueGrowth "campaign drafts": each draft can contain selected finished assets and multiple channel/account targets, while still preserving the upstream ability to add several draft groups and batch-submit them with progress.
UI Shape
- Left nav item:
自动发布, near "素材" and "任务" because it operates on finished content. - Dashboard header: connected account counts, abnormal/expired account counts, enabled channel counts, publishable asset counts, queued jobs, failed jobs, and recent publish results.
- Asset center grid/list: first-level filters for 素材, 作品, 已发布 plus media type and source tags.
- Composer: selected assets, local upload fallback, asset-center picker, title, description/note, intelligent publish copy helper, tags/topics, original declaration, channel-specific options, account selector, schedule selector, validation summary, and submit action.
- Account page: platform filters, search, account rows, login/check actions, QR or browser-login progress, last status, and capability badges for video, image-note, schedule, cover, draft-only, and product-link support.
- Job page: queue grouped by publishing campaign, showing per-channel progress, logs, retries, cancellation, and source asset links.
Upstream Workflow Mapping
- Dashboard maps to TrueGrowth summary cards and quick actions inside the auto-publishing workspace.
- AccountManagement maps to "账号授权": quick load accounts first, run background status validation, allow add/edit/delete, re-login failed accounts, and display login progress or QR guidance.
- MaterialManagement maps to the route-level "资产中心" plus the publish-task asset picker: TrueGrowth generated assets are first-class, while manual upload remains available for assets not created in the system.
- PublishCenter maps to "发布任务": upstream publish tabs become campaign drafts; local upload and asset-center selection become the publish content picker; account/platform/topic/schedule/original/product/draft controls become target-aware composer sections.
- Upstream
/postVideosingle payload maps to TrueGrowthPublishCampaignplus onePublishJobper account/platform target so mixed success and retry are tracked precisely.
Runtime Bridge
- The frontend calls a local TrueGrowth runtime endpoint, not the upstream CLI directly.
- The runtime bridge validates file availability, exports remote/blob assets to a local file when required by
sau, invokes the platform command, streams logs, and records result status. - Platform capabilities are data-driven so new upstream support can be enabled without rewriting the page.
- Login operations may open an interactive browser or show QR guidance depending on the platform; the UI must reflect that the user may need to complete authorization outside the page.
- Login/status operations should support the upstream legacy behavior pattern of fast account listing plus slower validation. If the bridge can emit QR or browser-login progress, the UI should stream it; otherwise it should show the command/log state and required user action.
- Upload command options must map channel-specific CLI fields, including
--schedule,--thumbnail,--thumbnail-landscape,--thumbnail-portrait, Douyin--product-linkand--product-title, and Bilibili--tid.
Risks / Trade-offs
- Browser automation can be fragile as platforms change. Mitigation: show per-channel health, command logs, retries, and account check status.
- Some generated media may only exist as remote URLs or cache URLs. Mitigation: add an export/materialization step before enqueueing upload jobs.
- Schedules differ across platforms. Mitigation: validate per target and allow fallback to immediate publish or mark unsupported before submission.
- Multi-account parallelism can trigger platform risk controls. Mitigation: provide concurrency limits per platform/account.
Migration Plan
- Introduce the UI route and local data models behind a workbench page.
- Implement read-only finished asset aggregation.
- Implement account authorization bridge and status checks.
- Implement publish draft creation and local queue persistence.
- Connect stable
saucommands for video and image-note publishing. - Add job logs, retries, and publish history.
Open Questions
- Should the first release install or vendor
social-auto-upload, or should it detect a user-providedsaubinary/path? - Which platforms are required for the first production milestone beyond Douyin, Kuaishou, Xiaohongshu, Bilibili, and YouTube?
- Should publish history sync into the existing task center, or remain scoped to the auto-publishing workspace?