Skip to content
Site Opslocal/wechat-editorLive

wechat-editor: the agent owns content, the server owns WeChat format

Our takeFormulas and diagrams survive because they are pre-rendered server-side: headless Chromium via Playwright plus MathJax tex-svg turns inline and display math into inline SVG, Mermaid goes through the same path, and WeChat supports SVG natively so nothing blurs on zoom. The other rule to remember is that publishing is asynchronous — a 200 only means WeChat accepted the submission, and real status has to be polled with freepublish/get.

WeChat Official Accounts strip style blocks, class attributes and external resource references, so syncing a paper deep-read or blog post there is not copy and paste but a format rewrite plus a resource migration. The split: the agent fetches the article, writes the title (max 64 characters) and digest (max 120) and picks a cover; the server converts to inline HTML, uploads images to WeChat's own image service and rewrites URLs, creates a draft via draft/add and submits for publishing when asked.

Codex
Agientry
wechat-editor: the agent owns content, the server owns WeChat format
Site Opslocal/video-crawlerLive

video-crawler: the six gates between a dropped URL and a published item

Our takeDownloading at 1080p and publishing at 720p looks contradictory; it is really quality and bandwidth billed separately, since a platform's own 720p rendition is already a second-generation encode. Covers come from sampling frames at 10%, 33%, 60% and 80% and taking the first non-black one. Two incident-born rules are worth copying: read back everything you wrote (a quoted SQL update once failed silently and the Chinese site served English titles), and launch batches of four or more with setsid fully detached, because SSH drops at five to ten minutes and nohup is unreliable.

robotworld-ingest v2.3.0 is the front door for external content: the user drops a Twitter/X, YouTube or arXiv URL and says collect it, and this skill turns it into something publishable. Of its six stages three are run by scripts (media capture, the two webp derivatives, online verification) and three must be run by an agent (metadata enrichment, paper detail pages, social assets). Video is downloaded at 1080p and published at 720p.

Codex
Agientry
video-crawler: the six gates between a dropped URL and a published item
Site Opslocal/daily-scoutLive

daily-scout: five-source daily discovery, four-dimension triage, human gate

Our takeTriage is explicitly forbidden from downloading media or deep-reading papers. Saving tokens is the secondary benefit; the primary one is refusing to let a machine decide what is worth collecting. The other idea worth more is a redefinition: since 2026-09-04, published means collected plus social assets complete, because a 404 og:image makes crawlers give up permanently and never retry. Stage 2.6 mines the back catalogue — we measured 291 published deep-read papers against a single social rewrite row.

robotworld-daily-cron v3.2.0 is the site's content engine: it sweeps Twitter, GitHub, HuggingFace, official blog RSS and arXiv, scores each candidate on novelty, freshness, relevance and impact into P0/P1/P2, and writes it into the content_queue_items confirmation queue (pending, confirmed, done or rejected, idempotently deduplicated by URL).

Codex
Agientry
daily-scout: five-source daily discovery, four-dimension triage, human gate
Site Opslocal/paper-searchLive

paper-search: the deliberately thin first leg of a three-leg paper relay

Our takeThe deliverable is four lines you can decide on in thirty seconds: arXiv ID and title, a one-line summary the agent wrote itself, a relevance call with reasons, and a link — the reasons column matters more than the title. The transferable idea is asymmetric throttling: search may list twenty candidates at once, ingestion is confirmed one at a time, deep reading happens one paper at a time, and auto-batch ingest followed by batch-generated detail pages is forbidden.

Search, ingest, then deep-read one paper at a time — this skill owns only the first leg and deliberately makes no judgement; it lays the candidates out so a human can. Three routes: search_papers.py for the daily path, the arXiv API directly, and defuddle parse for a known ID. Eleven preset topics and two layers of relevance filtering: an arXiv category allowlist plus hard exclusion keywords, then one more pass by the agent against the site's editorial scope.

Codex
Agientry
paper-search: the deliberately thin first leg of a three-leg paper relay
Site Opslocal/paper-analystLive

paper-analyst: a six-round deep read per paper, with hard gates against templated hallucination

Our takeThe first property of this skill is not that it can write analysis but that it cannot take the shortcut: at least 4000 words, 5 formulas, 3 figures and 2 tables, with quality_score no lower than 8.0 — gates, not suggestions — and every page passes machine scoring, metadata integrity and human sign-off. Any vertical content site can copy this one idea: express quality as verifiable artefacts rather than as a plea for diligence.

paper-detail-generator v5.2.0 writes one bilingual deep-read page per paper: one paper, one task, status running for the whole six-round workflow. It exists because of an incident — v1 once used a script to batch-generate 207 detail pages from title plus abstract, and 205 of 214 failed the quality bar with invented formulas, references to figures that did not exist and identical structure. That script was deleted and an iron law was written over it.

Codex
Agientry
paper-analyst: a six-round deep read per paper, with hard gates against templated hallucination
Site Opslocal/investment-analystLive

investment-analyst: the simulated-ETF quantitative line that runs every day

Our takeThe first principle is strict separation of strategy from execution: strategy.py answers target weights only, while execution.py owns closing-auction fills, limit-up and limit-down gates and blocked-order redistribution — bypass execution and the backtest numbers stop being comparable. The daily run stays under two seconds via three short-circuits, including an input-fingerprint check that exits with skip. Both real incidents were volume units, and the correct fix is deriving the factor from turnover rather than memorising a board table.

etf-rebalance v3.0.0 maintains RWHL, a simulated ETF of humanoid-robotics leaders (the page carries a built-in disclaimer; it is not a real fund). The daily SOP has a fixed order: qualitative overlay (human before machine), incremental quote sync, redrawn synthetic candles, a five-strategy backtest, today's rebalance, an appended history row, and POST /api/etf/portfolio. It is pure standard library, because production has 3GB of RAM.

Codex
Agientry
investment-analyst: the simulated-ETF quantitative line that runs every day
Site Opslocal/blog-collectLive

blog-collect: turn an external blog URL into a long-term hosted bilingual article

Our takeEditorial criteria live in the skill rather than in memory, because selection scope is the first thing to drift in a pipeline that runs for months. Two rules earned the hard way are worth copying: a cover must never be an .mp4 (cover_image renders as an img src, and two cards went fully black on 2026-08-25), and a bare angle bracket inside KaTeX must be written as an HTML entity, or the formula truncates there and the rest of the article silently disappears without an error.

Our blog ingestion line, v2.2.0, executed in the digital-twin office by blog-crawler. Every image and video in the original is downloaded and served locally, the body is translated and adapted in full by the agent per article (never a summary), and publishing runs publish_blog.py into POST /api/blog/media and /api/blog/publish, landing in the Postgres articles table that the frontend reads at runtime. Editorial scope is hard-coded into the skill.

Codex
Agientry
blog-collect: turn an external blog URL into a long-term hosted bilingual article