Community寫作與編輯github.com

Insightful-Pipe/brand-voice

從您的 Google Ads、Meta 廣告、社群貼文和網站文案中,建立品牌語調與風格指南及訊息架構,並據此檢查現有文案的符合度。適用於需要風格指南、訊息框架或網站訊息審計時。不適用於撰寫全新文案(請使用 copywriting 技能)。

brand-voice 是什麼?

此技能旨在分析品牌現有文案與廣告成效數據,自動產生一份完整的品牌語調、語氣與風格指南,並建立一個「訊息屋」(messaging house)架構。它透過 InsightfulPipe MCP 連接 Google Ads、Facebook 與 Instagram 廣告、粉絲專頁、LinkedIn 公司頁、Google Search Console 及 DataForSEO,匯集過去 90 天的廣告標題、描述、社群貼文、競品資訊與網站內容。AI 會根據點擊率、轉換率等成效指標,解析哪些用詞與語氣表現最佳,並結合同意陳述、品牌信念與現有規則,歸納出品牌的核心語調、語氣調整原則,以及可重複執行的風格規則。最終輸出為一份結構化的指南,可用於確保所有對外溝通的一致性。此技能也支援「網站訊息審計」模式,能同時分析網站關鍵頁面(如著陸頁、關於我們、產品頁),比對它們與廣告訊息是否講述同一個故事,並根據流量與關鍵事件數據,排出修復優先順序。支援的平台包括 Claude Code、Cursor 等可呼叫 MCP 工具的 AI 代理,並內建豐富的錯誤處理與降級策略,確保在任何資料源不可用時仍能產出有意義的結果。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Insightful-Pipe/content-creative-skills/tree/HEAD/skills/brand-voice

Installed? Explore more 寫作與編輯 skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

品牌語調

一份從品牌既有表述及客戶反應中萃取的語調指南。語調(Voice)是到處都保持不變的人格特質。語氣(Tone)則是該人格特質如何因應當下情境進行調整:一則搜尋廣告、一封道歉信、一位深夜 11 點前來諮詢的憂心客戶。風格(Style)則是一套讓兩者都能被重複應用的細則。此技能會記錄這三者,並將每個選擇建立在品牌自身的文案、其點擊結果、客戶的話語,以及競爭對手留下的缺口之上。

它也能獨立執行一種模式:網站訊息審計(步驟 7 之後)。該模式會一併閱讀網站關鍵頁面,檢查它們是否與廣告講述同一個故事,然後根據流量對修復項目進行排序。

開始之前

您需要已連線 InsightfulPipe MCP,且至少具備一個品牌的文案來源:Google Ads 或 Meta 廣告帳戶、Facebook 粉絲專頁、Instagram 或 LinkedIn 公司頁,或是 DataForSEO 可以讀取的網站。如果沒有任何來源,請使用結尾處的「無連線時」方案。

  1. 呼叫 query_contexts,request 設為 "accounts",對象包含 google-ads、facebook-ads、facebook-pages、instagram-profile、linkedin-pages、google-search-console 和 dataforseo。記下 workspace_id、每列各自的 brand_id(同一企業的不同帳戶可能分屬不同品牌),以及帳戶、頁面、網站或組織的 ID。在代理商工作空間中,請詢問此指南是為哪個企業製作的,並僅讀取該企業的帳戶。
  2. 針對下方「呼叫清單」中的每一個讀取動作,呼叫 query_contexts 並將 request 設為 "actions_details",然後遵循其傳回的請求主體形狀,但「如何執行查詢」一節中列出的例外情況除外。
  3. 詢問使用者,並在使用者不知道時使用預設值:
    • 一句話描述品牌: 品牌的業務內容與服務對象。預設值:從廣告與頁面推斷;說明這是一個推斷結果。
    • 他們喜歡的文案與覺得不對勁的文案: 各提供兩到三個例子,可以是他們的或任何人的。可選,且值得詢問:覺得不對勁的內容與覺得對勁的內容一樣有用。
    • 品牌主張與反對什麼: 兩到三個塑造其說話方式的信念,例如「人們值得一個直接的答案」。可選。預設值:未提供,核心支柱僅依據證據;請如實說明。
    • 競爭對手: 兩到五個名稱或網域。預設值:在 Google 中針對品牌前兩個非品牌搜尋主題(步驟 5)出現的企業。
    • 已存在的規則: 風格指南、禁用詞、關於主張的法律或法規限制(法律、健康、金融、酒精)。預設值:無,但每個最高級用詞仍會被標記(步驟 6)。
    • 文案的應用場域: 指南必須涵蓋的管道。預設值:步驟 1 中發現的管道,再加上網站與電子郵件。

若僅進行網站訊息審計,請在步驟 1 中也查詢 google-analytics 和 crawler,並詢問該模式自身的問題(參閱「模式:網站訊息審計」),而非上述清單。

時間範圍: 廣告、貼文與搜尋詞:最近 90 個完整日。請在報告頂部註明日期。

如何執行查詢

每次讀取都透過 query_data 執行,並指明平台名稱。此技能絕不呼叫 execute_action。在實際執行中發現的規則:

  • Google Ads 日期: DURING LAST_90_DAYS 會被拒絕。請使用 segments.date BETWEEN 'YYYY-MM-DD' AND 'YYYY-MM-DD'。
  • Meta Ads 拒絕巢狀欄位: 使用 creative{title,body} 的 get_ads 會被拒絕。請請求純 creative 欄位,它會回傳創意 ID,然後使用 get_ad_creatives 讀取文字。已刪除的廣告仍會出現在洞察資料中,但不會出現在 get_ads 中;請將它們排除並計數。
  • 部分網站拒絕自動化讀取: 在實作時,客戶網站回傳 403,且 onpage_content_parsing 回傳 0 筆資料(無錯誤)。發生此情況時,請從步驟 5 搜尋中 Google 為品牌頁面顯示的標題和摘要來解讀頁面語調,要求使用者貼上一兩個關鍵頁面,並說明您使用了哪些資料。
  • SEO 爬蟲可能故障: 在 2026-10-06,每個爬蟲動作都回傳 Error fetching URL,包含對照網站。請使用 DataForSEO 獲取頁面文字,並將 content-quality-checker 和 brand-extractor 視為可選附加功能。在 2026-10-30,爬蟲恢復正常,brand-extractor 回傳了顏色、字型和按鈕資訊。
  • 廣告資料庫可能故障: 同一天,google_company_ads 和 google_search_advertisers 即使在非常大的廣告主身上也回傳空值,而 facebook_search_companies 則因連線重置而失敗。來自資料庫的競爭對手廣告在實作時未經測試;競爭對手語調改為來自 Google 搜尋結果(步驟 5)。
  • LinkedIn 公司頁可能需要重新連線: 如果某次呼叫回傳 "請重新連線您的 LinkedIn 公司頁",請跳過 LinkedIn,說明原因並繼續。LinkedIn 讀取在連線成功前未經測試。
  • Search Console 限制僅查詢的提取最多 1,000 行: 這對詞彙分析而言足夠;請說明清單是前 1,000 筆。
  • DataForSEO 需要付費: 除非目標受眾在其他地區,否則請使用 location_code 2840 和 language_code en。將每次執行控制在 6 次呼叫:最多 3 次頁面讀取和 2 或 3 次搜尋。先讀取訪問量最大的頁面;如果回傳 0 筆資料,表示網站拒絕讀取,則不要為其他頁面付費。網站訊息審計有其自己的預算:每個頁面一次頁面讀取,執行前需說明(W1)。
  • 網站訊息審計的呼叫已於 2026-10-30 測試: GA4 的 get_report 按 landingPage 分組回傳了每次工作階段的會話數和關鍵事件。Search Console 的 search_analytics 按頁面和查詢分組回傳了完整的 row_limit 5,000 行。爬蟲檢查在允許讀取的網站上成功運作,brand-extractor 回傳了按鈕標籤。在拒絕自動化讀取的網站上,爬蟲不會報錯:meta-tags-checker 回傳 title_tag_count 為 0,headings-checker 回傳 no_headings。請將其視為「無法讀取」,絕非缺少標題或 H1。當品牌有多個 DataForSEO 連線時,請在頁面讀取請求中加入 account_id。
  • 控制呼叫節奏: 每 2 秒最多發出一次呼叫。當某次呼叫被拒絕並附帶重試時間時,請等待該時間長度後再重試一次。

如果某次呼叫失敗,請繼續進行。將該來源標記為未知,說明哪個呼叫失敗及其原因,並且絕不憑猜測填補缺口。

呼叫清單

Google Ads:每個標題和描述及其各自的點擊數

{"platform": "google-ads", "action": "gaql", "workspace_id": "<WORKSPACE_ID>", "brand_id": "<BRAND_ID>", "account_id": "<CUSTOMER_ID>",
 "query": "SELECT campaign.name, ad_group_ad_asset_view.field_type, ad_group_ad_asset_view.performance_label, asset.text_asset.text, metrics.impressions, metrics.clicks, metrics.conversions FROM ad_group_ad_asset_view WHERE segments.date BETWEEN '<START>' AND '<END>' AND ad_group_ad_asset_view.field_type IN ('HEADLINE', 'DESCRIPTION') AND campaign.status = 'ENABLED' AND ad_group_ad_asset_view.enabled = TRUE AND metrics.impressions > 0 ORDER BY metrics.impressions DESC LIMIT 1000"}

Google Ads:廣告及其連結目標

{"platform": "google-ads", "action": "gaql", "workspace_id": "<WORKSPACE_ID>", "brand_id": "<BRAND_ID>", "account_id": "<CUSTOMER_ID>",
 "query": "SELECT campaign.name, ad_group.name, ad_group_ad.ad.id, ad_group_ad.ad.responsive_search_ad.headlines, ad_group_ad.ad.responsive_search_ad.descriptions, ad_group_ad.ad.final_urls, ad_group_ad.ad_strength, metrics.impressions, metrics.clicks, metrics.conversions FROM ad_group_ad WHERE segments.date BETWEEN '<START>' AND '<END>' AND ad_group_ad.status = 'ENABLED' AND campaign.status = 'ENABLED' AND ad_group_ad.ad.type = 'RESPONSIVE_SEARCH_AD' AND metrics.impressions > 0 ORDER BY metrics.impressions DESC LIMIT 50"}

獲得最多曝光次數的最終 URL 即是步驟 1 中需讀取的頁面。

Google Ads:帳戶總曝光與點擊數(用以說明搜尋詞報告涵蓋範圍)

{"platform": "google-ads", "action": "gaql", "workspace_id": "<WORKSPACE_ID>", "brand_id": "<BRAND_ID>", "account_id": "<CUSTOMER_ID>",
 "query": "SELECT metrics.impressions, metrics.clicks FROM customer WHERE segments.date BETWEEN '<START>' AND '<END>'"}

Google Ads:客戶搜尋的詞語

{"platform": "google-ads", "action": "search_terms_report", "workspace_id": "<WORKSPACE_ID>", "brand_id": "<BRAND_ID>", "account_id": "<CUSTOMER_ID>", "start_date": "<START>", "end_date": "<END>", "limit": 5000}

Meta Ads:哪些廣告有投放,然後讀取其文字

{"platform": "facebook-ads", "action": "get_insights_adaccount", "workspace_id": "<WORKSPACE_ID>", "brand_id": "<BRAND_ID>", "ad_account_id": "act_<ID>", "level": "ad", "fields": ["ad_id", "ad_name", "impressions", "inline_link_clicks", "inline_link_click_ctr", "spend"], "time_range": {"since": "<START>", "until": "<END>"}}
{"platform": "facebook-ads", "action": "get_ads", "workspace_id": "<WORKSPACE_ID>", "brand_id": "<BRAND_ID>", "ad_account_id": "act_<ID>", "fields": ["id", "name", "status", "creative"]}
{"platform": "facebook-ads", "action": "get_ad_creatives", "workspace_id": "<WORKSPACE_ID>", "brand_id": "<BRAND_ID>", "ad_account_id": "act_<ID>", "fields": ["id", "name", "title", "body", "object_story_spec"]}

比對廣告 → 創意 ID → body(主要文字)和 title(標題)。主要文字也可能位於 object_story_spec.link_data.message 中。

Facebook 粉絲專頁貼文

{"platform": "facebook-pages", "action": "get_posts", "workspace_id": "<WORKSPACE_ID>", "brand_id": "<BRAND_ID>", "page_id": "<PAGE_ID>", "fields": ["id", "message", "created_time", "permalink_url", "status_type", "shares"], "since": "<START>", "until": "<END>", "limit": 50}
{"platform": "facebook-pages", "action": "get_post_insights", "workspace_id": "<WORKSPACE_ID>", "brand_id": "<BRAND_ID>", "page_id": "<PAGE_ID>", "post_id": "<POST_ID>", "metrics": ["post_media_view", "post_clicks", "post_reactions_by_type_total"], "period": "lifetime"}

get_posts 拒絕巢狀欄位,例如 likes.summary(true),即使幫手函式列出它們,因此這些呼叫不會回傳評論數。shares 可能在某篇貼文中缺失(在實作時讀取的粉絲專頁貼文中,每篇貼文都缺失);將缺失欄位計為 0。每篇貼文一次洞察呼叫;最多讀取最近 30 篇貼文。

Instagram 貼文

{"platform": "instagram-profile", "action": "get_media", "workspace_id": "<WORKSPACE_ID>", "brand_id": "<BRAND_ID>", "account_id": "<INSTAGRAM_USER_ID>", "fields": "id,caption,media_type,media_product_type,permalink,timestamp,comments_count,like_count", "limit": 50}

LinkedIn 公司頁貼文(連線成功前未經測試)

{"platform": "linkedin-pages", "action": "fetch_organization_posts", "workspace_id": "<WORKSPACE_ID>", "brand_id": "<BRAND_ID>", "org_id": "<ORG_ID>", "count": 50}

Search Console:人們如何找到網站

{"platform": "google-search-console", "action": "search_analytics", "workspace_id": "<WORKSPACE_ID>", "brand_id": "<BRAND_ID>", "site_url": "<SITE_URL>", "dimensions": ["query"], "start_date": "<START>", "end_date": "<END>", "row_limit": 1000}

頁面文字(DataForSEO,每個頁面一次付費呼叫)

{"platform": "dataforseo", "action": "onpage_content_parsing", "workspace_id": "<WORKSPACE_ID>", "brand_id": "<BRAND_ID>", "url": "<PAGE_URL>"}

文字位於 page_content.main_topic:每個區塊都有 h_title、level 和 primary_content[].text。讀取首頁以及廣告將最多人導向的一到兩個頁面。

競爭對手及品牌自身在 Google 中的摘要片段(DataForSEO,每次搜尋一次付費呼叫)

{"platform": "dataforseo", "action": "serp_google_organic", "workspace_id": "<WORKSPACE_ID>", "brand_id": "<BRAND_ID>", "keyword": "<TOP_NON_BRAND_THEME>", "location_code": 2840, "language_code": "en", "depth": 20}

可選附加功能

{"platform": "crawler", "action": "content-quality-checker", "workspace_id": "<WORKSPACE_ID>", "url": "<PAGE_URL>"}
{"platform": "crawler", "action": "brand-extractor", "workspace_id": "<WORKSPACE_ID>", "url": "<HOMEPAGE_URL>"}

content-quality-checker 增加可讀性與字數統計;brand-extractor 增加顏色、字型和按鈕資訊,用於指南中的視覺識別行。競爭對手廣告:先使用 facebook_search_companies 再使用 facebook_company_ads(帶入 page_id),或使用 google_company_ads(帶入競爭對手的 domain)(廣告資料庫)。

網站訊息審計的呼叫

GA4:訪客從哪些頁面開始瀏覽,以及關鍵事件

{"platform": "google-analytics", "action": "get_report", "workspace_id": "<WORKSPACE_ID>", "brand_id": "<BRAND_ID>", "property_id": "properties/<PROPERTY_ID>", "dimensions": ["landingPage"], "metrics": ["sessions", "keyEvents"], "start_date": "<START>", "end_date": "<END>"}

按著陸頁面分組的工作階段數量即為進入次數:從該頁面開始的訪問。

Search Console:每個頁面被哪些查詢找到

{"platform": "google-search-console", "action": "search_analytics", "workspace_id": "<WORKSPACE_ID>", "brand_id": "<BRAND_ID>", "site_url": "<SITE_URL>", "dimensions": ["page", "query"], "start_date": "<START>", "end_date": "<END>", "row_limit": 5000}

爬蟲:一個頁面的標題、Meta 描述、標題與按鈕標籤(無需付費額度)

{"platform": "crawler", "action": "meta-tags-checker", "workspace_id": "<WORKSPACE_ID>", "url": "<PAGE_URL>"}
{"platform": "crawler", "action": "headings-checker", "workspace_id": "<WORKSPACE_ID>", "url": "<PAGE_URL>"}
{"platform": "crawler", "action": "brand-extractor", "workspace_id": "<WORKSPACE_ID>", "url": "<PAGE_URL>"}

按鈕標籤位於 brand-extractor 的 primaryButton.text 和 buttons[].text 中。如果兩個爬蟲檢查都回傳空值(title_tag_count 為 0 且 no_headings),表示網站拒絕了爬蟲:請從頁面文字中獲取標題、標題與標籤,或要求貼上。

頁面正文文字: DataForSEO 的 onpage_content_parsing 呼叫,與上方用於品牌本身的呼叫相同。在審計中,每個頁面都需要一次呼叫。執行前需說明預估的呼叫次數。

相關技能