Token导航 LogoToken导航

Agent Skill · 研究检索

typefully(typefully 搜索)

typefully 用于查找、检索和筛选相关信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

typefully 是研究检索类 Agent Skill,可用宿主为 Codex、Claude、Cursor、Gemini CLI,通过GitHub 仓库获取,权限为接触敏感数据;许可证信息还不明确,第三方扫描已通过,按安装量在研究检索类的 73,675 个 Skill 里排第 8,158。

总安装 17,048周安装 683GitHub Stars 48下载 5,519核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
unknown

安装方式

通过对话安装

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

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

命令行安装

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

skills.shnpx skills
npx skills add https://github.com/typefully/agent-skills --skill typefully

这个 Skill 是做什么的

研究检索类 Skill 主要解决「找资料、核对事实、把来源整理清楚」的问题,通常会让助手先检索再总结。

在 X、LinkedIn、Threads、Bluesky 和 Mastodon 上起草、安排和发布社交媒体内容。

支持通过单个或多平台帖子起草、安排和发布到五个平台,包括通过单个草稿进行跨平台内容定制 具有队列管理、X 帖子分析、标签组织、媒体上传和通过 URL 解析提及 LinkedIn 组织的功能 包括线程创建(用 --- 分割) )、回复、引用帖子、社区帖子和内部草稿组织的便签本注释 需要通过交互式或非交互式 CLI 设置 API 密钥;支持默认社交集配置以简化重复命令

来源仓库内路径:skills/typefully

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 Codex、Claude、Cursor、Gemini CLI;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 npx skills add https://github.com/typefully/agent-skills --skill typefully;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它需要接触敏感数据,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

typefully 怎么安装?

在终端执行 npx skills add https://github.com/typefully/agent-skills --skill typefully。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

typefully 支持哪些 AI 工具?

公开资料标注支持 Codex、Claude、Cursor、Gemini CLI。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

typefully 需要什么权限?

权限级别是接触敏感数据。该 Skill 可能接触密钥、Token、环境变量或敏感配置,应进入高风险复核队列,默认不自动发布。

typefully 是免费的吗?

公开资料没有标注明确许可证,收费和商用限制都无法确认。正式使用前请到来源仓库核对授权说明。

typefully 用的人多吗?

公开数据是累计安装 17,048 次,近一周安装 683 次,下载 5,519 次,GitHub 48 星。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

typefully 安全吗?

第三方扫描结果为通过,但这只覆盖已知的静态检查项,不能替代自己读一遍源码和安装命令。

值得选的地方和要先想清楚的地方

值得选的地方

  • 同时适配 4 种工具,换客户端不用重新找替代品。
  • 第三方扫描已通过,常见的高风险行为没有命中。

先想清楚的地方

  • 需要接触敏感数据,装到常用环境前要先评估影响面。
  • 许可证没有明确标注,能不能商用、能不能再分发都不确定。
  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 Codex,想直接扩展它能力的人。
  • 需要处理研究检索类任务、又不想每次都手写提示词的人。

不太适合

  • 环境里有大量密钥、凭证,不方便给第三方 Skill 读取的人。
  • 需要明确授权才能用到公司项目里的场景。
  • 需要厂商级技术支持和 SLA 的生产系统。

研究检索类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
find-skills

寻找技能 · Codex、Claude

31,199,81316,486操作浏览器MIT有提醒
self-improving-agent

自我改进 Agent · OpenClaw

16,464,0023,396接触敏感数据MIT-0通过
soultrace

灵魂追踪 · Codex、Claude

7,588,94412需要联网未明确有提醒
self-improving

自我完善 · OpenClaw

6,829,2841,046需要联网MIT-0通过
microsoft-foundry

微软代工厂 · Codex、Claude

6,614,144764调用外部服务未明确有提醒
typefully

typefully 搜索 · 本页

17,04848接触敏感数据未明确通过

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

Typefully Skill

Create, schedule, and publish social media content across multiple platforms using Typefully.

Freshness check: If more than 30 days have passed since the last-updated date above, inform the user that this skill may be outdated and point them to the update options below.

Keeping This Skill Updated

Source: github.com/typefully/agent-skills API docs: typefully.com/docs/api

Update methods by installation type:

InstallationHow to update
CLI (npx skills)npx skills update
Claude Code plugin/plugin update typefully@typefully-skills
CursorRemote rules auto-sync from GitHub
ManualPull latest from repo or re-copy skills/typefully/

API changes ship independently—updating the skill ensures you have the latest commands and workflows.

Setup

Before using this skill, ensure:

  1. API Key: Run the setup command to configure your API key securely

- Get your key at https://typefully.com/?settings=api - Run: <skill-path>/scripts/typefully.js setup (where <skill-path> is the directory containing this SKILL.md) - Or set environment variable: export TYPEFULLY_API_KEY=your_key

  1. Requirements: Node.js 18+ (for built-in fetch API). No other dependencies needed.

Config priority (highest to lowest):

  1. TYPEFULLY_API_KEY environment variable
  2. ./.typefully/config.json (project-local, in user's working directory)
  3. ~/.config/typefully/config.json (user-global)

Handling "API key not found" errors

CRITICAL: When you receive an "API key not found" error from the CLI:

  1. Tell the user to run the setup command - The setup is interactive and requires user input, so you cannot run it on their behalf. Recommend they run it themselves, using the correct path based on where this skill was loaded: <skill-path>/scripts/typefully.js setup
  2. Stop and wait - After telling the user to run setup, do not continue with the task. You cannot create drafts, upload media, or perform any API operations without a valid API key. Wait for the user to complete setup and confirm before proceeding.
  3. DO NOT attempt any of the following:

- Searching for API keys in macOS Keychain, .env files, or other locations - Grepping through config files or directories - Looking in the user's Trash or other system folders - Constructing complex shell commands to find credentials - Drafting content or preparing posts before setup is complete

The setup command will interactively guide the user through configuration. Trust the CLI's error messages and follow their instructions.

Note for agents: All script paths in this document (e.g., ./scripts/typefully.js) are relative to the skill directory where this SKILL.md file is located. Resolve them accordingly based on where the skill is installed.

Social Sets

The Typefully API uses the term "social set" to refer to what users commonly call an "account". A social set contains the connected social media platforms (X, LinkedIn, Threads, etc.) for a single identity.

The CLI supports a default social set - once configured, most commands work without specifying the social_set_id.

You can pass the social set either way:

  • Positional: drafts:list 123
  • Flag: drafts:list --social-set-id 123 (also supports --social_set_id)

When determining which social set to use:

  1. Check for a configured default first - Run config:show to see if a default is already set: ./scripts/typefully.js config:show If default_social_set is configured, the CLI uses it automatically when you omit the social_set_id.
  2. Check project context - Look for configuration in project files like CLAUDE.md or AGENTS.md: ## Typefully Default social set ID: 12345
  3. Single social set shortcut - If the user only has one social set and no default is configured, use it automatically
  4. Multiple social sets, no default - Ask the user which to use, then offer to save their choice as the default: ./scripts/typefully.js config:set-default This command lists available social sets and saves the choice to the config file.
  5. Reuse previously resolved social set - If determined earlier in the session, use it without asking again

Common Actions

User says...Action
"Draft a tweet about X"drafts:create --text "..." (uses default social set)
"Post this to LinkedIn"drafts:create --platform linkedin --text "..."
"Mention a company on LinkedIn"linkedin:organizations:resolve --organization-url "<linkedin_url>" then use returned mention_text in drafts:create
"Post to X and LinkedIn" (same content)drafts:create --platform x,linkedin --text "..."
"X thread + LinkedIn post" (different content)Create one draft, then drafts:update to add platform (see Publishing to Multiple Platforms)
"What's scheduled?"drafts:list --status scheduled
"Show my recent posts"drafts:list --status published
"Schedule this for tomorrow"drafts:create... --schedule "2025-01-21T09:00:00Z"
"Post this now"drafts:create... --schedule now or drafts:publish <draft_id> --use-default
"Add notes/ideas to the draft"drafts:create... --scratchpad "Your notes here"
"Check available tags"tags:list
"Check my publishing quota"social-sets:get and inspect publishing_quota
"Show my X post analytics for last week"analytics:posts:list --start-date YYYY-MM-DD --end-date YYYY-MM-DD
"Show my X post analytics including replies"analytics:posts:list --start-date YYYY-MM-DD --end-date YYYY-MM-DD --include-replies
"Show my X follower growth"analytics:followers:get --start-date YYYY-MM-DD --end-date YYYY-MM-DD
"Show my queue for next week"queue:get --start-date YYYY-MM-DD --end-date YYYY-MM-DD

Workflow

Follow this workflow when creating posts:

  1. Check if a default social set is configured: ./scripts/typefully.js config:show If default_social_set shows an ID, skip to step 3.
  2. If no default, list social sets to find available options: ./scripts/typefully.js social-sets:list If multiple exist, ask the user which to use and offer to set it as default: ./scripts/typefully.js config:set-default
  3. Create drafts (social_set_id is optional if default is configured): ./scripts/typefully.js drafts:create --text "Your post" Note: If --platform is omitted, the first connected platform is auto-selected. For multi-platform posts: See Publishing to Multiple Platforms — always use a single draft, even when content differs per platform.
  4. Schedule or publish as needed

Working with Tags

Tags help organize drafts within Typefully. Always check existing tags before creating new ones:

  1. List existing tags first: ./scripts/typefully.js tags:list
  2. Use existing tags when available - if a tag with the desired name already exists, use it directly when creating drafts: ./scripts/typefully.js drafts:create --text "..." --tags existing-tag-name
  3. Only create new tags if needed - if the tag doesn't exist, create it: ./scripts/typefully.js tags:create --name "New Tag"

Important: Tags are scoped to each social set. A tag created for one social set won't appear in another.

Publishing to Multiple Platforms

If a single draft needs to be created for different platforms, you need to make sure to create a single draft and not multiple drafts.

When the content is the same across platforms, create a single draft with multiple platforms:

# Specific platforms
./scripts/typefully.js drafts:create --platform x,linkedin --text "Big announcement!"

# All connected platforms
./scripts/typefully.js drafts:create --all --text "Posting everywhere!"

IMPORTANT: When content should be tailored (e.g., X thread with a LinkedIn post version), still use a single draft — create with one platform first, then update to add the other:

# 1. Create draft with the primary platform first
./scripts/typefully.js drafts:create --platform linkedin --text "Excited to share our new feature..."
# Returns: { "id": "draft-123", ... }

# 2. Update the same draft to add another platform with different content
./scripts/typefully.js drafts:update draft-123 --platform x --text "🧵 Thread time!

---

Here's what we shipped and why it matters..." --use-default

So make sure to NEVER create multiple drafts unless the user explicitly wants separate drafts for each platform.

LinkedIn Mentions

LinkedIn mentions are supported via text syntax inside post content:

@[Company Name](urn:li:organization:123456)

Use the resolver command to convert a public LinkedIn organization URL into ready-to-paste mention syntax:

# Resolve a LinkedIn URL into mention metadata
./scripts/typefully.js linkedin:organizations:resolve --organization-url "https://www.linkedin.com/company/typefullycom/"
# Returns mention_text like: @[Typefully](urn:li:organization:86779668)

Then include that mention_text in your LinkedIn draft text:

./scripts/typefully.js drafts:create --platform linkedin --text "Thanks @[Typefully](urn:li:organization:86779668) for the support."

Commands Reference

User & Social Sets

CommandDescription
me:getGet authenticated user info
social-sets:listList all social sets you can access
social-sets:get <id>Get social set details including connected platforms and publishing_quota
linkedin:organizations:resolve [social_set_id] --organization-url <url>Resolve LinkedIn company/school URL into mention metadata (mention_text, urn)

social-sets:get returns a publishing_quota object when available:

  • used - published drafts already counted in the current quota window
  • remaining - remaining publish slots, or "unlimited"
  • resets_at - when the current quota window resets

Use it before publishing/scheduling when the user asks about remaining posting capacity or when a publish/schedule request fails with quota copy.

Analytics

All analytics commands support an optional [social_set_id] - if omitted, the configured default is used.

The public API currently supports X analytics only on these endpoints. The CLI defaults --platform to x, so you can usually omit it.

Replies are now excluded by default so the result set matches the main published-post view more closely. Add --include-replies when you explicitly want reply posts included.

Analytics responses return post-level metrics for the requested inclusive date range, including:

  • impressions
  • engagement totals and breakdowns like likes, comments, shares, quotes, saves, profile_clicks, and link_clicks

Follower analytics returns current_followers_count plus daily data points with date and followers_count. If you omit dates, the API returns the default recent range.

CommandDescription
analytics:posts:list [social_set_id] --start-date <YYYY-MM-DD> --end-date <YYYY-MM-DD>List X posts with normalized analytics metrics for an inclusive date range
analytics:posts:list... --start_date <YYYY-MM-DD> --end_date <YYYY-MM-DD>Snake case aliases for date flags (copied from API docs)
analytics:posts:list... --include-repliesInclude X replies in the results (excluded by default)
analytics:posts:list... --include_repliesSnake case alias for the include-replies flag
analytics:posts:list... --limit 100 --offset 25Paginate through results
analytics:posts:list... --platform xExplicitly request X analytics (currently the only supported platform)
analytics:followers:get [social_set_id]Get X follower counts for the API default date range
analytics:followers:get... --start-date <YYYY-MM-DD> --end-date <YYYY-MM-DD>Get X follower counts for an inclusive date range
analytics:followers:get... --start_date <YYYY-MM-DD> --end_date <YYYY-MM-DD>Snake case aliases for date flags
analytics:followers:get... --platform xExplicitly request X followers analytics (currently the only supported platform)

Drafts

All drafts commands support an optional [social_set_id] - if omitted, the configured default is used. Safety note: For commands that take [social_set_id] <draft_id>, if you pass only a single argument (the draft_id) while a default social set is configured, you must add --use-default to confirm intent.

CommandDescription
drafts:list [social_set_id]List drafts (add --status scheduled to filter, --sort to order)
drafts:get [social_set_id] <draft_id>Get a specific draft with full content (single-arg requires --use-default if a default is configured)
drafts:create [social_set_id] --text "..."Create a new draft (auto-selects platform)
drafts:create [social_set_id] --platform x --text "..."Create a draft for specific platform(s)
drafts:create [social_set_id] --all --text "..."Create a draft for all connected platforms
drafts:create [social_set_id] --file <path>Create draft from file content
drafts:create... --media <media_ids>Create draft with attached media
drafts:create... --reply-to <url>Reply to an existing X post
drafts:create... --community <id>Post to an X community
drafts:create... --quote-post-url <url>Quote an existing X post URL
drafts:create... --paid-partnershipLabel X post(s) as paid partnership
drafts:create... --made-with-aiLabel X post(s) as made with AI
drafts:create... --shareGenerate a public share URL for the draft
drafts:create... --scratchpad "..."Add internal notes/scratchpad to the draft
drafts:update [social_set_id] <draft_id> --text "..."Update an existing draft (single-arg requires --use-default if a default is configured)
drafts:update... --quote-post-url <url>Update X post(s) in a draft to quote an existing post URL
drafts:update... --paid-partnershipLabel existing or updated X post(s) as paid partnership
drafts:update... --made-with-aiLabel existing or updated X post(s) as made with AI
drafts:update [social_set_id] <draft_id> --tags "tag1,tag2"Update tags on an existing draft (content unchanged)
drafts:update... --shareGenerate a public share URL for the draft
drafts:update... --scratchpad "..."Update internal notes/scratchpad
drafts:update [social_set_id] <draft_id> --append --text "..."Append to existing thread

Scheduling & Publishing

Safety note: These commands require --use-default when using the default social set with a single argument (to prevent accidental operations from ambiguous syntax).

CommandDescription
drafts:delete <social_set_id> <draft_id>Delete a draft (explicit IDs)
drafts:delete <draft_id> --use-defaultDelete using default social set
drafts:schedule <social_set_id> <draft_id> --time next-free-slotSchedule to next available slot
drafts:schedule <draft_id> --time next-free-slot --use-defaultSchedule using default social set
drafts:publish <social_set_id> <draft_id>Publish immediately
drafts:publish <draft_id> --use-defaultPublish using default social set

Queue

All queue commands support an optional [social_set_id] - if omitted, the configured default is used.

The queue is a social-set-specific timeline made of:

  • Queue slots generated from that social set's queue schedule
  • Scheduled drafts/posts that belong to that same social set

Use queue:get when the user asks what is already scheduled (or free) for a given account in a date range.

CommandDescription
queue:get [social_set_id] --start-date <YYYY-MM-DD> --end-date <YYYY-MM-DD>Get the queue timeline for one social set: free queue slots plus scheduled drafts/posts in a date range
queue:get... --start_date <YYYY-MM-DD> --end_date <YYYY-MM-DD>Snake case aliases for date flags (copied from API docs)
queue:schedule:get [social_set_id]Get queue schedule rules
queue:schedule:put [social_set_id] --rules '[{"h":9,"m":30,"days":["mon","wed","fri"]}]'Replace queue schedule rules (full replacement)

Tags

CommandDescription
tags:list [social_set_id]List all tags
tags:create [social_set_id] --name "Tag Name"Create a new tag

Media

CommandDescription
media:upload [social_set_id] <file_path>Upload media, wait for processing, return ready media_id
media:upload... --no-waitUpload and return immediately (use media:status to poll)
media:upload... --timeout <seconds>Set custom timeout (default: 60)
media:status [social_set_id] <media_id>Check media upload status

Setup & Configuration

CommandDescription
setupInteractive setup - prompts for API key, storage location, and default social set
`setup --key <key> --location <global\local>`Non-interactive setup for scripts/CI (auto-selects default if only one social set)
setup --key <key> --default-social-set <id>Non-interactive setup with explicit default social set
setup --key <key> --no-defaultNon-interactive setup, skip default social set selection
config:showShow current config, API key source, and default social set
config:set-default [social_set_id]Set default social set (interactive if ID omitted)

Examples

Set up default social set

# Check current config
./scripts/typefully.js config:show

# Set default (interactive - lists available social sets)
./scripts/typefully.js config:set-default

# Set default (non-interactive)
./scripts/typefully.js config:set-default 123 --location global

Create a tweet (using default social set)

./scripts/typefully.js drafts:create --text "Hello, world!"

Create a tweet with explicit social_set_id

./scripts/typefully.js drafts:create 123 --text "Hello, world!"

Create a cross-platform post (specific platforms)

./scripts/typefully.js drafts:create --platform x,linkedin,threads --text "Big announcement!"

Resolve LinkedIn mention syntax from a company URL

./scripts/typefully.js linkedin:organizations:resolve --organization-url "https://www.linkedin.com/company/typefullycom/"

Create a LinkedIn draft with a mention

./scripts/typefully.js drafts:create --platform linkedin --text "Thanks @[Typefully](urn:li:organization:86779668) for the support."

Create a post on all connected platforms

./scripts/typefully.js drafts:create --all --text "Posting everywhere!"

Create and schedule for next slot

./scripts/typefully.js drafts:create --text "Scheduled post" --schedule next-free-slot

Create with tags

./scripts/typefully.js drafts:create --text "Marketing post" --tags marketing,product

List scheduled posts sorted by date

./scripts/typefully.js drafts:list --status scheduled --sort scheduled_date

Get queue view for a date range

./scripts/typefully.js queue:get --start-date 2026-02-01 --end-date 2026-02-29

Get X post analytics for a date range

./scripts/typefully.js analytics:posts:list --start-date 2026-03-01 --end-date 2026-03-07

Get X post analytics including replies

./scripts/typefully.js analytics:posts:list --start-date 2026-03-01 --end-date 2026-03-07 --include-replies

Paginate through X analytics results

./scripts/typefully.js analytics:posts:list --start-date 2026-03-01 --end-date 2026-03-31 --limit 100 --offset 100

Get X followers analytics for the default range

./scripts/typefully.js analytics:followers:get

Get X followers analytics for a date range

./scripts/typefully.js analytics:followers:get --start-date 2026-03-01 --end-date 2026-03-31

Get queue schedule

./scripts/typefully.js queue:schedule:get

Replace queue schedule rules

./scripts/typefully.js queue:schedule:put --rules '[{"h":9,"m":30,"days":["mon","wed","fri"]}]'

Reply to a tweet

./scripts/typefully.js drafts:create --platform x --text "Great thread!" --reply-to "https://x.com/user/status/123456"

Post to an X community

./scripts/typefully.js drafts:create --platform x --text "Community update" --community 1493446837214187523

Create an X quote post

./scripts/typefully.js drafts:create --platform x --text "My take on this" --quote-post-url "https://x.com/user/status/1234567890123456789"

Create an X post with content disclosure labels

./scripts/typefully.js drafts:create --platform x --text "Sponsored AI-assisted update" --paid-partnership --made-with-ai

Update a draft to quote an X post

./scripts/typefully.js drafts:update 456 --platform x --quote-post-url "https://x.com/user/status/1234567890123456789" --use-default

Add an X content disclosure label to an existing draft

./scripts/typefully.js drafts:update 456 --made-with-ai --use-default

Create draft with share URL

./scripts/typefully.js drafts:create --text "Check this out" --share

Create draft with scratchpad notes

./scripts/typefully.js drafts:create --text "Launching next week!" --scratchpad "Draft for product launch. Coordinate with marketing team before publishing."

Upload media and create post with it

# Single command handles upload + polling - returns when ready!
./scripts/typefully.js media:upload ./image.jpg
# Returns: {"media_id": "abc-123-def", "status": "ready", "message": "Media uploaded and ready to use"}

# Create post with the media attached
./scripts/typefully.js drafts:create --text "Check out this image!" --media abc-123-def

Upload multiple media files

# Upload each file (each waits for processing)
./scripts/typefully.js media:upload ./photo1.jpg  # Returns media_id: id1
./scripts/typefully.js media:upload ./photo2.jpg  # Returns media_id: id2

# Create post with multiple media (comma-separated)
./scripts/typefully.js drafts:create --text "Photo dump!" --media id1,id2

Add media to an existing draft

# Upload media
./scripts/typefully.js media:upload ./new-image.jpg  # Returns media_id: xyz

# Update draft with media (456 is the draft_id)
./scripts/typefully.js drafts:update 456 --text "Updated post with image" --media xyz --use-default

Setup (interactive)

./scripts/typefully.js setup

Setup (non-interactive, for scripts/CI)

# Auto-selects default social set if only one exists
./scripts/typefully.js setup --key typ_xxx --location global

# With explicit default social set
./scripts/typefully.js setup --key typ_xxx --location global --default-social-set 123

# Skip default social set selection entirely
./scripts/typefully.js setup --key typ_xxx --no-default

Platform Names

Use these exact names for the --platform option:

  • x - X (formerly Twitter)
  • linkedin - LinkedIn
  • threads - Threads
  • bluesky - Bluesky
  • mastodon - Mastodon

Draft URLs

Typefully draft URLs contain the social set and draft IDs:

https://typefully.com/?a=<social_set_id>&d=<draft_id>

Example: https://typefully.com/?a=12345&d=67890

  • a=12345 → social_set_id
  • d=67890 → draft_id

Draft Scratchpad

When the user explictly asked to add notes, ideas, or anything else in the draft scratchpad, use the --scratchpad flag—do NOT write to local files!

The --scratchpad option attaches internal notes directly to the Typefully draft. These notes:

  • Are visible in the Typefully UI alongside the draft
  • Stay attached to the draft permanently
  • Are private and never published to social media
  • Are perfect for storing thread expansion ideas, research notes, context, etc.
# CORRECT: Notes attached to the draft in Typefully
./scripts/typefully.js drafts:create 123 --text "My post" --scratchpad "Ideas for expanding: 1) Add stats 2) Include quote"

# WRONG: Do NOT write notes to local files when the user wants them in Typefully
# Writing to /tmp/scratchpad/ or any local file is NOT the same thing

Automation Guidelines

When automating posts, especially on X, follow these rules to keep accounts in good standing:

  • No duplicate content across multiple accounts
  • No unsolicited automated replies - only reply when explicitly requested by the user
  • No trending manipulation - don't mass-post about trending topics
  • No fake engagement - don't automate likes, reposts, or follows
  • Respect rate limits - the API has rate limits, don't spam requests
  • Drafts are private - content stays private until published or explicitly shared

When in doubt, create drafts for user review rather than publishing directly.

Publishing confirmation: Unless the user explicitly asks to "publish now" or "post immediately", always confirm before publishing. Creating a draft is safe; publishing is irreversible and goes public instantly.

Tips

  • Smart platform default: If --platform is omitted, the first connected platform is auto-selected
  • All platforms: Use --all to post to all connected platforms at once
  • Character limits: X (280), LinkedIn (3000), Threads (500), Bluesky (300), Mastodon (500)
  • LinkedIn mentions: Use @[Name](urn:li:organization:ID) in post text; resolve IDs via linkedin:organizations:resolve
  • Thread creation: Use --- on its own line to split into multiple posts (thread)
  • Scheduling: Use next-free-slot to let Typefully pick the optimal time
  • Cross-posting: List multiple platforms separated by commas: --platform x,linkedin
  • Draft titles: Use --title for internal organization (not posted to social media)
  • Draft scratchpad: Use --scratchpad to attach notes to the draft in Typefully (NOT local files!) - perfect for thread ideas, research, context
  • X analytics: Use analytics:posts:list --start-date... --end-date... to fetch post metrics for a social set; replies are excluded by default, and --include-replies opts back in
  • X followers analytics: Use analytics:followers:get --start-date... --end-date... to fetch daily follower counts, or omit dates for the API default range
  • X content disclosures: Use --paid-partnership and/or --made-with-ai on drafts:create or drafts:update; these flags are X-only and are applied only to X posts
  • Publishing quota: Use social-sets:get and inspect publishing_quota to see remaining publish capacity and reset time
  • Read from file: Use --file./post.txt instead of --text to read content from a file
  • Sorting drafts: Use --sort with values like created_at, -created_at, scheduled_date, etc.

平台分布

Codex

35.65%
按下载量换算1,968

Claude

30.43%
按下载量换算1,679

Cursor

18.19%
按下载量换算1,004

Gemini CLI

8.32%
按下载量换算459

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

接触敏感数据

该 Skill 可能接触密钥、Token、环境变量或敏感配置,应进入高风险复核队列,默认不自动发布。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。目前只有一个公开来源,建议同时核对源仓库。

继续浏览同类 Skills