gitextract_k73jqg37/ ├── .eslintrc.json ├── .gitignore ├── README.md ├── app/ │ ├── api/ │ │ ├── aliyun/ │ │ │ ├── oss/ │ │ │ │ ├── sts/ │ │ │ │ │ └── route.ts │ │ │ │ └── upload/ │ │ │ │ └── route.ts │ │ │ └── video-ocr/ │ │ │ ├── create/ │ │ │ │ └── route.ts │ │ │ ├── query/ │ │ │ │ └── route.ts │ │ │ └── status/ │ │ │ └── route.ts │ │ ├── asr/ │ │ │ ├── aliyun/ │ │ │ │ └── recognize/ │ │ │ │ └── route.ts │ │ │ ├── create/ │ │ │ │ └── route.ts │ │ │ └── status/ │ │ │ └── route.ts │ │ ├── auth/ │ │ │ ├── [...nextauth]/ │ │ │ │ ├── auth.ts │ │ │ │ └── route.ts │ │ │ └── register/ │ │ │ └── route.ts │ │ ├── file/ │ │ │ └── extract/ │ │ │ └── route.ts │ │ ├── ocr/ │ │ │ ├── kimi/ │ │ │ │ └── route.ts │ │ │ ├── route.ts │ │ │ └── step/ │ │ │ └── route.ts │ │ ├── qwen/ │ │ │ ├── ocr/ │ │ │ │ └── route.ts │ │ │ └── translate/ │ │ │ └── route.ts │ │ ├── register/ │ │ │ └── route.ts │ │ ├── subscription/ │ │ │ └── route.ts │ │ ├── tencent/ │ │ │ └── ocr/ │ │ │ └── route.ts │ │ ├── translate/ │ │ │ ├── claude/ │ │ │ │ └── route.ts │ │ │ ├── kimi/ │ │ │ │ └── route.ts │ │ │ ├── route.ts │ │ │ ├── siliconflow/ │ │ │ │ └── route.ts │ │ │ └── step/ │ │ │ └── route.ts │ │ ├── upload/ │ │ │ └── route.ts │ │ ├── user/ │ │ │ ├── info/ │ │ │ │ └── route.ts │ │ │ ├── update/ │ │ │ │ └── route.ts │ │ │ └── usage/ │ │ │ └── route.ts │ │ └── webhook/ │ │ └── route.ts │ ├── globals.css │ ├── layout.tsx │ ├── login/ │ │ ├── error.tsx │ │ ├── layout.tsx │ │ └── page.tsx │ ├── page.tsx │ ├── pricing/ │ │ ├── layout.tsx │ │ └── page.tsx │ ├── profile/ │ │ └── page.tsx │ ├── providers.tsx │ ├── register/ │ │ ├── layout.tsx │ │ └── page.tsx │ └── translate/ │ ├── layout.tsx │ └── page.tsx ├── components/ │ ├── client-layout.tsx │ ├── footer.tsx │ ├── google-analytics.tsx │ ├── header.tsx │ ├── language-provider.tsx │ ├── language-switcher.tsx │ ├── language-toggle.tsx │ ├── layout.tsx │ ├── subscription-dialog.tsx │ ├── testimonials.tsx │ ├── theme-provider.tsx │ ├── theme-toggle.tsx │ └── ui/ │ ├── accordion.tsx │ ├── alert-dialog.tsx │ ├── alert.tsx │ ├── aspect-ratio.tsx │ ├── avatar.tsx │ ├── badge.tsx │ ├── breadcrumb.tsx │ ├── button.tsx │ ├── calendar.tsx │ ├── card.tsx │ ├── carousel.tsx │ ├── chart.tsx │ ├── checkbox.tsx │ ├── collapsible.tsx │ ├── command.tsx │ ├── context-menu.tsx │ ├── dialog.tsx │ ├── drawer.tsx │ ├── dropdown-menu.tsx │ ├── form.tsx │ ├── hover-card.tsx │ ├── input-otp.tsx │ ├── input.tsx │ ├── label.tsx │ ├── menubar.tsx │ ├── navigation-menu.tsx │ ├── pagination.tsx │ ├── popover.tsx │ ├── progress.tsx │ ├── radio-group.tsx │ ├── resizable.tsx │ ├── scroll-area.tsx │ ├── select.tsx │ ├── separator.tsx │ ├── sheet.tsx │ ├── skeleton.tsx │ ├── slider.tsx │ ├── sonner.tsx │ ├── switch.tsx │ ├── table.tsx │ ├── tabs.tsx │ ├── textarea.tsx │ ├── toast.tsx │ ├── toaster.tsx │ ├── toggle-group.tsx │ ├── toggle.tsx │ ├── tooltip.tsx │ └── use-toast.ts ├── components.json ├── hooks/ │ └── use-toast.ts ├── lib/ │ ├── aliyun-oss-client.ts │ ├── aliyun-oss-upload.ts │ ├── aliyun-oss.ts │ ├── aliyun-video-ocr.ts │ ├── db/ │ │ └── migrate.ts │ ├── deepseek.ts │ ├── gemini.ts │ ├── hooks/ │ │ ├── use-analytics.ts │ │ └── use-quota.ts │ ├── i18n/ │ │ ├── locales/ │ │ │ ├── en.json │ │ │ └── zh.json │ │ ├── translations.ts │ │ └── use-translations.ts │ ├── kimi.ts │ ├── languages.ts │ ├── qwen.ts │ ├── server/ │ │ ├── tencent-sign.ts │ │ └── translate.ts │ ├── speech.ts │ ├── step.ts │ ├── stripe.ts │ ├── tencent-asr.ts │ ├── tencent-sign.ts │ ├── tencent.ts │ ├── utils.ts │ └── zhipu.ts ├── middleware.ts ├── next.config.js ├── package.json ├── postcss.config.js ├── public/ │ ├── ads.txt │ └── site.webmanifest ├── tailwind.config.js ├── tailwind.config.ts ├── tsconfig.json └── types/ ├── alicloud.d.ts └── next-auth.d.ts