品牌語調
一份從品牌既有表述及客戶反應中萃取的語調指南。語調(Voice)是到處都保持不變的人格特質。語氣(Tone)則是該人格特質如何因應當下情境進行調整:一則搜尋廣告、一封道歉信、一位深夜 11 點前來諮詢的憂心客戶。風格(Style)則是一套讓兩者都能被重複應用的細則。此技能會記錄這三者,並將每個選擇建立在品牌自身的文案、其點擊結果、客戶的話語,以及競爭對手留下的缺口之上。
它也能獨立執行一種模式:網站訊息審計(步驟 7 之後)。該模式會一併閱讀網站關鍵頁面,檢查它們是否與廣告講述同一個故事,然後根據流量對修復項目進行排序。
開始之前
您需要已連線 InsightfulPipe MCP,且至少具備一個品牌的文案來源:Google Ads 或 Meta 廣告帳戶、Facebook 粉絲專頁、Instagram 或 LinkedIn 公司頁,或是 DataForSEO 可以讀取的網站。如果沒有任何來源,請使用結尾處的「無連線時」方案。
- 呼叫
query_contexts,request設為"accounts",對象包含google-ads、facebook-ads、facebook-pages、instagram-profile、linkedin-pages、google-search-console和dataforseo。記下workspace_id、每列各自的brand_id(同一企業的不同帳戶可能分屬不同品牌),以及帳戶、頁面、網站或組織的 ID。在代理商工作空間中,請詢問此指南是為哪個企業製作的,並僅讀取該企業的帳戶。 - 針對下方「呼叫清單」中的每一個讀取動作,呼叫
query_contexts並將request設為"actions_details",然後遵循其傳回的請求主體形狀,但「如何執行查詢」一節中列出的例外情況除外。 - 詢問使用者,並在使用者不知道時使用預設值:
- 一句話描述品牌: 品牌的業務內容與服務對象。預設值:從廣告與頁面推斷;說明這是一個推斷結果。
- 他們喜歡的文案與覺得不對勁的文案: 各提供兩到三個例子,可以是他們的或任何人的。可選,且值得詢問:覺得不對勁的內容與覺得對勁的內容一樣有用。
- 品牌主張與反對什麼: 兩到三個塑造其說話方式的信念,例如「人們值得一個直接的答案」。可選。預設值:未提供,核心支柱僅依據證據;請如實說明。
- 競爭對手: 兩到五個名稱或網域。預設值:在 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_code2840 和language_codeen。將每次執行控制在 6 次呼叫:最多 3 次頁面讀取和 2 或 3 次搜尋。先讀取訪問量最大的頁面;如果回傳 0 筆資料,表示網站拒絕讀取,則不要為其他頁面付費。網站訊息審計有其自己的預算:每個頁面一次頁面讀取,執行前需說明(W1)。 - 網站訊息審計的呼叫已於 2026-10-30 測試: GA4 的
get_report按landingPage分組回傳了每次工作階段的會話數和關鍵事件。Search Console 的search_analytics按頁面和查詢分組回傳了完整的row_limit5,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 呼叫,與上方用於品牌本身的呼叫相同。在審計中,每個頁面都需要一次呼叫。執行前需說明預估的呼叫次數。