原型 · 预览版:收录官方注册中心里的全部服务器,每 30 分钟同步一次。评价和账户功能将在后续阶段推出。
PopNx MCP为使用 AI 的人准备的 MCP 服务器 · 用大白话讲清楚

ReelsFarm

作者:mateohysa版本 2.0.1i★ –i在云端运行
注册名称io.github.mateohysa/reelsfarm

安装

概览

作者提供的说明(英文原文)

Create, manage, schedule, and publish short-form user-generated content through AI agents.

PopNx MCP 的三大支柱

这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。

它能帮你做什么

我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。

安装

选择你使用的 AI 应用,然后复制设置。

安装之前

你需要

你用的是哪个应用?

在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。

适用于网页版、桌面版和手机版 Claude:

  1. 打开 Settings → Connectors
  2. 点击 Add custom connector
  3. 粘贴下面的地址,然后点击 Add
  4. 如果要求登录,请登录作者的服务
SettingsConnectors1+ Add2https://…3
https://mcp.reelsfarm.com/mcp

在终端中运行这条命令

claude mcp add --transport http reelsfarm https://mcp.reelsfarm.com/mcp

在 Cursor 中打开

或者自己复制设置

粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json

{
  "mcpServers": {
    "reelsfarm": {
      "url": "https://mcp.reelsfarm.com/mcp"
    }
  }
}

浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。

在 VS Code 中打开

或者自己复制设置

粘贴到项目中的 .vscode/mcp.json

{
  "servers": {
    "reelsfarm": {
      "type": "http",
      "url": "https://mcp.reelsfarm.com/mcp"
    }
  }
}

浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。

ChatGPT 只能连接互联网上的服务器:

  1. 打开网页版 ChatGPT → Settings → Connectors (Apps)
  2. 点击 Create 或 Add(部分套餐需要先在 Advanced 中开启 Developer mode)
  3. 粘贴下面的地址,起个名字,然后保存
  4. 如果要求登录,请登录作者的服务
SettingsConnectors1+ Create2https://…3
https://mcp.reelsfarm.com/mcp

菜单名称可能因套餐和版本不同而略有差异。

你的选择通过 Cookie 保存在这台设备上,无需账户。

这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。

它能做什么

我们还没有读取这个服务器的工具列表;我们会轮流检查各个端点。

基础检查i

我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月9日

  • ✓ 通过

    作者与仓库一致

    注册名称已通过 GitHub 账户 mateohysa 验证,该账户拥有此仓库

  • … 尚未检查

    仍在维护

    我们还没有从 GitHub 读取这个仓库

  • … 尚未检查

    有许可证

    我们还没有从 GitHub 读取这个仓库

  • … 尚未检查

    端点有响应

    尚未检查;我们会轮流检查各个端点

  • … 尚未检查

    使用 OAuth 登录

    尚未检查;我们会轮流检查各个端点

  • … 尚未检查

    工具描述中没有隐藏指令

    尚未检查;我们会在检查端点时读取工具列表

与“其他”中的其他服务器比较i

  • 星标数多于此分类中其他 18681 个服务器的 0%
  • 发布到注册中心的时间比此分类中其他 18681 个服务器的 21% 更新
  • 基础检查结果等于或优于此分类中其他 18681 个服务器的 100%

与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。

常见问题

ReelsFarm 安全吗?

它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。

它需要哪些密钥或代码?

注册中心没有列出必需的密钥,不过有些服务器会在首次使用时要求你登录。

它在我的电脑上运行还是在云端?

它在作者的云端运行。通过互联网连接,无需安装,但你发送的内容会经过作者的服务器。

它还在维护吗?

GitHub 仓库最后更新于–,最新版本(2.0.1)于3个月前进入注册中心。

哪些应用可以使用它?

支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。它通过 URL 连接,所以接受远程 MCP 服务器的应用也可以使用,例如开启开发者模式的 ChatGPT。

有什么可以替代它?

同一分类中有:Spec Driven Development, Remote Desktop Commander, agentPickup

替代选择

同一分类中其他作者的服务器,按星标数排序。

如何看卡片:↓ 每周下载量i★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i

Spec Driven Development

MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.

作者:formulahendry起步阶段↓ 66/周★ 44014个月前更新

在你的电脑上运行

Remote Desktop Commander

Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.

作者:desktop-commander正在增长★ 2114天前更新

在云端运行✓ desktopcommander.app

agentPickup

Find pickup shops near you, order, pay by card or USDC (x402), and get the QR to collect in person.

作者:Tokenise-au正在增长↓ 1160/周今天更新

电脑或云端

作者的 README

打开 README

按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。

@reelsfarm/mcp-client

Typed TypeScript SDK and CLI for the ReelsFarm MCP server.

Version 3.11

SDK 3.11.0 matches ReelsFarm MCP server 3.11.0 and contract 2026-10-30.1. It tracks all 177 public tools. Mutation and generation results include explicit ReelsFarm provenance, execution state, and an assetCreated completion signal.

Server 3.11 lists the same tools in about a quarter of the old size. Confirmation tools take only confirmationId, so a dry-run client no longer calls them. Read MIGRATION.md for the other changes.

Version 3.9 confirms each prepared action with its own confirmation tool, because servers since 3.7 no longer accept reelsfarm_confirm_action from clients. Update from 3.6: its confirmations fail against the current server, and validateToolSurface: 'throw' refuses to connect. Read MIGRATION.md.

It also adds slideshow Looks (tweet, iMessage, notebook, magazine cover), proven formats, Recreate from a TikTok link, TikTok text fonts and modes with free text positions, photo search, saved formats and batches, the automation photo sources and AI pictures, hook reaction styles, and natural speech for Videos.

Publishing aliases from MCP 2.x are removed. Read MIGRATION.md before you update a publishing integration.

npm install @reelsfarm/mcp-client

import { ReelsFarmClient, ReelsFarmJob } from '@reelsfarm/mcp-client';

const rf = new ReelsFarmClient({ apiKey: process.env.REELSFARM_API_KEY, validateToolSurface: 'throw', });

await rf.ready();

const avatar = await rf.avatars.generate({ prompt: 'Woman in her 30s, casual outfit, smartphone selfie style', model: 'gpt-image-2.5-sunburst', aspectRatio: '9:16', quality: 'high', });

if ('confirmationId' in avatar) { console.log('Review mode requires confirmation:', avatar); } else if (avatar instanceof ReelsFarmJob) { const result = await avatar.wait(); }

Review mode returns a PreparedAction by default. Its confirmationTool names the one tool that confirms it, such as reelsfarm_confirm_generate_avatar; call it with the confirmationId after the user approves. Trusted applications can set autoConfirm: true to confirm Review actions automatically. Creator and Autopilot connections execute the capabilities enabled by their server-owned connection policy without an extra SDK approval step.

Use nano-banana-2-1 for Nano Banana 2.1. The legacy nano-banana-2-pro key also uses 2.1. Use gpt-image-2.5-sunburst as the public GPT Image 2.5 model key. GPT Image 2 and GPT Image 2.5 accept low, medium, or high quality. Seedream 5.0 Pro accepts basic or high. FLUX 3 (flux-3) accepts basic (1K), high (about 2 megapixels), ultra (2K), or max (4K); bigger sizes cost more credits, and the prepared result's estimate follows the size. Omit quality for Nano Banana models.

Job waits and publishing discovery

All 13 generation, import, and export status methods accept { waitMs: 25000 }. Use an integer from 0 through 25000. Omit it or use 0 for an immediate snapshot. The server returns when recorded progress changes, the job ends, or the wait budget expires. This option does not apply to operation or publish status tools.

const snapshot = await rf.avatars.getJobStatus(jobId, { waitMs: 25000 });

// A ReelsFarmJob also supports job.getStatus({ waitMs: 25000 }). console.log(snapshot.jobProgress);

jobProgress contains step, terminal, nextPollAfterMs, and available batch counts. Inspect item results even when a batch completes; some items can fail. The SDK preserves these fields when unwrapping job results. job.wait() follows the server's suggested polling delay, with backoff for older responses.

Publishing preflight targets include settingsSchema (JSON Schema 2020-12 for one platforms entry), rules, and limits. Build settings from the exact account and media result. ready checks account and media readiness; required settings still need values. Missing limits are unknown. Integration targets can expose fewer settings than native connections. Run preflight again after changing the content, format, or account.

For a native Instagram video, set instagramShareToFeed: false to keep the Reel in the Reels tab only. Set it to true to also allow it on the profile grid. New native Reels default to false. This field is not available for Instagram integration accounts or photo posts. Check that the selected account's settingsSchema includes it before sending it. instagramTestReel is a separate setting.

Connected and social account lists mark an account managed: true when ReelsFarm connected the Instagram or Facebook account through its managed integration. Publish to it like any other integration account.

Conversational generation

Avatar and product-scene jobs return conversationId, parentGenerationId, and jobId. Pass the conversation and parent IDs into the next generation to continue the same branch. Read the complete branch through rf.imageGenerations.getConversation(conversationId).

const nextAvatar = await rf.avatars.generate({ prompt: 'Keep the same person and use a tighter crop', sourceImageUrl: previousImageUrl, conversationId, parentGenerationId: previousJobId, });

Hook generation accepts customPrompt, all current Veo and Seedance models, duration, and optional spoken script settings. Slideshow generation accepts Max mode visual context. Use rf.slideshows.reviseText(...) to apply a natural language instruction to the complete current slide text state.

Slideshow text generation and revision accept the dashboard effort presets: light, low, medium, high, and extra_high. Higher effort uses more visual references (0, 2, 5, 10, or 20) and more model time. extra_high also reviews the rendered text layout and is the dashboard default. Without effort, Max mode accepts up to five visual references; with it, up to 20. Give each reference its slide aspectRatio, because layout checks assume 1:1 when it is missing.

const textJob = await rf.slideshows.generateText({ prompt: '8 slides about cold brew at home', slideCount: 8, maxMode: true, effort: 'high', visualContext: slideImages.map((imageUrl, order) => ({ order, imageUrl, aspectRatio: '9:16' })), });

Looks, formats, and Recreate

generateText takes a Look and a proven format. A designed slide comes back with a design object and no text items; pass it unchanged to create or update. An iMessage slide draws no photo, so it needs no imageUrl and no visual context. auto picks a designed look only when the prompt asks for one.

const chat = await rf.slideshows.generateText({ prompt: 'Texts with my mom when she finds out how much I spend on iced coffee', slideCount: 4, design: 'imessage', });

const picks = await rf.slideshows.generateText({ prompt: 'The 3 best cold brew makers under $50', format: 'rated-picks', design: 'classic', });

rf.slideshows.recreate(...) copies a public TikTok photo slideshow for your product: the same format and text looks, new words, and a photo for every slide. It takes about two minutes, and the finished status has the slideshowId.

const job = await rf.slideshows.recreate({ tiktokUrl: 'https://www.tiktok.com/@creator/photo/7550000000000000000', productContextId, instructions: 'Use a wedding cake instead of the birthday cake', });

Text items accept TikTok's textFont, textEffect (none, outline, background, translucent) and textColor, which win over textStyle, plus textX and textY (0 to 1) for a free position. searchPhotos(...) finds photos on Pinterest, Tumblr, or Pexels, and savePhotos(...) turns picks into ReelsFarm URLs a slide can use. saveFormat(...) and createBatch(formatId, count) make many slideshows from one format, as Make 10 now does in the app.

Videos workbench

rf.videos.generateVideo(...) starts the same job as the dashboard Videos workbench. It supports text-to-video, a start frame with an optional end frame, or up to three reference images. Seedance models also accept one reference video and one reference audio file. Do not combine frames with reference media. Use owned ReelsFarm asset URLs for frames and references. With a start frame of a person, motionPreset opens the video with a hook reaction such as shocked or grateful. With audio, naturalSpeech (on by default) makes spoken lines in quotes sound like a real person without changing the words; set it to false to send the prompt exactly as written.

const video = await rf.videos.generateVideo({ prompt: 'Slow push-in on a latte on a sunny cafe table', model: 'seedance-2.5', durationSeconds: 8, aspectRatio: '9:16', category: 'product', });

if (video instanceof ReelsFarmJob) { const status = await video.wait(); console.log(status.video?.id); // Publish it with contentType UGC_VIDEO. }

The models are seedance-2.5 (the default), seedance-2, seedance-2-fast, veo-3.1, veo-3.1-fast, and gemini-omni-1.1-flash. Each model supports its own durations, aspect ratios, and resolutions. rf.account.getGenerationPricing() lists them with per-second prices under videoGeneration. Poll with rf.videos.getGenerationStatus(jobId, { waitMs: 25000 }). A completed job returns the finished library video in video.

One video job runs at a time per account, across hooks, AI Clone, and the Videos workbench. Another request fails with code VIDEO_JOB_IN_PROGRESS and names the active job. Wait for that job to finish, then retry with a new idempotency key. For an avatar-led hook clip, use rf.hooks.generate(...).

Image templates

rf.imageGenerations.listTemplates({ category }) returns the Product and Infographics templates from the dashboard Images workbench. Each template has a reference image, a prompt brief with [PLACEHOLDER] fields, and the generation tool to call. Replace the placeholders, remove lines you cannot fill, and start the prompt with the template categoryLine.

const { templates } = await rf.imageGenerations.listTemplates({ category: 'infographics' }); const [template] = templates; if (template && !template.requiresProduct) { await rf.avatars.generate({ mode: 'reference', sourceImageUrl: template.referenceUrl, prompt: ${template.categoryLine}\n${filledBrief}, model: template.model, aspectRatio: template.aspectRatio, quality: template.quality, }); }

For a template with requiresProduct: true, call rf.productScenes.generate(...) with sourceImageUrl set to referenceUrl and productImageUrl set to the product photo. peopleTemplate gives the brief and settings for the people reference images from rf.avatars.listTemplates().

The SDK also maps the web content library workflows directly:

const gallery = await rf.mediaCollections.listGallery({ kinds: ['COLLECTION', 'AVATAR'] }); const collections = await rf.mediaCollections.list(); const communityImages = await rf.community.listImages(collectionId, { random: true }); const voices = await rf.aiClones.listVoices({ search: 'warm' }); const importJob = await rf.hooks.importClips({ items: [{ url: youtubeUrl, start: "0", length: "5" }], }); const infographics = await rf.mediaCollections.listGallery({ kinds: ['AVATAR', 'PRODUCT_PLACEMENT'], imageCategory: 'infographics', groupCollections: true, }); const firstItems = await rf.mediaCollections.getItems(collectionId, 'all', { limit: 50 }); const { totalCount } = await rf.videos.list({ category: 'people' });

imageCategory

只显示了开头部分;其余内容请在仓库中阅读

问 PopNx