mcpField
A
Appqr

Appqr

本地服务
github.com/harishakumarn商业与营销019 周前更新

关于 Appqr

Appqr 是用于生成智能 QR 码的命令行工具和 Node.js 包,可按设备将 iOS 与 Android 用户分别导向对应应用商店。开发者可为不同营销活动生成二维码,而无需更改托管的跳转文件;内置 MCP 服务还支持兼容 Agent 执行这些操作。

主要功能

  1. 01按设备跳转至 App Store 或 Google Play
  2. 02生成营销活动二维码图片
  3. 03分别设置 iOS 和 Android 跟踪参数
  4. 04验证应用商店链接
  5. 05提供命令行、Node.js 包和 MCP 工具

适用场景

  1. 01为同时上架两家应用商店的应用制作单个二维码
  2. 02为不同营销活动生成独立二维码图片
  3. 03通过兼容 MCP 的 Agent 生成二维码文件

MCP 相关

内置 MCP 服务向兼容的 AI Agent 提供初始化、生成活动二维码和验证应用商店链接等工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"appqr": {
"command": "npx",
"args": [
"-y",
"appqr"
]
}
}
}
启动命令npx -y appqr

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmappqr

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

AppQR

一个二维码。自动识别设备。将用户引导至正确的应用商店。

npm version npm downloads license node MCP


你开发了一款应用,并已上架两个应用商店。你需要一个二维码,用于落地页、名片和媒体资料包。其他工具都会为此收取月度订阅费。AppQR 免费、可在本机运行,并且永远可用。

npx appqr setup \
  --ios "https://apps.apple.com/app/id123456789" \
  --android "https://play.google.com/store/apps/details?id=com.myapp" \
  --url "https://myapp.com/go"
✓ redirect.html  →  ./appqr-output/redirect.html
✓ qr.png         →  ./appqr-output/qr.png

→ Upload redirect.html to your site at: https://myapp.com/go
→ Done! For future campaigns, run: appqr campaign

工作原理

Scan QR
  ↓
Phone opens: myapp.com/go?d=eyJpb3MiOiJodHRw...
  ↓
redirect.html detects device (client-side JS, no server)
  ↓
iOS user  → App Store
Android   → Google Play

二维码会将两个应用商店的网址以 base64 编码的形式写入网址本身。redirect.html 是一个很小的通用文件,负责解码并重定向——其中不包含任何活动数据,也永远不需要更改。每个新活动只需生成一张新的二维码图片。

重定向链中绝不会经过 AppQR 服务器。 一切都在开发者自己的网站上运行。


安装

npm install -g appqr

或者无需安装即可运行:

npx appqr setup ...

使用方法

步骤 1 — 设置(每款应用仅需一次)
appqr setup \
  --ios "https://apps.apple.com/app/id123456789" \
  --android "https://play.google.com/store/apps/details?id=com.myapp" \
  --url "https://myapp.com/go"

在你的第一个二维码中启用活动跟踪:

appqr setup \
  --ios "https://apps.apple.com/app/id123456789" \
  --android "https://play.google.com/store/apps/details?id=com.myapp" \
  --url "https://myapp.com/go" \
  --ios-params "ct=launch&pt=12345&mt=8" \
  --android-params "utm_source=launch&utm_campaign=v1&utm_medium=organic" \
  --output ./public/go

将 redirect.html 上传到你的网站。这是你唯一需要上传的文件。之后再也不必动它。


步骤 2 — 创建新活动二维码(次数不限)
appqr campaign \
  --ios "https://apps.apple.com/app/id123456789" \
  --android "https://play.google.com/store/apps/details?id=com.myapp" \
  --url "https://myapp.com/go" \
  --ios-params "ct=instagram_launch&pt=12345&mt=8" \
  --android-params "utm_source=instagram&utm_campaign=launch&utm_medium=paid" \
  --output ./qrs/instagram
✓ qr.png  →  ./qrs/instagram/qr.png

iOS URL:     https://apps.apple.com/app/id123456789?ct=instagram_launch&pt=12345&mt=8
Android URL: https://play.google.com/store/apps/details?id=com.myapp&utm_source=instagram...

No file upload needed — redirect.html already handles this.

无需上传,无需更改网站。每个活动只需生成一张新的二维码图片。


显示活动参数格式
appqr params

用作 Node.js 包

import { setup, campaign } from 'appqr'

// First time setup
const result = await setup({
  ios: 'https://apps.apple.com/app/id123456789',
  android: 'https://play.google.com/store/apps/details?id=com.myapp',
  hostedUrl: 'https://myapp.com/go',
  iosParams: 'ct=launch&pt=12345&mt=8',
  androidParams: 'utm_source=launch&utm_campaign=v1&utm_medium=organic',
  outputPath: './public/go'
})
// → result.redirectPath  upload this once
// → result.qrPath        use this as your QR image

// Campaign QR — no upload needed
const qr = await campaign({
  ios: 'https://apps.apple.com/app/id123456789',
  android: 'https://play.google.com/store/apps/details?id=com.myapp',
  hostedUrl: 'https://myapp.com/go',
  iosParams: 'ct=instagram_launch&pt=12345&mt=8',
  androidParams: 'utm_source=instagram&utm_campaign=launch&utm_medium=paid',
  outputPath: './qrs/instagram'
})
// → qr.qrPath  your campaign QR image

内含完整的 TypeScript 类型定义。无需安装 @types/appqr。


MCP — 供 AI Agent 使用(Claude、Cursor、Copilot)

AppQR 内置了 MCP(Model Context Protocol)服务。支持 MCP 的 AI Agent 可以直接生成智能二维码,无需了解命令行,也无需手动操作。

添加到 Claude Desktop
{
  "mcpServers": {
    "appqr": {
      "command": "npx",
      "args": ["appqr", "mcp"]
    }
  }
}
添加到 Cursor
{
  "mcpServers": {
    "appqr": {
      "command": "npx",
      "args": ["appqr", "mcp"]
    }
  }
}

连接后,Agent 可以:

“为我的应用生成智能二维码。App Store:https://apps.apple.com/app/id123。Play Store:https://play.google.com/store/apps/details?id=com.app。托管地址为 myapp.com/go。”

Agent 会直接调用 appqr_setup 或 appqr_campaign,并返回文件路径。

提供的 MCP 工具
工具说明
appqr_setup首次设置——生成 redirect.html 和 qr.png
appqr_campaign新活动二维码——仅生成 qr.png
appqr_validate生成前验证应用商店网址

活动参数格式

Apple App Store
参数含义必填示例
ct活动标记——你的标签建议填写ct=instagram_launch
pt提供商标记——你的 Apple 数字 ID建议填写pt=12345
mt媒体类型——应用固定为 8是mt=8
--ios-params "ct=instagram_launch&pt=12345&mt=8"
Google Play(标准 UTM)
参数含义必填示例
utm_source流量来源是utm_source=instagram
utm_medium营销媒介是utm_medium=paid
utm_campaign活动名称是utm_campaign=launch
utm_content特定广告或创意素材否utm_content=banner_v1
utm_term搜索广告关键词否utm_term=todo+app
--android-params "utm_source=instagram&utm_campaign=launch&utm_medium=paid"

为什么不直接用 Bitly / QR Tiger / Branch?

其他工具AppQR
iOS/Android 智能重定向✓ 付费✓ 免费
价格$15–40/月免费
对方停止服务后,你的二维码仍可用✗✓ 永远可用
活动跟踪参数✓ 付费✓ 免费
分别设置 Apple 和 Google 参数✗ 很少支持✓ 支持
适合 Agent / 命令行✗✓ 支持
MCP 服务✗✓ 支持
你的活动数据存储在对方服务器上✓ 始终如此✗ 从不如此

仓库结构

appqr/
├── public/
│   ├── index.html        # Landing page
│   └── llms.txt          # AI agent discovery
├── api/
│   └── ping.js           # Telemetry (Vercel serverless)
├── cli/
│   ├── bin/appqr.js      # CLI entry point
│   ├── src/
│   │   ├── core.js       # Core logic
│   │   ├── mcp.mjs       # MCP server
│   │   ├── telemetry.js  # Anonymous counters
│   │   ├── index.js      # npm package exports
│   │   └── index.d.ts    # TypeScript types
│   └── package.json
├── vercel.json
└── README.md             # This file

部署 Web 后端(Vercel + Supabase)

Web 后端托管着落地页,并收集匿名使用遥测数据(安装次数、使用次数、Agent 与人工使用的比例——不包含个人数据)。

1. 部署到 Vercel
git clone https://github.com/harishakumarn/appqr
cd appqr
vercel deploy

也可以通过 Vercel 控制面板连接——导入仓库,一键部署。

2. 设置 Supabase(可选——用于遥测)

在 Supabase 项目中运行以下 SQL:

create table counters (
  id integer primary key default 1,
  installs bigint default 0,
  setups bigint default 0,
  human_runs bigint default 0,
  agent_runs bigint default 0,
  qrs_generated bigint default 0,
  constraint single_row check (id = 1)
);

insert into counters (id) values (1);

create or replace function increment_counter(col_name text)
returns void as $$
begin
  execute format(
    'update counters set %I = %I + 1 where id = 1',
    col_name, col_name
  );
end;
$$ language plpgsql;

将以下内容添加到 Vercel 环境变量中:

SUPABASE_URL=https://your-project.supabase.co
SUPABASE_SERVICE_KEY=your-service-role-key
3. 更新遥测 URL

在 cli/src/telemetry.js 中,将 TELEMETRY_URL 替换为你的 Vercel 部署 URL。

4. 发布到 npm
cd cli
npm publish

隐私与遥测

AppQR 每次运行时会发送一次匿名 ping。绝不会收集 URL、营销活动数据、商店链接、个人信息或设备标识符。

唯一追踪的数据是以下某一项的计数增量: installed、setup、human_run、agent_run、qr_generated

永久选择退出:

echo 'export APPQR_NO_TELEMETRY=1' >> ~/.zshrc

或按次选择退出:

APPQR_NO_TELEMETRY=1 appqr setup ...

贡献

欢迎提交 PR。代码库刻意保持精简——核心逻辑不到 200 行。

git clone https://github.com/harishakumarn/appqr
cd appqr/cli
npm install
node bin/appqr.js setup --help

许可证

MIT © AppQR Contributors

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。