Turn "an A-share company (or a finance question)" into a full set of publishable materials for the "A-Share Listed Company Quick Overview" series: official data verification → objective script → Lingyi voiceover → horizontal + vertical finished videos → 4-ratio covers → platform copy. The goal is give a company code or topic and it produces everything end to end。
This skill is the Finance domain layer, sitting on top of blockframe-video(general video orchestration: compositing / rendering / all-ratio covers / checklist), adding only the finance-specific things it lacks. How videos are rendered and how covers are fully matched is left to blockframe-video; this skill manageswhere data comes from, how standards are upheld, how content is arranged, and what the series looks like。
Project directory structure: one topic per project directory (studio/videos/<YYYYMMDD-slug>/), with the horizontal and vertical versions as the build-h / build-v two subdirectories inside it, sharing the upper-level audio/ assets/ fonts/;research.md / script.md / narration.txt / renders/ / covers/ / publish.md / blog.md with everything in place.No more scattering into -cn/-3x4/-16x9 sibling directories. For the complete structure, see blockframe-video's "Project Directory Structure".
Three iron rules (violating any one makes this episode worthless)
- Numbers must be checked against official originals; do not trust retellings. Download periodic report PDFs →
pdftotext -layout→grepverify every key number. Numbers from sub-agents/media are always checked back against the originals. - Present objectively; do not constitute investment advice. No valuation, no target price, no buy/sell hints, no biased words like "worth watching / undervalued". Fixed disclaimer freeze-frame at the end.
- Market narratives must be labeled. Attributions like export controls, domestic substitution, and macro tailwinds that arenot stated by the company itselfmust all be explicitly marked "market analysis · not company wording" and isolated on screen with a prominent banner.
Division of labor
| Who | What to do |
|---|---|
| This skill (you) | Data collection and verification, objective standards red lines, financial report content templates, series identity, platform copy standards |
blockframe-video |
Produce the entire video material set from the script: BlockFrame compositing, horizontal/vertical rendering, all-ratio covers, delivery checklist |
listenhub-tts |
Only borrow its voice list / speaker selection and dependency conventions;this series is locked to Lingyi at 1.2x, and Lingyi does not output built-in subtitles, so audio + precise timeline are instead handled by this skill's regen_tts.py sentence-by-sentence synthesis(see Step 3), not listenhub-tts's subtitle main path |
Series identity "A-Share Listed Company Quick Overview" (every episode looks the same)
- Design: BlockFrame (off-white background
#FFFDF5+ pink/blue/green/yellow neon color blocks + thick black outlines + hard shadows, poster feel). - Voiceover:ListenHub Lingyi,
speakerId = zh-female-wanwanxiaohe-moon-bigtts-fa851a51,1.2x speed(ffmpegatempo=1.2with pitch preserved). Fixed for the series; do not change. - Header brand bar:Left "A-Share Listed Company Quick Overview" pink chip, right "SH·<code>" green chip (Shanghai SH / Shenzhen SZ).
- Stance:Objective data sharing, not investment advice; end with a one-sentence summary + balanced annual report risk section + fixed disclaimer.
- Platform mapping (fixed by user):Horizontal 16:9 → Bilibili / YouTube;Vertical 3:4 → Douyin / Xiaohongshu / WeChat Channels。Produce both versions.
Two topic templates (choose based on input)
① Individual stock quick overview (input = one company) — Objective presentation, fixed 8 blocks: Opening card → Company profile → Main business → Product lines (annual report lineage + official website on-sale dual source) → Customers and scenarios → Financial trends (multiple quarters) → Top ten tradable shareholders → Closing + disclaimer.
② Deep dive / Attribution (input = one question, e.g. "Why did a certain stock surge") — Sectioned analysis, official narrative mainline: Question-style opening → Sections 1…N (e.g.: How big is the turnaround / Where did the money come from / Who is buying / What does the official say / Operating signals / Industry background [market analysis] / The other side of risk) → Closing + disclaimer. Deep dive typemust be divided into sections(video chapters + description timestamps).
Step 1 · Data collection and verification (the core of this skill, do not skip)
Data source priority
- Cninfo(
cninfo.com.cn/dataclouds.cninfo.com.cn) — periodic reports / announcementsoriginal PDF, highest priority. - Exchange disclosures(Shanghai Stock Exchange / Shenzhen Stock Exchange), company announcements, company official website (product / brand materials).
- Authoritative financial media(Cailian Press, Securities Times, Yicai, eCompany) — only as supplements and timelines, marked [third-party].
- Self-media / research report opinions — Caution, always marked [third-party] or [questionable], never stated as fact.
Official data checklist that must be mined (individual stock quick overview + attribution both draw from here)
- Revenue / net profit attributable to parent / non-recurring profit and loss / year-on-year, and timing of turnaround to profit/first profit
- comprehensive gross margin;revenue table by product / by business(including amounts for each line, year-on-year, gross margin)
- main product output / sales volume / inventory table(sales volume expansion is the official hard data for "how much was sold")
- by region / by sales model (direct sales vs distribution)
- Top five customers: total proportion + amount for each(even if anonymized) + explanation of new/existing customers
- inventory details(raw materials / work in progress / finished goods / goods shipped, period-end vs period-beginning) + proportion of total assets + write-downs
- Accounts receivable, contract liabilities, operating cash flow; top five / largestsuppliershare of procurement
- R&D investment and proportion; private placement / major contracts ("major sales contract" checkbox, "not applicable" = no single large order)
- Risk factors section (customer concentration / supply chain / inventory / entity list / competition) copied verbatim
- Top ten tradable shareholders + number of shareholders + actual controller's shareholding (essential for individual stock quick overview)
Verification iron rules (follow them, don't just trust sub-agents)
# 1) 从 cninfo 下年报/季报原件
curl -sSL -A "Mozilla/5.0" -o report.pdf "<cninfo PDF url>"
# 2) 抽文本
pdftotext -layout report.pdf report.txt
# 3) grep 逐个核对关键数字(照抄原文,记页码)
grep -nE "453\.21|6,476,855,244\.59|88\.66|127,673" report.txt
You can dispatch research sub-agents for broad search + initial screening, butthe key numbers must ultimately be grep-verified against the originals yourself(sub-agents will paraphrase and skew things).
Source tier labeling (throughout prep → script → visuals)
- [Official] company periodic reports / original announcements
- [Third-party] analysis and timelines from authoritative media / research reports
- [Questionable] unverified, inconsistent, or anonymous speculation
Red lines (cross them and this episode is dead)
- Export controls / domestic substitution / macro tailwinds = market analysis, whereas the company's annual report writes "entity list" assupply-side risk, not a demand tailwind; you cannot present market attribution as the company's own wording. On screen, use aprominent banner"⚠ The following is market analysis · not company wording" to isolate the entire section.
- Do not guess the true identity of anonymous customers(media speculation like "ByteDance/Alibaba," etc. is not treated as fact).
- Do not fabricate what the annual report does not disclose: internal segment revenue within the cloud product line, the revenue contribution of specific on-sale/new models, new product mass-production milestones — if you cannot dig it up, say plainly "the annual report only discloses down to level X."
- Use typographic name cards for real people's likenesses(name + title + background card), do not grab web images (copyright + likeness rights, especially for monetized content); for company/product images useofficial assets(official website screenshots / actual chip photos / brand logo packs), editorial use.
- In the deliverables,list the questionable items separately, for easy review.
Save prep material to disk
research.md(chunked + source-labeled item by item + questionable list), and save the verification script to disk, for easy reuse and traceability next time.
Step 2 · Script (content standards)
- Question-style opening hook(user preference): open with a contrast or suspense + a three-part question. Example: "A company that lost X hundred million last year, this year revenue rose N-fold and it turned profitable for the first time — how did it do it? What makes the money? Who is buying? Today we'll objectively break it down using only public financial reports. This episode is just data sharing, not investment advice."Do notuse an abstract framework-style opening.
- Official data as the main basis, presented objectively; every number can be traced back to an annual report page / reporting period.
- Chapterized(attribution type): each chapter has a small heading, paired with a "chapter badge" (black-background number + yellow-background title); the chapter start = the cue time of the first sentence of that section, producingtimestamps for descriptions。
- Ending: a one-sentence summary (official wording + structure + drivers + the other side) → state plainly that the industry narrative is market analysis → "all of the above comes from public financial reports, presented only" → disclaimer freeze frame (all information in this video comes from public sources, is shared objectively only, and does not constitute any investment advice. Markets carry risk; decisions require caution).
- Writing style: run through the user's writing style twice(once for punctuation + once for sound), then runpolyphonic character scan(before feeding TTS). Style sources follow the parsing ladder: writing style skill (e.g.
personal-chinese-writing-style) → memory → built-in baseline; if there is a skill, thenUse the Skill tool to invoke, don't hand-write it. Delegate the details to blockframe-video's Step 0 / listenhub-tts. - Write the script to disk
script.md; at the same time producepure voiceovernarration.txt(write percentages as "X percent", remove or rewrite hard-to-read English model abbreviations, to help TTS).
Step 3 · Voiceover (Lingyi 1.2x + precise per-sentence timeline · important)
ListenHub with the Lingyi voice /v1/speech does not output built-in subtitles, so you can't directly get a per-sentence timeline.Don't use "scale another voice's subtitles to approximate"— it accumulates drift and the visuals lag (been there). The correct approach synthesize each sentence separately:
每句单独 POST /v1/speech({"scripts":[{content,speakerId}]},端点 api.marswave.ai/openapi/v1/speech)
→ 每句拿回音频,ffprobe 量精确时长 → 按序拼接成整段 → 累加时长 = 每句精确出现时间
→ 据此重排场景与揭示动画 → 整段再 atempo=1.2 提速、SRT 时间除以 1.2
See the driver script scripts/regen_tts.py(per-sentence synthesis + concatenation + output precise SRT + 1.2x). Zero error, no reliance on ASR, no on-screen subtitles (vertical short videos don't burn in subtitles; SRT is only used for scene alignment). After the video is donereview the audioto catch polyphonic characters.
First split sentences + parse pause markers(regen_tts.py read /tmp/req.json and /tmp/pauses.json):
python3 <listenhub-tts>/scripts/srt_helper.py buildreq narration.txt \
zh-female-wanwanxiaohe-moon-bigtts-fa851a51 --model flowtts \
--pause-map /tmp/pauses.json > /tmp/req.json
python3 scripts/regen_tts.py <episode-dir> # 逐句合成,按 pauses.json 在段间插静音
Pause / breathing rhythm:narration.txt use blank lines (paragraph 0.8s) / [停 X](0.5 after key numbers, 0.4 before transitions) to mark pauses; markers don't go into TTS;regen_tts.py insert silence during concatenation, converted at 1.2x, so in the final video it's exactly the set number of seconds with zero timeline drift. For finance scripts especially, it's recommended to leave 0.8 - 1.2s beforeeach chapter badgeto let viewers switch topics. See details in listenhub-tts 's "Step 0.7 · Pause rhythm".
Step 4 · Final video (delegate to blockframe-video, output both versions)
- Horizontal 16:9:
--resolution landscape-4k(true 4K supersampling). - Vertical 3:4: native 1080×1440
--quality high+ lanczos upscaling (3:4 has no 4K preset;don't usezoom:2, see blockframe-video gotcha). - Chapterization: one "chapter badge" scene marker per chapter (deep-dive type).
- Finance visual components(on top of the BlockFrame kit):
- Data big-number poster (revenue/net profit/gross margin in huge type)
- Positive/negative diverging bars(net profit turning profitable: losses downward, profits upward, shared zero axis — positive and negative must have a shared zero axis, don't place loss bars and profit bars each on their own)
- Horizontalcustomer rankingbar chart (top five with amounts one by one)
- Inventory/raw material comparison bars (stockpiling signal)
- Risk card(all labeled "annual report original text")
- Market analysis banner(isolate the external attribution section)
- Official websitechip/product real photos(official assets, with a small "image source" label)
- Both versions share the same audio + precise timeline; scene switches align to cues with zero drift; loudness normalized to -14 LUFS.
Step 5 · Cover (delegate to cover-design)
Art style, theme→composition recipe, per-ratio layout, platform safe zones / 1:1 grid cropping / 120px readability three checks — all in cover-design, not repeated at this layer. Here we only addfinance-specific content guidelines:
-
Hook ≠ credibility. TITLE: the disclosed fact that makes people stop scrolling ("Search all the top ten shareholders, and you can't find the actual controller");
营收连涨三年 · 一季度 +47%is credibility, downgrade to QUALIFIER. -
The title red line also applies to the cover: only "things that have already happened in the financial report" may appear; "what you should do about it" must never appear.
-
How to choose the key visual: follow
cover-design's "theme → composition recipe" table (financial growth → rising bars + curve; chip company → core component + traces connecting to end devices). -
Don't hand precise numbers to the image model: when accurate percentages/prices/trademarks must appear on the cover, that part should use
cover-design/scripts/render-cover.sh's HTML→PNG precise typesetting; or leave the numbers to the video and body text, and put only the hook on the cover. -
One line of disclaimerin the lower left:
客观数据分享 · 不构成投资建议. The lower right is reserved for the platform duration badge. -
Don't cram it full, don't pile up source corner marks(user preference: concise information, highlight the key points).
-
Covers uniformly use
cover-design(codex + gpt-image hand-drawn editorial style, see its "theme → composition recipe" table).The only exception: when precise percentages, prices, or real trademarks must appear on the cover, that part should instead usecover-design/scripts/render-cover.sh's HTML→PNG precise typesetting, or leave the numbers to the video and body text. Blog covers also usecover-design, seereferences/blog.md。
Step 6 · Platform copy
- Video title: suspense + objectivity coexist (e.g., "Revenue rose more than 4x in a year, where did the money come from? | Objective breakdown based only on official financial reports [A-share listed company quick look 0X]"). Do not use exaggerated/inducing words.
- Description: one objective overview + ⏱ chapter timestamps + 📌 data sources + ⚠ disclaimer.
WeChat official account article title (high clicks × compliance, don't use abstract hookless ones like "objective data roundup")
Principles:both appeal and objective compliance are needed. Abstract qualitative words ("objective data roundup") are both hookless and flat; the three most effective moves within the compliance range — ① specific numbers ② factual contrast ③ list/value promise. Keep "objective / only look at financial reports / only present" ascredibility endorsement, not as the main hook. Titles should be 20-30 characters, contain ≥1 number, can use 「」 for emphasis, and can all add the series prefix "[A-share listed company quick look]".
One-sentence red line: only "things that have already happened in the financial report" may appear in the title; "what you should do about it" must never appear.
| ✅ Usable (compliant, enhances credibility) | ❌ Avoid (non-compliant / destroys credibility / platform ban) |
|---|---|
| Disclosed precise numbers (450 million, 2 billion, 4x, 28.35%) | Rise/fall or price predictions (will it rise, target price, next X) |
| Accounting fact terms: turned losses into profits, first profit, revenue structure, customer concentration, major shareholder | Buy/sell action hints: bottom fishing, get on board, worth buying, opportunity is here, strike gold |
| Neutral factual contrast (from loss to profit, from standing still to 4x) | Return promises / exaggeration: double, get rich overnight, guaranteed profit, wealth code |
| Source endorsement: in the financial report, original annual report, official website data, only present | Shock-style / hype: shocking, astonishing, revealing, inside story, exclusive scoop |
| Curiosity gap (where the money came from in the year of first profitability, where the 99% comes from) | Manufactured anxiety / absolutes: must-watch or you'll miss out, last chance |
| Time-sensitive scarcity facts: first time, single quarter, just-disclosed quarterly report | Leading questions (can I buy now, can I still get in) |
Fill-in-the-blank title template (applies to any company,{} fill in only disclosed facts and figures, always use neutral verbs like review/watch/display/sort/read, never fill in gains/losses, buy/sell, target price, or good/bad judgments):
- Numeric contrast:
【A股上市公司速览】{公司}({代码}):从{旧数字}到{新数字},{一句客观承诺}— e.g.: From a 450 million loss to a 2 billion profit, a financial report review of an AI chip company - List roundup:
【A股上市公司速览】{公司}({代码}):{N}张图/{N}个数字看完{一句行业定位}— e.g.: 8 charts to finish a financial report of a domestic AI chip company - Curiosity gap:
【A股上市公司速览】{公司}({代码}):{一个反常事实},{到底/背后是什么}— e.g.: 99% of 6.5 billion in revenue comes from the same product line - Question and answer:
【A股上市公司速览】{公司}({代码}):{谁/靠什么/卖给谁}?{一句事实答案}— e.g.: Who is the largest shareholder? The answer is the founder himself - Source endorsement:
【A股上市公司速览】{公司}({代码}):只看财报和官网,{中性动词}这家公司 - Identity代入:
【A股上市公司速览】{公司}({代码}):关注{行业/主题}的,这份数据值得存一份 - Three facts in parallel:
【A股上市公司速览】{公司}({代码}):{事实1}、{事实2}、{事实3}— e.g.: Revenue up 4x, first profitability, highly concentrated customers - Timeliness statement:
【A股上市公司速览】{公司}({代码}):刚披露的{报告名},{一个精确同比数字}
When filming/postingGive 3-5 candidatesLet the user choose, prioritizing numeric contrast + list promise (the most stable compliant hook).
- Tags: company name / ticker / A-shares / sector / industry / financial report review / series name.
- Chapter timestamps: shared by both versions (same audio timeline).
- Ending/description followsthe user-provided fixed promotional templateappended (membership / sponsorship / playlist links); the template is provided by the user, this skill does not include one.
Step 7 · Companion blog (optional deliverable)
After the video is finished, a blog on the same topic is often produced (blog.md + blog-images/):editorially hand-drawn cover + refined data charts + data tables + objective body text, with the same standards as the video. Body writing (can dispatch a sub-agent, locked down by six red lines), cover using codex-cli to call gpt-image generation (subtitle placed onstock ticker not date, hero-center centered), data charts precisely rendered with HTML→PNG (numbers must be verified, color scheme editorial style rather than BlockFrame candy colors), and the trade-offs of Chart.js/D3/hand-written SVG — all see references/blog.md。
Delivery checklist (this skill's definition of "done")
-
research.md: official data preparation, each item source-labeled [official/third-party/questionable] + questionable list - Key numbers personally grep-verified against official originals(not just trusting sub-agents/media)
-
script.md+narration.txt: question-led opening, official sources primary, chapterized, disclaimer ending; two passes of writing style (skill → memory → baseline) + polyphonic character scan - Voiceover: Lingyi 1.2x, sentence-by-sentence synthesis to get precise timeline
- Horizontal 16:9 master (4K) + Vertical 3:4 master, both at -14 LUFS loudness
- 4 aspect ratio covers: 3:4 / 9:16 / 16:9 / 4:3 (this series does not produce 16:10; streamlined information, highlighting key points)
- platform copy: title / description / tags / chapter timestamps; platform mapping (horizontal→Bilibili·YT, vertical→Douyin·Xiaohongshu·WeChat Channels)
- For final acceptance finance profile(skip 16:10):
bash <blockframe-video>/scripts/check-deliverables.sh <slug-dir> long finance - (optional) companion blog: edited cover + data charts + data tables + objective main text, same standards as the video (see
references/blog.md) - Throughout the entire piece, maintain: official sources first, label market narratives, no valuation-based buying or selling, disclaimer fixed in place
- Do not auto-publish, do not auto-commit (wait for user instruction)
Gotchas (finance-specific)
- Numbers must be verified against the original document. Sub-agents and media will skew the standards (e.g., 2024 net loss attributable to parent 4.43 vs 4.52 hundred million) — the original text in the annual report comparison column prevails.
- Market narratives must be strictly labeled. H20 controls → benefiting can only be stated as "the market generally believes / the timeline matches"; the company's annual report does not attribute it this way.
- For precise synchronization, use sentence-by-sentence synthesis(Lingyi does not output subtitles); do not use scaling as an approximation.
- Positive and negative charts must share a zero axis, do not let loss bars and profit bars each be placed on their own (you will not be able to tell positive from negative).
- Text on color blocks should be black(BlockFrame); do not use white for loss value labels (invisible on a white background, we have been burned by this).
- Use name cards for real people, official images for companies/products(copyright + portrait rights).
- Do not make up things not disclosed in the annual report(cloud internal segment revenue, contribution of new models); explicitly state "only disclosed down to level X".
Out of scope
- Specific video rendering / full cover assembly / mechanical delivery checklist →
blockframe-video。 - Voiceover / subtitles mechanics →
listenhub-tts。 - Investment advice / valuation / stock recommendations → Never do(the stance of this series).