@NotionDevs: 安装 ntn,Notion CLI。它将整个 Notion API 带到你的终端,并包含构建和部署所需的一切……

X AI KOLs Timeline 工具

摘要

ntn 是一个 Notion 命令行工具,将完整的 Notion API 引入终端,并支持构建和部署 Workers。通过 curl/wget 安装。

安装 ntn,即 Notion CLI。 它将整个 Notion API 带到你的终端,并包含构建和部署 Workers 所需的一切。专为人类和编码代理而设计。 安装方式:curl -fsSL https://t.co/2dJqE3YHvw | bash https://t.co/X4Cr4c9GXg
查看原文
查看缓存全文

缓存时间: 2026/05/14 06:31

安装 ntn,Notion CLI。

它将整个 Notion API 带到你的终端,还包括构建和部署 Workers 所需的一切。专为人类和编码代理设计。

使用以下命令安装:curl -fsSL https://t.co/2dJqE3YHvw | bash https://t.co/X4Cr4c9GXg


来源:https://ntn.dev/ #!/usr/bin/env bash set -euo pipefail

readonly BASE_URL=“{NTN_BASE_URL:-https://ntn.dev}" readonly INSTALL_DIR="{NTN_INSTALL_DIR:-/usr/local/bin}” readonly REQUESTED_VERSION=“${NTN_VERSION:-latest}”

if [[ “{REQUESTED_VERSION}" != "latest" && ! "{REQUESTED_VERSION}” =~ ^v?[0-9]+.[0-9]+.[0-9]+(-[a-zA-Z0-9.]+)?$ ]]; then printf ‘错误:版本 “%s” 无效 —— 应为 “latest” 或 semver 格式如 “1.2.3” 或 “v1.2.3”\n’ “${REQUESTED_VERSION}” >&2 exit 1 fi

function info() { printf ‘==> %s\n’ “$*” >&2 }

function fail() { printf ‘错误:%s\n’ “$*” >&2 exit 1 }

function require_command() { local command_name=“1" command -v "command_name” >/dev/null 2>&1 || fail “缺少必需的命令:${command_name}” }

function detect_downloader() { if command -v curl >/dev/null 2>&1; then DOWNLOADER=“curl” elif command -v wget >/dev/null 2>&1; then DOWNLOADER=“wget” else fail “需要 curl 或 wget,但两者均未安装” fi }

function download() { local url=“1" local output="{2:-}” if [[ “{DOWNLOADER}" == "curl" ]]; then if [[ -n "{output}” ]]; then curl -fsSL -o “{output}" "{url}” else curl -fsSL “{url}" fi else if [[ -n "{output}” ]]; then wget -q -O “{output}" "{url}” else wget -q -O - “${url}” fi fi }

function detect_target() { local os local arch os=“(uname -s)" arch="(uname -m)”

# 检测 Rosetta 2:如果在 ARM Mac 上通过 Rosetta 运行 x86_64,则改用原生 arm64 二进制文件。
if [[ "${os}" == "Darwin" && "${arch}" == "x86_64" ]]; then
    if [[ "$(sysctl -n sysctl.proc_translated 2>/dev/null)" == "1" ]]; then
        arch="arm64"
    fi
fi

case "${os}" in
    MINGW* | MSYS* | CYGWIN*)
        fail "ntn 目前不支持 Windows"
        ;;
esac

case "${os}:${arch}" in
    Darwin:arm64 | Darwin:aarch64)
        NTN_TARGET="aarch64-apple-darwin"
        NTN_PLATFORM_LABEL="darwin-arm64"
        ;;
    Darwin:x86_64)
        NTN_TARGET="x86_64-apple-darwin"
        NTN_PLATFORM_LABEL="darwin-x64"
        ;;
    Linux:x86_64)
        NTN_TARGET="x86_64-unknown-linux-musl"
        NTN_PLATFORM_LABEL="linux-x64"
        ;;
    Linux:arm64 | Linux:aarch64)
        NTN_TARGET="aarch64-unknown-linux-musl"
        NTN_PLATFORM_LABEL="linux-arm64"
        ;;
    *)
        fail "ntn 不支持 ${os} ${arch}"
        ;;
esac

}

function normalize_version() { local version=“1" if [[ "{version}” == v* ]]; then printf ‘%s\n’ “{version}" else printf 'v%s\n' "{version}” fi }

function resolve_version() { if [[ “{REQUESTED_VERSION}" == "latest" ]]; then download "{BASE_URL}/latest.txt” | tr -d ‘[:space:]’ else normalize_version “${REQUESTED_VERSION}” fi }

function verify_archive() { local archive_dir=“1" local archive_name="2” local checksum_name=“$3”

if command -v shasum >/dev/null 2>&1; then
    (cd "${archive_dir}" && shasum -a 256 -c "${checksum_name}") || fail "校验和验证失败"
    return
fi

if command -v sha256sum >/dev/null 2>&1; then
    (cd "${archive_dir}" && sha256sum -c "${checksum_name}") || fail "校验和验证失败"
    return
fi

fail "未找到校验和工具(需要 shasum 或 sha256sum)"

}

function install_binary() { local binary_path=“1" local destination_path="{INSTALL_DIR}/ntn”

if mkdir -p "${INSTALL_DIR}" 2>/dev/null && install -m 0755 "${binary_path}" "${destination_path}" 2>/dev/null; then
    return
fi

command -v sudo >/dev/null 2>&1 || fail "无法写入 ${INSTALL_DIR};请使用 sudo 重新运行或设置 NTN_INSTALL_DIR"
sudo mkdir -p "${INSTALL_DIR}"
sudo install -m 0755 "${binary_path}" "${destination_path}"

}

detect_downloader require_command tar require_command uname require_command mktemp require_command install

detect_target

VERSION=“(resolve_version)" || true readonly VERSION [[ -n "{VERSION}” ]] || fail “无法解析版本(请检查网络连接或 NTN_BASE_URL)”

readonly ARCHIVE_NAME=“ntn-{NTN_TARGET}.tar.gz" readonly ARCHIVE_URL="{BASE_URL}/releases/{VERSION}/{ARCHIVE_NAME}” readonly CHECKSUM_URL=“${ARCHIVE_URL}.sha256”

TMP_DIR=“(mktemp -d)" readonly TMP_DIR trap 'rm -rf "{TMP_DIR}”’ EXIT

ARCHIVE_PATH=“{TMP_DIR}/{ARCHIVE_NAME}” readonly ARCHIVE_PATH

CHECKSUM_PATH=“{TMP_DIR}/{ARCHIVE_NAME}.sha256” readonly CHECKSUM_PATH

info “正在下载适用于 ${NTN_PLATFORM_LABEL} 的 ${VERSION}”

if ! download “{ARCHIVE_URL}" "{ARCHIVE_PATH}”; then rm -f “${ARCHIVE_PATH}” fail “下载 ${ARCHIVE_URL} 失败” fi

if ! download “{CHECKSUM_URL}" "{CHECKSUM_PATH}”; then rm -f “${CHECKSUM_PATH}” fail “从 ${CHECKSUM_URL} 下载校验和文件失败” fi

verify_archive “{TMP_DIR}" "{ARCHIVE_NAME}” “(basename "{CHECKSUM_PATH}”)“

tar -xzf “{ARCHIVE_PATH}" -C "{TMP_DIR}”

BINARY_PATH=“{TMP_DIR}/ntn-{NTN_TARGET}/ntn” readonly BINARY_PATH [[ -f “${BINARY_PATH}” ]] || fail “下载的存档文件中不包含 ntn 二进制文件”

install_binary “${BINARY_PATH}”

cat >&2 <<‘BANNER’ ▄▄▄▄▄▄▄▄▖ ██▄▄▄▄▄▄▄▟▙▖ ███ ▄▄ ▄▄▐▌ ███ ▐█▙ ▐▌▐▌ ███ ▐▌▜▙▐▌▐▌ ███ ▟▙ ▀█▌▐▌ ▀█▄▄▄▄▄▄▄▞▘ BANNER printf ’ Notion CLI(Beta)\n\n’ >&2 printf ’ 已将 ntn %s 安装到 %s/ntn\n\n’ “{VERSION}" "{INSTALL_DIR}” >&2 cat >&2 <<‘NEXT’ 开始使用: ntn login 登录到你的 Notion 工作区 ntn workers new 创建一个新的 Worker ntn datasources query 查询数据源 ntn pages create 从 Markdown 创建页面 ntn api 直接调用 Notion API ntn –help 查看所有可用命令 为你的代理添加 Notion 技能: npx skills add makenotion/skills NEXT

相似文章

Notion 开发者平台

Product Hunt

Notion 推出了一个开发者平台,让用户可以在 Notion 之上进行构建,将其功能扩展到核心应用之外。