CLI لُب
lobbe جلسهها را به لُب میفرستد، دنبالشان میکند و لُبشان را میخواند، از ترمینال یا از یک اسکریپت.
با توکن شخصی API شما با API لُب کار میکند، یک فایل است بیهیچ وابستگی، و به Node.js نسخهٔ ۲۰ یا
تازهتر نیاز دارد.
npm install -g @lobbe/cli# Paste your token when askedlobbe login
# Send a meeting and wait until it's readylobbe upload meeting.m4a --wait
# Your finished meetings, and one as Markdownlobbe listlobbe get MEETING_ID --mdnpm install -g @lobbe/cliیا بدون نصب اجرایش کنید: npx -y @lobbe/cli <command>. اگر npmjs.org از شبکهٔ شما کند است یا در دسترس
نیست، --registry را با نشانی یک mirror که به آن اعتماد دارید اضافه کنید.
در برنامه و در «اتصالها» توکنی با دسترسیهایی که لازم دارید بسازید (توکنها و دسترسیها را ببینید)، و بعد:
lobbe loginlobbe login توکن را بیآنکه نشانش دهد میپرسد، آن را با لُب بررسی میکند، و فقط بعد از آن در
~/.config/lobbe/config.json (یا $XDG_CONFIG_HOME/lobbe/config.json) ذخیرهاش میکند. این فایل را فقط
خود شما میتوانید بخوانید (حالت 0600، در پوشهای با حالت 0700). توکنی که لُب نپذیرد هرگز ذخیره
نمیشود. سرور MCP هم توکن را از همین فایل میخواند.
- از یک اسکریپت: توکن را با
lobbe login --token-stdinبه ورودی بدهید. - چند حساب:
lobbe login --profile work، و بعد--profile work(یاLOBBE_PROFILE=work) روی هر فرمانی. - کانتینرها و CI: بهجای آن
LOBBE_TOKENرا تنظیم کنید؛ چیزی از دیسک خوانده یا روی آن نوشته نمیشود. این توکن بهLOBBE_BASE_URL، یا بهhttps://app.lobbe.ai، فرستاده میشود و هرگز به سروری که یک پروفایل ذخیرهشده نام میبرد. - سروری دیگر:
LOBBE_BASE_URL=https://lobbe.example.com lobbe login. پروفایل سروری را که توکن با آن بررسی شده به یاد میسپارد.
lobbe whoami نشان میدهد توکن متعلق به کیست، چه دسترسیها و چه سقف روزانهای دارد، و محدودیتهای ارسال
فایل چیست. lobbe logout توکن ذخیرهشده را فراموش میکند؛ خود توکن تا وقتی در برنامه باطلش نکنید کار
میکند.
فرمانها
Section titled “فرمانها”| فرمان | کاری که میکند |
|---|---|
lobbe login |
توکن را، وقتی سرور پذیرفت، روی این رایانه ذخیره میکند |
lobbe logout |
توکن ذخیرهشده را فراموش میکند (تا در برنامه باطلش نکنید کار میکند) |
lobbe whoami |
توکن متعلق به کیست: دسترسیها، سقف روزانه و محدودیتهایش |
lobbe account |
موجودی حساب به دقیقه و تنظیمات آن |
lobbe upload <file> |
فایل ضبط یک جلسه را میفرستد؛ با --wait دنبالش میکند تا کارش تمام شود |
lobbe status <id> |
جلسه کجای کار است؛ با --wait دنبالش میکند تا کارش تمام شود |
lobbe skip-naming <id> |
بدون نامگذاری صداها ادامه میدهد: نامهای پیشنهادی لُب به کار میروند |
lobbe retry <id> |
مرحلهٔ شکستخوردهٔ جلسهٔ FAILED را بدون هزینهٔ تازه دوباره اجرا میکند |
lobbe list |
جلسههای آمادهٔ شما، از تازهترین |
lobbe get <id> |
یک جلسهٔ آماده: لُب و رونوشتش، بهصورت Markdown |
lobbe search <query> |
جلسههای آماده را با واژههایشان پیدا میکند |
lobbe ask <id> <question> |
از یک جلسه میپرسد (با --series <id> از یک سری)؛ اول قیمت را میگوید |
lobbe series |
سریهایی که ساختهاید یا عضوشان شدهاید؛ و series show <id>، series create، series update <id> |
lobbe keyterms |
واژگان، هر واژه در یک سطر؛ keyterms set <file> آن را جایگزین میکند |
lobbe memory |
آنچه لُب دربارهٔ شما به یاد دارد؛ و memory edit <id> <text>، memory delete <id> |
lobbe events |
آنچه از یک نشانگر به بعد برای جلسههایتان رخ داده؛ با --follow دنبال کردن ادامه پیدا میکند |
lobbe skill install |
skill لُب را برای Claude Code، Codex یا Cursor نصب میکند |
lobbe <command> --help گزینههای هر فرمان را فهرست میکند، و lobbe --help همهٔ این فرمانها را. هر
فرمانی --profile <name> را میپذیرد.
فرستادن جلسه
Section titled “فرستادن جلسه”lobbe upload weekly.m4a --series "Weekly sync" --waitupload پیش از فرستادن هر چیزی فایل را بررسی میکند: باید وجود داشته باشد، از نوعی باشد که لُب
میپذیرد (بر پایهٔ پسوندش) و از سقف ارسال توکن بزرگتر نباشد. بعد شناسهٔ جلسه و هزینهاش را به دقیقه
نشان میدهد. گزینههایش: --series <name|id> (سریای که خودتان ساختهاید)، --recorded-at <iso>،
--title، --kind (در یک سری، نوع سری به کار میرود)، --language (match، fa یا en)، --skip-naming، --no-keyterms (واژگان شما و
هزینهٔ اضافهٔ آن را کنار میگذارد) و --attach <file> (یک فایل PDF، PPTX یا DOCX که لُب آن را هم بخواند؛
دقیقه اضافه میکند). چرخهٔ یک جلسه را ببینید.
هر پاسخ دقیقه خرج میکند، پس lobbe ask اول قیمت را میگیرد. در ترمینال قیمت را نشان میدهد و از شما
تأیید میخواهد. در یک اسکریپت، --max-minutes <n> بهجای آن سقف میگذارد (پاسخ گرانتر با کد خروج 4 رد
میشود و هزینهای ندارد)، یا --yes قیمت گفتهشده را میپذیرد. بیرون از ترمینال و بدون هیچکدام، رد
میکند (کد خروج 1) و میگوید پاسخ چقدر هزینه دارد.
واژگان
Section titled “واژگان”lobbe keyterms > words.txt واژگان را ذخیره میکند و lobbe keyterms set words.txt آن را با واژههای
فایل جایگزین میکند (سطرهای خالی و سطرهایی که با # شروع میشوند کنار گذاشته میشوند). فایلی که هیچ
واژهای ندارد رد میشود، تا یک lobbe keyterms > words.txt ناموفق نتواند فهرست را ناخواسته پاک کند:
--empty آن را عمداً پاک میکند. --series <id> با فهرست خودِ یک سری کار میکند؛
حساب، واژگان و حافظه را ببینید.
منتظر ماندن، و لینک نامگذاری
Section titled “منتظر ماندن، و لینک نامگذاری”lobbe upload --wait، یا بعداً lobbe status <id> --wait، هر دقیقه یک بار (یا پس از Retry-Afterی که
لُب بخواهد) وضعیت را میپرسد تا جلسه READY شود:
- در
NAMING، لُب منتظر است تا شما صداها را نامگذاری کنید. لینک نامگذاری یک بار نشان داده میشود و منتظر ماندن ادامه پیدا میکند تا نامگذاری را انجام دهید.--no-wait-namingبهجای آن همانجا با کد خروج3میایستد؛lobbe skip-naming <id>بدون نام ادامه میدهد. نامگذاری گویندهها را ببینید. - در
FAILED، شکستی که درستشدنی است حداکثر سه بار دوباره اجرا میشود. وگرنه منتظر ماندن با کد خروج2تمام میشود.lobbe retry <id>یک جلسه را دستی دوباره اجرا میکند.
پیامهای پیشرفت به stderr میروند، تا stdout برای اسکریپت تمیز بماند.
کدهای خروج
Section titled “کدهای خروج”| کد | معنا |
|---|---|
0 |
موفق؛ با --wait، جلسه READY است |
1 |
خطای استفاده، قطع شبکه، یا هر خطای دیگری از API |
2 |
جلسه FAILED شد: درستشدنی نبود، یا پس از سه بار تلاش دوباره هم شکست خورد |
3 |
منتظر یک نفر: NAMING با --no-wait-naming |
4 |
دقیقه: INSUFFICIENT_MINUTES، TOKEN_DAILY_CAP، DAILY_LIMIT_REACHED، PRICE_ABOVE_MAX |
5 |
مجاز نیست: توکنی تنظیم نشده، UNAUTHORIZED، TOKEN_INVALID، TOKENS_DISABLED، TOKEN_NOT_ACCEPTED، DEVELOPER_MODE_OFF، TOKEN_SCOPE، SCOPE_DISABLED، PENDING_APPROVAL |
هر خطا کد لُب، پیامش و گام بعد را در stderr نشان میدهد. توکنی که دسترسی لازمِ یک فرمان را ندارد با کد
5 بسته میشود و نام آن دسترسی را میبرد؛ خطاها را ببینید.
--json برای اسکریپتها
Section titled “--json برای اسکریپتها”--json پاسخ API را دقیقاً همانطور که رسیده چاپ میکند، روی هر فرمانی که چیزی را میخواند یا تغییر
میدهد (events همیشه JSON چاپ میکند). درون v1 ممکن است فیلدهایی اضافه شوند (نسخههای
API را ببینید)، پس فیلدهایی را که لازم دارید بخوانید و بقیه را نادیده
بگیرید.
با --wait، upload --json وقتی منتظر ماندن تمام شد، هر طور که تمام شد، یک سند چاپ میکند:
{ "submitted": { "schemaVersion": 1, "recording": { "id": "…", "minutes": 12 } }, "status": { "schemaVersion": 1, "id": "…", "status": "READY" } }submitted پاسخ فرستادن جلسه است و status وضعیت پایانی. اگر خودِ منتظر ماندن شکست بخورد، status
برابر null است (کد خروج میگوید چرا)، تا اسکریپت هرگز شناسهٔ جلسهای را که هزینهاش را داده گم نکند.
دنبال کردن فید رویدادها
Section titled “دنبال کردن فید رویدادها”lobbe events فید رویدادها را هر رویداد در یک سطر، بهصورت
JSON فشرده و از قدیمیترین، چاپ میکند؛ بعد میایستد و نشانگری را که باید از آن ادامه داد در stderr نشان
میدهد. برای روندی که همیشه اجرا میماند:
lobbe events --after latest --cursor-file cursor.txt # once: take a cursor, from nowlobbe events --follow --cursor-file cursor.txt # then: read on, for good--follow نمیایستد: وقتی به آخر رسید، هر دقیقه یک بار دوباره میپرسد. خطای شبکه، خطای سرور (5xx) یا
سقف درخواست (429، 503) فقط آن را متوقف میکند، به اندازهٔ یک دقیقه یا Retry-After، با یک سطر در
stderr، تا از بهروزرسانیهای خود لُب هم جان سالم به در ببرد. با هر چیز دیگری، با کد خروج همان خطا تمام
میشود: یک 4xx مثل TOKEN_INVALID (کد خروج 5)، یا فایل نشانگری که نمیتواند بنویسد.
--cursor-file نشانگر را در یک فایل نگه میدارد و وقتی سطرهای یک صفحه در stdout نوشته شدند، آن را
جایگزین میکند. این فایل نشان میدهد lobbe تا کجا نوشته است، نه اینکه شما تا کجا پردازش
کردهاید: برنامهای که با سطرهای خواندهنشده متوقف شود، آن سطرها را از دست میدهد. برای اینکه هیچ
رویدادی از دست نرود، خروجی را به ته یک فایل اضافه کنید و جای خواندنِ خودتان از آن فایل را جداگانه
نگه دارید:
lobbe events --follow --cursor-file cursor.txt >> events.jsonlبرنامهٔ شما events.jsonl را از جایی که خودش ذخیره کرده میخواند و فقط پس از پردازش هر سطر آن جا را جلو
میبرد. فید هر رویداد را دستکم یک بار میدهد (توقفی میان یک صفحه و نشانگرش همان صفحه را تکرار
میکند)، پس رویدادهایی را که پردازش کردهاید با id کنار بگذارید. جلسهای را که آماده شده با
lobbe get <id> بگیرید.
رویدادها ۳۰ روز نگه داشته میشوند. نشانگری قدیمیتر از این رد میشود (CURSOR_EXPIRED، کد خروج 1).
کار را به همین ترتیب از سر بگیرید: نشانگر تازهای با --after latest بگیرید، عقبماندگی را با
lobbe list جبران کنید، و بعد با --follow ادامه دهید؛
۳۰ روز، و بعد 410 را ببینید.
توکن پنهان میماند
Section titled “توکن پنهان میماند”lobbe توکن را در هدر Authorization فقط به سروری میفرستد که توکن برای آن ذخیره شده است، یا اگر
LOBBE_BASE_URL را تنظیم کرده باشید به همان، و به هیچ جای دیگر. هرگز آن را چاپ نمیکند، در هیچ
خروجی یا خطایی، --json هم.