BetterPost

ai.betterpost由 betterpost.ai 发布官方发布者v2.0.0更新于 Oct 25, 2026

Finds timely sources across news, social, and the web and writes posts worth publishing.

已验证Streamable HTTP可网页运行网页搜索与抓取媒体与设计

概览

AI 生成的概览

BetterPost 是一个托管式 MCP 服务器,可为项目查找及时的新闻、社交和网络来源,并撰写带引用的简报、博客和社交帖子。

可以做什么
创建和管理内容项目,包括受众、语气、时效窗口和相关度标准,并在素材不足或偏离主题时扩大来源覆盖。添加、列出和移除来源,并列出、添加、隐藏或取消隐藏从来源收集的故事。根据当前故事建议选题角度,并据此生成新内容。将已有内容转换为其他格式,例如把简报改成推文。列出、读取和删除已生成内容,并调整各渠道的字数限制和写作说明。查看积分余额、冻结状态和近期消费,并把现有文本改写为更自然的语气。
适用场景
适合让助手围绕产品领域的最新动态起草可发布、带引用来源的内容,或为定期简报和社交媒体发布流程持续提供新鲜且已排序的来源。
运行要求
远程 Streamable HTTP 端点,无需本地包或运行时。需要 BetterPost 账户,首次使用时通过 OAuth 2.1 登录,无需复制令牌。需要能访问该托管服务的网络。
安装前请注意
生成成功会扣除积分,新账户有免费积分,因此使用可能产生费用;可用用量工具查看余额。删除项目会永久移除其来源、故事和内容,删除内容也会移除其托管的图片。内容会发布到可分享的公开链接。该服务会代你从新闻、社交和开放网络抓取并排序来源。

安装

在 SourceWeft 中

  1. 打开 控制台中的 BetterPost,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/ai.betterpost%2Fserver/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。

{
  "mcpServers": {
    "betterpost": {
      "type": "http",
      "url": "https://betterpost.ai/mcp"
    }
  }
}

README

BetterPost — agent plugin and skill

Write timely, well-sourced content — newsletters, blog posts, LinkedIn posts, tweets, and Bluesky posts — grounded in current sources across news, social, and the open web. BetterPost finds recent sources relevant to your product and audience, ranks them by relevance, and writes human-sounding content with real citations and publication dates.

Works in the agents you already use, through a single MCP server. Free to start — sign in with your BetterPost account to get free credits.

Install

Any agent

npx skills add betterpost/betterpost-plugin

This installs the betterpost skill into whichever agent you use. It does not configure the MCP server — the skill walks your agent through registering https://betterpost.ai/mcp the first time you ask for content.

Claude Code

/plugin marketplace add betterpost/betterpost-plugin/plugin install betterpost@betterpost

This installs the skill and registers the MCP server for you.

Either way, ask your agent to write a newsletter or post about what's happening in your space. It sets up a project and generates content grounded in current sources.

What's in here

  • skills/betterpost/SKILL.md — the skill your agent invokes.
  • .mcp.json — registers the hosted BetterPost MCP server.
  • .claude-plugin/ — the plugin manifest and self-listed marketplace.
  • .codex-plugin/, .cursor-plugin/, .kimi-plugin/, .agents/, .opencode/, .pi/, gemini-extension.json — manifests for the other agents.

Using the server directly

Any MCP client can connect to https://betterpost.ai (Streamable HTTP). On first use, the client prompts you to sign in with your BetterPost account (OAuth 2.1) and handles the session for you — there's no token to copy or persist. New accounts get free credits on sign-up.

Links

License

MIT

来源:README.md,提交 071e14f

工具

23

betterpost_create_project

Create project

Create a content project. Slow, one-shot: infers config (criteria, industry, tone), discovers sources, and gathers/ranks an initial set of timely stories. Best called after the inferred audience, description, and tone have been confirmed with the user, since the config shapes everything downstream.

输入参数tonetitle必填audience必填description

betterpost_generate_content

Generate content

Generate a new piece of content for a project from its timely, relevant stories. Fast in steady state. Charges credits on success only. If you pass a `topic` the project has no stories about, this returns a `topic_unavailable` error (no charge) carrying an `inScope` flag and next steps — it never silently writes an off-topic piece.

输入参数type必填reusetieIntopicprojectId必填wordLimit

betterpost_derive_content

Derive content

Transform an existing piece into another format (e.g. newsletter → tweet). No fetching; reuses the source stories and topic.

输入参数type必填tieInfromContentId必填

betterpost_list_content

List content

List a project's content (summaries + shareable `publicUrl` links).

输入参数projectId必填

betterpost_get_content

Get content

Fetch one piece of content in full.

输入参数contentId必填

betterpost_delete_content

Delete content

Delete a piece of content and its hosted images.

输入参数contentId必填

betterpost_list_projects

List projects

Returns your projects, each with its relevance `criteria` (with ids) that define what counts as on-topic.

无需输入参数。

betterpost_get_project

Get project

Returns one project with its relevance `criteria` (each with an id, so a criterion can be targeted for removal via betterpost_update_project).

输入参数projectId必填

betterpost_update_project

Update project

Updates a project's title, audience, description, tone, freshness window, timezone, or relevance criteria, and returns the updated project with its criteria. Changing title/audience/description re-derives the relevance criteria (replace-all), which broadens or narrows what counts as on-topic. To edit criteria incrementally instead, pass `patch.addCriteria` (texts to append) and/or `patch.removeCriteria` (criterion ids from get_project/list_projects). Dates default to US Eastern unless a `timezone` (an IANA name like "America/New_York") is set.

输入参数patchprojectId必填

betterpost_delete_project

Delete project

Permanently deletes a project and everything in it — its sources, stories, and content. Cannot be undone.

输入参数projectId必填

betterpost_list_sources

List sources

Returns one slimmed page of a project's sources plus project-wide `total` and `counts` (ok/failing/disabled/pending, and byType). Page with `limit` (default 50) and `offset`, following the returned `nextOffset` until it is null.

输入参数limitoffsetprojectId必填

betterpost_add_source

Add source

Adds a source to a project and fetches it immediately (bounded by a few seconds), returning `storiesAdded` so the next generate_content can use it; if it is still fetching it returns `fetched:false` with a note. Doubles as manual source import: paste any URL (RSS/Atom feed, article, or a page, profile, or post on a supported platform) and leave `type` as autodetect, or create a recurring keyword search by setting `value` to the search terms and `type` to a search kind (see `type`).

输入参数nametypevalue必填projectId必填

betterpost_remove_source

Remove source

Removes a source from a project. Its already-gathered stories stay; the source is no longer fetched.

输入参数sourceId必填

betterpost_list_stories

List stories

Returns a project's gathered stories, each with `title`, `url`, `summary`, `relevancy`, `publicationDate`, and `isManual`/`isHidden` flags. Pass includeHidden to include hidden ones.

输入参数projectId必填includeHidden

betterpost_add_story

Add story

Manually imports a story you read about from its URL (pinned relevance, flagged is_manual) so generation can draw on it.

输入参数url必填titlesummaryprojectId必填

betterpost_hide_story

Hide story

Hides a story so generation ignores it. Reversible with unhide_story.

输入参数storyId必填

betterpost_unhide_story

Unhide story

Unhides a previously hidden story so generation can use it again.

输入参数storyId必填

betterpost_suggest_topics

Suggest topics

Clusters a project's current stories into a few candidate angles — each with a label, how many stories back it, and example headlines — and warms the project (gathers and ranks fresh stories) in the process. Returns topics you can offer the user before generate_content.

输入参数typecountprojectId必填

betterpost_get_usage

Get usage

Your credit balance, freeze state, and recent spend.

无需输入参数。

betterpost_get_settings

Get settings

Returns a project's per-content-type settings (wordLimit and additionalInstructions for each channel).

输入参数projectId必填

betterpost_update_settings

Update settings

Patches one content type's wordLimit and/or additionalInstructions (free-form writing guidance for that type; pass an empty string to clear it). Project-wide preferences (title/audience/tone, project-wide additionalInstructions) live on betterpost_update_project.

输入参数type必填projectId必填wordLimitadditionalInstructions

betterpost_expand_coverage

Expand coverage

Broadens a project's coverage: expands the relevance criteria (when needed), finds more sources across news, the web, and the relevant social platforms, and fetches them inline. Applies on a `topic_unavailable`, `no_stories`, or low-coverage signal. May return `warming: true` with `retryAfterMs` (~60s), meaning the newly gathered stories are still landing. An out-of-scope `focus` requires `confirmedByUser: true`; without it, it returns a `confirmation_required` error. No credits are charged.

输入参数focusprojectId必填addAsCriteriaconfirmedByUser

betterpost_humanize

Humanize text

Rewrite existing text into BetterPost's readable, human voice. Preserves the meaning, facts, links, and format; returns the rewritten text plus short notes on what changed. Pass `projectId` to write in that project's tone and instructions, `type` to apply a channel's style, or `tone` to set the voice directly.

输入参数text必填tonetypeprojectId

版本历史

1
  1. v2.0.0最新Sep 16, 2026

评分

已满足适用检查项的 100%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分