Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
191 commits
Select commit Hold shift + click to select a range
4d5041b
feat: add isolated TikTok proxy account pool
Jul 13, 2026
b1ea82f
Fix failed report insight fallback
Jul 13, 2026
3cedc3f
Guard report deep dives after insight failure
Jul 13, 2026
739f399
Merge master into proxy development branch
Jul 13, 2026
5d0b861
Gate proxy pool behind development flag
Jul 13, 2026
82a5f14
Isolate proxy development runtime
Jul 13, 2026
80bb816
Avoid conflicting timezone bind mounts
Jul 13, 2026
3b6d422
Merge master timezone configuration
Jul 13, 2026
8886ad2
Clean terminated unbound browser profiles
Jul 13, 2026
452bd9d
feat: add TikTok Studio publish queue
Jul 13, 2026
b337465
chore: isolate development Docker image
Jul 13, 2026
bedf08f
ui: remove proxy runtime overview
Jul 13, 2026
33debde
ui: highlight active account observation
Jul 14, 2026
c33d9e6
feat: add immediate publish queue actions
Jul 14, 2026
ea371fa
fix: preserve dry-run browser for review
Jul 14, 2026
14bd147
fix: start immediate publish without delay
Jul 14, 2026
fdea75d
fix: upload TikTok video through delayed file chooser
Jul 14, 2026
14f7b4e
fix: handle TikTok Studio upload form prompts
Jul 14, 2026
2aab03a
fix: preserve uncertain publish session for review
Jul 14, 2026
daf9a0a
feat: support static proxy subscriptions
Jul 14, 2026
e29a2b3
feat: persist static proxy transit routing
Jul 14, 2026
7dff2ae
fix: isolate proxy browser observation channels
Jul 14, 2026
6fbb669
fix: retry browser proxy IP verification
Jul 14, 2026
73f1387
fix: highlight active account sleep control
Jul 14, 2026
f911afe
feat: persist product links for publish jobs
Jul 14, 2026
d59f357
fix: preserve observation during immediate publish
Jul 14, 2026
9696a32
fix: make publish schema migration idempotent
Jul 14, 2026
3e58536
fix: require product link review before publish
Jul 14, 2026
214604d
feat: add shared TikTok product selection
Jul 14, 2026
1c1ac03
fix: simplify product picker
Jul 14, 2026
1c9cd49
feat: queue TikTok schedules immediately
Jul 14, 2026
04c5a85
fix: publish overdue schedules immediately
Jul 14, 2026
f48c5d7
fix: constrain publish modal scrolling
Jul 14, 2026
be6535b
fix: simplify publish failure display
Jul 14, 2026
04af262
feat: retry failed TikTok publish jobs
Jul 14, 2026
4794c59
feat: add manual TikTok publish handoff
Jul 14, 2026
b08c4ca
fix: support TikTok schedule pickers
Jul 14, 2026
22c9606
fix: open TikTok time picker wrapper
Jul 14, 2026
c052d82
fix: wait for TikTok time picker
Jul 14, 2026
df6c7dc
fix: close TikTok time picker
Jul 14, 2026
051531d
fix: complete TikTok product link flow
Jul 14, 2026
0fd5312
fix: trigger TikTok product search
Jul 14, 2026
86a6375
feat: add LAN chat development site
Jul 15, 2026
4be95a4
fix: preserve LAN chat nickname while editing
Jul 15, 2026
19d0a4e
feat: add TikTok Studio analytics collection v2
Jul 15, 2026
bafed3e
ops: add LAN-only local domain setup
Jul 15, 2026
1e01ce4
fix: collect TikTok Studio post analytics
Jul 15, 2026
983f3da
fix(proxy): allow deleting unbound archived proxies
Jul 15, 2026
936f60a
feat: support LAN chat image messages
Jul 15, 2026
dfb6649
fix: compact chat tool context dynamically
Jul 15, 2026
a029a8c
feat: use Chinese LAN chat domain
Jul 15, 2026
2b601b8
fix: publish Chinese mDNS name as UTF-8
Jul 15, 2026
a370690
refactor: add LAN chat account sessions
Jul 15, 2026
1eac052
fix: strengthen FastMoss chat routing and playbooks
Jul 14, 2026
64b874f
feat: classify chat intent before commerce routing
Jul 15, 2026
4918f73
feat: sync LAN chat users from Feishu
Jul 15, 2026
72127a4
fix: preserve DeepSeek reasoning across tool calls
Jul 15, 2026
bda8ba1
fix: preserve Feishu validation status
Jul 15, 2026
452267b
fix: guarantee FastMoss availability lookup
Jul 15, 2026
bd7f42a
fix: keep availability answers scoped to current lookup
Jul 15, 2026
d3e82fe
feat: add LAN chat unread badges
Jul 15, 2026
a0f76a6
feat: adapt chat pages for mobile
Jul 15, 2026
c6552b0
fix: harden SellerSprite tool protocol handling
Jul 15, 2026
8eb1035
chore: mount MCP bridge source in development
Jul 15, 2026
d9b9991
fix: reject unexecutable chat protocols
Jul 15, 2026
147bf3f
feat: sync TikTok collection results to allowlisted Bitable
Jul 15, 2026
5fac4dd
Merge remote-tracking branch 'refs/remotes/origin/codex/sellersprite-…
Jul 15, 2026
d0bda84
fix: tolerate concurrent proxy database migrations
Jul 15, 2026
bf08b45
fix: proxy Feishu avatars through LAN chat
Jul 15, 2026
5f68b8d
chore: replace LAN chat domain with tymy.local
Jul 15, 2026
fae00eb
feat: route formal and beta LAN domains
Jul 15, 2026
350686c
fix: publish beta LAN hostname without reverse record
Jul 15, 2026
9f55ef5
feat: show Bitable names in collection settings
Jul 15, 2026
78c9ecd
fix: improve LAN chat scrolling and image viewer
Jul 15, 2026
9464a1d
fix: pin sent messages to latest on mobile
Jul 15, 2026
cbb99e8
feat: add account action progress and collection date range
Jul 15, 2026
77963e8
feat: add account switcher and refresh LAN chat logo
Jul 15, 2026
e5d89a5
fix: use bundled Playwright browser
Jul 15, 2026
ddcf0c6
fix: allow canceling manual account switch
Jul 15, 2026
0ab4156
fix: hide account switch close button on initial entry
Jul 15, 2026
f7fca7a
fix: enforce unique LAN chat nicknames
Jul 15, 2026
28a2d78
fix: show peer avatar in direct messages
Jul 15, 2026
a832c78
feat: bind proxy accounts to Feishu users
Jul 15, 2026
29da1bb
fix: refresh TikTok identity during validation
Jul 15, 2026
89ed15c
feat: normalize Feishu account bindings
Jul 15, 2026
1564a1e
fix: throttle Feishu directory refresh
Jul 15, 2026
7ce18a6
fix: restore account state after IP validation
Jul 15, 2026
42025c8
fix: clarify proxy account interactions
Jul 15, 2026
eac0cbb
fix: isolate development Docker image
Jul 15, 2026
531176f
fix: allow isolated browser to execute Chromium
Jul 15, 2026
7dc7c52
fix: make MCP evidence routing provider-aware
Jul 15, 2026
5f9570f
fix: isolate resolved chat entities
Jul 15, 2026
9835119
fix: isolate provider analysis history
Jul 15, 2026
98ade1b
fix: invalidate stale browser sessions after restart
Jul 15, 2026
bbd505c
fix: accept hierarchical FastMoss category ids
Jul 15, 2026
a6aea06
fix: reclaim stale browser display sockets
Jul 15, 2026
3595f8e
feat: cache TikTok account avatars
Jul 16, 2026
031c7f4
fix: prefer reachable browser IP check
Jul 16, 2026
443a52c
fix: use reachable proxy preflight endpoint
Jul 16, 2026
06e2db8
fix: cache avatar during first account binding
Jul 16, 2026
2db7da2
fix: add FastMoss workflow defaults
Jul 16, 2026
88e276a
feat: sort accounts by Feishu user
Jul 16, 2026
120001f
fix: preserve FastMoss product round budget
Jul 16, 2026
39f822e
Merge remote-tracking branch 'origin/codex/proxy-account-pool' into c…
Jul 16, 2026
77c6148
fix: anchor final report to current request
Jul 16, 2026
eccdf0b
feat: automatically recheck unavailable proxies
Jul 16, 2026
c003a26
fix: initialize proxy schema before workers
Jul 16, 2026
3eeb979
fix: confirm ambiguous FastMoss categories
Jul 16, 2026
3d6f09a
fix: resume accounts after proxy recovery
Jul 16, 2026
1e6a87c
fix: qualify FastMoss sample conclusions
Jul 16, 2026
ae96593
fix: clarify manual proxy check action
Jul 16, 2026
fd80f4e
fix: prevent stale proxy checks overriding recovery
Jul 16, 2026
0539aba
feat: show proxy retry countdown
Jul 16, 2026
9ed190a
fix: keep proxy-blocked jobs queued
Jul 16, 2026
62e28bb
feat: separate automatic collection scheduling
Jul 16, 2026
20dacae
feat: link collection targets to Feishu
Jul 16, 2026
000fcda
fix: preserve current chat tool evidence
Jul 16, 2026
947af24
fix: verify FastMoss dual ranking evidence
Jul 16, 2026
2f29f80
fix: queue collection alongside publishing
Jul 16, 2026
a36ce79
fix: sanitize FastMoss ranking filters
Jul 16, 2026
74029db
fix: reserve FastMoss ranking rounds
Jul 16, 2026
d09dfc4
fix: force FastMoss ranking pagination
Jul 16, 2026
91c853f
fix: preserve deterministic search evidence
Jul 16, 2026
6ff2b86
fix: route FastMoss research reports
Jul 16, 2026
c15b717
fix: extract FastMoss segment phrases
Jul 16, 2026
0e60959
fix: force FastMoss sample collection
Jul 16, 2026
2745136
fix: downgrade FastMoss absolute conclusions
Jul 16, 2026
544a0a6
feat: humanize FastMoss research reports
Jul 16, 2026
44bb3a4
fix: keep warm reports evidence-bound
Jul 16, 2026
eebefff
fix: preserve FastMoss report depth
Jul 16, 2026
9ad5110
fix: tolerate proxy IP checker outages
Jul 16, 2026
cc16175
fix: retain FastMoss segments across clarification
Jul 16, 2026
6e71ac4
fix: clean explicit FastMoss segment prompts
Jul 16, 2026
306d955
fix: honor explicit FastMoss category names
Jul 16, 2026
8cbd156
fix: validate publish assets before retry
Jul 16, 2026
8136511
fix: safely recover TikTok publish flow
Jul 16, 2026
27a2bc2
fix: resync failed Feishu collection results
Jul 16, 2026
923fcee
fix: expose Feishu resync errors
Jul 16, 2026
0d9c8dc
fix: resume proxy-delayed publish jobs
Jul 17, 2026
c7d25fd
docs: use server GitHub proxy
Jul 17, 2026
27ce5a3
fix: make FastMoss fallback analytical
Jul 17, 2026
f730f97
fix: clean deleted proxy listeners
Jul 17, 2026
597b534
feat(fastmoss): preserve native evidence ledger
Jul 17, 2026
67368c7
feat: add LAN chat file transfers
Jul 17, 2026
d5c34ed
fix(fastmoss): preserve reports with local validation
Jul 17, 2026
2dc830f
feat: group collection results by task
Jul 17, 2026
671acc0
fix(fastmoss): scrub unsupported launch targets
Jul 17, 2026
ff48fc0
fix(fastmoss): ignore system-only evidence
Jul 17, 2026
3221122
chore: add health-checked beta deployment
Jul 17, 2026
83a520c
fix: remember account collection table
Jul 17, 2026
de1a77f
fix(fastmoss): bound verifier edit scope
Jul 17, 2026
350a35b
fix: remove collection task horizontal scroll
Jul 17, 2026
89fd439
fix: build beta image with host networking
Jul 17, 2026
4d0aad8
feat: add default LAN chat groups
Jul 17, 2026
140807f
feat: allow code-only beta deployments
Jul 17, 2026
402f71f
fix: handle legacy Compose beta recreation
Jul 17, 2026
2df41f4
fix: allow LAN chat access by IP
Jul 17, 2026
0ee9fa3
fix: use group glyph for default chat room
Jul 17, 2026
d53b461
fix: keep restored LAN chat room in sync
Jul 17, 2026
fb8daf6
feat(fastmoss): add workflow evidence envelopes
Jul 17, 2026
1129ef8
feat(fastmoss): organize evidence by workflow entities
Jul 17, 2026
f930c56
fix(fastmoss): validate only high-risk report claims
Jul 17, 2026
2685923
fix: restore mobile LAN chat scrolling
Jul 17, 2026
a4bbe89
feat: raise inline chat media limit to 100MB
Jul 17, 2026
d7ce1f6
fix(fastmoss): advance product evidence workflow deterministically
Jul 17, 2026
3bed193
fix(fastmoss): synthesize reports from compact evidence packet
Jul 17, 2026
39a4101
fix(fastmoss): clean unsupported sample extrapolations
Jul 17, 2026
5091489
fix: add LAN chat media covers and downloads
Jul 17, 2026
146586b
fix: polish LAN chat mobile actions
Jul 17, 2026
d67b30b
fix: contain LAN chat image drafts on mobile
Jul 17, 2026
5f22ccf
fix: stabilize direct Reality proxy runtime
Jul 17, 2026
a1a01cd
fix: wait for TikTok browser page readiness
Jul 17, 2026
ca886dc
docs: clarify server-direct deployment workflow
Jul 17, 2026
85baa8c
fix(fastmoss): make list evidence truncation explicit
Jul 17, 2026
0febada
feat(fastmoss): add authoritative metric registry
Jul 17, 2026
378a505
fix(fastmoss): batch claim verification safely
Jul 17, 2026
594d310
fix(fastmoss): preserve report evidence detail
Jul 18, 2026
bc73909
fix(fastmoss): preserve validated report structure
Jul 18, 2026
65b0591
fix(lan-chat): expire inline media and reduce polling
Jul 18, 2026
71ed617
fix(fastmoss): keep category matching on user terms
Jul 18, 2026
1eb1164
refactor(fastmoss): preserve complete evidence-led reports
Jul 18, 2026
299161b
fix(fastmoss): preserve confirmed segment terms
Jul 18, 2026
b488f82
feat: manage proxy account bindings
Jul 18, 2026
43eea92
feat(lan-chat): queue multi-file uploads
Jul 18, 2026
eb7c83b
fix: improve proxy rebinding entry
Jul 18, 2026
5e3a496
fix: isolate FastMoss report evidence
Jul 18, 2026
b221287
feat: manage shared TikTok products
Jul 18, 2026
ef612fd
fix: give FastMoss reports full evidence context
Jul 18, 2026
1487822
fix: preserve complete MCP results
Jul 18, 2026
fa21575
feat: route analytical reports to V4 Pro
Jul 18, 2026
95622c5
feat: add lossless JSON to Markdown renderer
Jul 20, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,11 @@
.env.*
backups/
data/
data-dev/
videos/
videos-dev/
output/
output-dev/
__pycache__/
*.py[cod]
.pytest_cache/
Expand Down
14 changes: 13 additions & 1 deletion .env.dev.example
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,25 @@ DEEPSEEK_API_KEY=replace-with-deepseek-api-key
SELLERSPRITE_SECRET_KEY=replace-with-sellersprite-secret-key
FASTMOSS_MCP_API_KEY=replace-with-fastmoss-mcp-key

LAN_CHAT_AVATAR_API_URL=
LAN_CHAT_AVATAR_API_KEY=
LAN_CHAT_AVATAR_MODEL=
LAN_CHAT_AVATAR_TIMEOUT=90

WEB_PORT=4003
LAN_HOST=192.168.1.254
REPORT_LAN_HOST=192.168.1.254
REPORT_LAN_PORT=4003
SELLERSPRITE_REDIRECT_PORT=0
HOT_VIDEO_REPORT_SCHEDULER_ENABLED=0
CHAT_INTENT_ROUTER_ENABLED=1
CHAT_INTENT_ROUTER_CONFIDENCE=0.65
CHAT_INTENT_ROUTER_TIMEOUT_SECONDS=15
TIKTOK_PUBLISH_DRY_RUN=1
TIKTOK_PUBLISH_FINAL_CLICK_ENABLED=0
TIKTOK_NATIVE_SCHEDULE_LEAD_SECONDS=1800
TIKTOK_NATIVE_SCHEDULE_MIN_MINUTES=20

API_CACHE_ENABLED=1
API_CACHE_TTL_SECONDS=604800
HF_ENDPOINT=https://hf-mirror.com
HF_ENDPOINT=https://hf-mirror.com
20 changes: 19 additions & 1 deletion .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ DIRECT_VIDEO_UPLOAD_MODE=auto
TIKTOK_MAX_BYTES=2147483648
TIKTOK_PROXY_URL=
TIKTOK_COOKIE=
TIKTOK_PUBLISH_FINAL_CLICK_ENABLED=1
DOUYIN_PROXY_URL=
DOUYIN_COOKIE=
SOCIAVAULT_API_KEY=replace-with-sociavault-api-key
Expand All @@ -35,7 +36,8 @@ AMAZON_MAX_PAGES=1
DEEPSEEK_API_KEY=replace-with-deepseek-api-key
DEEPSEEK_API_URL=https://api.deepseek.com/v1
DEEPSEEK_MODEL=deepseek-v4-flash
DEEPSEEK_CHAT_MODEL=deepseek-v4-pro
DEEPSEEK_CHAT_MODEL=deepseek-v4-flash
DEEPSEEK_REPORT_MODEL=deepseek-v4-pro
SELLERSPRITE_SECRET_KEY=replace-with-sellersprite-secret-key
SELLERSPRITE_MCP_URL=https://mcp.sellersprite.com/mcp
SELLERSPRITE_CHAT_PORT=4101
Expand All @@ -44,6 +46,7 @@ FASTMOSS_MCP_API_KEY=replace-with-fastmoss-mcp-key
FASTMOSS_MCP_URL=https://mcp.fastmoss.com/mcp
FASTMOSS_CHAT_PORT=4102
FASTMOSS_CACHE_TTL_SECONDS=86400
FASTMOSS_LLM_VERIFIER_ENABLED=0
SELLERSPRITE_REDIRECT_PORT=3001
API_CACHE_ENABLED=1
API_CACHE_TTL_SECONDS=604800
Expand All @@ -52,9 +55,24 @@ VIDEO_DAILY_REPORT_COMPLETED_URL=
VIDEO_DAILY_REPORT_TOKEN=
VIDEO_DAILY_REPORT_CALLBACK_TIMEOUT=10
OCR_API_URL=http://127.0.0.1:4000/v1/ocr/extract
FEISHU_CAPABILITY_API_URL=http://127.0.0.1:4000
FEISHU_CAPABILITY_TIMEOUT_SECONDS=15
OCR_SHARED_DIR=/home/openclaw/ocr-shared
OCR_SERVER_SHARED_DIR=/home/openclaw/ocr-shared
CHAT_IMAGE_MAX_BYTES=6291456
CHAT_IMAGE_MAX_COUNT=6
CHAT_CONTEXT_MAX_TOKENS=120000
CHAT_INTENT_ROUTER_ENABLED=1
CHAT_INTENT_ROUTER_CONFIDENCE=0.65
CHAT_INTENT_ROUTER_TIMEOUT_SECONDS=15
CHAT_HISTORY_MESSAGE_LIMIT=20
CHAT_HISTORY_TEXT_MAX_CHARS=8000
CHAT_HISTORY_COMPACT_CHARS=3000
CHAT_TOOL_EVIDENCE_MAX_CHARS=6000
CHAT_RECOVERY_EVIDENCE_MAX_CHARS=32000
LAN_CHAT_AVATAR_API_URL=
LAN_CHAT_AVATAR_API_KEY=
LAN_CHAT_AVATAR_MODEL=
LAN_CHAT_AVATAR_TIMEOUT=90
WEB_PORT=4002
HF_ENDPOINT=https://hf-mirror.com
44 changes: 21 additions & 23 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -236,55 +236,53 @@ Inside Compose:

Do not write generated files into `scripts/` at runtime. Do not commit files from `videos/`, `output/`, `data/`, or `.env`.

## Remote Server and Deployment
## Server-Direct Development and Deployment

Production runs on:
Codex tasks for this repository run directly in the production server checkout:

```text
openclaw@192.168.1.254:~/Video_analyzer/
/home/openclaw/Video_analyzer
```

Treat the current working tree as both the development workspace and the production checkout. Do not SSH or SCP back into `192.168.1.254`, and do not use development-machine SSH keys for this repository.

GitHub repo:

```text
https://github.com/Joe1905/Video_analyzer.git
```

GitHub access rule:
GitHub access rules:

- GitHub `fetch`, `pull`, `push`, and `clone` operations must use the configured proxy path. Default to `http://127.0.0.1:7892`; if that fails, retry once with `http://127.0.0.1:7897`. Prefer explicit `HTTP_PROXY`, `HTTPS_PROXY`, `ALL_PROXY` / lowercase environment variables, or scoped `git -c http.proxy=... -c https.proxy=...` when the proxy URL is available. Do not commit proxy credentials.
- GitHub `fetch`, `pull`, `push`, and `clone` operations must use the server proxy at `http://127.0.0.1:7890`. Prefer explicit `HTTP_PROXY`, `HTTPS_PROXY`, `ALL_PROXY` / lowercase environment variables, or scoped `git -c http.proxy=... -c https.proxy=...`. Do not commit proxy credentials.
- If GitHub HTTPS fails during the initial handshake, record the concrete error and proxy state, then switch to the proxy path or another approved authenticated GitHub path. Do not blindly retry direct HTTPS.

Production deploy workflow:
Server-direct workflow:

1. Make the change locally and verify it.
2. Commit the change locally.
3. Push the commit to GitHub through the proxy.
4. Update the production checkout from GitHub.
5. Rebuild/restart the affected server service and verify the endpoint.
1. Check the current server checkout with `git status --short --branch` and preserve unrelated changes.
2. Make the change directly in `/home/openclaw/Video_analyzer`.
3. Verify the change in Docker Compose using the project name `-p short-video-analyzer`.
4. Commit the verified change in the current checkout.
5. Push the commit to GitHub through the server proxy.
6. Rebuild or restart the affected service directly on the current server, then verify the endpoint or workflow.

Server changes must be synchronized through GitHub. Do not leave manual-only code changes on the production checkout. If GitHub push is blocked by proxy or authentication, stop and report the blocker instead of treating a server-only deploy as complete. If a server-side hotfix is explicitly authorized, copy the exact change back into this repository, commit it, push it to GitHub as soon as access is restored, and update the server from GitHub.
All production changes must still be committed and synchronized through GitHub. Do not leave manual-only or uncommitted code changes in the server checkout. If GitHub push is blocked by proxy or authentication, stop and report the blocker instead of treating the deployment as complete.

Before deploying or changing server files, check both local and server status:
Before changing or deploying files, check the current checkout:

```bash
git status --short --branch
ssh openclaw@192.168.1.254 "cd ~/Video_analyzer && git status --short --branch"
```

Example file deploy:

```bash
scp -i ~/.ssh/openclaw_codex_rsa scripts/web_app.py openclaw@192.168.1.254:~/Video_analyzer/scripts/
```

Then rebuild/restart on the server:
Example rebuild/restart on the current server:

```bash
ssh openclaw@192.168.1.254 "cd ~/Video_analyzer && docker compose -p short-video-analyzer build && docker compose -p short-video-analyzer up -d web"
cd /home/openclaw/Video_analyzer
docker compose -p short-video-analyzer build
docker compose -p short-video-analyzer up -d web
```

Prefer a GitHub-based deploy path over ad-hoc `scp` unless the user explicitly asks for a hotfix.
Do not use `ssh`, `scp`, or a second checkout as part of the normal development or deployment flow.

## Agent Safety Rules

Expand Down
16 changes: 15 additions & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ ARG all_proxy=
ARG NO_PROXY=
ARG no_proxy=

ENV PYTHONDONTWRITEBYTECODE=1 \
ENV DEBIAN_FRONTEND=noninteractive \
PYTHONDONTWRITEBYTECODE=1 \
PYTHONUNBUFFERED=1 \
PIP_NO_CACHE_DIR=1

Expand All @@ -35,8 +36,21 @@ RUN python -c "import video_analyzer, os; p=os.path.join(os.path.dirname(video_a

RUN pip install yt-dlp playwright httpx "scrapling[ai]" \
&& python -m playwright install --with-deps chromium \
&& python -m playwright install chrome \
&& scrapling install

RUN apt-get -o Acquire::ForceIPv4=true -o Acquire::http::Timeout=20 update \
&& apt-get -o Acquire::ForceIPv4=true -o Acquire::http::Timeout=20 install -y --no-install-recommends \
novnc \
websockify \
x11vnc \
xvfb \
&& rm -rf /var/lib/apt/lists/*

RUN chmod 0711 /root \
&& groupadd --system --gid 10001 tikbrowser \
&& useradd --system --uid 10001 --gid tikbrowser --create-home --home-dir /home/tikbrowser tikbrowser

RUN pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn "curl_cffi>=0.15,<0.16"

RUN apt-get update \
Expand Down
14 changes: 14 additions & 0 deletions Dockerfile.sing-box
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
FROM python:3.11-slim AS downloader

ARG HTTP_PROXY
ARG HTTPS_PROXY
ARG SING_BOX_VERSION=1.13.14
ARG SING_BOX_SHA256=aae9172317c61760aae3dafcde889b2e51b7ea590c40d2b3c7ccdeae14b361b6

COPY docker/sing-box/install.py /tmp/install-sing-box.py
RUN python /tmp/install-sing-box.py "${SING_BOX_VERSION}" "${SING_BOX_SHA256}" /out/sing-box

FROM python:3.11-slim

COPY --from=downloader /out/sing-box /usr/local/bin/sing-box
ENTRYPOINT ["/usr/local/bin/sing-box"]
26 changes: 25 additions & 1 deletion docker-compose.dev.yml
Original file line number Diff line number Diff line change
@@ -1,29 +1,53 @@
services:
analyzer:
image: short-video-analyzer-dev:latest
volumes:
- ./videos-dev:/workspace/videos
- ./output-dev:/workspace/output
- ./data-dev:/workspace/data
- ./scripts:/workspace/scripts:ro
- ./sellersprite_mcp_chat:/workspace/sellersprite_mcp_chat:ro
environment:
HOT_VIDEO_REPORT_SCHEDULER_ENABLED: "0"

web:
image: short-video-analyzer-dev:latest
environment:
WEB_PORT: ${WEB_PORT:-4003}
PROXY_POOL_ENABLED: "1"
LAN_HOST: ${LAN_HOST:-192.168.1.254}
REPORT_LAN_HOST: ${REPORT_LAN_HOST:-192.168.1.254}
REPORT_LAN_PORT: ${REPORT_LAN_PORT:-4003}
HOT_VIDEO_REPORT_SCHEDULER_ENABLED: "0"
SELLERSPRITE_REDIRECT_PORT: "0"
PROXY_REALITY_CORE: sing-box
PROXY_REALITY_DEFAULT_FINGERPRINT: safari
SING_BOX_CONFIG_PATH: /workspace/data/sing-box/config.json
SING_BOX_COMPOSE_PROJECT: short-video-analyzer-dev
volumes:
- ./videos-dev:/workspace/videos
- ./output-dev:/workspace/output
- ./data-dev:/workspace/data
- ./scripts:/workspace/scripts:ro
- ./sellersprite_mcp_chat:/workspace/sellersprite_mcp_chat:ro
- ${OCR_SHARED_DIR:-/home/openclaw/ocr-shared}:${OCR_SERVER_SHARED_DIR:-/home/openclaw/ocr-shared}
- /var/run/docker.sock:/var/run/docker.sock

sing-box:
image: short-video-analyzer-sing-box:1.13.14
build:
context: .
dockerfile: Dockerfile.sing-box
network: host
args:
HTTP_PROXY: ${SING_BOX_DOWNLOAD_PROXY:-http://127.0.0.1:7890}
HTTPS_PROXY: ${SING_BOX_DOWNLOAD_PROXY:-http://127.0.0.1:7890}
command: -D /var/lib/sing-box -C /etc/sing-box run
volumes:
- ./data-dev/sing-box:/etc/sing-box
network_mode: host
restart: unless-stopped

sellersprite-redirect:
profiles:
- stable-redirect
- stable-redirect
Loading