Token导航 LogoToken导航TokenDH.com
开发操作浏览器github未标认证来源可访问许可证需确认审计提醒

obsidian-to-xObsidian TO X 命令行

Agent Skill

obsidian-to-x 用于处理 GitHub 仓库、Issue、Pull Request 和代码协作信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要围绕仓库状态、代码变更或协作事项进行整理时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

808

周安装

33

GitHub Stars

4,214

下载量

259
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:obsidian-to-x(Obsidian TO X 命令行)
来源仓库:https://github.com/libukai/awesome-agent-skills
仓库路径:skills/obsidian-to-x
安装命令:
npx skills add https://github.com/libukai/awesome-agent-skills --skill obsidian-to-x
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/libukai/awesome-agent-skills --skill obsidian-to-x

简介

用于处理 GitHub 仓库、Issue、Pull Request 和代码协作信息。

  • 适用于围绕仓库状态、代码变更或协作事项进行整理和分析。
  • 通过 npx skills add 命令从指定 GitHub 仓库安装使用。
  • 安装前需确认权限范围、维护状态及是否涉及联网或文件操作。
  • obsidian-to-x 属于开发类 Skill,可作为该场景下的辅助能力补充。

SKILL.md

Post to X (Twitter)

Posts text, images, videos, and long-form articles to X via real Chrome browser (bypasses anti-bot detection).

Default Behavior (No Additional Instructions)

When user invokes this skill without specifying what to publish (e.g., just says "发到 X" or uses slash command):

  1. Clean Chrome CDP processes first (REQUIRED - prevents port conflicts): pkill -f "Chrome.*remote-debugging-port" 2>/dev/null; pkill -f "Chromium.*remote-debugging-port" 2>/dev/null; sleep 2
  2. Get current active file from Obsidian workspace: jq -r '.lastOpenFiles[0]'.obsidian/workspace.json
  3. Read the file content using Read tool
  4. Auto-detect publishing type:

- Check if file has frontmatter with title:, 标题:, or Title: field - Has title in frontmatter → Publish as X Article (long-form) - No frontmatter or no title → Publish as Regular Post (short-form)

  1. Inform user of detected type and proceed with publishing
  2. Execute appropriate workflow:

- For X Article: Convert with obsidian-to-article.ts → Publish with x-article.ts - For Regular Post: Convert with obsidian-to-post.ts → Publish with x-post.ts

  1. Success Detection: When running publishing scripts in background, check output for success markers:

- Best method: Count Image upload verified occurrences matching expected image count - Alternative: Look for Post composed (preview mode) or Browser remains open - For X Articles: Look for Article composed or Browser remains open - Use short timeout (10-15s) with block=false, then check output content - Report success immediately when markers detected, don't wait for task completion - Example: 3 images → wait for 3x Image upload verified + text typing completion

Example:

User: "发到 X"
AI: ✓ Detected current file: Articles/news/my-article.md
    ✓ Found frontmatter with title → Publishing as X Article
    [proceeds with article publishing workflow]

Content Types

X Articles vs Regular Posts:

FeatureX ArticlesRegular Posts
ContentRich text (Markdown)Plain text only
Formatting✅ Bold, italic, headers, lists❌ All stripped
Code blocks✅ Syntax highlighting❌ Not supported
Images✅ Multiple images✅ Max 4 images
LengthLong-form (unlimited)Short (280 chars)
RequirementsX PremiumFree
Scriptx-article.tsx-post.ts
Conversionobsidian-to-x.tsextract-post-content.ts

When to use:

  • X Articles: Blog posts, tutorials, technical articles with code
  • Regular Posts: Quick updates, announcements, simple text + images

AI Auto-Detection (for Obsidian files):

When user requests to publish the currently active Obsidian file without specifying the type:

  1. Read the file content using Read tool
  2. Check for frontmatter (YAML block between --- markers at the start)
  3. Auto-select publishing type:

- Has frontmatter with title field (title:, 标题:, or Title:) → Publish as X Article - No frontmatter or no title field → Publish as Regular Post

  1. Inform the user of the detected type before publishing

IMPORTANT:

  • ONLY use frontmatter presence to determine publishing type
  • DO NOT consider content length, word count, or any other factors
  • Even if content is very long (800+ words), if there's no frontmatter with title → publish as Regular Post
  • Even if content is very short, if there's frontmatter with title → publish as X Article
  • Strictly follow the frontmatter rule without exceptions

Example decision logic:

File with frontmatter:
---
title: My Technical Article
---
Content here...
→ Detected: X Article (has title in frontmatter)

File without frontmatter:
Just some quick thoughts to share...
→ Detected: Regular Post (no frontmatter)

Quick Start

For Obsidian users who want to publish the currently active article:

bash ${SKILL_DIR}/scripts/publish-active.sh

This automatically:

  1. Detects the active file (via workspace.json or Obsidian CLI)
  2. Converts Obsidian syntax to X format
  3. Opens X Articles editor with content filled in

Script Directory

Important: All scripts are located in the scripts/ subdirectory of this skill.

Agent Execution Instructions:

  1. Determine this SKILL.md file's directory path as SKILL_DIR
  2. Script path = ${SKILL_DIR}/scripts/<script-name>.ts
  3. Replace all ${SKILL_DIR} in this document with the actual path
  4. Resolve ${BUN_X} runtime: if bun installed → bun; if npx available → npx -y bun; else suggest installing bun

Script Reference:

ScriptPurpose
Publishing Scripts
scripts/x-post.tsPublish regular posts (text + images, max 4)
scripts/x-video.tsPublish video posts (text + video)
scripts/x-quote.tsPublish quote tweet with comment
scripts/x-article.tsPublish X Articles (rich text + images + code)
Conversion Scripts
scripts/obsidian-to-post.tsConvert Obsidian Markdown → plain text + images (for Posts)
scripts/obsidian-to-article.tsConvert Obsidian Markdown → X Articles format (for Articles)
Utilities
scripts/publish-active.shOne-command publish for active Obsidian file

Prerequisites

  • Google Chrome or Chromium
  • bun runtime
  • First run: log in to X manually (session saved)
  • For Obsidian integration: jq tool (brew install jq on macOS)

Pre-flight Check (Optional)

Before first use, suggest running the environment check:

${BUN_X} ${SKILL_DIR}/scripts/check-paste-permissions.ts

Checks: Chrome, Bun, Accessibility permissions, clipboard, paste keystroke.

If any check fails, provide fix guidance per item:

CheckFix
ChromeInstall Chrome or set X_BROWSER_CHROME_PATH env var
Bun runtimebrew install oven-sh/bun/bun (macOS) or npm install -g bun
Accessibility (macOS)System Settings → Privacy & Security → Accessibility → enable terminal app
Paste keystroke (Linux)Install xdotool (X11) or ydotool (Wayland)

Obsidian Integration

For Obsidian users, this skill can automatically detect the currently active file and convert Obsidian-specific syntax.

Quick workflow:

# One-command publish
bash ${SKILL_DIR}/scripts/publish-active.sh

Manual workflow:

# Step 1: Get active file (workspace.json method, 39x faster)
ACTIVE_FILE=$(jq -r '.lastOpenFiles[0]' .obsidian/workspace.json)

# Step 2: Convert Obsidian syntax
bun ${SKILL_DIR}/scripts/obsidian-to-article.ts "$ACTIVE_FILE" "Temp/converted.md"

# Step 3: Publish
bun ${SKILL_DIR}/scripts/x-article.ts "Temp/converted.md"

For detailed Obsidian integration, see references/obsidian-integration.md:

  • How to detect active file (workspace.json vs CLI)
  • Performance comparison (0.007s vs 0.274s)
  • Error handling and fallback strategies

For Obsidian syntax conversion, see references/obsidian-conversion.md:

  • Converting ![[]] image syntax
  • Handling Chinese frontmatter fields
  • Manual conversion commands

Regular Posts

Text + up to 4 images. Plain text only (all Markdown formatting stripped).

From Obsidian Markdown

Step 1: Clean Chrome CDP processes first (REQUIRED - prevents port conflicts)

pkill -f "Chrome.*remote-debugging-port" 2>/dev/null; pkill -f "Chromium.*remote-debugging-port" 2>/dev/null; sleep 2

Step 2: Convert Markdown to plain text + images

# Extract content from Markdown file
# Supports both standard Markdown ![](path) and Obsidian ![[path]] image syntax
bun ${SKILL_DIR}/scripts/obsidian-to-post.ts "Articles/my-post.md" > /tmp/post-content.json
TEXT=$(jq -r '.text' /tmp/post-content.json)
IMAGES=$(jq -r '.images[]' /tmp/post-content.json)

Image Syntax Support:

  • ✅ Standard Markdown: ![alt](path/to/image.png)
  • ✅ Obsidian syntax: ![[path/to/image.png]]
  • ✅ Network URLs: ![alt](https://example.com/image.jpg) or ![[https://example.com/image.jpg]]
  • Local paths are converted to absolute paths
  • Network images are automatically downloaded in parallel (3-4x faster than sequential)

Step 3: Publish post

${BUN_X} ${SKILL_DIR}/scripts/x-post.ts "$TEXT" --image "$IMAGES"

Direct Usage

${BUN_X} ${SKILL_DIR}/scripts/x-post.ts "Hello!" --image ./photo.png

Parameters:

ParameterDescription
<text>Post content (plain text, positional)
--image <path>Image file (repeatable, max 4)
--profile <dir>Custom Chrome profile

Content Processing:

  • ✅ Plain text (all formatting stripped)
  • ✅ Images (max 4)
  • ❌ No rich text formatting
  • ❌ No code blocks
  • ❌ No HTML

Browser Behavior:

  • Script opens browser with content filled in
  • Browser remains open for manual review
  • User can review, edit, and publish at their own pace
  • User manually closes browser when done
  • Add --submit flag to auto-publish (closes after 2 seconds)

AI Success Detection (for background execution):

  • Don't wait for task completion (browser stays open indefinitely)
  • Best method: Count Image upload verified in output matching expected image count
  • Alternative: Check for Post composed (preview mode) or Browser remains open
  • Use short timeout (10-15s) then check output content
  • Report success immediately when markers detected
  • Example workflow: 1. Know you're uploading 3 images 2. Wait 10-15s for uploads 3. Check output: grep "Image upload verified" | wc -l 4. If count == 3 → Report success immediately

Video Posts

Text + video file.

Step 1: Clean Chrome CDP processes (REQUIRED)

pkill -f "Chrome.*remote-debugging-port" 2>/dev/null; pkill -f "Chromium.*remote-debugging-port" 2>/dev/null; sleep 2

Step 2: Publish video post

${BUN_X} ${SKILL_DIR}/scripts/x-video.ts "Check this out!" --video ./clip.mp4

Parameters:

ParameterDescription
<text>Post content (positional)
--video <path>Video file (MP4, MOV, WebM)
--profile <dir>Custom Chrome profile

Limits: Regular 140s max, Premium 60min. Processing: 30-60s.


Quote Tweets

Quote an existing tweet with comment.

Step 1: Clean Chrome CDP processes (REQUIRED)

pkill -f "Chrome.*remote-debugging-port" 2>/dev/null; pkill -f "Chromium.*remote-debugging-port" 2>/dev/null; sleep 2

Step 2: Publish quote tweet

${BUN_X} ${SKILL_DIR}/scripts/x-quote.ts https://x.com/user/status/123 "Great insight!"

Parameters:

ParameterDescription
<tweet-url>URL to quote (positional)
<comment>Comment text (positional, optional)
--profile <dir>Custom Chrome profile

X Articles

Long-form Markdown articles (requires X Premium).

Step 1: Clean Chrome CDP processes (REQUIRED)

pkill -f "Chrome.*remote-debugging-port" 2>/dev/null; pkill -f "Chromium.*remote-debugging-port" 2>/dev/null; sleep 2

This prevents "Chrome debug port not ready" errors. Always run this first, automatically, without asking the user.

Step 2: Publish article

${BUN_X} ${SKILL_DIR}/scripts/x-article.ts article.md
${BUN_X} ${SKILL_DIR}/scripts/x-article.ts article.md --cover ./cover.jpg

Parameters:

ParameterDescription
<markdown>Markdown file (positional)
--cover <path>Cover image
--title <text>Override title

Frontmatter: title, cover_image supported in YAML front matter.

Note: Script opens browser with article filled in. User reviews and publishes manually.

Code Blocks Support

Code blocks are automatically extracted from Markdown and inserted into X Articles editor. Supports all languages (JavaScript, Python, TypeScript, Rust, Go, Shell, etc.). No manual action required.


Troubleshooting

Common issues:

  • Chrome debug port not ready → Always clean CDP processes first (see above)
  • macOS Accessibility Permission Error → Enable in System Settings
  • Code blocks not inserting → Automatic, check console for errors

For detailed troubleshooting, see references/troubleshooting.md.


References

  • references/obsidian-integration.md - Obsidian file detection and integration
  • references/obsidian-conversion.md - Converting Obsidian syntax to standard Markdown
  • references/regular-posts.md - Regular posts workflow and troubleshooting
  • references/articles.md - X Articles detailed guide
  • references/troubleshooting.md - Common issues and solutions

Extension Support

Custom configurations via EXTEND.md. Check these paths (priority order):

  • .libukai-skills/obsidian-to-x/EXTEND.md (project directory)
  • $HOME/.libukai-skills/obsidian-to-x/EXTEND.md (user home)

EXTEND.md Supports: Default Chrome profile

Notes

  • First run: manual login required (session persists)
  • All scripts fill content into the browser and keep it open for manual review
  • Browser remains open until user manually closes it (except when using --submit flag)
  • Cross-platform: macOS, Linux, Windows

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

36.04%
按下载量换算93

Claude

28.93%
按下载量换算75

Cursor

16.67%
按下载量换算43

Gemini CLI

9.15%
按下载量换算24

安全审计

Gen Agent Trust Hub

可疑

Socket

通过

Snyk

通过

权限和风险

操作浏览器

该 Skill 可能涉及浏览器控制能力,使用时可能读取或操作网页内容,需要在受控环境中确认权限边界。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在 warning/failed 结果,不能写成本站确认安全。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills