{"slug":"trump-truth-monitor","title":"trump-truth-monitor","summary":"Use when monitoring or interpreting Donald Trump's Truth Social posts for market-moving events — tariff announcements, sanctions, deals with countries (China / Mexico / Canada / EU / Japan / Korea / Taiwan), specific company / CEO mentions, Fed pressure, energy / oil commentary, ","platform":"Claude","tags":[],"authorName":"LLM Mart","authorSlug":"llm-mart","score":0,"source":"github","price":null,"verified":false,"createdAt":"2026-09-01T17:41:57.751327Z","repo":{"url":"https://github.com/kansoku-trade/kansoku","stars":325,"forks":39,"license":null,"updatedAt":"2026-09-26T13:01:05Z"},"bodyHtml":"<hr>\n<h2>name: trump-truth-monitor\ndescription: Use when monitoring or interpreting Donald Trump's Truth Social posts for market-moving events — tariff announcements, sanctions, deals with countries (China / Mexico / Canada / EU / Japan / Korea / Taiwan), specific company / CEO mentions, Fed pressure, energy / oil commentary, crypto policy, or geopolitical escalation. Triggers on \"trump 发了什么\", \"check trump\", \"trump 关税\", \"盘前 trump 推\", \"trump truth social\", \"trump tweet impact\", \"trump 对 X 说了什么\", or whenever a pre-market gap / intraday spike on policy-sensitive names (semis, China ADRs, autos, energy, banks, defense) needs to be explained.</h2>\n<h1>Trump Truth Monitor</h1>\n<p>Pulls Donald Trump's Truth Social feed via the trumpstruth.org RSS mirror, classifies posts into market-relevant topic buckets, and hands the candidate list off for LLM-level market-impact grading.</p>\n<h2>When to use</h2>\n<ul>\n<li>User asks what Trump has posted recently</li>\n<li>Pre-market gap on policy-sensitive sectors (semis, China ADRs, autos, energy, banks, defense) — check whether a Trump post is the trigger</li>\n<li>Building the \"Catalyst (now)\" lens of <code>stock-deep-dive</code> for a name with policy exposure (TSM, NVDA, AAPL, F, GM, XOM, BAC, RTX, LMT)</li>\n<li><code>market-session-tracker</code> pre-market protocol — add a Trump-feed pass</li>\n</ul>\n<p>If the user wants tweet <strong>history beyond ~5 days</strong>, this skill is insufficient — the RSS mirror only exposes the latest ~100 posts. Route to Factba.se / Roll Call (paid) or note the limitation explicitly.</p>\n<h2>Data source</h2>\n<p><strong>trumpstruth.org/feed</strong> — a public third-party mirror of @realDonaldTrump on Truth Social. RSS 2.0 XML with these fields per item:</p>\n<table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Meaning</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>&lt;pubDate&gt;</code></td>\n<td>RFC 2822, original Truth Social post timestamp</td>\n</tr>\n<tr>\n<td><code>&lt;link&gt;</code></td>\n<td>trumpstruth.org/statuses/</td>\n</tr>\n<tr>\n<td><code>&lt;truth:originalUrl&gt;</code></td>\n<td>truthsocial.com/@realDonaldTrump/ — <strong>the primary source</strong></td>\n</tr>\n<tr>\n<td><code>&lt;description&gt;</code></td>\n<td>Full post body with HTML (links + ellipsis spans)</td>\n</tr>\n</tbody>\n</table>\n<p>The mirror typically lags the original by ≤2 minutes. Single feed pull returns ~100 most recent posts, covering ~5 days at Trump's typical cadence.</p>\n<h2>CLI</h2>\n<h3>Read mode — <code>fetch.py</code></h3>\n<pre><code># Default: last 24h, keyword-filtered, markdown\npython3 .claude/skills/trump-truth-monitor/scripts/fetch.py\n\n# Wider window\npython3 .claude/skills/trump-truth-monitor/scripts/fetch.py --hours 72\n\n# All posts in feed regardless of keyword\npython3 .claude/skills/trump-truth-monitor/scripts/fetch.py --hours 72 --all\n\n# Single topic\npython3 .claude/skills/trump-truth-monitor/scripts/fetch.py --topic tariff_trade\n\n# JSON output (for chaining)\npython3 .claude/skills/trump-truth-monitor/scripts/fetch.py --json\n</code></pre>\n<p>Topic buckets defined in script: <code>tariff_trade</code>, <code>semi_tech</code>, <code>energy</code>, <code>fed_macro</code>, <code>crypto</code>, <code>geopolitical</code>.</p>\n<h3>Archive mode — <code>archive.py</code></h3>\n<pre><code># Append new posts to journal/trump-feed/YYYY-MM-DD.md (idempotent)\npython3 .claude/skills/trump-truth-monitor/scripts/archive.py\n\n# Custom output dir\npython3 .claude/skills/trump-truth-monitor/scripts/archive.py --out /path/to/dir\n\n# Silent unless something new was added\npython3 .claude/skills/trump-truth-monitor/scripts/archive.py --quiet\n</code></pre>\n<p>The archive de-dupes by mirror status_id — re-running on the same feed is a no-op. Designed to be scheduled (see <code>launchd/README.md</code>). Once archived, posts persist locally even if trumpstruth.org goes down.</p>\n<h2>Workflow</h2>\n<ol>\n<li><strong>Decide window</strong>. Default 24h. Use 48–72h when investigating a multi-day move. Use <code>--all</code> when context-grazing.</li>\n<li><strong>Decide scope</strong>. If user asks generally → no <code>--topic</code>. If user names a domain (关税 / 半导体 / 油 / 加密) → pass <code>--topic</code>.</li>\n<li><strong>Pull feed</strong>. Run <code>fetch.py</code> with chosen flags. <strong>Always include <code>--hours</code></strong> — never default to \"all of feed\" silently.</li>\n<li><strong>Second-pass grading</strong>. Script output is <em>candidates</em>, not signals. For each post:\n<ul>\n<li><strong>Read the full text</strong> before assigning impact. Headlines and keyword tags lie.</li>\n<li>Assign a <strong>market-impact tier</strong>: <code>high</code> / <code>med</code> / <code>low</code> / <code>noise</code></li>\n<li><strong>high</strong> = concrete action with $ figure, %, date, named country/company (e.g. \"25% tariff on Mexican imports effective June 1\", \"Section 232 on chips\")</li>\n<li><strong>med</strong> = directional signal without specifics (e.g. \"We'll be tough on China\", \"must invest in America\")</li>\n<li><strong>low</strong> = brand alignment with sector (e.g. \"American Energy DOMINANCE\", \"Crypto Capital of the World\" — already-priced policy stance)</li>\n<li><strong>noise</strong> = keyword matched but body is endorsement / personal / off-topic (e.g. \"support the Military\" in a Senate endorsement)</li>\n</ul>\n</li>\n<li><strong>Anchor on original URL</strong>. When quoting, always cite <code>truth:originalUrl</code> (the truthsocial.com link), not the mirror.</li>\n<li><strong>Render output</strong>. For multi-post stretches, group by tier — high first, then med, then a one-line low/noise tally.</li>\n</ol>\n<h2>Output template</h2>\n<pre><code># Trump's Truth — {WINDOW}\n\n## High-impact (potential market mover)\n- [{utc_time}] {one-line summary} — `tier: high` · {topic tags}\n  &gt; \"{verbatim short quote ≤2 sentences}\"\n  - Original: {truthsocial.com URL}\n  - Possible market read: {sector / ticker level expectation, anchored}\n\n## Medium-impact (directional, no specifics)\n- [{utc_time}] {one-line summary}\n  - Original: {URL}\n\n## Noise (matched keyword, low signal)\n- {N} posts ({topic distribution}) — endorsements / personal — not enumerated\n\n⚠ Trump may delete or contradict within hours. Position decisions should require independent confirmation (sector ETF tape, peer reaction, official release).\n</code></pre>\n<h2>Anti-patterns</h2>\n<table>\n<thead>\n<tr>\n<th>Mistake</th>\n<th>Reality</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Treating script output as \"market signal\"</td>\n<td>Script is a keyword filter. LLM must read each post and tier.</td>\n</tr>\n<tr>\n<td>Quoting a mirror URL as the source</td>\n<td>Always link <code>truth:originalUrl</code> (truthsocial.com). Mirror is a convenience.</td>\n</tr>\n<tr>\n<td>Reporting Senate endorsements as \"policy news\"</td>\n<td>Politics-only posts with <code>military</code> / <code>energy</code> keywords are noise — filter at tier=noise.</td>\n</tr>\n<tr>\n<td>\"Trump said X about Y\" with no link</td>\n<td>Always include the truthsocial.com link. User must be able to verify.</td>\n</tr>\n<tr>\n<td>Pretending tweets are durable</td>\n<td>Trump posts can be deleted or retracted within hours. If consulted &gt;12h after, note staleness.</td>\n</tr>\n</tbody>\n</table>\n<h2>Integration</h2>\n<ul>\n<li><strong><code>market-session-tracker</code></strong> pre-market protocol: insert a Trump-feed <code>--hours 14</code> pull as step 0 (covers post-prev-close to pre-market). If <code>high</code>-tier post exists touching watchlist sectors, escalate to the explanation slot for any gap.</li>\n<li><strong><code>stock-deep-dive</code></strong> lens 4 (Catalysts): when the symbol has policy exposure (semis / China ADR / auto / energy / defense / bank), run a Trump-feed <code>--hours 168</code> and surface <code>high</code>-tier hits.</li>\n<li><strong><code>gdelt</code></strong> can confirm market has already picked the post up (i.e. major outlets are reporting it). Trump feed = original; GDELT = market-validated.</li>\n</ul>\n<h2>Limitations</h2>\n<ul>\n<li><strong>Mirror dependency</strong>: trumpstruth.org is third-party. If it goes down, the live <code>fetch.py</code> fails — but the archived posts under <code>journal/trump-feed/</code> remain readable.</li>\n<li><strong>5-day depth via mirror</strong>: a single feed pull only exposes the last ~100 posts. Anything older than ~5 days that wasn't archived in time is lost. Schedule <code>archive.py</code> (see <code>launchd/</code>) to grow a permanent local record.</li>\n<li><strong>No X feed</strong>: Trump's X (Twitter) account is separate. This skill does <strong>not</strong> cover X posts. If user asks about X specifically, note the gap.</li>\n<li><strong>Truth posts are not press releases</strong>. Treat as primary-but-volatile speech: original URL is authoritative for what was said, but the policy implementation may diverge (or never happen).</li>\n</ul>\n<h2>Local archive — searching past posts</h2>\n<p>Once <code>archive.py</code> has been running, <code>journal/trump-feed/YYYY-MM-DD.md</code> accumulates a complete record. To investigate a past day or query historically:</p>\n<pre><code># All tariff-related posts ever archived\ngrep -l \"tariff\" journal/trump-feed/*.md\n\n# Specific company mention\ngrep -B2 -A8 -i \"nvidia\\|tsmc\" journal/trump-feed/*.md\n\n# Posts on a specific date\ncat journal/trump-feed/2026-05-26.md\n</code></pre>\n<p>The archive is plain markdown — grep-friendly, git-trackable.</p>\n<h2>Related skills</h2>\n<ul>\n<li><code>gdelt</code> — market-validated news coverage of a Trump post</li>\n<li><code>stock-deep-dive</code> — caller for catalyst-lens enrichment</li>\n<li><code>market-session-tracker</code> — caller for pre-market protocol</li>\n<li><code>sec-edgar</code> — confirm whether a tweet translates into an actual filing (rare but does happen for trade-policy items affecting specific companies)</li>\n</ul>\n","files":[{"path":"scripts/archive.py","sizeBytes":3785,"isText":true},{"path":"scripts/fetch.py","sizeBytes":6965,"isText":true},{"path":"SKILL.md","sizeBytes":9071,"isText":true}],"reviewScore":null,"reviewSummary":null,"trust":{"provenance":"trusted-source-unreviewed","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow.","bodySource":null},"bodyLocked":false,"purchaseUrl":null,"sourceUrl":null,"report":{"provenance":"trusted-source-unreviewed","screen":{"ran":true,"outcome":"clean","suspicious":0,"notes":0,"hiddenCharacters":false},"virusScan":{"engine":"clamav","status":"clean","scannedAt":"2026-09-01T17:42:20.470418Z","sha256":"D540FBA7CDD86E307B159A56E30BF93C05A4E2EAF0ACEE2C551DF3145E940647","sizeBytes":8736},"review":null,"source":{"repositoryUrl":"https://github.com/kansoku-trade/kansoku","path":".claude/skills/trump-truth-monitor","license":null,"commit":"8fa9a03f5fa666d0c6ceca95a7e197f70f63e277","subtreeSha":"33F4EE01442E3EA0E64FA7872128E351B98FFBD405B9552411C3E9BCD63B9EA1","lastSyncedAt":"2026-10-06T15:23:08.794427Z"},"reviewedAt":"2026-09-01T17:43:23.493886Z","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow."},"install":[{"target":"skills-cli","command":"npx skills add https://github.com/kansoku-trade/kansoku/tree/main/.claude/skills/trump-truth-monitor"},{"target":"claude-code","command":"claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install kansoku-trade-kansoku@llmmart"},{"target":"git","command":"git clone https://github.com/kansoku-trade/kansoku.git"}]}