agentsclimarketplace

Social media intelligence tw

Skill richardvt/claude-skills-journalism-tw/journalism-core-tw/skills/social-media-intelligence-tw

台灣新聞社群媒體情報與 OSINT 工作流程 (繁體中文/台灣專用版,對應 upstream social-media-intelligence 的美國版)。涵蓋:跨平台即時監測 (台灣場景:Threads/PTT/Dcard/LINE/FB/X/TikTok)、帳號真實性分析、敘事追蹤、協同操作偵測、台灣資訊作戰研究方法 (DoubleThink Lab、IORG)、2024 大選境外干預案例、平台研究 API (Meta Content Library、X 付費 API、TikTok Research API、Bluesky Jetstream)、Bellingcat / WITNESS 等國際工具、法律風險 (《選罷法》§104 加重深偽、《社維法》§63 散布謠言、《刑法》§310)、倫理規範。追蹤協同操作、跨平台敘事擴散、突發新聞社群監測、調查報導 OSINT 時觸發。調查記者、查核員、跨平台追蹤研究員必備。From its SKILL.md

Install
npx -y skills add richardvt/claude-skills-journalism-tw --skill social-media-intelligence-tw

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

34.6 KB, ~13.6k tokens by cl100k_base, as published. Nobody here has run it

台灣新聞社群媒體情報工作流程

跨平台監測、敘事追蹤、調查協同操作之系統性方法,並依台灣社群生態與法律框架在地化。

source-verification-tw 互補:

  • source-verification-tw:單一帳號或內容之真偽驗證(SIFT、反向圖搜、C2PA、深偽偵測)
  • social-media-intelligence-tw:多帳號、多平台之模式偵測(協同操作、敘事追蹤、影響力作戰)

偵測單一帳號偽造 → 用 source-verification-tw;偵測 100 個帳號協同行為 → 用本 skill。


何時使用

  • 追蹤一則新聞跨平台之擴散路徑
  • 調查可疑之協同無真實性行為(Coordinated Inauthentic Behavior, CIB)
  • 突發新聞時跨多個平台即時監測
  • 分析帳號網絡與關係
  • 偵測機器人活動與操弄行動
  • 為數位調查建立證據鏈
  • 在內容被刪除前封存

使用邊界與 ToS guardrails

  • 只處理公開內容或已取得明確授權的資料;私人群組、私訊、封閉社團需先經編輯 / 法務審查。
  • 不繞過登入、付費牆、CAPTCHA、robots、速率限制或平台明示禁止的存取方式。
  • 優先使用官方 API、研究存取、授權資料商或人工取樣;第三方工具需確認授權與資料來源。
  • 本 skill 的 Python 區塊是資料結構與分析模式示例,不是授權爬取任何平台的許可。
  • 報告中記錄資料取得方式、時間範圍、平台限制與 last_checked 日期。

一、台灣資訊作戰生態速覽

詳細的研究機構介紹見 source-verification-tw §七。本節聚焦方法論

主要威脅來源(2026 年 5 月)

來源特徵主要研究者
中國國家影響力作戰AI 生成帳號、GoLaxy 系統、跨平台協同;偽裝台灣居民DoubleThink Lab、IORG
TikTok 演算法推播偏中政治內容、青少年認知重構IORG 2025 報告
WeChat 視頻號台商、新住民社群為入口DoubleThink Lab 報告
選舉期境外干預2024 大選深偽影片、AI 仿聲調查局、台灣事實查核中心
國內極端立場帳號兩端政治極化、刻意挑釁(各家媒體自行監測)
詐騙集團跨境操作假名人投資、假投資 LINE 群165 反詐騙、警政署

台灣本地常見敘事戰場

  • 兩岸關係:武統威脅、台灣經濟崩盤、美國棄台論
  • 健保、年金:制度崩潰、醫療資源不足
  • 選舉:候選人黑函、AI 仿聲、政黨內鬥
  • 能源:核電、綠能、限電議題
  • 移工、移民:族群偏見、犯罪統計操弄
  • 食安、健康:中藥治病、疫苗副作用

二、跨平台即時監測

Python/pseudocode:多平台貼文資料結構

from dataclasses import dataclass, field
from datetime import datetime
from typing import List, Optional, Dict
from enum import Enum
import hashlib

class Platform(Enum):
    THREADS = "threads"
    PTT = "ptt"
    DCARD = "dcard"
    LINE_OPENCHAT = "line_openchat"
    FACEBOOK = "facebook"
    INSTAGRAM = "instagram"
    YOUTUBE = "youtube"
    TIKTOK = "tiktok"
    X = "x"  # 原 Twitter,2023 改名 X
    BLUESKY = "bluesky"
    MASTODON = "mastodon"
    TELEGRAM = "telegram"
    WEIBO = "weibo"        # 中國微博
    XIAOHONGSHU = "xhs"    # 中國小紅書
    DOUYIN = "douyin"      # 中國抖音
    WECHAT = "wechat"

@dataclass
class SocialPost:
    platform: Platform
    post_id: str
    author: str
    content: str
    timestamp: datetime
    url: str
    engagement: Dict[str, int] = field(default_factory=dict)
    media_urls: List[str] = field(default_factory=list)
    archived_urls: List[str] = field(default_factory=list)
    content_hash: str = ""

    def __post_init__(self):
        # 內容 hash 用於重複偵測
        self.content_hash = hashlib.md5(
            f"{self.platform.value}:{self.content}".encode()
        ).hexdigest()

@dataclass
class MonitoringQuery:
    keywords: List[str]
    platforms: List[Platform]
    accounts: List[str] = field(default_factory=list)
    hashtags: List[str] = field(default_factory=list)
    exclude_terms: List[str] = field(default_factory=list)
    start_date: Optional[datetime] = None

突發新聞偵測:關鍵字爆量警示

from collections import defaultdict
from datetime import datetime, timedelta

class BreakingNewsDetector:
    """偵測關鍵字提及之突發爆量。"""

    def __init__(self, baseline_window_hours: int = 24):
        self.baseline_window = timedelta(hours=baseline_window_hours)
        self.mention_history = defaultdict(list)

    def add_mention(self, keyword: str, timestamp: datetime):
        self.mention_history[keyword].append(timestamp)
        cutoff = datetime.now() - self.baseline_window * 2
        self.mention_history[keyword] = [
            t for t in self.mention_history[keyword] if t > cutoff
        ]

    def is_spiking(self, keyword: str, threshold_multiplier: float = 3.0) -> bool:
        now = datetime.now()
        recent = sum(1 for t in self.mention_history[keyword]
                    if t > now - timedelta(hours=1))

        baseline_hourly = len([
            t for t in self.mention_history[keyword]
            if t > now - self.baseline_window
        ]) / self.baseline_window.total_seconds() * 3600

        if baseline_hourly == 0:
            return recent > 10
        return recent > baseline_hourly * threshold_multiplier

台灣場景突發新聞監測建議關鍵字

  • 災害:颱風、地震、土石流、淹水、停電
  • 重大事件:總統、立法院、行政院、外交、兩岸
  • 突發醫療:疫情、食安、藥品回收
  • 詐騙趨勢:假投資、假LINE群、假電商

三、台灣社群平台特性(2026 年)

詳細的單一帳號驗證見 source-verification-tw §二。本節聚焦研究存取與監測

各平台研究存取狀態

平台 API、研究資格、價格與禁止事項高頻變動。使用下表前先查官方 developer docs / ToS / researcher access 頁面,並在報告中註明 last_checked 日期;若無法確認,只做人工觀察或明確標示資料限制。

平台研究存取注意事項
ThreadsThreads API(發布/嵌入);Meta Content Library(研究批次)2026 年 3 月公開檔案門檻降至 100 追蹤者;歷史研究需 Meta CL 學術資格
Facebook / InstagramMeta Content Library(2024/8 取代 CrowdTangle);Junkipedia(免費);NewsWhip(付費)CrowdTangle 已永久停運;Meta CL 自 2025/12/8 起改由 Meta 直接申請,學術或非營利為主
X (Twitter)付費 API(2026/2 改 pay-per-use);Brandwatch / Sprinklr(第三方付費)2023 取消免費學術層;禁止 scraping;台灣記者多透過 X Pro Search 或第三方資料商
TikTokResearch API(學術/非營利;EU DSA 第 40 條對 EU 研究者較寬鬆);Exolyt、Pentos(付費)台灣記者較難直接取得;IORG 2025 報告經正式申請取得
PTT完全開放網頁爬蟲(無需 API);PTT Web、PttPedia2026 年仍是台灣記者主要監測對象之一;新註冊 ID 在政治看板發文要警覺;不可錄製內部聊天
Dcard無公開 API;禁止商業 scraping(2023 政策更新);需透過官方合作校園、年輕女性議題主場;熱門文章常被搬到其他平台
LINE OpenChat無公開 API;手動加入觀察LINE 訊息查證官方帳號是查核管道,非監測管道
YouTubeYouTube Data API v3預設每日 10,000 units(約 100 次搜尋);深度研究需申請較高配額
RedditReddit API(非商業研究免費);Arctic Shift(Pushshift 後繼,免費)台灣使用者較少,但台灣相關 subreddit(/r/Taiwan、/r/taiwannews)有時可看
BlueskyJetstream(無需驗證的 filtered JSON);raw firehose公開為預設;成本低,適合記者監測
Mastodon / Fediverse各 instance 的 public-timeline API;cross-instance search 在 search.noc.social台灣使用者少但有,具公民團體聚集
TelegramBot API + MTProto + 公開頻道預覽 t.me/s/<channel>公開頻道多;私人群組禁止;Bellingcat 工具集(Telegago、Telepathy、TelegramDB)
微博(中國)API 受限,需中國手機認證境外資訊作戰起點之一;研究時用 VPN 注意法律風險
小紅書、抖音(中國)無公開 APITikTok 與抖音為同公司不同 app;字節跳動同集團

EU DSA 第 40 條對台灣記者的影響

EU DSA 第 40 條允許 EU 研究者強制存取超大型平台之資料。台灣記者非 EU 居民,但可:

  • EU 大學或研究機構合作(共同申請)
  • 跟 IORG、DoubleThink Lab 等已有 EU 合作網絡的機構協同
  • 用其已發表之研究結果作為延伸研究起點

台灣特有監測場景

場景工具備註
LINE 訊息流傳LINE 訊息查證 + Cofacts被動接收,不是主動監測
PTT 政治板水軍PTT Web 爬蟲 + 帳號註冊日查詢新註冊 ID 大量發文是經典訊號
Threads 政治擴散Meta Content Library + 手動觀察2024 後成為台灣 Z 世代政治新場域
TikTok 中國 narrative 擴散IORG 已發表研究 + 手動取樣個別記者難建立大規模監測;倚賴民間 NGO
FB 不實廣告Meta 廣告資料庫(facebook.com/ads/library)政治廣告必須揭露金主(2018 後規範)

四、帳號真實性分析

Python/pseudocode:真實性指標

from dataclasses import dataclass, field
from datetime import datetime
from typing import List, Optional

@dataclass
class AccountAnalysis:
    username: str
    platform: Platform
    created_date: Optional[datetime] = None
    follower_count: int = 0
    following_count: int = 0
    post_count: int = 0

    # 真實性訊號
    profile_photo_is_stock_or_ai: Optional[bool] = None
    bio_contains_simplified_chinese: Optional[bool] = None
    posts_primarily_reshares: Optional[bool] = None
    posting_pattern_beijing_timezone: Optional[bool] = None
    engagement_ratio_suspicious: Optional[bool] = None

    def calculate_red_flags(self) -> dict:
        flags = {}

        if self.created_date:
            age_days = (datetime.now() - self.created_date).days
            if age_days < 30:
                flags['new_account'] = f"創立 {age_days} 天"

        if self.following_count > 0:
            ratio = self.follower_count / self.following_count
            if ratio < 0.1:
                flags['low_follower_ratio'] = f"比率: {ratio:.2f}"

        if self.created_date and self.post_count > 0:
            age_days = max(1, (datetime.now() - self.created_date).days)
            posts_per_day = self.post_count / age_days
            if posts_per_day > 50:
                flags['excessive_posting'] = f"{posts_per_day:.0f} 篇/天"

        # 台灣特有訊號
        if self.profile_photo_is_stock_or_ai:
            flags['ai_or_stock_profile'] = "頭貼疑似 AI 生成或 stock photo"

        if self.bio_contains_simplified_chinese:
            flags['simplified_chinese_in_bio'] = "自介含簡體中文用語"

        if self.posting_pattern_beijing_timezone:
            flags['beijing_timezone_pattern'] = "發文時間集中於北京時區 (UTC+8 09:00-18:00)"

        return flags

    def authenticity_score(self) -> int:
        score = 100
        flags = self.calculate_red_flags()
        score -= len(flags) * 20
        return max(0, score)

台灣特殊認證考量

  • PTT:用 /help 或從文章作者點擊看 ID 註冊日;/W 看歷史文章/推噓比
  • Dcard:看校園認證標記(灰色畢業校徽);無認證者可疑度高
  • Threads:看對應 IG 帳號;新 IG + 新 Threads + 大量政治發言警示高
  • FB 粉專:看過往粉專名稱變更歷史(粉專可能從不相關主題更名為政治);Meta CL 有此歷史
  • YouTube:看頻道創立日 vs 第一支影片日;買來的舊頻道(老創立日 + 短內容歷史)

五、網絡分析

Python/pseudocode:帳號互動網絡

from collections import defaultdict
from typing import Set, Dict, List

class AccountNetwork:
    def __init__(self):
        self.interactions = defaultdict(lambda: defaultdict(int))
        self.accounts = {}

    def add_interaction(self, from_account: str, to_account: str,
                       interaction_type: str = "mention"):
        self.interactions[from_account][to_account] += 1

    def find_clusters(self, min_interactions: int = 3) -> List[Set[str]]:
        """找頻繁互動之帳號群。"""
        adjacency = defaultdict(set)
        for from_acc, targets in self.interactions.items():
            for to_acc, count in targets.items():
                if count >= min_interactions:
                    adjacency[from_acc].add(to_acc)
                    adjacency[to_acc].add(from_acc)

        visited = set()
        clusters = []

        for account in adjacency:
            if account in visited:
                continue
            cluster = set()
            stack = [account]
            while stack:
                current = stack.pop()
                if current in visited:
                    continue
                visited.add(current)
                cluster.add(current)
                stack.extend(adjacency[current] - visited)
            if len(cluster) > 1:
                clusters.append(cluster)

        return sorted(clusters, key=len, reverse=True)

    def coordination_score(self, accounts: Set[str]) -> float:
        """評估一群帳號的協同程度 (0-1)。"""
        if len(accounts) < 2:
            return 0.0
        total_possible = len(accounts) * (len(accounts) - 1)
        actual_connections = 0
        for acc in accounts:
            for other in accounts:
                if acc != other and self.interactions[acc][other] > 0:
                    actual_connections += 1
        return actual_connections / total_possible if total_possible > 0 else 0

視覺化工具

  • Gephi(免費,開源)— ICIJ Panama Papers 御用工具
  • Maltego CE(社群版免費,需註冊)
  • Cytoscape(免費,生物網絡為主但通用)
  • NodeXL(Excel 插件,基本版免費)

六、敘事追蹤

Python/pseudocode:主張擴散追蹤

from dataclasses import dataclass, field
from datetime import datetime, timedelta
from typing import List, Dict
from collections import defaultdict

@dataclass
class Claim:
    text: str
    first_seen: datetime
    first_seen_url: str
    variations: List[str] = field(default_factory=list)
    appearances: List[Dict] = field(default_factory=list)

    def add_appearance(self, url: str, platform: Platform,
                       timestamp: datetime, author: str):
        self.appearances.append({
            'url': url,
            'platform': platform.value,
            'timestamp': timestamp,
            'author': author
        })

    def spread_timeline(self) -> List[Dict]:
        return sorted(self.appearances, key=lambda x: x['timestamp'])

    def platforms_reached(self) -> Dict[str, int]:
        counts = defaultdict(int)
        for app in self.appearances:
            counts[app['platform']] += 1
        return dict(counts)

    def velocity(self, window_hours: int = 24) -> float:
        """擴散速率:每小時新出現次數。"""
        if not self.appearances:
            return 0.0
        recent = [
            a for a in self.appearances
            if a['timestamp'] > datetime.now() - timedelta(hours=window_hours)
        ]
        return len(recent) / window_hours

台灣敘事追蹤實務:從 PTT 到 LINE 的擴散鏈

常見台灣假訊息擴散路徑:

[微博 / 抖音 (中國)]
       ↓
[境外協同帳號:Threads / X]
       ↓
[台灣早期擴散:PTT 政黑 / 八卦 / 軍事板]
       ↓
[Threads / FB 二次擴散]
       ↓
[LINE 群組:長輩、社區、宗教群]
       ↓
[新聞媒體報導 (記者 LINE 群轉發或攝記分享)]

監測重點:

  • 逆向溯源:從 LINE 訊息往回追到最早出現處
  • 跨平台時間軸:同一主張在各平台的首次出現順序
  • 語言變化:從簡體 → 繁體 + 大陸用語 → 純繁體的清洗過程

七、協同操作偵測

行為訊號 checklist

## 協同無真實性行為 (CIB) 指標

### 時間模式
- [ ] 多帳號於數分鐘內發出相同內容
- [ ] 跨帳號之同步發文時間
- [ ] 爆量活動後突然沈寂
- [ ] 發文間隔短於人類打字速度

### 內容模式
- [ ] 跨帳號相同或近乎相同的文字
- [ ] 相同圖片/影片被多帳號分享
- [ ] 相同錯字、格式錯誤
- [ ] 可見複製貼上痕跡

### 帳號模式
- [ ] 帳號創立時間集中
- [ ] 命名規則相似(姓名 + 數字)
- [ ] 通用或 stock 大頭照(**或 AI 生成寵物照** — GoLaxy 案)
- [ ] 個人內容極少,多為轉發
- [ ] 追蹤同樣帳號
- [ ] 互相互動比例失衡

### 網絡模式
- [ ] 在網絡分析中形成密集叢
- [ ] 放大同樣的外部來源
- [ ] 鎖定同樣的帳號或 hashtag
- [ ] 跨平台協同可見

### 台灣場景特有訊號
- [ ] 自介寫「台灣居民」但用簡中用語(視頻、網絡、賦能、打造)
- [ ] 帳號創立短期內大量政治發文
- [ ] 發文時間集中於 UTC+8 09:00-18:00 (中國辦公時間)
- [ ] 跨平台同一 narrative,字數略異(避過去重複偵測)
- [ ] 同一張(疑似 AI 生成)的人像或寵物照在多帳號出現

結論分級

不要把分數直接寫成「水軍」或「網軍」。先依證據強度分級,並讓被點名帳號或組織有回應機會。

等級用語最低證據
1觀察到相似訊號少量帳號、單一平台、尚無明確同步
2疑似協同多帳號 + 時間 / 內容 / 網絡至少兩類訊號
3符合協同操作特徵跨平台或多批帳號,方法可重現,有存檔證據
4可歸因之協同操作具內部文件、資金流、平台下架報告或權威機構確認

Python/pseudocode:協同程度評分

from typing import List

def coordination_likelihood(posts: List[SocialPost]) -> dict:
    """評估一組貼文是否為協同活動。"""

    if len(posts) < 2:
        return {'score': 0, 'signals': []}

    signals = []
    score = 0

    # 內容重複
    contents = [p.content for p in posts]
    unique_contents = set(contents)
    if len(unique_contents) < len(contents) * 0.5:
        signals.append("內容大量重複")
        score += 30

    # 時間集群
    timestamps = sorted(p.timestamp for p in posts)
    rapid_posts = 0
    for i in range(1, len(timestamps)):
        if (timestamps[i] - timestamps[i-1]).seconds < 60:
            rapid_posts += 1
    if rapid_posts > len(posts) * 0.3:
        signals.append("可疑時間集群")
        score += 25

    # 帳號數量 vs 內容相似度
    authors = set(p.author for p in posts)
    if len(authors) > 5 and len(contents) / len(authors) > 2:
        signals.append("少數帳號發出大量相似貼文")
        score += 20

    return {
        'score': min(100, score),
        'signals': signals,
        'posts_analyzed': len(posts),
        'unique_authors': len(authors)
    }

台灣協同操作真實案例(GoLaxy 範本)

依 DoubleThink Lab 2024-2025 揭露:

特徵:

  • 大量帳號使用 AI 生成寵物照作為頭貼
  • 自稱「台灣居民」「台灣愛國者」「關心台灣者」
  • 偽裝個人帳號,發表政治見解
  • 跨平台(X、Threads、FB)同步活動
  • 攻擊目標:特定政治人物、政黨、立場

研究方法(可仿效):

  1. 大規模帳號採樣:用平台 API 或公開資料抓 N 萬帳號之 metadata
  2. 頭貼分群:用反向圖搜或 AI 偵測辨識 stock/AI 生成
  3. 發文時區比對:UTC+8 但時段分布不像台灣作息
  4. 互動圈分析:用 Gephi 找密集連線之帳號群
  5. 內容主題比對:NLP topic modeling 找重複 narrative

八、存檔(在內容被刪除前)

完整存檔工作流見 source-verification-tw §十。

Python/pseudocode:雙重存檔(社群場景)

import re
import requests
from datetime import datetime
from typing import Optional
from urllib.parse import quote, urljoin

class SocialArchiver:
    """在社群內容被刪除前存檔。"""

    def __init__(self):
        self.archived = {}

    def archive_to_wayback(self, url: str) -> Optional[str]:
        """送 URL 到 Internet Archive。"""
        try:
            save_url = f"https://web.archive.org/save/{quote(url, safe='')}"
            response = requests.get(save_url, timeout=30)
            if response.status_code == 200:
                self.archived[url] = {
                    'wayback': response.url,
                    'archived_at': datetime.now().isoformat(),
                }
                return response.url
        except Exception as e:
            print(f"Wayback 存檔失敗:{e}")
        return None

    def archive_to_archive_today(self, url: str) -> Optional[str]:
        """送 URL 到 archive.today。"""
        try:
            response = requests.post(
                'https://archive.today/submit/',
                data={'url': url, 'anyway': '1'},
                timeout=60,
                allow_redirects=False,
                headers={'User-Agent': 'Mozilla/5.0 (verification archive bot)'},
            )
            if response.status_code in (301, 302, 303, 307, 308):
                location = response.headers.get('Location')
                if location:
                    return urljoin(response.url, location)
            if response.status_code == 200:
                refresh = response.headers.get('Refresh', '')
                m = re.search(r'\burl\s*=\s*(.+)', refresh, re.IGNORECASE)
                if m:
                    return urljoin(response.url, m.group(1).strip().strip('\'"'))
        except Exception as e:
            print(f"archive.today 失敗:{e}")
        return None

archive.today 2026 年實務狀態:

  • 2025 年 10 月 FBI 對其註冊商發出傳票調查營運者身分
  • 2026 年 2 月 Wikipedia 投票決定停用其為引用來源(因 2026/1 該服務內含 DDoS 攻擊碼)
  • 仍可用於 Wayback 無法擷取之頁面,但視為次要管道
  • 對 scraper 嚴格限流並出 CAPTCHA

台灣本地存檔資源

工具用途
國家圖書館紙本資料、舊報紙
g0v 各專案資料庫公民協作封存(立委質詢、地方議會)
台灣事實查核中心檔案庫已查核訊息存檔
個人 SSD + 雲端兩份不要只放雲端

九、台灣資訊作戰研究方法論

DoubleThink Lab 研究方法(範例)

GoLaxy 案例研究步驟:

  1. 資料源:洩漏文件 / 跨國 OSINT 網絡(Shadow FIMI Investigator Network)
  2. 帳號識別:從文件揭露之命名規則、頭貼特徵反向追蹤
  3. 行為比對:採樣已識別帳號之數月發文 → 比對命名相似帳號
  4. 網絡分析:用 Gephi 視覺化互動關係
  5. 發布:報告 + Medium 開源化,便於社群驗證

IORG 研究方法(範例)

「TikTok 對台灣青少年認知重構」研究:

  1. 抽樣:多階段抽樣台灣青少年使用者
  2. 問卷 + 行為資料:問卷取意見、行為資料取觀看模式
  3. TikTok Research API:申請 EU DSA Article 40 路徑取資料
  4. 學術合作:與大學研究中心合作確保方法學
  5. 發布:中英文版報告;媒體公關發送

你能用的「平民版」方法

如果你不是 NGO,只是個別記者或小編輯部,仍可做:

  1. 手動採樣 20-50 個可疑帳號 → 試算表記錄頭貼、創立日、追蹤者數、發文 pattern
  2. 逆向圖搜每個頭貼(TinEye、Yandex)→ 找 AI 生成或 stock 照
  3. 用 g0v 公開工具(如 Cofacts)查訊息已知擴散管道
  4. 找 DoubleThink Lab、IORG 已發表之相關研究作為背景或引用
  5. 報導發出前對被指控的帳號或人物提出查證機會
## SMI 報告最低輸出格式

- 研究問題:
- 平台 / 關鍵字 / 帳號範圍:
- 蒐集方法與授權狀態:
- 時間範圍與 last_checked:
- 樣本數與排除條件:
- 主要訊號:
- 結論分級:觀察到相似訊號 / 疑似協同 / 符合協同操作特徵 / 可歸因之協同操作
- 限制:
- 被點名方回應:
- 發稿風險:

十、OSINT 工具集(全球通用,加台灣相關)

帳號真實性與協同

  • Botometer X(osome.iu.edu)— Twitter 機器人評分學術標準;2023/6 後僅 archival 模式,不能評 2023/5 後之帳號
  • Hoaxy / Hoaxy2(osome.iu.edu)— 運作中;Hoaxy2 加 Mastodon 搜尋、Bluesky 即時監測、FB News Bridge
  • OSoMe Coordiscope — 協同網絡視覺化,免費
  • CooRTweet(R 套件)— CooRnet 後繼;原版於 2024/8 CrowdTangle 停運時一併消失
  • Bot Sentinel — 2025 全年離線,2026 計畫重啟;用前先驗證運作狀態

反向圖搜(見 source-verification-tw §三)

  • TinEye、Yandex Images、Google Lens、Bing Visual Search

影像鑑識

  • Forensically (29a.ch) — error level analysis、clone detection
  • FotoForensics — 同上
  • InVID-WeVerify(EU vera.ai 計畫)— 2025 加合成圖偵測 + 語音複製偵測 beta

網絡分析

  • Gephi(免費,開源)
  • Maltego CE(社群版免費)
  • NodeXL(Excel 插件)
  • Cytoscape(免費)

台灣相關工具

  • Cofacts API(g0v)— 已知 LINE 假訊息資料庫
  • PTT Crawler(g0v 多個專案)— PTT 爬蟲開源工具
  • 台灣事實查核中心已發表報告查詢
  • DoubleThink Lab Medium 公開文章(doublethinklab.medium.com)
  • IORG 月度監測報告(iorg.tw)

方法論權威(2026 年)

  • Bellingcat Online Investigation Toolkit(bellingcat.gitbook.io/toolkit)— 持續更新
  • Information Futures Lab @ Brown SPH — First Draft News 後繼;Claire Wardle 共同主持
  • WITNESS Deepfakes Rapid Response Force(gen-ai.witness.org)— 配對記者與媒體鑑識專家
  • CJR Tow Center 2025 深偽偵測指南(非技術版,記者導向)

Stanford Internet Observatory 已於 2024/6 解散,選舉研究角色轉到 Stanford Social Media Lab (Hancock) 與 NYU Stern Center for Business and Human Rights


十一、法律風險

《選舉罷免法》§104 加重深偽條款(2023 修法)

意圖使候選人當選不當選,以散布、播送、揭露深度偽造影音之方法,致生損害於公眾或他人者:

  • 最重 7 年以下有期徒刑,得併科 1,000 萬元以下罰金

記者監測場景含義:

  • 記者監測揭露深偽影片是正當新聞工作,不在處罰範圍
  • 轉發深偽影片(即使為了「警示」)可能觸法 — 務必加上明確「為深度偽造」標記
  • 必要時模糊/打馬賽克

《社會秩序維護法》§63 第 5 款

散佈謠言,足以影響公共之安寧者」處 3 日以下拘留或新台幣 3 萬元以下罰鍰。

記者場景:

  • 監測 + 揭露假訊息 ≠ 散布假訊息(具公益必要性)
  • 社群媒體轉發未經查證之傳言可能觸法

《刑法》§310 誹謗罪

詳見 fact-check-workflow-tw §九。

SMI 場景特有風險:

  • 揭露某帳號為「協同操作」「水軍」「網軍」時,若該帳號為真實人物而非協同操作,可能構成誹謗
  • 保護措施:
    • 報告中用「疑似」「符合協同操作特徵」等保留語
    • 完整研究方法讓讀者自行判斷
    • 給被點名帳號回應機會

《刑法》§358 入侵電腦罪

  • 不可為了監測而駭入私人帳號、群組
  • 不可用假帳號加入封閉群組進行監測(除非取得管理員同意)
  • 公開頻道、公開貼文 OK;私訊、私群組、Telegram 私頻道禁止

《個資法》

  • 監測公開資訊 OK
  • 聚合多重個資(姓名 + 地址 + 工作 + 親屬 + 病史)為「人物剖繪」即使資料皆來自公開,可能構成個資法疑慮
  • 新聞自由抗辯(§51)可主張,但最低必要原則仍須遵守

十二、倫理規範

  • 只存檔公開內容
  • 不要為了監測建立假帳號(無權立場 vs 學術研究有專案規範)
  • 尊重平台 ToS:X 2023 後明文禁止 scraping(即使公開貼文);依賴 API 或授權資料商
  • 不轉用研究存取金鑰於非研究用途:Meta、TikTok 對 ToS 偏離會撤銷存取
  • 保護分享社群內容的消息來源
  • 發布前驗證:協同評分是假設,不是結論
  • 發放前考慮影響:即使內容有害,放大可能造成更多傷害

與其他 -tw skill 協作

social-media-intelligence-tw 處理跨帳號、跨平台之模式偵測。實務中與其他 -tw skill 緊密協作。

典型記者工作流順序(7 個 skill 串接)

[1. 資料蒐集]                  ← foia-requests-tw
       ↓
[2. 來源驗證 / 內容查證]       ← source-verification-tw
       ↓
[2.5. 跨平台情報 / OSINT]      ← social-media-intelligence-tw  ← 你在這裡
       ↓
[3. 採訪準備 / 採訪]           ← interview-prep-tw
       ↓
[4. 主張驗證 / 查核]           ← fact-check-workflow-tw
       ↓
[5. AI 起草草稿]
       ↓
[6. 去 AI 寫作味]              ← ai-writing-detox-tw
       ↓
[7. 編務校對]                  ← newsroom-style-tw
       ↓
[8. 發稿]

social-media-intelligence-twsource-verification-tw步驟 2 並列工作:前者處理多帳號模式,後者處理單一帳號真偽

重疊處理(同問題多 skill 都有)

  • 帳號真偽:

    • source-verification-tw §二:單一帳號驗證(SIFT + 平台特性)
    • social-media-intelligence-tw §四:帳號群真實性評分(authenticity score)
    • 單一帳號用前者;100 個帳號用後者
  • 協同操作:

    • social-media-intelligence-tw §七:主處理(CIB 指標、評分)
    • source-verification-tw §二:輔助(GoLaxy 紅旗特徵)
    • social-media-intelligence-tw 為準
  • 深偽案例:

    • source-verification-tw §五 + §六:單一影像/影片之深偽偵測(C2PA、Hive、Reality Defender)+ 台灣案例
    • social-media-intelligence-tw §十一:散布、轉發之法律風險(§104 加重條款)
    • 兩者搭配最完整
  • 存檔:

    • source-verification-tw §十:詳述
    • social-media-intelligence-tw §八:程式碼版本
    • source-verification-tw 為主
  • 法律風險:

    • social-media-intelligence-tw §十一:SMI 場景特有(揭露水軍之誹謗風險、§358 入侵電腦)
    • source-verification-tw §十二:來源驗證場景
    • fact-check-workflow-tw §九:查核場景
    • 三者互補,場景不同

建議搭配安裝

social-media-intelligence-tw 強烈建議搭配 source-verification-tw 使用 — 兩者是 OSINT 工作的兩面。新聞工作者也建議加 fact-check-workflow-twfoia-requests-twnewsroom-style-twai-writing-detox-tw


附錄一:常用 OSINT 工具清單

類別工具網址
機器人偵測Botometer Xosome.iu.edu/tools/botometer
敘事追蹤Hoaxy / Hoaxy2osome.iu.edu/tools/hoaxy
協同網絡Coordiscopeosome.iu.edu
協同分析CooRTweet (R)github
反向圖搜TinEyetineye.com
反向圖搜Yandex Imagesyandex.com/images
反向圖搜Google Lenslens.google.com
影像鑑識FotoForensicsfotoforensics.com
影像鑑識Forensically29a.ch/photo-forensics
影片驗證InVID-WeVerifyweverify.eu
網絡視覺化Gephigephi.org
網絡視覺化Maltego CEmaltego.com
存檔Wayback Machineweb.archive.org
存檔Archive.todayarchive.ph
台灣假訊息資料庫Cofactscofacts.tw
台灣假訊息查核台灣事實查核中心tfc-taiwan.org.tw
FB 廣告資料庫Meta Ad Libraryfacebook.com/ads/library
台灣資訊作戰研究DoubleThink Labdoublethinklab.org
台灣資訊環境IORGiorg.tw

附錄二:Bellingcat / 跨國 OSINT 網絡

資源用途
Bellingcat Toolkit 2.0bellingcat.gitbook.io/toolkit
Bellingcat 訓練課程bellingcat.com/online-investigation-academy
WITNESS DRRFgen-ai.witness.org
Information Futures Labinformationfutureslab.org
Shadow FIMI Investigator Network(跨國 OSINT 網絡,與 DoubleThink Lab 合作)

版本說明

  • 版本:1.0.1
  • 截至:2026-05-28
  • 改寫自:upstream journalism-core/social-media-intelligence (jamditis/claude-skills-journalism)
  • 在地化重點:
    • 保留 upstream 通用 Python 程式碼:多平台監測、突發新聞偵測、帳號真實性、網絡分析、敘事追蹤、協同評分
    • 保留 OSINT 工具集:Botometer X、Hoaxy、Gephi、Bellingcat 等
    • 新增台灣 16 個平台清單:Threads / PTT / Dcard / LINE OpenChat / FB / IG / YouTube / TikTok / X / Bluesky / Mastodon / Telegram / 微博 / 小紅書 / 抖音 / WeChat
    • 新增台灣資訊作戰生態章節:中國 GoLaxy 系統、TikTok 演算法、WeChat 視頻號、選舉期境外干預
    • 新增台灣敘事追蹤實務:從微博/抖音 → 境外協同帳號 → PTT → Threads/FB → LINE 群組 → 媒體之擴散鏈
    • 新增 GoLaxy 範本研究方法(DoubleThink Lab 研究方法)
    • 新增「平民版」研究方法(個別記者也能做)
    • 新增 Cofacts API、PTT Crawler 等 g0v 工具
    • 新增法律風險章節:《選罷法》§104 加重深偽條款、《社維法》§63、《刑法》§310 誹謗、§358 入侵電腦、《個資法》§51 新聞自由抗辯
    • 新增與其他 -tw skill 協作章節(7 個 skill 串接;與 source-verification-tw 並列工作)
  • 法律依據:截至 2026 年 5 月之《選舉罷免法》《社會秩序維護法》《刑法》《個人資料保護法》。具體條號與細節請以全國法規資料庫公告版本為準;涉及具體調查報導法律事項建議洽律師
  • 平台 API 與工具狀態截至 2026 年 5 月;訪問前先驗證最新政策

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.