TradingView Reader (Read-Only)
Reads TradingView's desktop macOS app for quotes, options chains, and chart state via opencli and a CDP attach to the running TradingView.app process. Powered by the tradingview plugin in this repo's opencli-plugins/tradingview tree (a separate plugin from opencli's built-in adapters, installed via opencli's monorepo subpath syntax).
This skill is read-only. Designed for analysis: pulling options chains, checking IV/greeks, capturing chart state. It does NOT place trades, post ideas, modify watchlists, or change chart layouts.
Headless alternative: for plain quotes, TA readouts, screeners, futures, or a greeks-free options chain, prefer the sibling
tradingview-mcpskill (bundled MCP server, no desktop app, no CDP relaunch). Use this skill when you need greeks / per-strike IV skew, expiries with contract counts, or account-bound data (watchlists, alerts, charts, TV news).
Important: Unlike browser-based opencli readers (twitter, linkedin), this one talks directly to a running TradingView desktop app over Chrome DevTools Protocol. The user must (a) have TradingView.app installed, and (b) be logged in inside that app. The plugin handles relaunching with the debug port.
How it works: data commands read the app's session cookies over CDP and call TradingView's HTTP APIs from Node directly, so no Browser Bridge extension or apps.yaml registration is needed.
Step 1: Ensure opencli + Plugin Are Installed and Ready
Current environment status:
If the status above shows READY, skip to Step 2. Otherwise:
NOT_INSTALLED — Install opencli
Requires Node.js >= 24 — the tradingview plugin installed in the next step declares engines.node >= 24.
SETUP_NEEDED — Install the TradingView plugin and launch with CDP
The TradingView adapter is not built into opencli — it's a separate plugin:
The launch step quits the running TradingView and reopens it with --remote-debugging-port=9222. Warn the user to save chart layouts first if they have unsaved drawings.
Common setup issues
Step 2: Identify What the User Needs
Setup / chart inspection
Quotes + options
Screener
News
Watchlists + alerts
Step 3: Execute the Command
General pattern
Key rules
- Run
opencli tradingview statusfirst if connectivity is uncertain — it reports CDP connection state and active TradingView tabs. - Use
-f jsonfor programmatic processing (LLM context, downstream skills). - Filter by expiry and
--strikes-around-spot— full chains can be 3,000+ rows; an unfiltered dump is rarely what the user wants. - Default
--exchange NASDAQfor US equities; require explicit--exchangefor ETFs (e.g. SPY = NYSEARCA, QQQ = NASDAQ) or non-US listings. - For
screener, choose--columnsdeliberately — it controls both the request and the output table. Includenameand any field used in--filteror--sort. Append|TFfor an indicator's timeframe, e.g.RSI|60for 1-hour RSI. The default columns are sensible for stocks but should be replaced for crypto / forex / futures (different field catalogs). - For
screener,--filteris JSON — array of{left, operation, right}clauses. Always single-quote the JSON in shell to avoid escaping issues. Seereferences/commands.mdfor the operations cheat sheet. - For
news, narrow the feed early — the global feed is firehose-level. Use--symbol,--category,--section, or--providerbefore raising--limit. - For
search, prefer it over guessing — when the user gives an ambiguous ticker (e.g. "SPY" without exchange), runsearch --query SPYfirst to confirm the listing, then pass--exchangeto subsequent commands. - For
watchlistsandalerts, default to summary — a user asking "what's in my watchlists?" wants list names + counts, not every symbol. - Read-only. No trades, no watchlist edits, no alert creation/deletion, no chart writes — the plugin intentionally does not expose write endpoints (
/append,/replace,/create_alert, etc.), so don't look for workarounds.
Output format flag (-f)
Output columns
quote—symbol,close,change,change_abs,currency,timeoptions-chain—expiry,dte,strike,type,bid,ask,mid,iv,delta,gamma,theta,vega,rho,theo,bid_iv,ask_iv,symboloptions-expiries—expiry,dte,contracts_countscreener— dynamic; one column per--columnsentry, plussymbol. (Default:name,close,change,volume,market_cap_basic,sector.tr.)search—symbol,description,type,exchange,country,currencynews(list mode) —id,published,provider,title,urgency,related_symbols,linknews(story mode,--idset) —id,published,provider,title,body,tags,linkwatchlists—id,name,symbol_count,symbolsalerts—id,name,symbol,type,condition,value,active,status,fired_atchart-state—layout_id,symbol,interval,urlscreenshot—path,bytes
Step 4: Present the Results
- Lead with the structure summary — for an options chain, state spot price, expiry being shown, ATM strike, and IV regime first; then the table. For a screener, lead with the count of matches and the filters applied.
- Filter aggressively before showing — never paste a 3,000-row chain or a 500-row screener. Default to ATM ± 6 strikes per expiry for chains; for screeners cap to top 20 unless the user asks for more.
- Highlight skew — when showing both calls and puts, note IV skew direction if material.
- For chart-state, report layout id + symbol + interval + URL succinctly; offer to screenshot.
- For news (list mode), group by provider and lead with timestamps in the user's likely timezone (or always UTC ISO if uncertain). Include the link so the user can open the story. For story mode (
--idset), the body is plain text — present it as-is, optionally trimmed. - For watchlists, summarize counts before listing symbols (e.g. "3 watchlists: Earnings (24 syms), AI plays (12 syms), Hedges (8 syms)"). Don't dump 100-symbol watchlist contents unless asked.
- For alerts, group by status (active vs triggered/fired) and order recent firings by
fired_atdesc. Don't expose alert ids unless the user explicitly asks. - For screener results, surface the top movers / extreme values in plain prose first (e.g. "highest market cap NVDA at $4.2T, 12 names below the RSI<30 threshold"), then the table.
- Treat sessions as private — never expose CDP target IDs, cookies, or layout IDs unless the user asks.
Step 5: Diagnostics
Returns CDP connection state and active TradingView tabs. If CDP is down, run opencli tradingview launch to relaunch with the debug port.
Error Reference
Reference Files
references/commands.md— Every command with all flags, output examples, and analyst workflows

