X Grok to Obsidian

PassAudited by VirusTotal on May 11, 2026.

Overview

Type: OpenClaw Skill Name: x-grok-to-obsidian Version: 0.1.0 The skill bundle is benign. It provides a two-stage workflow to export Grok conversations from X.com and convert them to Markdown. The `export_grok_items_capture.js` script runs in the user's browser, intercepts specific network requests on X.com, and downloads the captured JSON data locally. It does not exfiltrate data to external endpoints. The `convert_grok_capture_to_md.py` script processes this local JSON into Markdown files, performing only local file I/O. Neither the code nor the `SKILL.md`/`README.md` contain any prompt injection attempts, malicious instructions, data exfiltration, persistence mechanisms, or other harmful behaviors.

Findings (0)

Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.

What this means

The script runs with access to private Grok conversation responses available to the logged-in X account.

Why it was flagged

The skill relies on the user's active X login/session to access Grok conversations. This is expected for the export purpose, but it is still account-session authority.

Skill content
Run the browser script in Chrome DevTools Console on `https://x.com/i/grok` while logged in.
Recommendation

Run it only in the intended browser profile, review the script before use, and reload or close the tab after the export completes.

What this means

A user may capture more conversations and generate more account activity than expected, potentially including all historical Grok chats and rate-limit-triggering requests.

Why it was flagged

The script performs broad automated discovery and navigation through every discovered Grok conversation in the logged-in session. This is aligned with backup/export, but it is high-scope account automation and the visible code's indexing default is broader than SKILL.md's documented default of 3 passes.

Skill content
const INDEX_PASSES = 8; ... const SCROLL_MAX = 340; ... for (let i = (pass === startPass ? startIndex : 0); i < targets.length; i++) { ... history.pushState({}, '', `${u.pathname}${u.search}`);
Recommendation

Add a clear, working maximum-conversation limit, align documented defaults with code, and ask users to run a small test export before a full-account export.

What this means

Private Grok conversation content may remain in browser storage after a crash, tab close, or interrupted run, and could be readable by scripts running in the same x.com origin.

Why it was flagged

The checkpoint stores raw captured response data, including conversation payloads, in x.com localStorage. The README says checkpoints are cleared on successful completion, but interrupted runs can leave private chat data persisted in the browser.

Skill content
captured: [...captured.values()].map(x => ({ restId: x.restId, requestUrl: x.requestUrl, source: x.source, data: x.data })), ... localStorage.setItem(CHECKPOINT_KEY, JSON.stringify(cp));
Recommendation

Prominently disclose this persistence, provide a one-line cleanup command for the checkpoint key, minimize checkpoint contents where possible, and consider requiring user confirmation before saving raw captured data.

What this means

Users have less external provenance information to validate before trusting the script with their logged-in X page.

Why it was flagged

The registry metadata does not identify an external source or homepage. The included source is visible and static scan was clean, but provenance is still relevant because the skill asks users to run browser-console code in an authenticated session.

Skill content
Source: unknown; Homepage: none
Recommendation

Publish a source repository or homepage and keep the reviewed scripts identical to the distributed skill.