L’interface est localisée ; les présentations et documents des Skills sont traduits automatiquement par IA dans votre langue. Le code, les commandes, chemins et termes techniques restent en version originale, et le document de l’auteur fait foi.
Explorer les Skills
Développement · SKILL.md

threads-viral-agent

threads-viral-agent

Full-autopilot AI agent for Meta 3-platform viral content (Threads + Instagram + Facebook). Searches real-time trending topics, analyzes them against Meta's 7 patent-based ranking algorithms (EdgeRank, Andromeda, Dear Algo, Conversation Durability), generates optimized text/image/video content, adapts for each platform, and publishes automatically with sche…

Independent GitHub snapshot · Automated classification · Original documentation governs

Documentation de la Skill

GitHub

name: threads-viral-agent description: > Full-autopilot AI agent for Meta 3-platform viral content (Threads + Instagram + Facebook). Searches real-time trending topics, analyzes them against Meta's 7 patent-based ranking algorithms (EdgeRank, Andromeda, Dear Algo, Conversation Durability), generates optimized text/image/video content, adapts for each platform, and publishes automatically with scheduling support. Use this skill whenever the user mentions: Threads posting, Instagram content, Facebook page management, cross-platform social media, viral posts, social media automation, content scheduling, Threads marketing, Meta algorithm optimization, growing on Threads/IG/FB, or automating their social media workflow. Also trigger for: quote cards, carousel generation, Reels scripts, social media images, or any Meta platform content creation task.

Meta 3-Platform Viral Agent

Autonomous agent: trend discovery → source verification → patent-optimized creation → quality gate → publishing.

Core Principle: MCP provides briefs/frameworks, LLM creates original content, scripts handle publishing.

Accounts & Tokens

Tokens in .env at skill root (auto-loaded by all scripts, no manual export needed):

AccountThreads IDIG IDToken vars
@claude.world.taiwan2610587026910792026911598668443478THREADS_TOKEN_CW, IG_TOKEN_CW
@lucasfutures2510489300254477925337739812567565THREADS_TOKEN_LF, IG_TOKEN_LF
  • App ID: 875447821838410 (THREADS_APP_ID)
  • Token expiry: 60 days, current ~2026-05-11
  • Renew: python3 scripts/threads_oauth.py auth-url → authorize → full --code CODE
  • Select account: --account cw or --account lf

MCP Tools (3 servers, 34 tools)

trend-pulse (11 tools) — 趨勢發現 + 內容優化框架

ToolPurposeWhen to use
get_trending(sources, geo, count, save)即時趨勢,20 個免費來源Step 1: 找主題
search_trends(query, sources, geo)關鍵字搜尋跨來源Step 1: 搜特定話題
list_sources()可用來源及 rate limit確認哪些來源可用
get_trend_history(keyword, days, source)歷史趨勢數據Step 3: 驗證話題熱度變化
take_snapshot(sources, geo, count)存快照到 DB,追蹤 velocity定期追蹤趨勢加速度
get_content_brief(topic, content_type, platform, lang)寫作指南:hook/CTA/策略Step 4a: 取 brief
get_scoring_guide(lang, topic)5 維度評分框架Step 5: 自評分數
get_review_checklist(platform, lang, topic)審稿清單Step 5: 品質門檻
get_platform_specs(platform, lang)平台規格(字數/功能/演算法)Step 4d: 平台適配
get_reel_guide(style, duration, lang, topic)Reel/短影片腳本指南做 Reel 時
render_page(url, format)CF Browser 渲染頁面(markdown/content/json)Step 2: 讀 JS-heavy 頁面

Sources: google_trends, hackernews, mastodon, bluesky, wikipedia, github, pypi, google_news, lobsters, devto, npm, reddit, coingecko, dockerhub, stackoverflow, arxiv, producthunt, lemmy, dcard, ptt

cf-browser (10 tools) — 瀏覽器渲染 + 截圖 + 爬蟲

ToolPurposeWhen to use
browser_markdown(url)網頁 → 乾淨 MarkdownStep 2: 讀原文(首選)
browser_json(url, prompt)AI 結構化抽取Step 1: 從任何頁面抽取數據
browser_content(url)渲染後完整 HTML需要原始 HTML 時
browser_screenshot(url, width, height)網頁截圖圖卡生成:HTML → 截圖 → PNG
browser_pdf(url, format, landscape)網頁轉 PDF生成可下載報告
browser_scrape(url, selectors)CSS 選擇器精準抓取抓特定元素(價格/標題/數據)
browser_links(url)抽取所有連結發現相關來源
browser_a11y(url)無障礙樹(低 token)快速理解頁面結構
browser_crawl(url, limit)非同步爬蟲批量抓取多頁
browser_crawl_status(job_id, wait)爬蟲進度等待爬蟲完成

notebooklm (13 tools) — 研究引擎 + 圖卡/音訊/影片生成

ToolPurposeWhen to use
nlm_create_notebook(title, sources, text_sources)建立筆記本,可餵 URL/文字深度研究前建立知識庫
nlm_list()列出所有筆記本查看已有研究
nlm_delete(notebook)刪除筆記本清理舊研究
nlm_add_source(notebook, url/text/file)新增來源(URL/文字/檔案)補充研究材料
nlm_ask(notebook, query)對來源提問(含引用)Step 2: 深度理解來源
nlm_summarize(notebook)摘要所有來源快速掌握全貌
nlm_list_sources(notebook)列出來源確認已餵入的材料
nlm_generate(notebook, type, lang, instructions)生成 9 種 artifact(⚠️ infographic 除外)圖卡/音訊/影片生成
nlm_download(notebook, type, output_path)下載 artifact(audio/slides/video)取得生成檔案
nlm_list_artifacts(notebook)列出 artifact查看已生成內容
nlm_research(notebook, query, mode)網路研究(fast/deep)Step 2: 自動搜集資料
nlm_research_pipeline(sources, questions, output_format)完整研究 → 內容 pipeline一鍵從 URL 到文章
nlm_trend_research(geo, count, platform)趨勢 → 研究 → 內容 pipeline全自動趨勢內容

nlm_generate 支援的 artifact 類型:

Type用途下載方法輸出格式
audioPodcast 風格音檔nlm_download(type="audio").m4a
video影片(音訊+幻燈片)nlm_download(type="video").mp4
slides簡報nlm_download(type="slides").pdf
report報告文件get_report_content()Markdown 文字
study-guide學習指南get_report_content()Markdown(report 子類型)
quiz測驗題get_quiz_data()JSON 結構化
flashcards閃卡get_flashcard_data()JSON 結構化
mind-map心智圖get_mind_map_data()JSON 樹狀結構
data-table數據表get_data_table()CSV / JSON
infographic資訊圖卡❌ 無 API 方法只能在 NotebookLM UI 檢視

注意: audio/video/slides 是二進位檔案下載;report/quiz/flashcards 等透過 API 取得文字/結構化資料。 我們的 wrapper CLI (notebooklm_client.py download) 已統一包裝。唯一無法下載的是 infographic。


Pipeline: 7 Steps (每步都是 BLOCKING,不可跳過)

Step 1: DISCOVER — 找主題

# trend-pulse — 即時趨勢
get_trending(geo="TW", count=20)             # 20 sources, zero auth
search_trends(query="Claude Code")           # keyword search
get_trend_history(keyword="AI", days=7)      # 歷史趨勢追蹤

# cf-browser — 從任何頁面抽取
browser_json(url, prompt="Extract...")       # AI 結構化抽取
browser_links(url)                           # 發現相關來源

# notebooklm — 趨勢研究一鍵 pipeline
nlm_trend_research(geo="TW", count=3, platform="threads")  # 自動:趨勢→研究→內容

Default niches: AI, 創業, 自媒體, 投資理財, 職場, 科技, 個人成長, 副業 Heat score: heat = likes + (replies × 3) + (reposts × 5)

Step 2: READ SOURCE — 讀原文(MANDATORY)

NEVER write content based on titles/metadata alone.

For every candidate topic, MUST read the original source:

Source TypeTool(優先順序)Minimum to read
Article/blogbrowser_markdown(url)全文
HN discussionbrowser_markdown(hn_url)原文 + top comments
Reddit postbrowser_markdown(reddit_url)原文 + top comments
GitHub repobrowser_markdown(github_url)README 全文
Official announcementbrowser_markdown(url)公告全文
JS-heavy/SPA 頁面render_page(url, format="markdown")全文(trend-pulse 備用渲染)
多來源深度研究nlm_research_pipeline(sources, questions)NotebookLM 自動摘要+引用

深度研究模式(多來源):

  1. nlm_create_notebook(title, sources=[url1, url2, ...]) — 餵入所有來源
  2. nlm_ask(notebook, "關鍵問題") — 對來源交叉提問(含引用)
  3. nlm_summarize(notebook) — 取得全貌摘要
  4. 用 nlm_research(notebook, query, mode="deep") 自動搜集更多相關資料

快速模式(單來源): 直接用 browser_markdown(url) 讀原文。

來源充足性標準:

  • 單一主題:至少讀 1 個一手來源(原文/公告/README)
  • 爭議性主題:至少讀 2 個來源(正反觀點各一)
  • 數據型主題:必須找到數據的原始出處(不接受二手引用)

批量主題:用 parallel agents 同時讀多個來源。

Exception: 僅當用戶明確表示「這是官方原文,不需要再查」時才跳過。 注意: 用戶提供的翻譯/轉述不算原文。涉及數字、時間、範圍的資訊 → 永遠讀原文,無例外。

Step 3: VERIFY TIMELINE — 驗證時間線(MANDATORY)

每一個事實都必須標注時間,且驗證時效性。

檢查項方法不合格處理
事件發生日期從原文抓取 published date無日期 → 不引用具體時間詞
數據新鮮度比對 trend search 的 published 欄位超過 7 天 → 不用「剛」「最新」
數字即時性upvotes/stars/comments 會變用「超過 X」而非精確數字,或加「截至發文時」
版本號從原文確認必須與原文一致
時區換算寫出完整公式驗算必須 ET 和 PT 交叉驗證

時區換算規則(曾因此出錯):

  1. 寫出公式:原始時間 + UTC offset + 8 = 台灣時間
  2. 注意日光節約:3-11月 PDT=UTC-7 / EDT=UTC-4,11-3月 PST=UTC-8 / EST=UTC-5
  3. 「以外」「outside of」→ 特別小心,容易把尖峰/離峰搞反
  4. 用 ET 和 PT 兩組數字各算一次,確認結果一致

時間詞對照表(以發文時間為基準):

原文時間可用詞禁用詞
今天「今天」「剛剛」—
昨天~3天前「這兩天」「前幾天」「剛」「最新」
4-7天前「上週」「這週」「剛」「昨天」
8-30天前「最近」「這個月」「上週」「剛」
>30天「之前」「今年」任何暗示新鮮的詞

Step 4: CREATE — 寫文案

4a: Get brief → get_content_brief(topic, content_type, platform, lang)

4b: LLM writes original content based on source + brief

4c: Patent check → get_scoring_guide() then verify EACH dimension against the draft:

#CheckPatentWhat to verifyCommon fix
1Hook 第一行有數字或反差?EdgeRank數字前置、好奇心缺口、10-45 字把關鍵數據搬到第一行
2CTA 人人都能回答?Dear Algo直接稱呼「你」、低門檻提問避免預設專業知識
3有轉折/正反兩面?72hr window「但是」「不過」製造討論空間加限制/爭議/Beta 面
4是即時熱點?夠短?Andromeda50-300 字、緊迫感用語刪冗字、加時間標記
5手機可掃描?Multi-modal換行、箭頭列表、無文字牆拆長句、加分隔

Conversation Durability < 55 → 必須加轉折再發。這是最常被忽略的維度。

4d: Adapt → get_platform_specs("") for platform-specific constraints

Platform targets:

  • Threads: ≤500 chars, strong Hook + CTA, no hashtags, 用 --poll 做投票
  • Instagram: ≤2200 chars, hashtags at end, carousel for depth
  • Facebook: Long-form with sections, personal angle

4e: Post Type Decision — 根據內容特性選擇最佳發文方式:

內容特性發文方式理由
有 2+ 張圖/視覺素材--carousel URL1 URL2 ...輪播觸及 > 單張
有 1 張圖--image URL圖文並茂 >> 純文字(官方數據)
有影片素材--video URL影片完播率是演算法重點信號
A/B/C 選擇題--poll "A|B|C"永遠用原生投票,不用文字版
需附連結--link-comment URLURL 放本文降觸及,放回覆不影響
想要連結預覽卡--link-attachment URL適合官方公告/文章分享
引用/回應他人貼文--quote-post-id ID引用貼借力,蹭原帖互動
含劇透/敏感內容--spoiler-media / --spoiler-text尊重讀者,防劇透同時引發好奇
輕鬆幽默/限時活動--ghost24hr 消失的限時感製造 FOMO
搞笑/反應--gif-id GIPHY_IDGIF 提升停留時間和趣味性(僅 GIPHY,Tenor 已於 2026/3/31 停止)
深度長文 (>500 字)--text-attachment file.txt本文寫摘要 + 長文附件放完整版
爭議話題/避免吵架--reply-control mentioned_only控制回覆品質
粉絲專屬內容--reply-control followers_only增加追蹤動機
所有有圖的貼文--alt-text "描述"無障礙 + SEO 信號
想被探索頁推薦--topic-tag "主題"幫演算法分類,觸及感興趣受眾

組合規則:

  • 有圖/影片 → 一律加 --topic-tag + --alt-text
  • 有 URL 要分享 → 用 --link-comment(不放本文),除非需要預覽卡才用 --link-attachment
  • Carousel + Spoiler → 所有圖片一起模糊
  • Carousel + alt-text → 不可組合(API 限制:alt_text 無法用於 CAROUSEL 類型)
  • Ghost + 文字 Spoiler → 可以組合,但 Ghost 不支援媒體 Spoiler
  • Poll + Image → 不可組合(Poll 僅支援 TEXT 類型)

4f: Generate Image (MANDATORY — NotebookLM ONLY) — 每篇貼文都必須有圖。純文字僅限純投票或極短問題(<50字)。

⚠️ 必須用 NotebookLM 生圖卡。不准跳過 NLM 直接用 HTML+Playwright。

#方式工具適用場景
1NotebookLM Slides(唯一正式方式)nlm_generate(type="slides") → nlm_download → PDF → PNG所有場景,無例外
2HTML + Playwright(緊急備用)寫 HTML → Playwright screenshot → PNG僅當 NLM MCP 完全不可用(連線失敗、未安裝)才可降級。NLM 超時應重試,不算失敗。

⛔ 嚴格禁止:不得使用 Pillow、Python PIL、ImageMagick 或任何程式碼直接生成圖卡。 所有圖卡一律透過 NotebookLM slides 生成。NLM 產出的多頁 slides 品質遠高於程式碼生成。

NLM Slides 流程(必須執行):

# 1. 建立筆記本,餵入來源 URL + 重點文字摘要
nlm_create_notebook(title, sources=[URLs], text_sources=[重點文字])

# 2. 生成 slides(指定頁數、風格、內容)
nlm_generate(notebook, type="slides", lang="zh-TW", instructions="製作 3-4 頁社群媒體圖卡...")

# 3. 下載 PDF
nlm_download(notebook, type="slides", output_path="/tmp/slides.pdf")

# 4. PDF → PNG 各頁截圖
pdftoppm -png -r 300 /tmp/slides.pdf /tmp/slide

# 5. 上傳取得公開 URL
curl -F "reqtype=fileupload" -F "time=24h" -F "fileToUpload=@/tmp/slide-1.png" \
  https://litterbox.catbox.moe/resources/internals/api.php

NLM 超時處理: 超時不等於失敗,重試 1-2 次。只有 MCP server 完全離線才降級到 Playwright。

多頁圖卡 → Carousel(⚠️ 重要): NLM slides 產生多頁 PDF 時,必須:

  1. pdftoppm -png -r 300 slides.pdf slide 拆成各頁 PNG
  2. 逐張上傳:對每張 PNG 呼叫 upload_image(file_path="downloads/slide-N.png") 取得公開 URL
  3. 用 carousel 發文:publish_to_threads(text="...", carousel_urls=[url1, url2, ...]) — 不要用 image,那只發單張

4g: Final check — 發文前最後檢查:

  • 有圖嗎? 沒有 → 回 4f 製圖(除非純投票)
  • 根據 4e 決策表,選對了發文方式?
  • A/B/C 選項 → 用了 --poll?
  • 有來源 URL → 用了 link_comment / --link-comment?(MANDATORY — 來源連結必須出現在留言)
  • 有圖 → 加了 --alt-text?
  • 加了 --topic-tag?
  • 時間詞與 Step 3 驗證結果一致?
  • 所有數字都有原文出處?

Step 5: REVIEW — 品質門檻

Use MCP tools for structured review:

  1. get_review_checklist(lang="zh-TW") → LLM reviews against checklist(含 penalty pre-check)
  2. Polish: remove AI filler ("在當今"/"隨著"/"值得注意"), strengthen hook, sharpen CTA
  3. get_scoring_guide(lang="zh-TW") → LLM self-scores all 5 dimensions(penalty 已在 step 1 檢查)

5a: Algorithm Penalty Pre-Check (BLOCKING — must pass before scoring)

Source: https://creators.instagram.com/threads

PenaltyDetectionAuto-Reject Action
ClickbaitHook 承諾了正文沒兌現的東西改寫 hook 對齊實際內容
Engagement bait含「按讚」「轉發」「追蹤」等直接要求互動刪除,改用自然 CTA
Contest/Giveaway 違規活動要求互動行為作為參加條件移除或改為不要求互動
Unoriginal content從其他平台原封不動搬運,無原創角度加入個人觀點/在地化/新角度

任何 penalty flag 觸發 → 必須改寫後才能進入評分。

5b: Tone & Authenticity Check (Official Threads Guidelines)

CheckPassFail → Fix
有個人觀點/經驗連結?含「我」「自己」或具體經歷加入個人角度或真實體驗
語氣自然有人味?像跟朋友聊天去掉公司腔、AI 腔
幽默元素?有趣/機智/意外感(非必要但加分)考慮加入輕鬆元素
能引發對話?包含可討論的問題或觀點加反問或開放式問題

5c: Quality Gate (ALL must pass):

GateThresholdFail action
Penalty pre-checkAll penalties clearRewrite per 5a
Overall Score≥ 70Rewrite weak dimensions
Conversation Durability≥ 55Add 轉折/爭議面
Hook (first line)10-45 字 + 數字或反差Rewrite first line
CTA (last line)Clear question or pollAdd or sharpen
Timeline accuracyAll time words verifiedFix per Step 3 table
Source groundingEvery claim traceable to sourceRemove unverifiable claims
Character limitThreads ≤500, IG ≤2200Trim
台灣繁中語氣Natural, no 簡體/AI 腔Rewrite
Topic tag每篇都有 --topic-tag加上相關主題標籤
圖文並茂有視覺素材(除純投票)回 Step 4f 製圖

A/B Variant Strategy (for Viral Score ≥ 85):

  • Variant A (@claude.world.taiwan): Opinion-first (帶觀點)
  • Variant B (@lucasfutures): Question-first (提問式)

Step 6: PUBLISH

⚠️ MANDATORY: Source URL → link_comment If the content references ANY source URL (from Step 2), you MUST include it as link_comment (MCP tool) or --link-comment (CLI). This is NOT optional — every post that has a source gets the source URL auto-replied in comments. The source URL is the original article/repo/announcement URL you read in Step 2.

When using MCP publish_to_threads tool:

publish_to_threads(
  text: "...",
  account_id: "...",
  score: 85,
  link_comment: "https://source-url-from-step-2",  // ← MANDATORY if source exists
  ...
)

When using CLI:

# Threads — 支援所有發文類型 (auto-loads token from .env)
# 基本文字
python3 scripts/threads_api.py publish --account cw --text "content"
# 圖片
python3 scripts/threads_api.py publish --account cw --text "caption" --image "https://public-url/img.jpg"
# 影片 (max 5min, 9:16 or 16:9)
python3 scripts/threads_api.py publish --account cw --text "caption" --video "https://public-url/video.mp4"
# 輪播 (2-20 張)
python3 scripts/threads_api.py publish --account cw --text "caption" --carousel URL1 URL2 URL3
# 投票 (2-4 選項, max 25 chars each)
python3 scripts/threads_api.py publish --account cw --text "content" --poll "選項A|選項B|選項C"
# GIF (GIPHY only — Tenor 已於 2026/3/31 停止服務)
python3 scripts/threads_api.py publish --account cw --text "funny!" --gif-id "GIPHY_GIF_ID"
# 引用貼文
python3 scripts/threads_api.py publish --account cw --text "My take" --quote-post-id "12345"
# 連結預覽卡
python3 scripts/threads_api.py publish --account cw --text "Read this" --link-attachment "https://url"
# 長文 (up to 10,000 chars via text attachment, 支援 bold/italic/highlight/underline/strikethrough)
python3 scripts/threads_api.py publish --account cw --text "Summary" --text-attachment long_article.txt
# 防劇透 — 模糊媒體
python3 scripts/threads_api.py publish --account cw --text "Spoiler!" --image URL --spoiler-media
# 防劇透 — 遮蔽文字 (offset:length, 可重複)
python3 scripts/threads_api.py publish --account cw --text "The killer is John" --spoiler-text "15:4"
# 限時貼文 (24hr 後消失)
python3 scripts/threads_api.py publish --account cw --text "Vanishes!" --ghost
# 回覆控制
python3 scripts/threads_api.py publish --account cw --text "content" --reply-control mentioned_only
# Topic Tag
python3 scripts/threads_api.py publish --account cw --text "content" --topic-tag "AI tools"
# 無障礙描述
python3 scripts/threads_api.py publish --account cw --text "content" --image URL --alt-text "description"
# Link comment (自動回覆連結, 避免觸及下降)
python3 scripts/threads_api.py publish --account cw --text "content" --link-comment "https://url"
# 查看投票結果
python3 scripts/threads_api.py poll-results --account cw --post-id "12345"
# 串文 Thread (用 --- 分段, 第一篇可加圖)
python3 scripts/threads_api.py publish --account cw \
  --text "1/3 為什麼我從 VS Code 轉到 Claude Code?---2/3 最大的差別是...---3/3 結論:回不去了" \
  --thread --image "https://example.com/comparison.png" --topic-tag "開發工具"
# 功能可組合: 圖片 + 防劇透 + 回覆控制 + topic tag + alt text
python3 scripts/threads_api.py publish --account cw --text "content" \
  --image URL --spoiler-media --reply-control followers_only --topic-tag "spoiler" --alt-text "描述"

# Instagram image
source .env
CONTAINER=$(curl -s -X POST "https://graph.instagram.com/v21.0/$IG_USER_CW/media" \
  -d "image_url=PUBLIC_URL" --data-urlencode "caption=CAPTION" -d "access_token=$IG_TOKEN_CW")
CONTAINER_ID=$(echo "$CONTAINER" | python3 -c "import sys,json; print(json.load(sys.stdin)['id'])")
sleep 5
curl -s -X POST "https://graph.instagram.com/v21.0/$IG_USER_CW/media_publish" \
  -d "creation_id=$CONTAINER_ID" -d "access_token=$IG_TOKEN_CW"

# Instagram Reel (MP4) — use media_type=REELS + video_url, poll status_code until FINISHED
# Same pattern for LF accounts with IG_USER_LF / IG_TOKEN_LF

# Upload image for IG API
curl -F "reqtype=fileupload" -F "time=24h" -F "fileToUpload=@img.png" \
  https://litterbox.catbox.moe/resources/internals/api.php

Publishing order (Andromeda-optimized): Threads 21:00 → IG 12:00 next day → FB 09:00 next day

Rate limits:

操作上限
Threads 發文250 篇 / 24 小時
Threads 回覆1,000 則 / 24 小時
Threads 刪除100 次 / 24 小時
IG 發文25 / 24hr
FB 發文50 / 24hr

Step 7: REPORT — 輸出摘要

每次發文後輸出:

## 發文報告
- 主題:
- 來源:[URL] (published: YYYY-MM-DD)
- 帳號:CW post_id / LF post_id
- Penalty 檢查:✅ 無觸發 / ⚠️ [clickbait|engagement-bait|contest|unoriginal]
- 語氣檢查:✅ 有人味 / ⚠️ [缺個人觀點|公司腔|無幽默]
- 專利評分:Hook=X Engage=X Convo=X Velocity=X Format=X → Overall=X (Grade)
- 時間詞驗證:✅ / ⚠️ [哪些需注意]
- 來源留言:✅ link_comment=[URL] / ❌ 無來源 URL
- 附加功能:✅ --poll / --spoiler / --carousel / --ghost / --quote / N/A
- Topic Tag:✅ [tag name] / ❌ 缺

Mandatory Content Rules

1. Polls: Always Use Native --poll

NEVER use text-based A/B/C in post body. Always use --poll:

python3 scripts/threads_api.py publish --account cw \
  --text "AI 該不該拒絕指令?" --poll "應該|不應該|看情況"

Constraints: 2-4 options, each ≤25 chars, total JSON ≤200 chars → use 2-3 short options (2-5 字)

2. Links: Always Use --link-comment (or --link-attachment)

Never put URLs in post body (kills reach).

  • 一般連結 → --link-comment URL (自動回覆,不影響觸及)
  • 需要預覽卡 → --link-attachment URL (嵌入連結卡片,適合官方公告)

3. Spoiler: 劇透/敏感內容必用防劇透

內容類型方式範例
圖片/影片含劇透--spoiler-media--image URL --spoiler-media
文字含劇透--spoiler-text offset:length--text "兇手是王小明" --spoiler-text "3:3"
輪播含劇透--carousel ... --spoiler-media所有圖片一起模糊

4. Media: 一律使用 NotebookLM 生成圖卡

⚠️ 所有發文都必須附圖,圖卡一律使用 NotebookLM slides 生成(不得用 Pillow/PIL/程式碼)。

圖卡生成規則:

  • 內容有 2+ 個主題/項目 → NLM slides 指定多頁 → Carousel(carousel_urls)
  • 內容只有 1 個主題 → NLM slides 指定 1 頁 → Image(image)
  • 週報/回顧/清單型內容 → 一律 Carousel(每個重點一頁 slide)

發文方式決策:

  1. NLM slides ≥ 2 頁 → Carousel (carousel_urls=[url1, url2, ...])
  2. NLM slides = 1 頁 → Image (image=url) + --alt-text
  3. 有影片 → Video (video=url) + --alt-text
  4. 搞笑/反應 → GIF (gif_id)
  5. 純文字 → 考慮是否用 --text-attachment 放長文

5. Topic Tag + Alt Text: 預設都加

  • --topic-tag: 每篇都加,幫演算法分類
  • --alt-text: 所有含圖/影片的貼文都加,無障礙 + SEO

6. Reply Control: 根據話題性質選擇

場景設定
一般貼文不設(預設 everyone)
爭議性高/怕吵架--reply-control mentioned_only
粉絲專屬--reply-control followers_only
官方公告/不需回覆--reply-control parent_post_author_only

7. Ghost Post: 限時感行銷

適用場景:限時優惠、活動預告、幕後花絮。--ghost 24hr 自動消失。

8. Quote Post: 借力互動

看到值得回應的熱門貼文 → --quote-post-id ID 加上自己的觀點。

9. Source + Timeline: Read and Verify Before Writing

Every post must satisfy:

  • Source: Read original via browser_markdown(url) — see Step 2
  • Timeline: Verify dates and use correct time words — see Step 3
  • Numbers: Traceable to source, use "超過 X" for changing metrics

Full Auto-Pilot Mode

Trigger: "自動發文", "auto post", "幫我發三個平台", "排程發文"

Execute ALL 7 steps in order:

  1. DISCOVER → get_trending(geo="TW", count=20) → pick top candidates
  2. READ SOURCE → browser_markdown(url) for each candidate (parallel agents for batch)
  3. VERIFY TIMELINE → check published dates, map to time words
  4. CREATE → get_content_brief() → LLM writes → patent check → post type decision (4e) → generate image (4f, MANDATORY) → final check (4g)
  5. REVIEW → get_review_checklist() + get_scoring_guide() → quality gate (≥70, convo ≥55)
  6. PUBLISH → 根據 4e 決策結果組合 CLI 參數 → Threads → IG → FB
  7. REPORT → output summary with scores, sources, timeline verification, features used

Auto-Pilot 發文方式自動決策:

  • 有圖卡 → --image + --alt-text + --topic-tag
  • 多張圖 → --carousel + --alt-text + --topic-tag
  • 選擇題 → --poll,不用文字版
  • 有來源 URL(Step 2 讀的原文) → 必須用 link_comment 發到留言
  • 爭議話題 → --reply-control mentioned_only
  • 劇透/洩露 → --spoiler-media 或 --spoiler-text
  • 限時活動 → --ghost
  • 回應熱帖 → --quote-post-id

Auto-Pilot 圖卡:見 Step 4f(不重複,以 4f 為準)。

Video pipeline:

  • Video: PNGs → ffmpeg ... -f lavfi -i anullsrc ... -profile:v baseline -c:a aac -movflags +faststart output.mp4
  • CRITICAL: IG Reels must have silent audio track + H.264 baseline profile, otherwise black/unplayable
  • NLM Audio: nlm_generate(type="audio") → .m4a / NLM Video: nlm_generate(type="video") → .mp4
  • Reel scripts: get_reel_guide(style, duration, lang) — styles: educational, storytelling, listicle

Upload(取得公開 URL):

curl -F "reqtype=fileupload" -F "time=24h" -F "fileToUpload=@img.png" \
  https://litterbox.catbox.moe/resources/internals/api.php

Quick Reference

ScriptPurpose
scripts/threads_api.pyThreads: search, publish, batch, schedule
scripts/threads_oauth.pyOAuth token renewal (60-day cycle)
scripts/content_engine.pyLegacy content CLI (quote-card, reel-script)
scripts/meta_platforms_api.pyUnified 3-platform: verify, cross-post, status
references/patent_database.mdFull 7-patent analysis reference
Skills enregistrées