Unified web content clipper for Obsidian. One entry point, auto-detects platform, uses optimal method.
When user provides a URL and wants to save it:
bash
python3 {{SKILL_DIR}}/scripts/clip.py "<url>"
Output:
<vault>/clippings/tweet/YYYY-MM-DD-<handle>-<id>.md<vault>/clippings/web/<domain>/YYYY-MM-DD-<slug>.mdPlatformMethodWhyTwitter/XJina ReaderFast, reliable, no auth neededWeChat MPBrowser snapshotHandles JS renderingXiaohongshux-readerWorks wellYouTubex-readerGets description/metadataBilibilix-readerWorks wellOtherx-readerGeneral purpose
bash
python3 {{SKILL_DIR}}/scripts/clip.py "https://x.com/user/status/123"
One command, done.
WeChat articles need browser rendering. The script will return needs_browser: true.
Step 1: Open in browser
text
browser action=open profile=openclaw targetUrl=<url>
Step 2: Get snapshot
text
browser action=snapshot profile=openclaw targetId=<targetId>
Step 3: Extract content and save
bash
python3 {{SKILL_DIR}}/scripts/wechat.py \
--url "<url>" \
--title "<title>" \
--author "<author>" \
--date "<date>" \
--content "<markdown>"
Or pipe content via stdin:
bash
echo "<markdown>" | python3 {{SKILL_DIR}}/scripts/wechat.py \
--url "<url>" \
--title "<title>"
Twitter:
https://twitter.com/<handle>/status/<id>https://x.com/<handle>/status/<id>WeChat:
https://mp.weixin.qq.com/s/<id>Others:
obsidian-cli (for vault detection) OR manually configured vault pathx-reader for general web: pipx install 'git+https://github.com/runesleo/x-reader.git'text
User: https://x.com/naval/status/1234567890 save this
You: [runs clip.py] → Saved to clippings/tweet/2026-03-18-naval-1234567890.md
User: https://mp.weixin.qq.com/s/abc123 保存这个
You: [runs clip.py] → needs_browser: true
[opens browser, gets snapshot]
[extracts content, runs wechat.py]
→ Saved to clippings/web/mp_weixin_qq_com/2026-03-18-article-title.md
All saves trigger automatic git sync: pull --rebase → add → commit → push
Git warnings (non-fatal) are returned in git_warnings array.