daily-brief
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseBriefast 每日晨報
Briefast Daily Pre-Market Report
每個交易日開盤前依序完成以下四步。只送內容,禁止產生或呼叫 Artifact DSL。
Complete the following four steps in sequence before the market opens on each trading day. Only submit content; generating or calling Artifact DSL is prohibited.
執行前檢查
Pre-Execution Checks
-
從執行工作區根目錄的讀取設定。這是設定的唯一來源,不從環境變數取值,也不讀 skill 目錄下的檔案。格式為每行一組
.env:KEY=VALUEBRIEFAST_URL=https://briefast.example.com BRIEFAST_API_KEY=在後台建立的金鑰是範本,複製到工作區根目錄改名skills/daily-brief/.env.example後填入真值。.env -
若不存在,或
.env與BRIEFAST_URL任一缺漏、只含空白,立即停止。明確回報缺少哪一項,不蒐集、不組稿、不 POST。BRIEFAST_API_KEY -
不顯示、記錄或回傳完整 API key。
-
以台北時區決定報告日期與。
generated_at -
交易日閘門:通過上述檢查後、開始蒐集之前,先以台北時區的當天日期查證是否為台股交易日。判定休市就立即結束——不蒐集、不判讀、不組稿、不 POST,並在執行回報中說明休市原因(週末,或行事曆條目名稱)。判斷只依下列可查證規則,不得憑記憶或常識推斷:
-
週六、週日一律視為休市,不需查端點。
-
其他日期以證交所行事曆端點查證:
https://openapi.twse.com.tw/v1/holidaySchedule/holidaySchedule回應的是民國格式(如Date即 2026-01-01)。條目分兩類:1150101或Name載明「市場無交易」「放假」「補假」的是休市日;「開始交易日」「最後交易日」這類資訊性條目本身是交易日,不得誤判為休市。平日且沒有對到任何休市條目,就是交易日,照常執行。Description -
平日查證端點失敗就重試一次,仍失敗視為無法確認休市,照常執行完整流程,並把端點失敗列入執行回報。此請求發生在蒐集開始之前,與批次 2 的 TWSE 節流序列不同時進行,不需併入其間隔規則。
-
閘門的查證過程與端點成敗只進執行回報,依「蒐集機制不外露」的規則,不得出現在報告內容。
-
-
Read configurations from thefile in the root directory of the execution workspace. This is the only source of configurations; do not retrieve values from environment variables or read files in the skill directory. The format is one
.envpair per line:KEY=VALUEBRIEFAST_URL=https://briefast.example.com BRIEFAST_API_KEY=Key created in the backendis a template; copy it to the workspace root directory, rename it toskills/daily-brief/.env.example, and fill in the actual values..env -
Ifdoes not exist, or either
.envorBRIEFAST_URLis missing or contains only whitespace, stop immediately. Clearly report which item is missing; do not collect news, draft the report, or send a POST request.BRIEFAST_API_KEY -
Do not display, record, or return the full API key.
-
Determine the report date andusing Taipei Time Zone.
generated_at -
Trading Day Gate: After passing the above checks and before starting news collection, verify whether the current date (in Taipei Time Zone) is a Taiwan stock trading day. If it is a non-trading day, terminate immediately—do not collect news, analyze, draft the report, or send a POST request, and explain the reason for the market closure (weekend, or the name of the calendar entry) in the execution report. Judgment must follow only the verifiable rules below; do not rely on memory or common sense:
-
Saturdays and Sundays are always considered non-trading days; no need to check the endpoint.
-
For other dates, verify using the TWSE holiday schedule endpoint:
https://openapi.twse.com.tw/v1/holidaySchedule/holidayScheduleThein the response uses the Minguo calendar format (e.g.,Datecorresponds to 2026-01-01). Entries are divided into two categories: those with1150101orNameindicating "no market trading", "holiday", or "make-up holiday" are non-trading days; informational entries such as "start of trading period" or "last trading day" are trading days and must not be misjudged as non-trading days. Weekdays that do not match any non-trading entries are trading days; proceed as normal.Description -
If verifying the endpoint fails on a weekday, retry once. If it still fails, treat it as unable to confirm closure, proceed with the full process as normal, and include the endpoint failure in the execution report. This request occurs before starting collection, and is not performed concurrently with the rate-limited sequence of TWSE requests in Batch 2; do not apply the interval rules of that batch.
-
The verification process and endpoint success/failure of the gate are only included in the execution report. In accordance with the "collection mechanism not disclosed" rule, they must not appear in the report content.
-
1. 蒐集產業與股市新聞
1. Collect Industry and Stock Market News
時間窗口
Time Window
蒐集從上一份報告的 到現在這段時間內的新聞。
generated_at用唯讀端點取得上一份報告的 ,不要憑印象或猜測:
generated_atbash
curl --silent --show-error \
--output previous.json \
--write-out '%{http_code}' \
--header "Authorization: Bearer ${BRIEFAST_API_KEY}" \
"${BRIEFAST_URL%/}/api/report/2026-08-06"日期從台北時區的前一個交易日起算,回 就再往前一天,最多往前查 5 天。取到 就以 的 為窗口起點;5 天內都是 (首次執行或長假後)就以過去 24 小時為窗口。 比照第 4 步處理,停止並回報。
404200previous.jsongenerated_at404401Collect news from the of the previous report to the current time.
generated_atRetrieve the of the previous report using a read-only endpoint; do not rely on memory or guesswork:
generated_atbash
curl --silent --show-error \
--output previous.json \
--write-out '%{http_code}' \
--header "Authorization: Bearer ${BRIEFAST_API_KEY}" \
"${BRIEFAST_URL%/}/api/report/2026-08-06"Start the date from the previous trading day in Taipei Time Zone. If a is returned, check the day before, up to 5 days back. If a is returned, use the in as the start of the window; if all 5 days return (first execution or after a long holiday), use the past 24 hours as the window. For , handle it as per Step 4: stop and report.
404200generated_atprevious.json404401分批蒐集
Batch Collection
蒐集分五個批次。每批明確負責一組端點,各自回報自己的取得筆數——沒有數字就代表這批沒做完。清單一律從指定端點取得,不從入口網站首頁自行找新聞:首頁是編輯檯排版,會漏掉窗口內的中小新聞。
**五批針對不同主機,可以同時發出,不必等前一批做完。**只有證交所批次內部的兩個請求要維持序列與間隔——那個限制是對 TWSE 主機的,不是對批次的。
平行執行不會放寬計數要求:關卡在判讀之前,五批全部回報齊全才能彙整、才能開始判讀。這裡的「回報齊全」包含失敗——某批抓不到就記下失敗與原因,那也是一份回報;沒有任何一批可以無聲消失。
Collection is divided into five batches. Each batch is responsible for a specific set of endpoints, and must clearly report the number of items obtained—no number means the batch is incomplete. News lists must always be retrieved from the specified endpoints; do not search for news on the portal homepage on your own: the homepage is editorially formatted and may miss small-to-medium news within the window.
The five batches target different hosts and can be initiated simultaneously; there is no need to wait for the previous batch to complete. Only the two requests within the TWSE batch need to maintain sequence and intervals—this restriction applies to the TWSE host, not to batches.
Parallel execution does not relax the counting requirement: before analysis can begin, all five batches must report their status completely. "Complete reporting" includes failures—if a batch cannot retrieve data, record the failure and reason; this is also a valid report. No batch can disappear without a trace.
批次 1:鉅亨網(主來源)
Batch 1: Cnyes (Primary Source)
六個分類的列表 API, 代入下表值:
{分類}https://api.cnyes.com/media/api/v1/newslist/category/{分類}?limit=30| 分類 | 內容 | 用途 |
|---|---|---|
| 台股 | 個股判讀主力 |
| 頭條 | 跨界大事 |
| 科技 | 科技分類 |
| 台灣總經 | 金融分類 |
| 房產 | 房地產分類 |
| 國際股市 | 只寫入 |
列表回應的每個項目已含完整內文()、相關股票代號()與發布時間戳(),不需要再抓詳情頁。
contentstockpublishAt本批要寫下: 六個分類各取得幾則、其中未讀幾則。
Six category list APIs, substitute with the values in the table below:
{category}https://api.cnyes.com/media/api/v1/newslist/category/{category}?limit=30| Category | Content | Purpose |
|---|---|---|
| Taiwan Stocks | Main source for individual stock analysis |
| Headlines | Cross-sector major events |
| Technology | Technology sector |
| Taiwan Macro | Finance sector |
| Real Estate | Real estate sector |
| Global Stocks | Only write to |
Each item in the list response already contains full content (), related stock symbols (), and publication timestamp (); there is no need to retrieve the detail page.
contentstockpublishAtFor this batch, record: the number of items obtained and the number of unread items for each of the six categories.
批次 2:證交所
Batch 2: TWSE
兩個資料集,整包拉回後依時間窗口過濾:
- (重大訊息)
https://openapi.twse.com.tw/v1/opendata/t187ap04_L - (月營收)
https://openapi.twse.com.tw/v1/opendata/t187ap05_L
TWSE 對高頻請求會鎖 IP,這批遵守:請求序列執行、間隔至少 5 秒,不並行也不連續重試;遇 或連線被拒等 60 秒重試一次,仍失敗就停止再打,依下方把關規則當作次要來源失敗處理。
429本批要寫下: 兩個資料集各有幾筆落在時間窗口內。
Two datasets; retrieve the entire package and filter by the time window:
- (Major Announcements)
https://openapi.twse.com.tw/v1/opendata/t187ap04_L - (Monthly Revenue)
https://openapi.twse.com.tw/v1/opendata/t187ap05_L
TWSE blocks IPs for high-frequency requests. For this batch, comply with the rules: execute requests sequentially with an interval of at least 5 seconds, do not execute in parallel or retry consecutively; if or connection rejection occurs, wait 60 seconds and retry once. If it still fails, stop making requests and handle it as a secondary source failure per the rules below.
429For this batch, record: the number of items in each dataset that fall within the time window.
批次 3:工商時報
Batch 3: CTEE
六個分類的 RSS, 代入 (要聞)、(證券)、(金融)、(產業)、(房市)、(科技):
{分類}policystockfinanceindustryhousetechhttps://www.ctee.com.tw/rss_web/livenews/{分類}從 RSS 取得文章網址後以一般 HTTP 抓內文。分類頁 HTML 會回 403,RSS 不會,不需要無頭瀏覽器。
本批要寫下: 六個分類各有幾則未讀。
Six category RSS feeds, substitute with (Top News), (Securities), (Finance), (Industry), (Real Estate), (Technology):
{category}policystockfinanceindustryhousetechhttps://www.ctee.com.tw/rss_web/livenews/{category}Retrieve article URLs from the RSS feed and fetch the content using regular HTTP requests. The category page HTML returns 403, but RSS does not; no headless browser is required.
For this batch, record: the number of unread items for each of the six categories.
批次 4:中央社、科技新報、自由時報
Batch 4: CNA, TechNews, LTN
| 來源 | 清單端點 | 內文取得 | 重點 |
|---|---|---|---|
| 中央社 (CNA) | | 文章頁一般 HTTP 抓取 | 財經與產業新聞 |
| 科技新報 (TechNews) | | 文章頁一般 HTTP 抓取(feed 不含全文) | 科技產業新聞 |
| 自由時報 (LTN) | | 文章頁一般 HTTP 抓取 | 財經新聞 |
本批要寫下: 三個來源各有幾則未讀。
| Source | List Endpoint | Content Retrieval | Focus |
|---|---|---|---|
| Central News Agency (CNA) | | Fetch article page using regular HTTP | Finance and industry news |
| TechNews | | Fetch article page using regular HTTP (feed does not include full text) | Technology industry news |
| Liberty Times (LTN) | | Fetch article page using regular HTTP | Finance news |
For this batch, record: the number of unread items for each of the three sources.
批次 5:國外財經新聞(CNBC)
Batch 5: International Financial News (CNBC)
外電來源,補台媒還沒跟上或沒跟進的國際事件:
| 來源 | 清單端點 | 內文取得 | 重點 |
|---|---|---|---|
| CNBC 頭條 | | 文章頁一般 HTTP 抓取 | 美國財經與跨界大事 |
本批內容只寫入 與產業事件的背景脈絡,不得建立或支持 與 條目。與台媒報導同一事件時以台媒版本為準,依「去重」一節的跨語言規則處理。
overview_mdcallsstock_news本批要寫下: 取得幾則、其中未讀幾則。
全球市場動態(美股收盤、Fed 動態、國際事件)從台媒的相關報導與批次 5 的外電並用取得,兩邊重疊時以台媒版本為準。
Foreign news source to supplement international events that Taiwanese media have not covered or followed up on:
| Source | List Endpoint | Content Retrieval | Focus |
|---|---|---|---|
| CNBC Headlines | | Fetch article page using regular HTTP | US finance and cross-sector major events |
Content from this batch can only be written to and used as background context for industry events; do not create or support entries in and . When covering the same event as Taiwanese media, use the Taiwanese media version as the standard, following the cross-language deduplication rules in the "Deduplication" section.
overview_mdcallsstock_newsFor this batch, record: the number of items obtained and the number of unread items.
Global market dynamics (US stock closing, Fed movements, international events) are obtained from relevant reports by Taiwanese media and the foreign news in Batch 5. When there is overlap, the Taiwanese media version takes precedence.
五批彙整表
Five-Batch Summary Table
五批跑完後彙整成一張涵蓋所有來源的表,每列是一個來源、其取得筆數與成敗。這張表是進入判讀的前置條件,缺任何一批就不得開始判讀。
彙整表中的缺項一律視為未嘗試,不是「當日無新聞」——回頭把那批補抓,或依實際情形記為來源失敗後走下方的分流規則。
After completing all five batches, compile a table covering all sources, with each row representing a source, the number of items obtained, and success/failure status. This table is a prerequisite for starting analysis; analysis cannot begin if any batch is missing.
Any missing entry in the summary table is considered not attempted, not "no news on the day"—go back to re-fetch that batch, or record it as a source failure and follow the diversion rules below according to the actual situation.
來源成敗與完整性把關
Source Success/Failure and Integrity Check
逐一記錄每個來源這次是成功還是失敗。任何來源失敗就重試一次(TWSE 依批次 2 的節流規則等 60 秒再重試),重試後仍失敗的處理方式一致:
- 照常判讀與發布,用實際抓到的內容組報告。任何單一來源失敗都不會讓整份報告停發,包含鉅亨網——證交所的重大訊息帶公司代號、月營收是硬事實,工商時報與中央社等也涵蓋台股,缺任何一家損失的是覆蓋密度,不是報告的可行性。批次 5 的外電(CNBC)失敗也一樣照常發布:損失的只是國際背景密度,國際動態仍可從台媒報導取得。
- 在執行回報中逐一列出缺哪些來源與失敗原因,讓人知道當日的涵蓋程度。這是給操作者看的,不是給讀者看的。
來源成功但當時間窗口內確實沒有新文章,屬於正常情況,不算失敗。
昨收價資料走同一套分流(日期驗證不過也算失敗):每來源重試一次,仍失敗就改用純新聞脈絡照常判讀與發布,缺漏列入執行回報;報告內容同樣不得提及價格資料缺漏。
蒐集機制不外露。 來源清單、批次結構、當日缺了哪個來源、涵蓋是否較薄——這些一律不得寫進 或任何 。報告只呈現新聞與判讀,不揭露我們怎麼取得資料、也不自曝覆蓋弱點。個別文章在 的引用不受此限,那是正常的出處標示。
overview_mdsummary_mdsourcesRecord whether each source succeeded or failed in this execution. If any source fails, retry once (for TWSE, wait 60 seconds and retry according to the rate-limiting rules in Batch 2). If it still fails after retrying, handle it uniformly:
- Proceed with analysis and publication as normal, using the content actually retrieved to compile the report. Failure of any single source will not stop the entire report from being published, including Cnyes—TWSE's major announcements include company symbols, monthly revenue is hard facts, and CTEE, CNA, etc., also cover Taiwan stocks. Losing any source reduces coverage density, but not the feasibility of the report. If Batch 5's foreign news (CNBC) fails, proceed with publication as normal: only the density of international context is lost, and international dynamics can still be obtained from Taiwanese media reports.
- List each missing source and the reason for failure in the execution report, so operators know the coverage level for the day. This is for operators, not readers.
If a source succeeds but there are indeed no new articles within the time window, this is a normal situation and not considered a failure.
Previous closing price data follows the same diversion rules (failure also includes date verification failure): retry each source once; if it still fails, proceed with analysis and publication using only news context as normal, include the omission in the execution report; the report content must not mention the missing price data.
Collection mechanism not disclosed. Source lists, batch structure, which sources were missing on the day, whether coverage was thinner—these must never be written into or any . The report only presents news and analysis; do not disclose how we obtained data, nor expose weaknesses in coverage. Citation of individual articles in is not subject to this restriction, as this is normal source attribution.
overview_mdsummary_mdsources去重(seen.py)
Deduplication (seen.py)
去重腳本位於 ,是已讀紀錄的唯一讀寫入口。
skills/daily-brief/scripts/seen.py蒐集流程: 第 1 至 3 步在每個批次內各跑一次——批次要交出的「未讀幾則」就是第 2 步的結果;第 4 至 6 步在判讀階段進行。
- 從該批來源拉清單頁資料(標題、網址、原生 ID),不下載內文。
- 把候選餵給 ,只取回未讀的。
seen.py peek - 下載未讀文章的內文。
- 對內文長度足夠的文章,用 檢查是否為已處理文章的改寫轉載。相似度 ≥ 0.5 視為同篇,跳過。
echo "內文" | seen.py similar - 判讀完成後,把所有處理過的文章(含判定不報的)用 記下來。判定不報的設
seen.py record,避免明天重新評估同一批雜訊。"decision": "skipped" - 有跨天事件時,用 登記。寫個股詳情前先
seen.py event add '代號|事件類型|期間'查過,已登記的事件用延續敘述(「延續前日營收利多」),不要重新宣布。seen.py event check
批次 5 的跨語言去重: 只比對同語言內文,抓不到「同一事件、中英各一篇」的重複,所以外電文章在判讀前要多走一步——逐則以事件為單位(公司、事件類型、關鍵數字)對照同窗口的台媒報導。事件已有台媒報導的,判定不報、用 記 ,內容以台媒版本為準;只有台媒沒報的事件,才能作為 或產業事件背景的材料。
seen.py similarseen.py record"decision": "skipped"overview_md注意: 查到已登記,不代表該檔不能出現在 calls。報告呈現的是當天的判斷狀態,同一檔連續多天看漲是正常的。事件登記只影響個股詳情的寫法。
event checkThe deduplication script is located at , and is the only read/write entry for read records.
skills/daily-brief/scripts/seen.pyCollection Process: Steps 1 to 3 are run once within each batch—the "number of unread items" that the batch must submit is the result of Step 2; Steps 4 to 6 are performed during the analysis phase.
- Retrieve list page data (title, URL, native ID) from the batch's source, without downloading the content.
- Feed the candidates to , and only retrieve unread items.
seen.py peek - Download the content of unread articles.
- For articles with sufficient content length, use to check if they are rewritten reprints of processed articles. A similarity ≥ 0.5 is considered the same article; skip it.
echo "content" | seen.py similar - After analysis is complete, record all processed articles (including those determined not to be reported) using . For articles determined not to be reported, set
seen.py recordto avoid re-evaluating the same noise tomorrow."decision": "skipped" - For cross-day events, register them using . Before writing individual stock details, check using
seen.py event add 'symbol|event type|period'; for registered events, use continuation descriptions (e.g., "continues yesterday's revenue upside") instead of re-announcing.seen.py event check
Cross-language deduplication for Batch 5: only compares content in the same language, and cannot catch duplicates of "the same event, one in Chinese and one in English". Therefore, foreign news articles must undergo an additional step before analysis—compare each article event-by-event (company, event type, key figures) with Taiwanese media reports in the same window. If the event has already been reported by Taiwanese media, determine not to report it, record it with and set , using the Taiwanese media version as the standard; only events not reported by Taiwanese media can be used as material for or industry event background.
seen.py similarseen.py record"decision": "skipped"overview_mdNote: If finds a registered event, it does not mean the stock cannot appear in calls. The report presents the judgment status for the day; it is normal for the same stock to be bullish for consecutive days. Event registration only affects the writing of individual stock details.
event check昨收價參考資料
Previous Closing Price Reference Data
蒐集階段同時抓取前一交易日的全市場收盤價,進判讀時當價格脈絡用:
- 上市:
https://openapi.twse.com.tw/v1/exchangeReport/STOCK_DAY_ALL - 上櫃:
https://www.tpex.org.tw/openapi/v1/tpex_mainboard_daily_close_quotes
各一個一般 HTTP 請求即可取回全市場。證交所這個請求併入批次 2 的節流規則(TWSE 主機序列執行、間隔至少 5 秒);櫃買是不同主機,不受該節流限制。
日期驗證: 兩個回應都在 欄位內嵌民國格式的交易日期(如 即 2026-08-14)。換算西元後必須等於台北時區的前一個交易日;日期過舊就把該來源視為抓取失敗,不得沿用舊價,也不得引用沒標日期的價格。
Date1150814要寫下: 兩個來源各取得幾筆與資料日期,納入蒐集完成度回報。失敗處理依下方「來源成敗與完整性把關」的分流規則。
Simultaneously retrieve the previous trading day's market-wide closing prices during the collection phase, to be used as price context during analysis:
- Listed Stocks:
https://openapi.twse.com.tw/v1/exchangeReport/STOCK_DAY_ALL - OTC Stocks:
https://www.tpex.org.tw/openapi/v1/tpex_mainboard_daily_close_quotes
A single regular HTTP request can retrieve the entire market for each. This TWSE request is included in the rate-limiting rules of Batch 2 (sequential execution with an interval of at least 5 seconds for the TWSE host); the OTC request is for a different host and is not subject to this rate-limiting restriction.
Date Verification: Both responses embed the trading date in Minguo calendar format in the field (e.g., corresponds to 2026-08-14). After converting to Gregorian calendar, it must equal the previous trading day in Taipei Time Zone; if the date is outdated, treat the source as a retrieval failure, do not use old prices, and do not reference prices without a date.
Date1150814Record: The number of items obtained and the data date for each source, and include this in the collection completion report. Handle failures according to the diversion rules in "Source Success/Failure and Integrity Check" below.
2. 判讀產業與個股
2. Analyze Industry and Individual Stocks
判讀分兩輪,先產業輪、後個股輪。兩輪各自使用對應的分析師視角,也各自有排序依據;下方「共通規則」三節兩輪都適用。
Analysis is divided into two rounds: first the industry round, then the individual stock round. Each round uses the corresponding analyst perspective and has its own sorting criteria; the three sections of "Common Rules" apply to both rounds.
共通規則
Common Rules
一句話標題
One-Sentence Headline
每個 與 都必須填一個非空白的 。標題必須同時寫出「發生什麼事」與「為什麼重要或造成什麼影響」,讓讀者不看內文也能判斷重點。
industries[].events[]stock_news[]headline- 不得用「記憶體供需」「產能擴充」這類只有主題、沒有事件與影響的短語標籤。
- 不得複製或換一兩個字重述 的第一句。標題要先濃縮事件與意義,內文再提供因果、條件與細節。
summary_md - 同一產業分類的新聞依主題合併成事件。一個事件涵蓋一組互相關聯的動態,不得把每篇來源文章各拆成一個事件。
具體正反例:
| 對象 | 正確 | 錯誤 | 錯誤原因 |
|---|---|---|---|
| 產業事件 | | | 只有主題,沒有價格變化與產業鏈影響 |
| 個股 | | | 複述內文首句,也沒有寫出事件的重要性 |
Each and must have a non-blank . The headline must simultaneously state "what happened" and "why it is important or what impact it has", so readers can judge the key points without reading the content.
industries[].events[]stock_news[]headline- Do not use short phrases with only a topic, no event or impact, such as "memory supply and demand" or "capacity expansion".
- Do not copy or rephrase the first sentence of with minor changes. The headline should first condense the event and its significance, and the content should then provide cause and effect, conditions, and details.
summary_md - News in the same industry category should be merged into events by topic. One event covers a set of interrelated dynamics; do not split each source article into a separate event.
Specific positive and negative examples:
| Object | Correct | Incorrect | Reason for Error |
|---|---|---|---|
| Industry Event | | | Only a topic, no price change or industry chain impact |
| Individual Stock | | | Rephrases the first sentence of the content, and does not state the importance of the event |
基本面引用紀律
Fundamental Reference Discipline
- 營收、EPS、毛利率、訂單金額或其他基本面數字,只能引用本次執行期間實際抓取的公開來源,不得憑模型記憶、過往對話或常識補值。
- 每個數字都要在正文標明資料期間,例如「7 月營收」、「2026 年第 2 季 EPS」,並在該 的
stock_news放入實際來源。sources - 若本次抓不到當期公開資料,就省略基本面數字與相關脈絡,只根據已查證新聞解讀。不得沿用舊數字、估算或硬湊近似值。
- Revenue, EPS, gross margin, order amount, or other fundamental figures can only be referenced from public sources actually retrieved during this execution; do not fill in values based on model memory, past conversations, or common sense.
- Each figure must clearly indicate the data period in the content, e.g., "July revenue", "2026 Q2 EPS", and include the actual source in the of the corresponding
sources.stock_news - If current public data cannot be retrieved during this execution, omit the fundamental figures and related context, and only interpret based on verified news. Do not use old figures, estimates, or force-fit approximate values.
條目觀察重點
Entry Observation Focus
每個 與 條目都必須填非空白的 ,用 Markdown 列出 1–2 條可在事後驗證的前瞻觀察點:
industriesstock_newswatch_md- 產業觀察點要連結該分類各事件報導的供需、價格或政策動態,例如下一次合約價公告或監理措施生效結果。
- 個股觀察點要連結該條目引用的新聞或本次抓取的基本面,例如新產能實際投產時間或下一期營收是否反映訂單。
- 不得把 內容再寫進產業事件或個股的
watch_md,也不得使用「持續關注後續發展」這類沒有具體事件、指標或時間點的範本化空話。summary_md
Each and entry must have a non-blank , listing 1–2 forward-looking observation points that can be verified afterwards using Markdown:
industriesstock_newswatch_md- Industry observation points should link to supply and demand, price, or policy dynamics reported in each event of the category, such as the results of the next contract price announcement or the implementation of regulatory measures.
- Individual stock observation points should link to the news referenced in the entry or fundamentals retrieved during this execution, such as the actual commissioning time of new capacity or whether the next period's revenue reflects orders.
- Do not rewrite the content of into the
watch_mdof industry events or individual stocks, and do not use templated empty phrases without specific events, indicators, or time points, such as "continue to follow up on subsequent developments".summary_md
第一輪:產業
First Round: Industry
以產業分析師視角處理 。
industriesProcess from the perspective of an industry analyst.
industries排序依據
Sorting Criteria
動筆前先把窗口內的產業新聞排出重要程度,依序比較下列五項,前項優先:
- 價格與供需已實際變動 — 漲跌價、減產、庫存轉折、運價變化,已改寫產業損益結構。
- 政策監理將強制生效 — 關稅、禁令、新制,外生且全產業適用。
- 波及廣度 — 動到整條供應鏈或多家公司,大於只影響單一環節。
- 持續性 — 結構性轉折(產能週期、技術世代)大於一次性事件。
- 確定性 — 已發生事實 > 官方展望 > 法人預估 > 市場傳聞。
排序只決定哪個事件領銜、哪個寫得深、事件之間的先後。不得用來篩選收錄與否——排在後面的照樣要寫進報告,只是著墨較少。「不設數量上限、能判斷的都列」的規則不受排序影響。
Before writing, sort the industry news within the window by importance, comparing the following five items in order, with the previous item taking precedence:
- Actual changes in price and supply/demand — price increases/decreases, production cuts, inventory turning points, freight rate changes, which have altered the industry's profit and loss structure.
- Policy regulation to be enforced — tariffs, bans, new regulations, exogenous and applicable to the entire industry.
- Scope of impact — affecting the entire supply chain or multiple companies, greater than affecting only a single link.
- Sustainability — structural turning points (capacity cycles, technology generations) are greater than one-time events.
- Certainty — occurred facts > official outlook > institutional estimates > market rumors.
Sorting only determines which event leads, which is written in depth, and the order between events. Do not use it to filter inclusion—events ranked lower should still be written into the report, just with less focus. The rule of "no upper limit on quantity, list all that can be judged" is not affected by sorting.
事件寫法
Event Writing Method
每個 都以獨立的 與 表達一組同主題動態。事件內文不複述標題,依下方訣竅展開變化、歸因與影響分佈。
industries[].events[]headlinesummary_md例如標題是「記憶體合約價續漲,上游產品組合改善但模組廠毛利承壓」,而新聞載明漲價來自原廠減產時,內文可寫:「原廠減產使通路庫存回到健康水位,合約價續漲有利上游製造商改善產品組合,但下游模組廠若無法同步轉嫁成本,毛利率可能承壓。」新聞未載明驅動時,改依訣竅第 2 條寫「驅動未明」。
Each expresses a set of theme-related dynamics with an independent and . The event content does not repeat the headline; expand on changes, attribution, and impact distribution according to the tips below.
industries[].events[]headlinesummary_mdFor example, if the headline is "Memory contract prices continue to rise; upstream product mix improves but module manufacturers face margin pressure", and the news states that the price increase comes from production cuts by original manufacturers, the content can be written as: "Production cuts by original manufacturers have returned channel inventories to healthy levels; continued rises in contract prices are beneficial for upstream manufacturers to improve product mix, but if downstream module manufacturers cannot pass on costs synchronously, their gross margins may face pressure." If the news does not state the driver, follow Tip 2 and write "driver unknown".
產業事件撰寫訣竅
Industry Event Writing Tips
以下四條都受兩道護欄約束:資訊只能來自本次蒐集到的新聞或本次抓取的資料;缺料就整句省略,不要改寫成「幅度尚待觀察」這類佔位句(唯一例外見第二條)。
- 從變化量下筆 — 寫方向、幅度、期間,不寫「市場火熱」這種狀態形容。幅度與比較基準以新聞載明者為限(例如新聞寫「近 45 個月新高」就照用),不得引用記憶中的歷史數字或季節性常識。新聞沒給幅度時,改寫政策事件型的具體事實:生效時點與約束對象。
- 歸因供給側或需求側 — 同樣是漲價,供給收縮(減產)會隨復產結束,需求拉動較能延續,這是持續性判斷的根據。新聞沒說驅動來自哪一側時,明寫「驅動未明」,不得自行推定成因——這是唯一允許明寫缺料的條目,因為在歸因處沉默會被讀成隱含確定。
- 寫出影響分佈 — 一個變化的受影響方通常不只一種:誰受益、誰承壓、誰能轉嫁成本。製造業寫上中下游,金融監理寫受管制對象與豁免對象,房市寫買方賣方與建商。
- 標明週期或結構 — 排序靠前而寫得深的事件,內文要交代這是循環內波動(如運價反彈)還是遊戲規則改變(如產能外移),對應排序依據第 4 項的持續性判斷。
反例與正例(示意寫法,不是可直接複製的範本句):
| 訣竅 | 反例 | 正例 |
|---|---|---|
| 從變化量下筆 | 記憶體市場需求暢旺 | DRAM 合約價本月再漲,為新聞所載近 45 個月最大月增幅 |
| 歸因供需 | 價格上漲帶動業績 | 新聞未載明漲價驅動來自減產或需求拉動,驅動未明;若為減產所致,復產後價格支撐將轉弱 |
| 影響分佈 | 整體產業受惠 | 上游改善產品組合,模組廠若無法同步轉嫁則毛利承壓 |
| 週期或結構 | 後續值得觀察 | 屬產能週期內的價格波動,非長期供給結構改變 |
All four tips are bound by two guardrails: information can only come from news collected during this execution or data retrieved during this execution; omit the entire sentence if data is missing, do not rewrite it into a placeholder phrase like "magnitude to be observed" (the only exception is Tip 2).
- Start with the amount of change — write direction, magnitude, and period, not state descriptions like "market is booming". Magnitude and comparison basis are limited to those stated in the news (e.g., if the news writes "highest in nearly 45 months", use it as is), do not reference historical figures or seasonal common sense from memory. If the news does not provide a magnitude, rewrite it as specific facts for policy events: effective time and constrained objects.
- Attribute to supply side or demand side — the same price increase, supply contraction (production cuts) will end with resumption of production, while demand-driven increases are more sustainable; this is the basis for judging sustainability. If the news does not state which side the driver comes from, clearly write "driver unknown", do not infer the cause on your own—this is the only entry where explicitly stating missing data is allowed, because silence in attribution will be interpreted as implicit certainty.
- Write impact distribution — a change usually affects more than one party: who benefits, who faces pressure, who can pass on costs. For manufacturing, write about upstream, midstream, and downstream; for financial regulation, write about regulated objects and exempt objects; for real estate, write about buyers, sellers, and developers.
- Indicate cycle or structure — for events ranked higher and written in depth, the content should explain whether this is a cyclical fluctuation (e.g., freight rate rebound) or a change in the rules of the game (e.g., capacity relocation), corresponding to the sustainability judgment in Sorting Criterion 4.
Negative and positive examples (illustrative writing, not templates that can be directly copied):
| Tip | Negative Example | Positive Example |
|---|---|---|
| Start with the amount of change | Memory market demand is strong | DRAM contract prices rose again this month, the largest monthly increase in nearly 45 months as stated in the news |
| Attribute to supply/demand | Price increases drive performance | The news does not state whether the price increase is driven by production cuts or demand growth; driver unknown; if it is due to production cuts, price support will weaken after resumption of production |
| Write impact distribution | The entire industry benefits | Upstream improves product mix; module manufacturers face margin pressure if they cannot pass on costs synchronously |
| Indicate cycle or structure | Worth observing in the future | This is a price fluctuation within the capacity cycle, not a long-term change in supply structure |
固定產業四分類
Fixed Four Industry Categories
industries| 分類 | 涵蓋邊界 |
|---|---|
| 科技 | 半導體、電子零組件、電腦與周邊、網通、軟體、電信及其他電子科技供應鏈 |
| 金融 | 銀行、保險、證券、金融控股、支付與金融監理 |
| 傳產 | 航運、鋼鐵、化工、機械、汽車、食品、零售、觀光、生技醫療及其他非科技製造與服務業 |
| 房地產 | 房市交易、建商與營造、商用不動產、住宅政策;若新聞主體是水泥、鋼材等供應商本身,歸傳產 |
跨領域新聞依「主要受影響的需求或監理對象」只歸一類。例如生技廠取得美國藥證歸「傳產」;科技廠購地設廠若重點是產能擴充歸「科技」,若重點是土地市場或開發政策才歸「房地產」。
每個保留的分類都必須拆成 ,每個事件各有自己的 與 ;不得保留空的事件清單。逐一查過當天所有來源後,確認某分類在時間窗口內確無新聞,才可省略該分類;不得放空白條目或「今日無新聞」佔位,也不得因漏查直接省略。
eventsheadlinesummary_mdindustries| Category | Coverage Boundaries |
|---|---|
| Technology | Semiconductors, electronic components, computers and peripherals, network communications, software, telecommunications, and other electronic technology supply chains |
| Finance | Banking, insurance, securities, financial holding, payment, and financial regulation |
| Traditional Industries | Shipping, steel, chemicals, machinery, automobiles, food, retail, tourism, biotech and medical, and other non-technology manufacturing and service industries |
| Real Estate | Real estate transactions, developers and construction, commercial real estate, housing policies; if the main subject of the news is suppliers such as cement or steel, classify into Traditional Industries |
Cross-sector news is classified into only one category based on "the main affected demand or regulatory object". For example, a biotech company obtaining a US drug approval is classified into "Traditional Industries"; if a technology company purchasing land to build a factory focuses on capacity expansion, it is classified into "Technology"; if it focuses on the land market or development policies, it is classified into "Real Estate".
Each retained category must be split into , with each event having its own and ; do not retain empty event lists. After checking all sources for the day, if it is confirmed that there is no news in a category within the time window, the category can be omitted; do not leave empty entries or placeholders like "no news today", and do not omit directly due to missed checks.
eventsheadlinesummary_md第二輪:個股
Second Round: Individual Stocks
以個股分析師視角處理 與 。
callsstock_newsProcess and from the perspective of an individual stock analyst.
callsstock_news排序依據
Sorting Criteria
動筆前先把窗口內的個股新聞排出重要程度,依序比較下列五項,前項優先:
- 獲利衝擊已可量化 — 財報、月營收、具金額與交付期的訂單。
- 事實層級 — 公司公告 > 公司展望 > 外資法人觀點 > 供應鏈消息 > 市場傳聞。
- 反映時點 — 本季就能驗證,大於明年,大於長期願景。
- 競爭地位改變 — 新客戶、新市場、技術突破這類不可逆的位置移動。
- 籌碼資金面 — 只作佐證加分,不得單獨構成重要性。
與產業輪相同:排序只影響詳略、著墨與先後,不得用來篩選收錄。同一則新聞在兩輪可以有不同名次,這正是分兩輪判讀的用意。
Before writing, sort the individual stock news within the window by importance, comparing the following five items in order, with the previous item taking precedence:
- Quantifiable profit impact — financial reports, monthly revenue, orders with specific amounts and delivery periods.
- Fact level — company announcements > company outlook > foreign institutional views > supply chain news > market rumors.
- Reflection time point — verifiable this quarter, greater than next year, greater than long-term vision.
- Change in competitive position — irreversible position shifts such as new customers, new markets, technological breakthroughs.
- Capital and chip dynamics — only used as supporting bonus points, cannot alone constitute importance.
Same as the industry round: sorting only affects detail, focus, and order; do not use it to filter inclusion. The same news can have different rankings in the two rounds, which is the purpose of dividing into two rounds of analysis.
條目寫法
Entry Writing Method
stock_news[].summary_md例如,公司宣布新產能第四季投產時,應寫出「新產能對現有訂單交付與產品組合的影響,實際貢獻須等第四季投產進度確認」;只有本次確實抓到公開資料時,才可再寫「7 月營收年增……,顯示目前需求……」。
stock_news[].summary_mdFor example, when a company announces that new capacity will be put into operation in Q4, it should be written as "The impact of new capacity on existing order delivery and product mix; actual contribution must be confirmed by Q4 commissioning progress"; only when public data is actually retrieved during this execution can additional content like "July revenue increased year-over-year..., indicating current demand..." be added.
個股條目撰寫訣竅
Individual Stock Entry Writing Tips
同樣受兩道護欄約束:資訊只能來自本次蒐集到的新聞或本次抓取的資料;缺料就整句省略,不寫「量級尚無法估算」這類佔位句。
- 判斷先行 — 內文第一句寫這則新聞改變了什麼判斷,再回頭交代事件,不要照時間順序敘事。這句要比 深一層:標題給結論,首句給機制或條件。
headline的條目,首句改寫「為什麼無法判斷方向」,不得為了句型硬給判斷。call: "none" - 量級換算 — 新聞裡的金額換算成對公司的相對量級才有意義,但只有本次確實抓到基準數字(營收、資本額等)時才寫。抓不到就只寫新聞載明的絕對金額,整句省略換算,不留佔位句。
- 預期差定位 — 指出這是新資訊還是市場已知的延續,這是多空判讀的核心。只能依據新聞自己載明的預期(如「優於法人預估」),或 已登記的跨天事件;兩者皆無就不寫預期差。
seen.py event check - 翻譯公關語言 — 把新聞稿形容詞還原成事實:「深化布局」「戰略合作」若沒有金額與交付期,降級為意向而非訂單。有數字就保留數字的力度,不要弱化。
- 具名歸因 — 誰說的照新聞寫:哪家外資、目標價從多少調到多少。新聞只寫「外資」「供應鏈」等模糊主詞時,保留模糊,不得自行補上機構名,同時依排序依據第 2 項把事實層級降一級。
反例與正例(示意寫法,不是可直接複製的範本句):
| 訣竅 | 反例 | 正例 |
|---|---|---|
| 判斷先行 | 公司今日宣布第四季新產能投產 | 訂單能見度因此延伸到明年上半年,關鍵在新產能第四季如期投產 |
| 判斷先行(none) | 公司宣布電動車合作 | 合作僅止於備忘錄,缺金額與交付期,尚不足以判斷方向 |
| 量級換算 | 拿下大單,貢獻可觀 | 訂單金額 10 億元,約當本次取得的去年營收 4% |
| 預期差 | 營收創新高 | 營收創高但幅度與新聞所載法人預估相當,增量題材有限 |
| 翻譯公關語言 | 深化 AI 領域布局 | 簽署合作備忘錄,尚未進入具金額的正式訂單 |
| 具名歸因 | 外資一致看好 | 新聞僅稱「外資」未具名,屬未具名法人觀點,事實層級低於公司公告 |
Also bound by two guardrails: information can only come from news collected during this execution or data retrieved during this execution; omit the entire sentence if data is missing, do not write placeholder phrases like "magnitude cannot be estimated".
- Judgment first — the first sentence of the content should state what judgment this news has changed, then go back to explain the event; do not narrate in chronological order. This sentence should be one level deeper than the : the headline gives the conclusion, the first sentence gives the mechanism or conditions. For entries with
headline, rewrite the first sentence to "why the direction cannot be judged", do not force a judgment for the sake of sentence structure.call: "none" - Magnitude conversion — amounts in the news are only meaningful when converted to relative magnitudes for the company, but only write this if the benchmark figures (revenue, capital, etc.) are actually retrieved during this execution. If not retrieved, only write the absolute amount stated in the news, omit the entire conversion sentence, and do not leave a placeholder.
- Expectation gap positioning — indicate whether this is new information or a continuation of what the market already knows; this is the core of bullish/bearish judgment. Only rely on expectations stated in the news itself (e.g., "better than institutional estimates") or cross-day events registered in ; if neither exists, do not write the expectation gap.
seen.py event check - Translate PR language —还原形容词 in press releases to facts: "deepen layout" or "strategic cooperation" without amounts and delivery periods are downgraded to intentions rather than orders. If there are figures, retain the strength of the figures, do not weaken them.
- Named attribution — write who said it as stated in the news: which foreign institution, target price adjusted from how much to how much. If the news only uses vague subjects like "foreign institutions" or "supply chain", retain the vagueness, do not fill in institution names on your own, and simultaneously lower the fact level by one level according to Sorting Criterion 2.
Negative and positive examples (illustrative writing, not templates that can be directly copied):
| Tip | Negative Example | Positive Example |
|---|---|---|
| Judgment first | Company announces new capacity will be put into operation in Q4 today | Order visibility is thus extended to the first half of next year; the key is whether new capacity is put into operation as scheduled in Q4 |
| Judgment first (none) | Company announces electric vehicle cooperation | Cooperation is only a memorandum, lacking amount and delivery period; insufficient basis to judge direction |
| Magnitude conversion | Secured a large order, contributing significantly | Order amount is 1 billion yuan, approximately 4% of last year's revenue retrieved during this execution |
| Expectation gap | Revenue hit a new high | Revenue hit a new high but the magnitude is equivalent to institutional estimates stated in the news, with limited incremental themes |
| Translate PR language | Deepen layout in AI field | Signed a cooperation memorandum, not yet entered into a formal order with an amount |
| Named attribution | Foreign institutions are unanimously bullish | The news only refers to "foreign institutions" without naming them; this is an unnamed institutional view, with a lower fact level than company announcements |
個股多空
Individual Stock Bullish/Bearish Judgment
根據當天時間窗口內的新聞判斷方向與時間尺度。當天沒有新聞的股票不列入,不延續前一天的判斷。
| call | 判斷 |
|---|---|
| 短期看漲 |
| 短期看跌 |
| 長期看好 |
| 長期看壞 |
| 有重大新聞,但沒有足夠依據判斷方向 |
Judge the direction and time scale based on news within the day's time window. Stocks with no news on the day are not included; do not extend the previous day's judgment.
| call | Judgment |
|---|---|
| Short-term bullish |
| Short-term bearish |
| Long-term bullish |
| Long-term bearish |
| Major news exists, but insufficient basis to judge direction |
判讀原則
Judgment Principles
- 不設數量上限。當天新聞能判斷出來的都列。
- 不設強制門檻。由執行模型依新聞內容自行判斷是否足以給出方向。
- 區分已發生事實、公司展望、分析師觀點與市場傳聞。不要把傳聞寫成已確認事實。
- 與
calls只收錄台股上市、上櫃個股及其台股 symbol。國際市場動態與外國上市公司新聞只寫入stock_news,即使與台灣供應鏈相關,也不得把外國 symbol 放入overview_md或calls。stock_news - 批次 5 的外電文章只能作為 與產業事件背景脈絡的材料,不得建立或支持任何
overview_md與calls條目——即使外電內容直接點名台股公司,個股層級的判讀仍須以台媒與證交所來源為依據。stock_news - 昨收價只作判讀脈絡(判斷利多是否已反映、當量級對照基準)與報告引用來源。引用昨收必須標明價格日期(例如「昨收(8/14)1,080 元」),且只能用本次抓取、通過日期驗證的資料。窗口內沒有新聞的股票,即使昨收大漲大跌也不得建立 或
calls條目;價格變動最多在已有新聞依據的條目裡作為脈絡。stock_news
- No upper limit on quantity. List all that can be judged from the day's news.
- No mandatory threshold. The execution model independently judges whether the news content is sufficient to give a direction.
- Distinguish between occurred facts, company outlook, analyst views, and market rumors. Do not write rumors as confirmed facts.
- and
callsonly include listed and OTC Taiwan stocks and their Taiwan stock symbols. International market dynamics and news of foreign listed companies are only written intostock_news; even if related to Taiwan's supply chain, foreign symbols must not be included inoverview_mdorcalls.stock_news - Foreign news articles in Batch 5 can only be used as material for and industry event background context; do not create or support any entries in
overview_mdandcalls—even if foreign news directly mentions Taiwanese companies, individual stock-level analysis must still be based on Taiwanese media and TWSE sources.stock_news - Previous closing prices are only used as analysis context (judging whether upside has been reflected, as a benchmark for magnitude comparison) and as a source for report references. When citing previous closing prices, clearly indicate the price date (e.g., "previous close (8/14) 1,080 yuan"), and only use data retrieved during this execution and passed date verification. For stocks with no news within the window, even if the previous close rose or fell sharply, do not create entries in or
calls; price changes can at most be used as context in entries with existing news basis.stock_news
calls 條目規則
Calls Entry Rules
每個 calls 清單條目必須:
- 使用一行、具體且可由新聞支持的 。
reason - 在 有相同
stock_news的詳情。symbol - 對應的 至少列一個新聞來源。
stock_news
若個股有重大新聞但方向不明,只在 建立 的條目,不得放入四個 calls 清單。不要為了填滿欄位硬做判斷;沒有判斷的清單可保持空陣列。
stock_newscall: "none"Each entry in the calls list must:
- Use a single line, specific supported by news.
reason - Have corresponding details with the same in
symbol.stock_news - The corresponding lists at least one news source.
stock_news
If an individual stock has major news but the direction is unclear, only create an entry with in , do not include it in the four calls lists. Do not force a judgment to fill the fields; lists with no judgments can remain empty arrays.
call: "none"stock_news3. 組成並驗證報告 JSON
3. Compose and Verify Report JSON
輸出必須符合以下完整結構。欄位名稱與型別不得改動,不得加入額外欄位。
json
{
"date": "2026-08-07",
"headline": "美股收紅開盤氣氛偏多,看漲:台積電",
"overview_md": "美股四大指數收紅,費半受 AI 需求帶動;台股開盤氣氛偏多。",
"watch_md": "- 台積電盤後公布 7 月營收\n- 美國 7 月 CPI 今晚公布\n- 觀察外資期貨淨空單",
"calls": {
"short_bull": [
{
"symbol": "2330",
"name": "台積電",
"reason": "2 奈米提前放量且外資調升目標價,短線題材與資金面同步轉強。"
}
],
"short_bear": [],
"long_bull": [],
"long_bear": []
},
"industries": [
{
"name": "科技",
"events": [
{
"headline": "2 奈米提前放量,設備與材料需求可望升溫",
"summary_md": "台積電先進製程時程提前,相關設備與材料供應商的訂單能見度可望提高。"
},
{
"headline": "AI 加速器追單推升封測利用率,上游受益較直接",
"summary_md": "加速器追加訂單使封測產能利用率回升,先進封裝與測試供應鏈的營收動能較明確。"
}
],
"watch_md": "- 追蹤台積電下一次法說是否維持 2 奈米量產時程\n- 觀察封測業者下月營收是否反映追加訂單"
}
],
"stock_news": [
{
"symbol": "2330",
"name": "台積電",
"call": "short_bull",
"headline": "2 奈米提前放量與外資升評,短線題材及資金面同步轉強",
"summary_md": "供應鏈傳出 2 奈米製程提前放量,多家外資調升目標價。",
"watch_md": "- 追蹤公司下一次法說公布的 2 奈米量產時程",
"sources": [
{
"title": "台積電 2 奈米傳提前放量",
"url": "https://example.com/tsmc-2nm"
}
]
},
{
"symbol": "2317",
"name": "鴻海",
"call": "none",
"headline": "電動車合作仍停留備忘錄,訂單能見度不足以判斷方向",
"summary_md": "宣布電動車合作備忘錄,短期貢獻與長期正式訂單仍不明朗。",
"watch_md": "- 追蹤合作備忘錄是否轉為具金額與交付期的正式訂單",
"sources": [
{
"title": "鴻海宣布電動車合作備忘錄",
"url": "https://example.com/hon-hai-ev"
}
]
}
],
"generated_at": "2026-08-07T07:50:00+08:00"
}送出前逐項檢查:
- 是有效的
date日期。YYYY-MM-DD - 、
headline、overview_md都有非空白內容。watch_md - 恰好包含
calls、short_bull、short_bear、long_bull四個陣列。long_bear - 只使用表格中的五個值。
stock_news[].call - 只使用「科技」「金融」「傳產」「房地產」。
industries[].name - 每個 條目至少有一個
industries事件。events - 每個 的
industries[].events[]與headline都有非空白內容。summary_md - 每個 的
stock_news[]都有非空白內容。headline - 每個 與
industries條目的stock_news都有 1–2 條非空白、可驗證且未在產業事件或個股的watch_md重複的觀察點。summary_md - 與
calls沒有外國上市公司或外國 symbol,只含台股上市櫃個股。stock_news - 每個 calls 條目的 都能在
symbol找到相同 symbol。stock_news - 每個 calls 條目都有一行理由,且對應 至少有一個 source。
stock_news - 每個 source 都有非空白 URL。
- 方向不明的重大新聞使用 ,且不出現在 calls 清單。
call: "none" - 使用含時區的 RFC 3339 格式。
generated_at - 所有數字、預期與歸因都能回指到本次的新聞或抓取結果,沒有記憶補值;缺料處是整句省略而非佔位句(唯一例外是產業事件的「驅動未明」)。
- 五批彙整表完整:五個批次都有計數、無缺項;有來源失敗時缺漏清單已備妥待回報(只進執行回報,不進報告內容)。
- 昨收價抓取有回報筆數與資料日期;報告中引用的昨收價都標明價格日期、且來自本次通過日期驗證的資料;沒有任何 calls 或 stock_news 條目只以價格變動為依據。
- 報告內容沒有提到來源清單、批次結構或任何來源缺漏。
- 記得在第 4 步 POST 之前,先用 確認本次
GET /api/report/{date}是否已有報告;已有就完成產業數與個股數比對。date
把最終 JSON 寫到本次工作的暫存檔,例如 。不得用假 URL 或範例內容發布正式報告。
report.jsonThe output must comply with the following complete structure. Field names and types cannot be changed, and no additional fields can be added.
json
{
"date": "2026-08-07",
"headline": "US stocks closed red, pre-market sentiment is bullish; Bullish: TSMC",
"overview_md": "Four major US stock indices closed red; SOX was driven by AI demand; Taiwan stock pre-market sentiment is bullish.",
"watch_md": "- TSMC will announce July revenue after market close\n- US July CPI will be announced tonight\n- Observe foreign futures net short positions",
"calls": {
"short_bull": [
{
"symbol": "2330",
"name": "TSMC",
"reason": "2nm production ramps up ahead of schedule and foreign institutions raise target prices; short-term themes and capital dynamics turn bullish simultaneously."
}
],
"short_bear": [],
"long_bull": [],
"long_bear": []
},
"industries": [
{
"name": "Technology",
"events": [
{
"headline": "2nm production ramps up ahead of schedule; demand for equipment and materials is expected to rise",
"summary_md": "TSMC's advanced process schedule is ahead of plan; order visibility for related equipment and material suppliers is expected to improve."
},
{
"headline": "AI accelerator repeat orders drive up packaging and testing utilization; upstream benefits directly",
"summary_md": "Repeat orders for accelerators have increased packaging and testing capacity utilization; revenue momentum for advanced packaging and testing supply chains is more clear."
}
],
"watch_md": "- Track whether TSMC maintains the 2nm mass production schedule in its next earnings call\n- Observe whether packaging and testing companies' next month's revenue reflects repeat orders"
}
],
"stock_news": [
{
"symbol": "2330",
"name": "TSMC",
"call": "short_bull",
"headline": "2nm production ramps up ahead of schedule and foreign institutions upgrade ratings; short-term themes and capital dynamics turn bullish simultaneously",
"summary_md": "Supply chain sources report that 2nm production is ramping up ahead of schedule; multiple foreign institutions have raised target prices.",
"watch_md": "- Track the 2nm mass production schedule announced in the company's next earnings call",
"sources": [
{
"title": "TSMC's 2nm production reported to ramp up ahead of schedule",
"url": "https://example.com/tsmc-2nm"
}
]
},
{
"symbol": "2317",
"name": "Hon Hai",
"call": "none",
"headline": "Electric vehicle cooperation remains at memorandum stage; order visibility is insufficient to judge direction",
"summary_md": "Announced an electric vehicle cooperation memorandum; short-term contribution and long-term formal orders are still unclear.",
"watch_md": "- Track whether the cooperation memorandum is converted into a formal order with amount and delivery period",
"sources": [
{
"title": "Hon Hai announces electric vehicle cooperation memorandum",
"url": "https://example.com/hon-hai-ev"
}
]
}
],
"generated_at": "2026-08-07T07:50:00+08:00"
}Check item by item before submitting:
- is a valid
datedate.YYYY-MM-DD - ,
headline,overview_mdall have non-blank content.watch_md - exactly contains four arrays:
calls,short_bull,short_bear,long_bull.long_bear - only uses the five values in the table.
stock_news[].call - only uses "Technology", "Finance", "Traditional Industries", "Real Estate".
industries[].name - Each entry has at least one
industriesevent.events - Each has non-blank
industries[].events[]andheadline.summary_md - Each has a non-blank
stock_news[].headline - Each and
industriesentry has 1–2 non-blank, verifiable observation points instock_newsthat are not repeated in thewatch_mdof industry events or individual stocks.summary_md - and
callsdo not contain foreign listed companies or foreign symbols; only include listed and OTC Taiwan stocks.stock_news - Each in calls entries can be found in
symbol.stock_news - Each calls entry has a one-line reason, and the corresponding has at least one source.
stock_news - Each source has a non-blank URL.
- Major news with unclear direction uses and does not appear in the calls lists.
call: "none" - uses RFC 3339 format with time zone.
generated_at - All figures, expectations, and attributions can be traced back to news or retrieval results from this execution; no memory-filled values; missing data is omitted entirely instead of using placeholder phrases (the only exception is "driver unknown" in industry events).
- The five-batch summary table is complete: all five batches have counts, no missing items; if sources failed, the missing list is prepared for reporting (only included in the execution report, not in the report content).
- Previous closing price retrieval has reported the number of items and data date; previous closing prices cited in the report all indicate the price date and come from data retrieved during this execution and passed date verification; no calls or stock_news entries are based solely on price changes.
- The report content does not mention source lists, batch structure, or any source omissions.
- Remember to use to confirm whether a report already exists for the current
GET /api/report/{date}before sending the POST in Step 4; if it exists, compare the number of industry entries and individual stock entries.date
Write the final JSON to a temporary file for this task, e.g., . Do not publish official reports with fake URLs or sample content.
report.json4. POST 到網站 API
4. POST to Website API
同日重跑的覆寫比對
Overwrite Comparison for Same-Day Re-runs
同一日期再次發布會全量覆寫既有報告。送出前先用唯讀端點確認該日期是否已有報告:
bash
curl --silent --show-error \
--output existing.json \
--write-out '%{http_code}' \
--header "Authorization: Bearer ${BRIEFAST_API_KEY}" \
"${BRIEFAST_URL%/}/api/report/2026-08-07"404200existing.jsonindustriesstock_news- 兩項都不少於既有版本:照下方流程 POST,不需額外確認。
- 任一項少於既有版本:停止,不要 POST。說明本次為什麼內容較少(例如某來源失敗、當日新聞確實稀少),等待指示後再決定是否覆寫。
內容變少不一定是錯的,但必須由人判斷,不得讓退化的重跑靜默取代較完整的版本。
401401Re-publishing on the same date will fully overwrite the existing report. Before submitting, use the read-only endpoint to confirm whether a report already exists for the date:
bash
curl --silent --show-error \
--output existing.json \
--write-out '%{http_code}' \
--header "Authorization: Bearer ${BRIEFAST_API_KEY}" \
"${BRIEFAST_URL%/}/api/report/2026-08-07"404200industriesstock_newsexisting.json- If both are no less than the existing version: proceed with POST as per the process below, no additional confirmation needed.
- If either is less than the existing version: stop, do not send POST. Explain why the content is less this time (e.g., a source failed, there were indeed few news items on the day), and wait for instructions before deciding whether to overwrite.
Less content is not necessarily wrong, but must be judged by a human; do not allow a degraded re-run to silently replace a more complete version.
401401送出
Submission
以 讀到的值組成 endpoint,不要寫死網址或 key:
.envbash
curl --silent --show-error \
--output response.json \
--write-out '%{http_code}' \
--request POST \
--header "Authorization: Bearer ${BRIEFAST_API_KEY}" \
--header "Content-Type: application/json" \
--data-binary @report.json \
"${BRIEFAST_URL%/}/api/report"依 HTTP status 處理:
- :確認 response 為
200,回報發布成功。{"ok":true,"date":"本次日期"} - :視為失敗。讀取並保留完整 response body;依
400修正 payload 後可再送一次。若無法確定修法或修正後仍失敗,停止並逐字回報 response body。errors - :視為失敗。不要重試,不要猜測或更換 key;停止並附上完整 response body。
401 - :視為失敗。使用完全相同的 payload 重試一次;第二次仍非 200 就停止並附上最後一次 response body,同時註明第一次與第二次 status。
5xx - 其他非 :視為失敗,不重試,停止並附上完整 response body。
200
任何非 200 都不得回報成發布成功。重試前不得改變 或省略原有內容。
dateCompose the endpoint using values read from ; do not hardcode URLs or keys:
.envbash
curl --silent --show-error \
--output response.json \
--write-out '%{http_code}' \
--request POST \
--header "Authorization: Bearer ${BRIEFAST_API_KEY}" \
--header "Content-Type: application/json" \
--data-binary @report.json \
"${BRIEFAST_URL%/}/api/report"Handle according to HTTP status:
- : Confirm that the response is
200, report successful publication.{"ok":true,"date":"current date"} - : Considered a failure. Read and retain the complete response body; correct the payload according to
400and resend once. If the correction method cannot be determined or it still fails after correction, stop and report the response body verbatim.errors - : Considered a failure. Do not retry, do not guess or change keys; stop and attach the complete response body.
401 - : Considered a failure. Retry once using the exact same payload; if it is still not 200 on the second try, stop and attach the last response body, and note the first and second statuses.
5xx - Other non-: Considered a failure, do not retry, stop and attach the complete response body.
200
Do not report any non-200 status as successful publication. Do not change or omit existing content before retrying.
date