typefully

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Typefully Skill

Typefully 技能

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.
使用Typefully在多个平台上创建、排期和发布社交媒体内容。
时效性检查:如果距离上方的
last-updated
日期已超过30天,请告知用户此技能可能已过时,并引导他们查看下方的更新选项。

Keeping This Skill Updated

保持此技能更新

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.
按安装类型分类的更新方法:
安装方式更新方法
CLI (
npx skills
)
npx skills update
Claude Code 插件
/plugin update typefully@typefully-skills
Cursor从GitHub自动同步远程规则
手动安装拉取仓库最新版本或重新复制
skills/typefully/
目录
API变更会独立推送——更新技能可确保你拥有最新的命令和工作流。

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
  2. 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)
使用此技能前,请确保完成以下操作:
  1. API密钥:运行配置命令安全设置你的API密钥
  2. 环境要求:Node.js 18+(用于内置的fetch API),无需其他依赖。
配置优先级(从高到低):
  1. TYPEFULLY_API_KEY
    环境变量
  2. ./.typefully/config.json
    (项目本地配置,位于用户工作目录)
  3. ~/.config/typefully/config.json
    (用户全局配置)

Handling "API key not found" errors

处理“未找到API密钥”错误

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:
    bash
    <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.
重要提示:当从CLI收到“未找到API密钥”错误时:
  1. 告知用户运行配置命令 - 配置过程是交互式的,需要用户输入,因此你无法代劳。建议用户根据技能的加载路径自行运行:
    bash
    <skill-path>/scripts/typefully.js setup
  2. 停止操作并等待 - 告知用户运行配置命令后,不要继续执行任务。没有有效的API密钥,你无法创建草稿、上传媒体或执行任何API操作。等待用户完成配置并确认后再继续。
  3. 禁止尝试以下操作:
    • 在macOS钥匙串、
      .env
      文件或其他位置搜索API密钥
    • 遍历配置文件或目录
    • 查看用户的回收站或其他系统文件夹
    • 构造复杂的shell命令查找凭据
    • 在配置完成前撰写内容或准备帖子
配置命令会交互式引导用户完成设置。请信任CLI的错误消息并遵循其指示。
代理提示:本文档中的所有脚本路径(如
./scripts/typefully.js
)均相对于此SKILL.md文件所在的技能目录。请根据技能的安装位置相应解析路径。

Social Sets

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.
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:
    bash
    ./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
    :
    markdown
    ## 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:
    bash
    ./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
Typefully API使用术语“social set”来指代用户通常所说的“账户”。一个social set包含单个身份关联的所有社交媒体平台(X、LinkedIn、Threads等)。
CLI支持默认social set - 配置完成后,大多数命令无需指定social_set_id即可运行。
确定要使用的social set时,请遵循以下步骤:
  1. 首先检查是否配置了默认值 - 运行
    config:show
    查看是否已设置默认值:
    bash
    ./scripts/typefully.js config:show
    如果已配置
    default_social_set
    ,当你省略social_set_id时,CLI会自动使用它。
  2. 检查项目上下文 - 查看项目文件(如
    CLAUDE.md
    AGENTS.md
    )中的配置:
    markdown
    ## Typefully
    默认social set ID: 12345
  3. 单个social set快捷方式 - 如果用户只有一个social set且未配置默认值,则自动使用该social set
  4. 多个social set且无默认值 - 询问用户要使用哪个,然后提议将其选择保存为默认值
    bash
    ./scripts/typefully.js config:set-default
    此命令会列出可用的social set并将选择保存到配置文件中。
  5. 重用之前确定的social set - 如果在会话早期已确定,则无需再次询问直接使用

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 "..."
"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
用户需求执行操作
"撰写一条关于X的推文"
drafts:create --text "..."
(使用默认social set)
"将此内容发布到LinkedIn"
drafts:create --platform linkedin --text "..."
"发布到X和LinkedIn"(内容相同)
drafts:create --platform x,linkedin --text "..."
"X线程帖 + LinkedIn帖子"(内容不同)创建一个草稿,然后使用
drafts:update
添加平台(请参阅【多平台发布】部分)
"查看已排期的内容"
drafts:list --status scheduled
"查看我最近发布的帖子"
drafts:list --status published
"将此内容排期到明天发布"
drafts:create ... --schedule "2025-01-21T09:00:00Z"
"立即发布此内容"
drafts:create ... --schedule now
drafts:publish <draft_id> --use-default
"为草稿添加备注/想法"
drafts:create ... --scratchpad "你的备注内容"
"查看可用标签"
tags:list

Workflow

工作流

Follow this workflow when creating posts:
  1. Check if a default social set is configured:
    bash
    ./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:
    bash
    ./scripts/typefully.js social-sets:list
    If multiple exist, ask the user which to use and offer to set it as default:
    bash
    ./scripts/typefully.js config:set-default
  3. Create drafts (social_set_id is optional if default is configured):
    bash
    ./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
创建帖子时请遵循以下工作流:
  1. 检查是否配置了默认social set
    bash
    ./scripts/typefully.js config:show
    如果
    default_social_set
    显示有ID,则跳至步骤3。
  2. 如果没有默认值,列出所有social set以找到可用选项:
    bash
    ./scripts/typefully.js social-sets:list
    如果存在多个social set,请询问用户要使用哪个,并提议将其设置为默认值:
    bash
    ./scripts/typefully.js config:set-default
  3. 创建草稿(如果已配置默认值,social_set_id为可选参数):
    bash
    ./scripts/typefully.js drafts:create --text "你的帖子内容"
    注意:如果省略
    --platform
    参数,会自动选择第一个关联的平台。
    多平台帖子:请参阅【多平台发布】部分 —— 即使每个平台的内容不同,也始终使用单个草稿。
  4. 根据需要排期或发布

Working with Tags

标签使用

Tags help organize drafts within Typefully. Always check existing tags before creating new ones:
  1. List existing tags first:
    bash
    ./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:
    bash
    ./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:
    bash
    ./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.
标签可帮助在Typefully中组织草稿。创建新标签前请务必先查看现有标签
  1. 先列出现有标签
    bash
    ./scripts/typefully.js tags:list
  2. 优先使用现有标签 - 如果已存在所需名称的标签,创建草稿时直接使用:
    bash
    ./scripts/typefully.js drafts:create --text "..." --tags existing-tag-name
  3. 仅在需要时创建新标签 - 如果标签不存在,则创建它:
    bash
    ./scripts/typefully.js tags:create --name "New Tag"
重要提示:标签是按social set划分范围的。为一个social set创建的标签不会出现在另一个social set中。

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:
bash
undefined
如果需要为不同平台创建内容,请确保创建单个草稿而非多个草稿。
当所有平台的内容相同时,创建包含多个平台的单个草稿:
bash
undefined

Specific platforms

指定平台

./scripts/typefully.js drafts:create --platform x,linkedin --text "Big announcement!"
./scripts/typefully.js drafts:create --platform x,linkedin --text "重大公告!"

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:

```bash
./scripts/typefully.js drafts:create --all --text "同步发布到所有平台!"

**重要提示**:当需要为不同平台定制内容时(例如,X线程帖和LinkedIn帖子版本不同),**仍需使用单个草稿** —— 先为一个平台创建草稿,然后更新草稿以添加其他平台:

```bash

1. Create draft with the primary platform first

1. 先为主平台创建草稿

./scripts/typefully.js drafts:create --platform linkedin --text "Excited to share our new feature..."
./scripts/typefully.js drafts:create --platform linkedin --text "很高兴分享我们的新功能..."

Returns: { "id": "draft-123", ... }

返回结果: { "id": "draft-123", ... }

2. Update the same draft to add another platform with different content

2. 更新同一个草稿以添加另一个平台的不同内容

./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.
./scripts/typefully.js drafts:update draft-123 --platform x --text "🧵 线程帖时间!

以下是我们发布的内容及其重要性..." --use-default

因此,除非用户明确要求为每个平台创建单独的草稿,否则请务必**不要**创建多个草稿。

Commands Reference

命令参考

User & Social Sets

用户与Social Sets

CommandDescription
me:get
Get authenticated user info
social-sets:list
List all social sets you can access
social-sets:get <id>
Get social set details including connected platforms
命令描述
me:get
获取已认证用户信息
social-sets:list
列出你可访问的所有social set
social-sets:get <id>
获取social set详情,包括关联的平台

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 ... --share
Generate 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 ... --share
Generate 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
所有草稿命令都支持可选的
[social_set_id]
参数 - 如果省略,则使用已配置的默认值。 安全提示:对于需要
[social_set_id] <draft_id>
的命令,如果在已配置默认social set的情况下仅传递一个参数(draft_id),则必须添加
--use-default
参数以确认意图。
命令描述
drafts:list [social_set_id]
列出草稿(添加
--status scheduled
进行筛选,
--sort
进行排序)
drafts:get [social_set_id] <draft_id>
获取特定草稿的完整内容(如果已配置默认值,仅传递单个参数时需要
--use-default
drafts:create [social_set_id] --text "..."
创建新草稿(自动选择平台)
drafts:create [social_set_id] --platform x --text "..."
为特定平台创建草稿
drafts:create [social_set_id] --all --text "..."
为所有关联平台创建草稿
drafts:create [social_set_id] --file <path>
从文件内容创建草稿
drafts:create ... --media <media_ids>
创建包含附加媒体的草稿
drafts:create ... --reply-to <url>
回复现有的X帖子
drafts:create ... --community <id>
发布到X社区
drafts:create ... --share
为草稿生成公开分享链接
drafts:create ... --scratchpad "..."
为草稿添加内部备注/临时记录
drafts:update [social_set_id] <draft_id> --text "..."
更新现有草稿(如果已配置默认值,仅传递单个参数时需要
--use-default
drafts:update ... --share
为草稿生成公开分享链接
drafts:update ... --scratchpad "..."
更新内部备注/临时记录
drafts:update [social_set_id] <draft_id> --append --text "..."
追加内容到现有线程帖

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-default
Delete using default social set
drafts:schedule <social_set_id> <draft_id> --time next-free-slot
Schedule to next available slot
drafts:schedule <draft_id> --time next-free-slot --use-default
Schedule using default social set
drafts:publish <social_set_id> <draft_id>
Publish immediately
drafts:publish <draft_id> --use-default
Publish using default social set
安全提示:当使用默认social set且仅传递单个参数时,这些命令需要
--use-default
参数(以防止因语法歧义导致的意外操作)。
命令描述
drafts:delete <social_set_id> <draft_id>
删除草稿(需要明确的ID)
drafts:delete <draft_id> --use-default
使用默认social set删除草稿
drafts:schedule <social_set_id> <draft_id> --time next-free-slot
将草稿排期到下一个可用时段
drafts:schedule <draft_id> --time next-free-slot --use-default
使用默认social set将草稿排期到下一个可用时段
drafts:publish <social_set_id> <draft_id>
立即发布
drafts:publish <draft_id> --use-default
使用默认social set立即发布

Tags

标签

CommandDescription
tags:list [social_set_id]
List all tags
tags:create [social_set_id] --name "Tag Name"
Create a new tag
命令描述
tags:list [social_set_id]
列出所有标签
tags:create [social_set_id] --name "Tag Name"
创建新标签

Media

媒体

CommandDescription
media:upload [social_set_id] <file_path>
Upload media, wait for processing, return ready media_id
media:upload ... --no-wait
Upload 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
命令描述
media:upload [social_set_id] <file_path>
上传媒体,等待处理完成,返回可用的media_id
media:upload ... --no-wait
上传后立即返回结果(使用media:status轮询状态)
media:upload ... --timeout <seconds>
设置自定义超时时间(默认:60秒)
media:status [social_set_id] <media_id>
检查媒体上传状态

Setup & Configuration

配置与设置

CommandDescription
setup
Interactive 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-default
Non-interactive setup, skip default social set selection
config:show
Show current config, API key source, and default social set
config:set-default [social_set_id]
Set default social set (interactive if ID omitted)
命令描述
setup
交互式设置 - 提示输入API密钥、存储位置和默认social set
setup --key <key> --location <global|local>
非交互式设置,适用于脚本/CI(如果只有一个social set则自动选择默认值)
setup --key <key> --default-social-set <id>
带明确默认social set的非交互式设置
setup --key <key> --no-default
非交互式设置,跳过默认social set选择
config:show
显示当前配置、API密钥来源和默认social set
config:set-default [social_set_id]
设置默认social set(如果省略ID则为交互式)

Examples

示例

Set up default social set

设置默认social set

bash
undefined
bash
undefined

Check current config

查看当前配置

./scripts/typefully.js config:show
./scripts/typefully.js config:show

Set default (interactive - lists available social sets)

设置默认值(交互式 - 列出可用的social set)

./scripts/typefully.js config:set-default
./scripts/typefully.js config:set-default

Set default (non-interactive)

设置默认值(非交互式)

./scripts/typefully.js config:set-default 123 --location global
undefined
./scripts/typefully.js config:set-default 123 --location global
undefined

Create a tweet (using default social set)

创建推文(使用默认social set)

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

Create a tweet with explicit social_set_id

使用明确的social_set_id创建推文

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

Create a cross-platform post (specific platforms)

创建跨平台帖子(指定平台)

bash
./scripts/typefully.js drafts:create --platform x,linkedin,threads --text "Big announcement!"
bash
./scripts/typefully.js drafts:create --platform x,linkedin,threads --text "重大公告!"

Create a post on all connected platforms

为所有关联平台创建帖子

bash
./scripts/typefully.js drafts:create --all --text "Posting everywhere!"
bash
./scripts/typefully.js drafts:create --all --text "同步发布到所有平台!"

Create and schedule for next slot

创建并排期到下一个可用时段

bash
./scripts/typefully.js drafts:create --text "Scheduled post" --schedule next-free-slot
bash
./scripts/typefully.js drafts:create --text "排期发布的帖子" --schedule next-free-slot

Create with tags

创建带标签的帖子

bash
./scripts/typefully.js drafts:create --text "Marketing post" --tags marketing,product
bash
./scripts/typefully.js drafts:create --text "营销帖子" --tags marketing,product

List scheduled posts sorted by date

按日期排序列出已排期的帖子

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

Reply to a tweet

回复推文

bash
./scripts/typefully.js drafts:create --platform x --text "Great thread!" --reply-to "https://x.com/user/status/123456"
bash
./scripts/typefully.js drafts:create --platform x --text "很棒的线程帖!" --reply-to "https://x.com/user/status/123456"

Post to an X community

发布到X社区

bash
./scripts/typefully.js drafts:create --platform x --text "Community update" --community 1493446837214187523
bash
./scripts/typefully.js drafts:create --platform x --text "社区更新" --community 1493446837214187523

Create draft with share URL

创建带分享链接的草稿

bash
./scripts/typefully.js drafts:create --text "Check this out" --share
bash
./scripts/typefully.js drafts:create --text "看看这个" --share

Create draft with scratchpad notes

创建带临时记录备注的草稿

bash
./scripts/typefully.js drafts:create --text "Launching next week!" --scratchpad "Draft for product launch. Coordinate with marketing team before publishing."
bash
./scripts/typefully.js drafts:create --text "下周发布!" --scratchpad "产品发布草稿。发布前请与营销团队协调。"

Upload media and create post with it

上传媒体并创建包含该媒体的帖子

bash
undefined
bash
undefined

Single command handles upload + polling - returns when ready!

单个命令处理上传 + 轮询 - 准备就绪后返回结果!

./scripts/typefully.js media:upload ./image.jpg
./scripts/typefully.js media:upload ./image.jpg

Returns: {"media_id": "abc-123-def", "status": "ready", "message": "Media uploaded and ready to use"}

返回结果: {"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
undefined
./scripts/typefully.js drafts:create --text "看看这张图片!" --media abc-123-def
undefined

Upload multiple media files

上传多个媒体文件

bash
undefined
bash
undefined

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
./scripts/typefully.js media:upload ./photo1.jpg # 返回media_id: id1 ./scripts/typefully.js media:upload ./photo2.jpg # 返回media_id: id2

Create post with multiple media (comma-separated)

创建包含多个媒体的帖子(用逗号分隔)

./scripts/typefully.js drafts:create --text "Photo dump!" --media id1,id2
undefined
./scripts/typefully.js drafts:create --text "照片合集!" --media id1,id2
undefined

Add media to an existing draft

为现有草稿添加媒体

bash
undefined
bash
undefined

Upload media

上传媒体

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

Update draft with media (456 is the draft_id)

更新草稿以添加媒体(456是草稿ID)

./scripts/typefully.js drafts:update 456 --text "Updated post with image" --media xyz --use-default
undefined
./scripts/typefully.js drafts:update 456 --text "更新后的帖子(含图片)" --media xyz --use-default
undefined

Setup (interactive)

交互式设置

bash
./scripts/typefully.js setup
bash
./scripts/typefully.js setup

Setup (non-interactive, for scripts/CI)

非交互式设置(适用于脚本/CI)

bash
undefined
bash
undefined

Auto-selects default social set if only one exists

如果只有一个social set则自动选择默认值

./scripts/typefully.js setup --key typ_xxx --location global
./scripts/typefully.js setup --key typ_xxx --location global

With explicit default social set

带明确默认social set的设置

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

Skip default social set selection entirely

跳过默认social set选择的设置

./scripts/typefully.js setup --key typ_xxx --no-default
undefined
./scripts/typefully.js setup --key typ_xxx --no-default
undefined

Platform Names

平台名称

Use these exact names for the
--platform
option:
  • x
    - X (formerly Twitter)
  • linkedin
    - LinkedIn
  • threads
    - Threads
  • bluesky
    - Bluesky
  • mastodon
    - Mastodon
--platform
参数请使用以下准确名称:
  • x
    - X(原Twitter)
  • linkedin
    - LinkedIn
  • threads
    - Threads
  • bluesky
    - Bluesky
  • mastodon
    - Mastodon

Draft URLs

草稿URL

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
Typefully草稿URL包含social set和草稿ID:
https://typefully.com/?a=<social_set_id>&d=<draft_id>
示例:
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.
bash
undefined
当用户明确要求添加备注、想法或其他内容到草稿临时记录时,请使用
--scratchpad
参数——不要写入本地文件!
--scratchpad
选项会将内部备注直接附加到Typefully草稿中。这些备注:
  • 在Typefully UI中与草稿一起显示
  • 永久附加到草稿
  • 是私有的,绝不会发布到社交媒体
  • 非常适合存储线程帖扩展想法、研究笔记、上下文信息等
bash
undefined

CORRECT: Notes attached to the draft in Typefully

正确做法:备注附加到Typefully中的草稿

./scripts/typefully.js drafts:create 123 --text "My post" --scratchpad "Ideas for expanding: 1) Add stats 2) Include quote"
./scripts/typefully.js drafts:create 123 --text "我的帖子" --scratchpad "扩展想法:1) 添加统计数据 2) 引用名人名言"

WRONG: Do NOT write notes to local files when the user wants them in Typefully

错误做法:当用户希望将备注存储在Typefully中时,不要写入本地文件

Writing to /tmp/scratchpad/ or any local file is NOT the same thing

写入/tmp/scratchpad/或任何本地文件都不是正确的做法

undefined
undefined

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.
自动发布帖子时,尤其是在X平台,请遵循以下规则以确保账户状态良好:
  • 禁止跨账户重复内容
  • 禁止未经请求的自动回复 - 仅在用户明确要求时回复
  • 禁止操纵趋势 - 不要批量发布关于热门话题的内容
  • 禁止虚假互动 - 不要自动点赞、转发或关注
  • 遵守速率限制 - API有速率限制,不要发送垃圾请求
  • 草稿是私有的 - 内容在发布或明确分享前始终是私有的
如有疑问,请创建草稿供用户审核,而非直接发布。
发布确认:除非用户明确要求“立即发布”或“马上发布”,否则发布前请务必确认。创建草稿是安全的;发布是不可逆的,会立即公开。

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)
  • 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
  • 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.
  • 智能平台默认值:如果省略
    --platform
    参数,会自动选择第一个关联的平台
  • 所有平台:使用
    --all
    参数可一次性发布到所有关联平台
  • 字符限制:X(280)、LinkedIn(3000)、Threads(500)、Bluesky(300)、Mastodon(500)
  • 线程帖创建:使用单独一行的
    ---
    将内容拆分为多个帖子(线程帖)
  • 排期:使用
    next-free-slot
    让Typefully选择最佳时间
  • 跨平台发布:用逗号分隔多个平台:
    --platform x,linkedin
  • 草稿标题:使用
    --title
    参数进行内部组织(不会发布到社交媒体)
  • 草稿临时记录:使用
    --scratchpad
    参数将备注附加到Typefully中的草稿(而非本地文件!)—— 非常适合线程帖想法、研究、上下文信息
  • 从文件读取内容:使用
    --file ./post.txt
    代替
    --text
    从文件读取内容
  • 草稿排序:使用
    --sort
    参数,值可以是
    created_at
    -created_at
    scheduled_date