QMPrompter is a small, personal iOS teleprompter app for speaking to camera. It keeps the script on screen, uses the front camera as a live preview background, and can follow your speech so the current line stays near a comfortable reading position.
乔木提词器是一款自用 iOS 提词器。它把文稿显示在摄像头预览之上,适合对着镜头练习表达、录制口播或直播前试讲。当前版本专注于提词和预览,不录制视频。
Status: early self-use version. The app is usable on a real iPhone, but it is not an App Store product yet.
状态:早期自用版本。真机可用,但还不是 App Store 发布版。
-
Script library: create, edit, save, search, and delete scripts.
-
Manual input and AI-assisted script generation.
-
AI providers: DeepSeek, OpenAI-compatible APIs, and Claude/Anthropic-compatible APIs.
-
Custom Base URL and model selection, with quick model presets and custom model names.
-
Remote model discovery from compatible
/modelsendpoints, with searchable model selection. -
Large voice input button for AI prompt dictation.
-
Front camera live preview behind the script.
-
Full-screen teleprompter with speech-following mode by default.
-
Speed mode with play, pause, rewind, forward, reset, and progress controls.
-
Manual vertical dragging to adjust the reading position.
-
Font size, scroll speed, text color, and camera transparency settings.
-
Liquid Glass-inspired black/white/gray interface.
-
Local script storage. API keys are stored in Keychain.
-
文稿库:新建、编辑、保存、搜索、删除。
-
支持手动输入和 AI 生成口播文稿。
-
AI 服务支持 DeepSeek、OpenAI 兼容接口、Claude/Anthropic 兼容接口。
-
支持自定义 Base URL、模型下拉选择和自定义模型名。
-
支持从兼容
/models接口拉取服务器模型,并在可搜索列表中选择。 -
AI 生成页支持底部大圆形语音输入。
-
前置摄像头实时预览作为提词背景。
-
全屏提词界面默认使用语音跟随模式。
-
速度模式支持播放、暂停、前进、后退、重置和进度控制。
-
支持手动上下拖动文本位置。
-
支持字号、速度、文字颜色、摄像头透明度设置。
-
黑白灰 Liquid Glass 风格界面。
-
文稿本地存储,API Key 存入 Keychain。
-
macOS with Xcode installed.
-
iPhone running iOS 17.0 or later.
-
Apple ID for free local signing, or an Apple Developer Program account for longer-lived signing and distribution.
-
Camera, microphone, and speech recognition permissions on the device.
-
需要一台安装了 Xcode 的 Mac。
-
需要 iOS 17.0 或更高版本的 iPhone。
-
免费本地签名需要 Apple ID;付费 Apple Developer Program 账号只在长期签名、TestFlight 或 App Store 分发时需要。
-
真机需要开启摄像头、麦克风和语音识别权限。
Project settings:
Xcode project: QMPrompter.xcodeproj
Target: QMPrompter
Bundle ID: com.qiaomu.Prompter
iOS deployment target: 17.0
You can still install the app on your own iPhone with a free Apple ID.
- Install Xcode from the Mac App Store or Apple Developer website.
- Open
QMPrompter.xcodeprojin Xcode. - In Xcode, open
Settings > Accountsand sign in with your Apple ID. - Select the
QMPromptertarget, then openSigning & Capabilities. - Choose your Personal Team.
- If Xcode reports a bundle identifier conflict, change
com.qiaomu.Prompterto a unique value, for examplecom.yourname.Prompter. - Connect your iPhone with USB or enable wireless debugging.
- Select your iPhone as the run destination.
- Click Run.
- On the iPhone, trust the developer profile if prompted:
Settings > General > VPN & Device Management > Developer App > Trust.
Important limits of free signing:
- The app is for your own devices only.
- The app normally needs to be rebuilt/reinstalled after about 7 days.
- You cannot publish to TestFlight or the App Store without a paid Apple Developer Program account.
- If the Home Screen icon does not refresh after reinstalling, restarting the iPhone usually fixes SpringBoard cache. Developers can also try posting SpringBoard/LaunchServices Darwin notifications through
devicectl.
没有付费 Apple Developer Program 账号也可以安装到自己的 iPhone。你只需要一个普通 Apple ID,用 Xcode 免费签名。
- 安装 Xcode。
- 用 Xcode 打开
QMPrompter.xcodeproj。 - 在
Settings > Accounts登录你的 Apple ID。 - 选中
QMPromptertarget,进入Signing & Capabilities。 - Team 选择你的 Personal Team。
- 如果 Xcode 提示 Bundle ID 冲突,把
com.qiaomu.Prompter改成你自己的唯一 ID,例如com.yourname.Prompter。 - 连接 iPhone,或开启无线调试。
- 运行目标选择你的 iPhone。
- 点击 Run。
- 如果手机提示需要信任开发者,在 iPhone 上进入:
设置 > 通用 > VPN 与设备管理 > 开发者 App > 信任。
免费签名限制:
- 只能用于自己的设备。
- App 通常约 7 天后需要重新构建/安装。
- 不能用于 TestFlight 或 App Store 发布。
- 如果覆盖安装后桌面图标没有刷新,通常是 SpringBoard 缓存;重启手机可解决。开发者也可以用
devicectl发送 SpringBoard/LaunchServices Darwin notification 尝试刷新。
Use the same Xcode flow, but choose your paid team in Signing & Capabilities. Paid signing is suitable for TestFlight, App Store distribution, or longer-lived internal testing builds.
流程和免费安装基本一样,只是在 Signing & Capabilities 中选择你的付费开发者 Team。付费账号适合 TestFlight、App Store 或更稳定的内测分发。
You cannot sign and install an iOS app from source without some signing identity. Ask someone with Xcode and an Apple ID to build it for your device, or wait for a TestFlight/App Store build from a developer account.
完全没有 Apple ID 时,无法自行从源码签名安装 iOS App。你需要让有 Apple ID 和 Xcode 的人帮你构建到你的设备,或者等待开发者提供 TestFlight/App Store 版本。
Generic build:
xcodebuild \
-project QMPrompter.xcodeproj \
-scheme QMPrompter \
-configuration Debug \
-destination 'generic/platform=iOS' \
-derivedDataPath build/DerivedData \
buildBuild for a connected device:
xcrun devicectl list devices
xcodebuild \
-project QMPrompter.xcodeproj \
-scheme QMPrompter \
-configuration Debug \
-destination 'id=<DEVICE_ID>' \
-derivedDataPath build/DerivedData \
buildInstall and launch:
xcrun devicectl device install app \
--device <DEVICE_ID> \
build/DerivedData/Build/Products/Debug-iphoneos/QMPrompter.app
xcrun devicectl device process launch \
--device <DEVICE_ID> \
--terminate-existing \
com.qiaomu.PrompterOptional icon/cache refresh after reinstall:
xcrun devicectl device notification post \
--device <DEVICE_ID> \
--name com.apple.mobile.application_installed \
--name com.apple.LaunchServices.applicationRegistered \
--name com.apple.springboard.applicationStateChanged \
--name com.apple.SpringBoard.IconStateChangedOpen the app, go to Settings, and configure:
- AI service: DeepSeek, OpenAI-compatible, or Claude-compatible.
- API Key: stored locally in Keychain.
- Base URL: OpenAI-compatible and Claude-compatible providers default to
https://api.aigocode.app; the app sends compatible requests to the verified/v1/...endpoints and you can replace the URL with any official API or third-party gateway. - Model: choose from quick presets or enter a custom model name.
- Remote models: tap refresh next to the model field to load models from the configured provider, then search and select one.
打开 App 后进入设置页,可配置:
- AI 服务:DeepSeek、OpenAI 兼容、Claude 兼容。
- API Key:本地存入 Keychain。
- Base URL:OpenAI 兼容和 Claude 兼容默认使用
https://api.aigocode.app;App 会按已验证的/v1/...接口发起兼容请求,也可以替换为官方接口或其他第三方中转地址。 - 模型:可从预设模型下拉选择,也可以填写自定义模型名。
- 远程模型:点击模型字段旁边的刷新按钮,可从当前服务端拉取模型列表,再搜索选择。
Do not hard-code API keys in the project. Do not commit API keys to GitHub.
不要把 API Key 写进源码,也不要提交到 GitHub。
-
The app does not record video.
-
Camera permission is used only for the live preview background.
-
Microphone and speech recognition permissions are used for speech-following and voice input.
-
Local scripts are stored on device as app data.
-
AI prompts are sent to the selected AI provider only when you use AI generation.
-
API keys are stored in iOS Keychain.
-
App 不录制视频。
-
摄像头权限仅用于实时预览背景。
-
麦克风和语音识别权限用于语音跟随和语音输入。
-
文稿存储在本机 App 数据中。
-
只有使用 AI 生成功能时,提示词才会发送给你选择的 AI 服务。
-
API Key 存储在 iOS Keychain。
Change the Bundle Identifier in Signing & Capabilities to a unique value. A reverse-DNS style value is recommended, for example com.yourname.Prompter.
在 Signing & Capabilities 里改成你自己的唯一 Bundle ID,例如 com.yourname.Prompter。
Trust the developer profile on the device:
Settings > General > VPN & Device Management > Developer App > Trust.
在 iPhone 上信任开发者:
设置 > 通用 > VPN 与设备管理 > 开发者 App > 信任。
iOS may cache SpringBoard icons after sideloaded installs. Try reinstalling, posting the Darwin notifications shown above, or restarting the device.
iOS 可能缓存侧载 App 的 SpringBoard 图标。可以尝试重新安装、发送上面的 Darwin notification,或重启手机。
Check microphone and speech recognition permissions. Also make sure the device language and the spoken script language are close enough for iOS speech recognition.
检查麦克风和语音识别权限,并确认朗读语言和系统识别语言接近。
-
Better speech-following accuracy and smoother scroll behavior.
-
More polished Liquid Glass controls for the teleprompter screen.
-
More export/import options for scripts.
-
TestFlight/App Store packaging if the project moves beyond self-use.
-
优化语音跟随准确率和滚动丝滑度。
-
继续打磨提词界面的 Liquid Glass 控制组件。
-
增加文稿导入/导出能力。
-
如果从自用走向公开产品,再补 TestFlight/App Store 分发。
No license file has been added yet. If you plan to reuse or redistribute the code, add an explicit open-source license first.
当前仓库还没有添加许可证文件。如果你计划复用或再分发代码,请先补充明确的开源许可证。