fix(ui): tarifs publics unifiés et prix annuel lisible
All checks were successful
CI / Lint, Unit Tests & Build (push) Successful in 7m5s
CI / Deploy production (on server) (push) Successful in 24s

La page tarifs reprend la barre du site public. En annuel, Pro affiche
8,25 € par mois (99 € l’année), plus le 99 € comme gros chiffre.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Antigravity
2026-09-01 17:43:05 +00:00
parent dcd7f38c11
commit 4fc5e3ce04
21 changed files with 721 additions and 602 deletions

View File

@@ -6,11 +6,20 @@ import { useState } from 'react'
import { useQuery } from '@tanstack/react-query' import { useQuery } from '@tanstack/react-query'
import { useLanguage } from '@/lib/i18n' import { useLanguage } from '@/lib/i18n'
import { SUBSCRIPTION_TRIAL_DAYS } from '@/lib/billing/trial-constants' import { SUBSCRIPTION_TRIAL_DAYS } from '@/lib/billing/trial-constants'
import { PublicSiteChrome } from '@/components/public-site-chrome'
import {
DEFAULT_PRICES,
annualDiscountPercent,
} from '@/lib/billing/price-catalog'
export default function PricingPage() { export default function PricingPage() {
const { t } = useLanguage() const { t } = useLanguage()
const [billingInterval, setBillingInterval] = useState<'monthly' | 'annual'>('monthly') const [billingInterval, setBillingInterval] = useState<'monthly' | 'annual'>('monthly')
const trialDays = SUBSCRIPTION_TRIAL_DAYS const trialDays = SUBSCRIPTION_TRIAL_DAYS
const annualSavePercent = annualDiscountPercent(
DEFAULT_PRICES.PRO.month.amount,
DEFAULT_PRICES.PRO.year.amount,
)
const { data: byokCatalog } = useQuery({ const { data: byokCatalog } = useQuery({
queryKey: ['public', 'byok-catalog'], queryKey: ['public', 'byok-catalog'],
queryFn: async () => { queryFn: async () => {
@@ -48,51 +57,28 @@ export default function PricingPage() {
] ]
return ( return (
<main className="min-h-screen bg-[#0B0A09] text-[#F4F1EA] font-[family-name:var(--font-manrope)] selection:bg-[#D4A373]/40 selection:text-white"> <PublicSiteChrome currentPage="pricing">
<nav className="sticky top-0 z-[100] px-5 sm:px-8 py-4 flex items-center justify-between bg-[#0B0A09]/70 backdrop-blur-xl border-b border-white/[0.06]"> <section className="px-5 sm:px-8 py-20 sm:py-28">
<Link href="/" className="flex items-center gap-2.5 group">
<div className="w-9 h-9 bg-[#F4F1EA] text-[#0B0A09] flex items-center justify-center rounded-lg">
<span className="font-serif text-xl font-bold leading-none">M</span>
</div>
<span className="font-serif text-xl font-medium tracking-tight">Memento</span>
</Link>
<div className="flex items-center gap-2 sm:gap-3">
<Link href="/login" className="text-[13px] text-white/75 hover:text-white transition-colors px-2">
{t('landing.nav.login')}
</Link>
<Link
href="/register"
className="inline-flex items-center gap-2 px-5 py-2.5 rounded-full bg-[#F4F1EA] text-[#0B0A09] text-[13px] font-semibold hover:bg-white transition-colors"
>
{t('landing.nav.cta')}
</Link>
</div>
</nav>
<section className="px-5 sm:px-8 py-28">
<div className="max-w-6xl mx-auto"> <div className="max-w-6xl mx-auto">
<div className="text-center mb-12"> <div className="text-center mb-12">
<span className="text-[11px] font-bold uppercase tracking-[0.3em] text-[#D4A373] mb-4 block">
{t('landing.pricing.label')}
</span>
<h1 className="font-serif text-3xl sm:text-5xl tracking-tight mb-4">{t('landing.pricing.title')}</h1> <h1 className="font-serif text-3xl sm:text-5xl tracking-tight mb-4">{t('landing.pricing.title')}</h1>
<p className="text-white/70 mb-8">{t('landing.pricing.desc')}</p> <p className="text-white/80 mb-8">{t('landing.pricing.desc')}</p>
<div className="inline-flex p-1 rounded-full border border-white/10 bg-white/[0.03]"> <div className="inline-flex p-1 rounded-full border border-white/15 bg-white/[0.04]">
<button <button
type="button" type="button"
onClick={() => setBillingInterval('monthly')} onClick={() => setBillingInterval('monthly')}
className={`px-5 py-2 rounded-full text-[12px] font-semibold transition-all ${billingInterval === 'monthly' ? 'bg-[#F4F1EA] text-[#0B0A09]' : 'text-white/70'}`} className={`px-5 py-2 rounded-full text-[13px] font-semibold transition-all ${billingInterval === 'monthly' ? 'bg-[#F4F1EA] text-[#0B0A09]' : 'text-white/80'}`}
> >
{t('landing.pricing.monthly')} {t('landing.pricing.monthly')}
</button> </button>
<button <button
type="button" type="button"
onClick={() => setBillingInterval('annual')} onClick={() => setBillingInterval('annual')}
className={`px-5 py-2 rounded-full text-[12px] font-semibold transition-all relative ${billingInterval === 'annual' ? 'bg-[#F4F1EA] text-[#0B0A09]' : 'text-white/70'}`} className={`px-5 py-2 rounded-full text-[13px] font-semibold transition-all relative ${billingInterval === 'annual' ? 'bg-[#F4F1EA] text-[#0B0A09]' : 'text-white/80'}`}
> >
{t('landing.pricing.annual')} {t('landing.pricing.annual')}
<span className="absolute -top-3 -right-1 text-[10px] text-[#D4A373] whitespace-nowrap"> <span className="absolute -top-3 -right-1 text-[11px] text-[#E8C39A] whitespace-nowrap">
{t('landing.pricing.savePercent')} {t('landing.pricing.savePercent', { percent: annualSavePercent })}
</span> </span>
</button> </button>
</div> </div>
@@ -103,32 +89,32 @@ export default function PricingPage() {
key={plan.key} key={plan.key}
className={`rounded-2xl border p-6 flex flex-col ${ className={`rounded-2xl border p-6 flex flex-col ${
plan.popular plan.popular
? 'border-[#D4A373]/50 bg-[#D4A373]/10' ? 'border-[#D4A373]/60 bg-[#D4A373]/12'
: 'border-white/[0.08] bg-white/[0.02]' : 'border-white/[0.12] bg-white/[0.04]'
}`} }`}
> >
{plan.popular && ( {plan.popular && (
<span className="text-[10px] font-bold uppercase tracking-widest text-[#D4A373] mb-3"> <span className="text-[11px] font-bold uppercase tracking-widest text-[#E8C39A] mb-3">
{t('landing.pricing.popular')} {t('landing.pricing.popular')}
</span> </span>
)} )}
<h2 className="text-[13px] font-medium tracking-wide text-white/80 mb-2"> <h2 className="text-[14px] font-medium tracking-wide text-[#F4F1EA] mb-2">
{t(`landing.pricing.${plan.key}.name`)} {t(`landing.pricing.${plan.key}.name`)}
</h2> </h2>
<div className="flex items-baseline gap-1 mb-2"> <div className="flex items-baseline gap-1 mb-2">
<span className="text-3xl font-serif">{plan.price}</span> <span className="text-3xl font-serif">{plan.price}</span>
{plan.period && <span className="text-sm text-white/70">{plan.period}</span>} {plan.period && <span className="text-sm text-white/80">{plan.period}</span>}
</div> </div>
{plan.hasTrial && ( {plan.hasTrial && (
<p className="text-[11px] font-semibold text-[#D4A373] mb-3"> <p className="text-[12px] font-semibold text-[#E8C39A] mb-3">
{t('landing.pricing.trialBadge', { days: trialDays })} {t('landing.pricing.trialBadge', { days: trialDays })}
</p> </p>
)} )}
<p className="text-sm text-white/70 mb-6">{t(`landing.pricing.${plan.key}.desc`)}</p> <p className="text-sm text-white/80 mb-6">{t(`landing.pricing.${plan.key}.desc`)}</p>
<ul className="space-y-2.5 mb-8 flex-1"> <ul className="space-y-2.5 mb-8 flex-1">
{plan.hasTrial && ( {plan.hasTrial && (
<li className="flex gap-2 text-xs text-[#D4A373]/90"> <li className="flex gap-2 text-xs text-[#E8C39A]">
<Check size={12} className="text-[#D4A373] mt-0.5 shrink-0" /> <Check size={12} className="text-[#E8C39A] mt-0.5 shrink-0" />
{t('landing.pricing.trialFeature', { days: trialDays })} {t('landing.pricing.trialFeature', { days: trialDays })}
</li> </li>
)} )}
@@ -136,8 +122,8 @@ export default function PricingPage() {
const feat = t(`landing.pricing.${plan.key}.feature${j}`, { count: providerCount }) const feat = t(`landing.pricing.${plan.key}.feature${j}`, { count: providerCount })
if (!feat || feat.startsWith('landing.')) return null if (!feat || feat.startsWith('landing.')) return null
return ( return (
<li key={j} className="flex gap-2 text-sm text-white/80"> <li key={j} className="flex gap-2 text-sm text-[#F4F1EA]/90">
<Check size={12} className="text-[#D4A373] mt-0.5 shrink-0" /> <Check size={12} className="text-[#E8C39A] mt-0.5 shrink-0" />
{feat} {feat}
</li> </li>
) )
@@ -148,7 +134,7 @@ export default function PricingPage() {
className={`py-3 rounded-xl text-center text-[13px] font-semibold transition-colors ${ className={`py-3 rounded-xl text-center text-[13px] font-semibold transition-colors ${
plan.popular plan.popular
? 'bg-[#F4F1EA] text-[#0B0A09] hover:bg-white' ? 'bg-[#F4F1EA] text-[#0B0A09] hover:bg-white'
: 'bg-white/10 text-white hover:bg-white/15' : 'bg-white/15 text-white hover:bg-white/20'
}`} }`}
> >
{plan.hasTrial {plan.hasTrial
@@ -160,6 +146,6 @@ export default function PricingPage() {
</div> </div>
</div> </div>
</section> </section>
</main> </PublicSiteChrome>
) )
} }

View File

@@ -2,44 +2,27 @@
import { motion, AnimatePresence } from 'motion/react' import { motion, AnimatePresence } from 'motion/react'
import { import {
ArrowRight, Menu, X, Check, BrainCircuit, ArrowRight, Check, BrainCircuit,
Network, GraduationCap, Bot, KeyRound, Globe, ChevronDown Network, GraduationCap, Bot, KeyRound
} from 'lucide-react' } from 'lucide-react'
import Link from 'next/link' import Link from 'next/link'
import Image from 'next/image' import Image from 'next/image'
import { useLanguage } from '@/lib/i18n' import { useLanguage } from '@/lib/i18n'
import type { SupportedLanguage } from '@/lib/i18n/load-translations'
import { SUBSCRIPTION_TRIAL_DAYS } from '@/lib/billing/trial-constants' import { SUBSCRIPTION_TRIAL_DAYS } from '@/lib/billing/trial-constants'
import { useEffect, useRef, useState, type ReactNode } from 'react' import { useEffect, useState, type ReactNode } from 'react'
import { useQuery } from '@tanstack/react-query' import { useQuery } from '@tanstack/react-query'
import { PublicSiteChrome } from '@/components/public-site-chrome'
import {
DEFAULT_PRICES,
annualDiscountPercent,
} from '@/lib/billing/price-catalog'
const ECHO_LINES = ['echo0', 'echo1', 'echo2'] as const const ECHO_LINES = ['echo0', 'echo1', 'echo2'] as const
const LANDING_LANGS: { code: SupportedLanguage; labelKey: string }[] = [
{ code: 'fr', labelKey: 'languages.fr' },
{ code: 'en', labelKey: 'languages.en' },
{ code: 'es', labelKey: 'languages.es' },
{ code: 'de', labelKey: 'languages.de' },
{ code: 'it', labelKey: 'languages.it' },
{ code: 'pt', labelKey: 'languages.pt' },
{ code: 'nl', labelKey: 'languages.nl' },
{ code: 'pl', labelKey: 'languages.pl' },
{ code: 'ru', labelKey: 'languages.ru' },
{ code: 'zh', labelKey: 'languages.zh' },
{ code: 'ja', labelKey: 'languages.ja' },
{ code: 'ko', labelKey: 'languages.ko' },
{ code: 'ar', labelKey: 'languages.ar' },
{ code: 'fa', labelKey: 'languages.fa' },
{ code: 'hi', labelKey: 'languages.hi' },
]
export function LandingPage() { export function LandingPage() {
const { t, language, setLanguage } = useLanguage() const { t } = useLanguage()
const [billingInterval, setBillingInterval] = useState<'monthly' | 'annual'>('monthly') const [billingInterval, setBillingInterval] = useState<'monthly' | 'annual'>('monthly')
const [menuOpen, setMenuOpen] = useState(false)
const [langOpen, setLangOpen] = useState(false)
const [echoIndex, setEchoIndex] = useState(0) const [echoIndex, setEchoIndex] = useState(0)
const langRef = useRef<HTMLDivElement>(null)
const { data: byokCatalog } = useQuery({ const { data: byokCatalog } = useQuery({
queryKey: ['public', 'byok-catalog'], queryKey: ['public', 'byok-catalog'],
queryFn: async () => { queryFn: async () => {
@@ -51,36 +34,16 @@ export function LandingPage() {
}) })
const byokProviders = byokCatalog?.providers ?? [] const byokProviders = byokCatalog?.providers ?? []
useEffect(() => {
if (!langOpen) return
const onPointer = (e: MouseEvent) => {
if (langRef.current && !langRef.current.contains(e.target as Node)) setLangOpen(false)
}
const onKey = (e: KeyboardEvent) => {
if (e.key === 'Escape') setLangOpen(false)
}
document.addEventListener('mousedown', onPointer)
document.addEventListener('keydown', onKey)
return () => {
document.removeEventListener('mousedown', onPointer)
document.removeEventListener('keydown', onKey)
}
}, [langOpen])
useEffect(() => { useEffect(() => {
const id = setInterval(() => setEchoIndex((i) => (i + 1) % ECHO_LINES.length), 3200) const id = setInterval(() => setEchoIndex((i) => (i + 1) % ECHO_LINES.length), 3200)
return () => clearInterval(id) return () => clearInterval(id)
}, []) }, [])
useEffect(() => {
const root = document.querySelector<HTMLElement>('[data-public-scroll-root]')
if (!root) return
const prev = root.style.overflow
if (menuOpen) root.style.overflow = 'hidden'
else root.style.overflow = prev || ''
return () => { root.style.overflow = prev }
}, [menuOpen])
const trialDays = SUBSCRIPTION_TRIAL_DAYS const trialDays = SUBSCRIPTION_TRIAL_DAYS
const annualSavePercent = annualDiscountPercent(
DEFAULT_PRICES.PRO.month.amount,
DEFAULT_PRICES.PRO.year.amount,
)
const PLANS = [ const PLANS = [
{ key: 'basic', popular: false, hasTrial: false, price: t('landing.pricing.basicPrice'), period: '' }, { key: 'basic', popular: false, hasTrial: false, price: t('landing.pricing.basicPrice'), period: '' },
{ {
@@ -106,13 +69,6 @@ export function LandingPage() {
}, },
] ]
const NAV = [
{ href: '#product', label: t('landing.nav.secondBrain') },
{ href: '#echo', label: t('landing.nav.echo') },
{ href: '#agents', label: t('landing.nav.agents') },
{ href: '#pricing', label: t('landing.nav.pricing') },
]
const scrollPublicHash = (hash: string) => { const scrollPublicHash = (hash: string) => {
const id = hash.replace(/^#/, '') const id = hash.replace(/^#/, '')
const target = document.getElementById(id) const target = document.getElementById(id)
@@ -130,138 +86,7 @@ export function LandingPage() {
}, []) }, [])
return ( return (
<div className="min-h-screen bg-[#0B0A09] text-[#F4F1EA] font-[family-name:var(--font-manrope)] selection:bg-[#D4A373]/40 selection:text-white"> <PublicSiteChrome currentPage="home" onHashNavigate={scrollPublicHash}>
{/* Nav */}
<nav className="fixed top-0 left-0 right-0 z-[100] px-5 sm:px-8 py-4 flex items-center justify-between bg-[#0B0A09]/70 backdrop-blur-xl border-b border-white/[0.06]">
<Link href="/" className="flex items-center gap-2.5 group">
<div className="w-9 h-9 bg-[#F4F1EA] text-[#0B0A09] flex items-center justify-center rounded-lg transition-transform group-hover:scale-105">
<span className="font-serif text-xl font-bold leading-none">M</span>
</div>
<span className="font-serif text-xl font-medium tracking-tight text-[#F4F1EA]">Memento</span>
</Link>
<div className="hidden lg:flex items-center gap-8">
{NAV.map((l) => (
<a
key={l.href}
href={l.href}
onClick={(event) => {
event.preventDefault()
scrollPublicHash(l.href)
window.history.replaceState(null, '', l.href)
}}
className="text-[13px] text-white/75 hover:text-white transition-colors"
>
{l.label}
</a>
))}
</div>
<div className="flex items-center gap-2 sm:gap-3">
{/* Language switcher */}
<div ref={langRef} className="relative">
<button
type="button"
onClick={() => setLangOpen((o) => !o)}
aria-expanded={langOpen}
aria-haspopup="listbox"
aria-label={t('landing.nav.language')}
className="inline-flex items-center gap-1.5 px-3 py-2 rounded-full border border-white/15 text-[12px] text-white/70 hover:text-white hover:border-white/30 transition-colors"
>
<Globe size={14} />
<span className="uppercase font-semibold tracking-wide">{language}</span>
<ChevronDown size={12} className={`opacity-60 transition-transform ${langOpen ? 'rotate-180' : ''}`} />
</button>
<AnimatePresence>
{langOpen && (
<motion.ul
role="listbox"
initial={{ opacity: 0, y: 6 }}
animate={{ opacity: 1, y: 0 }}
exit={{ opacity: 0, y: 6 }}
transition={{ duration: 0.15 }}
className="absolute end-0 mt-2 w-48 max-h-72 overflow-y-auto rounded-2xl border border-white/10 bg-[#141210] shadow-2xl py-1.5 z-[110]"
>
{LANDING_LANGS.map((lang) => (
<li key={lang.code} role="option" aria-selected={language === lang.code}>
<button
type="button"
onClick={() => {
setLanguage(lang.code)
setLangOpen(false)
}}
className={`w-full text-start px-4 py-2.5 text-[13px] transition-colors ${
language === lang.code
? 'bg-[#D4A373]/15 text-[#D4A373]'
: 'text-white/70 hover:bg-white/5 hover:text-white'
}`}
>
{t(lang.labelKey)}
</button>
</li>
))}
</motion.ul>
)}
</AnimatePresence>
</div>
<Link href="/login" className="hidden sm:inline text-[13px] text-white/75 hover:text-white transition-colors px-2">
{t('landing.nav.login')}
</Link>
<Link
href="/register"
className="hidden sm:inline-flex items-center gap-2 px-5 py-2.5 rounded-full bg-[#F4F1EA] text-[#0B0A09] text-[13px] font-semibold hover:bg-white transition-colors"
>
{t('landing.nav.cta')}
</Link>
<button
type="button"
aria-label={menuOpen ? t('landing.nav.closeMenu') : t('landing.nav.openMenu')}
onClick={() => setMenuOpen((o) => !o)}
className="lg:hidden w-10 h-10 rounded-full border border-white/15 flex items-center justify-center text-white/80"
>
{menuOpen ? <X size={18} /> : <Menu size={18} />}
</button>
</div>
</nav>
<AnimatePresence>
{menuOpen && (
<motion.div
initial={{ opacity: 0 }}
animate={{ opacity: 1 }}
exit={{ opacity: 0 }}
className="fixed inset-0 z-[99] bg-[#0B0A09] pt-24 px-8 lg:hidden"
>
<div className="flex flex-col gap-1">
{NAV.map((l) => (
<a
key={l.href}
href={l.href}
onClick={(event) => {
event.preventDefault()
setMenuOpen(false)
scrollPublicHash(l.href)
window.history.replaceState(null, '', l.href)
}}
className="py-4 text-3xl font-serif border-b border-white/10"
>
{l.label}
</a>
))}
<Link
href="/login"
onClick={() => setMenuOpen(false)}
className="mt-10 py-4 text-2xl font-serif text-white/80 text-center border-b border-white/10"
>
{t('landing.nav.login')}
</Link>
<Link href="/register" onClick={() => setMenuOpen(false)} className="mt-4 py-4 rounded-2xl bg-[#F4F1EA] text-[#0B0A09] text-center font-semibold">
{t('landing.nav.cta')}
</Link>
</div>
</motion.div>
)}
</AnimatePresence>
{/* ── HERO ── */} {/* ── HERO ── */}
<section className="relative min-h-[100dvh] flex flex-col justify-center pt-28 pb-16 px-5 sm:px-8 overflow-hidden"> <section className="relative min-h-[100dvh] flex flex-col justify-center pt-28 pb-16 px-5 sm:px-8 overflow-hidden">
{/* Atmosphere — warm, not purple neon */} {/* Atmosphere — warm, not purple neon */}
@@ -524,23 +349,23 @@ export function LandingPage() {
<div className="max-w-6xl mx-auto"> <div className="max-w-6xl mx-auto">
<div className="text-center mb-12"> <div className="text-center mb-12">
<h2 className="font-serif text-3xl sm:text-5xl tracking-tight mb-4">{t('landing.pricing.title')}</h2> <h2 className="font-serif text-3xl sm:text-5xl tracking-tight mb-4">{t('landing.pricing.title')}</h2>
<p className="text-white/70 mb-8">{t('landing.pricing.desc')}</p> <p className="text-white/80 mb-8">{t('landing.pricing.desc')}</p>
<div className="inline-flex p-1 rounded-full border border-white/10 bg-white/[0.03]"> <div className="inline-flex p-1 rounded-full border border-white/15 bg-white/[0.04]">
<button <button
type="button" type="button"
onClick={() => setBillingInterval('monthly')} onClick={() => setBillingInterval('monthly')}
className={`px-5 py-2 rounded-full text-[12px] font-semibold transition-all ${billingInterval === 'monthly' ? 'bg-[#F4F1EA] text-[#0B0A09]' : 'text-white/70'}`} className={`px-5 py-2 rounded-full text-[13px] font-semibold transition-all ${billingInterval === 'monthly' ? 'bg-[#F4F1EA] text-[#0B0A09]' : 'text-white/80'}`}
> >
{t('landing.pricing.monthly')} {t('landing.pricing.monthly')}
</button> </button>
<button <button
type="button" type="button"
onClick={() => setBillingInterval('annual')} onClick={() => setBillingInterval('annual')}
className={`px-5 py-2 rounded-full text-[12px] font-semibold transition-all relative ${billingInterval === 'annual' ? 'bg-[#F4F1EA] text-[#0B0A09]' : 'text-white/70'}`} className={`px-5 py-2 rounded-full text-[13px] font-semibold transition-all relative ${billingInterval === 'annual' ? 'bg-[#F4F1EA] text-[#0B0A09]' : 'text-white/80'}`}
> >
{t('landing.pricing.annual')} {t('landing.pricing.annual')}
<span className="absolute -top-3 -right-1 text-[10px] text-[#D4A373] whitespace-nowrap"> <span className="absolute -top-3 -right-1 text-[11px] text-[#E8C39A] whitespace-nowrap">
{t('landing.pricing.savePercent')} {t('landing.pricing.savePercent', { percent: annualSavePercent })}
</span> </span>
</button> </button>
</div> </div>
@@ -551,32 +376,32 @@ export function LandingPage() {
key={plan.key} key={plan.key}
className={`rounded-2xl border p-6 flex flex-col ${ className={`rounded-2xl border p-6 flex flex-col ${
plan.popular plan.popular
? 'border-[#D4A373]/50 bg-[#D4A373]/10' ? 'border-[#D4A373]/60 bg-[#D4A373]/12'
: 'border-white/[0.08] bg-white/[0.02]' : 'border-white/[0.12] bg-white/[0.04]'
}`} }`}
> >
{plan.popular && ( {plan.popular && (
<span className="text-[10px] font-bold uppercase tracking-widest text-[#D4A373] mb-3"> <span className="text-[11px] font-bold uppercase tracking-widest text-[#E8C39A] mb-3">
{t('landing.pricing.popular')} {t('landing.pricing.popular')}
</span> </span>
)} )}
<h4 className="text-[13px] font-medium tracking-wide text-white/80 mb-2"> <h4 className="text-[14px] font-medium tracking-wide text-[#F4F1EA] mb-2">
{t(`landing.pricing.${plan.key}.name`)} {t(`landing.pricing.${plan.key}.name`)}
</h4> </h4>
<div className="flex items-baseline gap-1 mb-2"> <div className="flex items-baseline gap-1 mb-2">
<span className="text-3xl font-serif">{plan.price}</span> <span className="text-3xl font-serif">{plan.price}</span>
{plan.period && <span className="text-sm text-white/70">{plan.period}</span>} {plan.period && <span className="text-sm text-white/80">{plan.period}</span>}
</div> </div>
{plan.hasTrial && ( {plan.hasTrial && (
<p className="text-[11px] font-semibold text-[#D4A373] mb-3"> <p className="text-[12px] font-semibold text-[#E8C39A] mb-3">
{t('landing.pricing.trialBadge', { days: trialDays })} {t('landing.pricing.trialBadge', { days: trialDays })}
</p> </p>
)} )}
<p className="text-sm text-white/70 mb-6">{t(`landing.pricing.${plan.key}.desc`)}</p> <p className="text-sm text-white/80 mb-6">{t(`landing.pricing.${plan.key}.desc`)}</p>
<ul className="space-y-2.5 mb-8 flex-1"> <ul className="space-y-2.5 mb-8 flex-1">
{plan.hasTrial && ( {plan.hasTrial && (
<li className="flex gap-2 text-xs text-[#D4A373]/90"> <li className="flex gap-2 text-xs text-[#E8C39A]">
<Check size={12} className="text-[#D4A373] mt-0.5 shrink-0" /> <Check size={12} className="text-[#E8C39A] mt-0.5 shrink-0" />
{t('landing.pricing.trialFeature', { days: trialDays })} {t('landing.pricing.trialFeature', { days: trialDays })}
</li> </li>
)} )}
@@ -586,8 +411,8 @@ export function LandingPage() {
}) })
if (!feat || feat.startsWith('landing.')) return null if (!feat || feat.startsWith('landing.')) return null
return ( return (
<li key={j} className="flex gap-2 text-sm text-white/80"> <li key={j} className="flex gap-2 text-sm text-[#F4F1EA]/90">
<Check size={12} className="text-[#D4A373] mt-0.5 shrink-0" /> <Check size={12} className="text-[#E8C39A] mt-0.5 shrink-0" />
{feat} {feat}
</li> </li>
) )
@@ -598,7 +423,7 @@ export function LandingPage() {
className={`py-3 rounded-xl text-center text-[13px] font-semibold transition-colors ${ className={`py-3 rounded-xl text-center text-[13px] font-semibold transition-colors ${
plan.popular plan.popular
? 'bg-[#F4F1EA] text-[#0B0A09] hover:bg-white' ? 'bg-[#F4F1EA] text-[#0B0A09] hover:bg-white'
: 'bg-white/10 text-white hover:bg-white/15' : 'bg-white/15 text-white hover:bg-white/20'
}`} }`}
> >
{plan.hasTrial {plan.hasTrial
@@ -633,48 +458,7 @@ export function LandingPage() {
</div> </div>
</section> </section>
<footer className="px-5 sm:px-8 py-14 border-t border-white/[0.06]"> </PublicSiteChrome>
<div className="max-w-6xl mx-auto flex flex-col md:flex-row justify-between gap-10">
<div className="max-w-xs">
<div className="flex items-center gap-2 mb-3">
<div className="w-7 h-7 bg-[#F4F1EA] text-[#0B0A09] flex items-center justify-center rounded-md">
<span className="font-serif font-bold text-sm">M</span>
</div>
<span className="font-serif text-lg">Memento</span>
</div>
<p className="text-sm text-white/60">{t('landing.footer.desc')}</p>
</div>
<div className="grid grid-cols-3 gap-10 text-sm">
{(['product', 'community', 'legal'] as const).map((section) => (
<div key={section}>
<p className="text-[13px] font-medium tracking-wide text-white/70 mb-3">
{t(`landing.footer.${section}.title`)}
</p>
<ul className="space-y-2 text-white/70">
{[0, 1, 2].map((j) => {
const label = t(`landing.footer.${section}.link${j}`)
const href = t(`landing.footer.${section}.link${j}Href`)
if (!label || label.startsWith('landing.')) return null
return (
<li key={j}>
{href.startsWith('/') ? (
<Link href={href} className="hover:text-white transition-colors">{label}</Link>
) : (
<a href={href} className="hover:text-white transition-colors">{label}</a>
)}
</li>
)
})}
</ul>
</div>
))}
</div>
</div>
<p className="max-w-6xl mx-auto mt-12 pt-8 border-t border-white/[0.06] text-[13px] text-white/70 tracking-wide">
© 2026 Memento. {t('landing.footer.rights')}
</p>
</footer>
</div>
) )
} }

View File

@@ -0,0 +1,267 @@
'use client'
import { motion, AnimatePresence } from 'motion/react'
import { Menu, X, Globe, ChevronDown } from 'lucide-react'
import Link from 'next/link'
import { useLanguage } from '@/lib/i18n'
import type { SupportedLanguage } from '@/lib/i18n/load-translations'
import { useEffect, useRef, useState, type ReactNode } from 'react'
const LANDING_LANGS: { code: SupportedLanguage; labelKey: string }[] = [
{ code: 'fr', labelKey: 'languages.fr' },
{ code: 'en', labelKey: 'languages.en' },
{ code: 'es', labelKey: 'languages.es' },
{ code: 'de', labelKey: 'languages.de' },
{ code: 'it', labelKey: 'languages.it' },
{ code: 'pt', labelKey: 'languages.pt' },
{ code: 'nl', labelKey: 'languages.nl' },
{ code: 'pl', labelKey: 'languages.pl' },
{ code: 'ru', labelKey: 'languages.ru' },
{ code: 'zh', labelKey: 'languages.zh' },
{ code: 'ja', labelKey: 'languages.ja' },
{ code: 'ko', labelKey: 'languages.ko' },
{ code: 'ar', labelKey: 'languages.ar' },
{ code: 'fa', labelKey: 'languages.fa' },
{ code: 'hi', labelKey: 'languages.hi' },
]
export type PublicSitePage = 'home' | 'pricing'
function resolvePublicHref(href: string, currentPage: PublicSitePage): string {
if (!href.startsWith('#')) return href
if (href === '#pricing' && currentPage === 'pricing') return '/pricing'
if (currentPage === 'home') return href
const id = href.replace(/^#/, '')
return id === 'pricing' ? '/pricing' : `/#${id}`
}
export function PublicSiteChrome({
children,
currentPage,
onHashNavigate,
}: {
children: ReactNode
currentPage: PublicSitePage
onHashNavigate?: (hash: string) => void
}) {
const { t, language, setLanguage } = useLanguage()
const [menuOpen, setMenuOpen] = useState(false)
const [langOpen, setLangOpen] = useState(false)
const langRef = useRef<HTMLDivElement>(null)
const NAV = [
{ href: '#product', label: t('landing.nav.secondBrain') },
{ href: '#echo', label: t('landing.nav.echo') },
{ href: '#agents', label: t('landing.nav.agents') },
{ href: '#pricing', label: t('landing.nav.pricing') },
]
useEffect(() => {
if (!langOpen) return
const onPointer = (e: MouseEvent) => {
if (langRef.current && !langRef.current.contains(e.target as Node)) setLangOpen(false)
}
const onKey = (e: KeyboardEvent) => {
if (e.key === 'Escape') setLangOpen(false)
}
document.addEventListener('mousedown', onPointer)
document.addEventListener('keydown', onKey)
return () => {
document.removeEventListener('mousedown', onPointer)
document.removeEventListener('keydown', onKey)
}
}, [langOpen])
useEffect(() => {
const root = document.querySelector<HTMLElement>('[data-public-scroll-root]')
if (!root) return
const prev = root.style.overflow
if (menuOpen) root.style.overflow = 'hidden'
else root.style.overflow = prev || ''
return () => { root.style.overflow = prev }
}, [menuOpen])
const goSection = (event: React.MouseEvent<HTMLAnchorElement>, hash: string) => {
setMenuOpen(false)
if (currentPage === 'home' && onHashNavigate) {
event.preventDefault()
onHashNavigate(hash)
window.history.replaceState(null, '', hash)
}
}
return (
<div className="min-h-screen bg-[#0B0A09] text-[#F4F1EA] font-[family-name:var(--font-manrope)] selection:bg-[#D4A373]/40 selection:text-white">
<nav className="fixed top-0 left-0 right-0 z-[100] px-5 sm:px-8 py-4 flex items-center justify-between bg-[#0B0A09]/70 backdrop-blur-xl border-b border-white/[0.06]">
<Link href="/" className="flex items-center gap-2.5 group">
<div className="w-9 h-9 bg-[#F4F1EA] text-[#0B0A09] flex items-center justify-center rounded-lg transition-transform group-hover:scale-105">
<span className="font-serif text-xl font-bold leading-none">M</span>
</div>
<span className="font-serif text-xl font-medium tracking-tight text-[#F4F1EA]">Memento</span>
</Link>
<div className="hidden lg:flex items-center gap-8">
{NAV.map((l) => (
<Link
key={l.href}
href={resolvePublicHref(l.href, currentPage)}
onClick={(event) => goSection(event, l.href)}
className={`text-[13px] transition-colors ${
(currentPage === 'pricing' && l.href === '#pricing')
? 'text-white'
: 'text-white/75 hover:text-white'
}`}
>
{l.label}
</Link>
))}
</div>
<div className="flex items-center gap-2 sm:gap-3">
<div ref={langRef} className="relative">
<button
type="button"
onClick={() => setLangOpen((o) => !o)}
aria-expanded={langOpen}
aria-haspopup="listbox"
aria-label={t('landing.nav.language')}
className="inline-flex items-center gap-1.5 px-3 py-2 rounded-full border border-white/15 text-[12px] text-white/70 hover:text-white hover:border-white/30 transition-colors"
>
<Globe size={14} />
<span className="uppercase font-semibold tracking-wide">{language}</span>
<ChevronDown size={12} className={`opacity-60 transition-transform ${langOpen ? 'rotate-180' : ''}`} />
</button>
<AnimatePresence>
{langOpen && (
<motion.ul
role="listbox"
initial={{ opacity: 0, y: 6 }}
animate={{ opacity: 1, y: 0 }}
exit={{ opacity: 0, y: 6 }}
transition={{ duration: 0.15 }}
className="absolute end-0 mt-2 w-48 max-h-72 overflow-y-auto rounded-2xl border border-white/10 bg-[#141210] shadow-2xl py-1.5 z-[110]"
>
{LANDING_LANGS.map((lang) => (
<li key={lang.code} role="option" aria-selected={language === lang.code}>
<button
type="button"
onClick={() => {
setLanguage(lang.code)
setLangOpen(false)
}}
className={`w-full text-start px-4 py-2.5 text-[13px] transition-colors ${
language === lang.code
? 'bg-[#D4A373]/15 text-[#D4A373]'
: 'text-white/70 hover:bg-white/5 hover:text-white'
}`}
>
{t(lang.labelKey)}
</button>
</li>
))}
</motion.ul>
)}
</AnimatePresence>
</div>
<Link href="/login" className="hidden sm:inline text-[13px] text-white/75 hover:text-white transition-colors px-2">
{t('landing.nav.login')}
</Link>
<Link
href="/register"
className="hidden sm:inline-flex items-center gap-2 px-5 py-2.5 rounded-full bg-[#F4F1EA] text-[#0B0A09] text-[13px] font-semibold hover:bg-white transition-colors"
>
{t('landing.nav.cta')}
</Link>
<button
type="button"
aria-label={menuOpen ? t('landing.nav.closeMenu') : t('landing.nav.openMenu')}
onClick={() => setMenuOpen((o) => !o)}
className="lg:hidden w-10 h-10 rounded-full border border-white/15 flex items-center justify-center text-white/80"
>
{menuOpen ? <X size={18} /> : <Menu size={18} />}
</button>
</div>
</nav>
<AnimatePresence>
{menuOpen && (
<motion.div
initial={{ opacity: 0 }}
animate={{ opacity: 1 }}
exit={{ opacity: 0 }}
className="fixed inset-0 z-[99] bg-[#0B0A09] pt-24 px-8 lg:hidden"
>
<div className="flex flex-col gap-1">
{NAV.map((l) => (
<Link
key={l.href}
href={resolvePublicHref(l.href, currentPage)}
onClick={(event) => goSection(event, l.href)}
className="py-4 text-3xl font-serif border-b border-white/10"
>
{l.label}
</Link>
))}
<Link
href="/login"
onClick={() => setMenuOpen(false)}
className="mt-10 py-4 text-2xl font-serif text-white/80 text-center border-b border-white/10"
>
{t('landing.nav.login')}
</Link>
<Link href="/register" onClick={() => setMenuOpen(false)} className="mt-4 py-4 rounded-2xl bg-[#F4F1EA] text-[#0B0A09] text-center font-semibold">
{t('landing.nav.cta')}
</Link>
</div>
</motion.div>
)}
</AnimatePresence>
<div className={currentPage === 'home' ? '' : 'pt-20'}>
{children}
</div>
<footer className="px-5 sm:px-8 py-14 border-t border-white/[0.06]">
<div className="max-w-6xl mx-auto flex flex-col md:flex-row justify-between gap-10">
<div className="max-w-xs">
<div className="flex items-center gap-2 mb-3">
<div className="w-7 h-7 bg-[#F4F1EA] text-[#0B0A09] flex items-center justify-center rounded-md">
<span className="font-serif font-bold text-sm">M</span>
</div>
<span className="font-serif text-lg">Memento</span>
</div>
<p className="text-sm text-white/60">{t('landing.footer.desc')}</p>
</div>
<div className="grid grid-cols-3 gap-10 text-sm">
{(['product', 'community', 'legal'] as const).map((section) => (
<div key={section}>
<p className="text-[13px] font-medium tracking-wide text-white/70 mb-3">
{t(`landing.footer.${section}.title`)}
</p>
<ul className="space-y-2 text-white/70">
{[0, 1, 2].map((j) => {
const label = t(`landing.footer.${section}.link${j}`)
const href = t(`landing.footer.${section}.link${j}Href`)
if (!label || label.startsWith('landing.')) return null
const resolved = resolvePublicHref(href, currentPage)
return (
<li key={j}>
{resolved.startsWith('/') ? (
<Link href={resolved} className="hover:text-white transition-colors">{label}</Link>
) : (
<a href={resolved} className="hover:text-white transition-colors">{label}</a>
)}
</li>
)
})}
</ul>
</div>
))}
</div>
</div>
<p className="max-w-6xl mx-auto mt-12 pt-8 border-t border-white/[0.06] text-[13px] text-white/70 tracking-wide">
© 2026 Memento. {t('landing.footer.rights')}
</p>
</footer>
</div>
)
}

View File

@@ -11,6 +11,12 @@ import { format } from 'date-fns';
import { motion } from 'motion/react'; import { motion } from 'motion/react';
import { BillingHistory } from './billing-history'; import { BillingHistory } from './billing-history';
import { SUBSCRIPTION_TRIAL_DAYS } from '@/lib/billing/trial-constants'; import { SUBSCRIPTION_TRIAL_DAYS } from '@/lib/billing/trial-constants';
import {
DEFAULT_PRICES,
annualDiscountPercent,
formatBillingAmount,
yearToMonthlyEquivalent,
} from '@/lib/billing/price-catalog';
type Tier = 'PRO' | 'BUSINESS'; type Tier = 'PRO' | 'BUSINESS';
type Interval = 'month' | 'year'; type Interval = 'month' | 'year';
@@ -285,12 +291,36 @@ export function BillingPlans() {
const trialCta = (fallback: string) => const trialCta = (fallback: string) =>
trialEligible ? t('billing.startTrialCta', { days: trialDays }) : fallback; trialEligible ? t('billing.startTrialCta', { days: trialDays }) : fallback;
const proMonth = status?.prices?.PRO?.month ?? DEFAULT_PRICES.PRO.month;
const proYear = status?.prices?.PRO?.year ?? DEFAULT_PRICES.PRO.year;
const businessMonth = status?.prices?.BUSINESS?.month ?? DEFAULT_PRICES.BUSINESS.month;
const businessYear = status?.prices?.BUSINESS?.year ?? DEFAULT_PRICES.BUSINESS.year;
const savePercent = annualDiscountPercent(proMonth.amount, proYear.amount);
const billed = (month: typeof proMonth, year: typeof proYear) => {
if (interval === 'month') {
return {
price: month.display,
period: t('billing.perMonth'),
yearHint: null as string | null,
};
}
return {
price: formatBillingAmount(yearToMonthlyEquivalent(year.amount), year.currency),
period: t('landing.pricing.perMonthAnnual'),
yearHint: t('billing.billedYearTotal', { price: year.display }),
};
};
const proBilled = billed(proMonth, proYear);
const businessBilled = billed(businessMonth, businessYear);
const plans = [ const plans = [
{ {
id: 'free', id: 'free',
name: t('billing.freePlan'), name: t('billing.freePlan'),
price: t('billing.freePrice') || 'Gratuit', price: t('billing.freePrice') || 'Gratuit',
period: '', period: '',
yearHint: null as string | null,
description: t('billing.freeDescription') || 'Pour découvrir Memento.', description: t('billing.freeDescription') || 'Pour découvrir Memento.',
features: [ features: [
t('billing.freeF1'), t('billing.freeF1'),
@@ -313,9 +343,9 @@ export function BillingPlans() {
{ {
id: 'pro', id: 'pro',
name: t('billing.proPlan'), name: t('billing.proPlan'),
price: status?.prices?.PRO?.[interval]?.display ?? price: proBilled.price,
(interval === 'month' ? (t('billing.proPrice') || '9,90€') : (t('billing.proAnnualPrice') || '99€')), period: proBilled.period,
period: interval === 'month' ? t('billing.perMonth') : t('billing.perYear'), yearHint: proBilled.yearHint,
description: t('billing.proDescription') || 'Pour les consultants et créateurs exigeants.', description: t('billing.proDescription') || 'Pour les consultants et créateurs exigeants.',
features: [ features: [
...(trialEligible ? [t('billing.trialFeature', { days: trialDays })] : []), ...(trialEligible ? [t('billing.trialFeature', { days: trialDays })] : []),
@@ -337,9 +367,9 @@ export function BillingPlans() {
{ {
id: 'business', id: 'business',
name: t('billing.businessPlan'), name: t('billing.businessPlan'),
price: status?.prices?.BUSINESS?.[interval]?.display ?? price: businessBilled.price,
(interval === 'month' ? (t('billing.businessPrice') || '29,90€') : (t('billing.businessAnnualPrice') || '299€')), period: businessBilled.period,
period: interval === 'month' ? t('billing.perMonth') : t('billing.perYear'), yearHint: businessBilled.yearHint,
features: [ features: [
...(trialEligible ? [t('billing.trialFeature', { days: trialDays })] : []), ...(trialEligible ? [t('billing.trialFeature', { days: trialDays })] : []),
t('billing.businessFeature1'), t('billing.businessFeature1'),
@@ -361,6 +391,7 @@ export function BillingPlans() {
name: t('billing.enterpriseTitle') || 'Enterprise', name: t('billing.enterpriseTitle') || 'Enterprise',
price: t('billing.contactSales') || 'Sur devis', price: t('billing.contactSales') || 'Sur devis',
period: '', period: '',
yearHint: null as string | null,
description: t('billing.enterpriseDescription') || 'Crédits illimités ou pool dédié, connexion unique pour léquipe, support prioritaire.', description: t('billing.enterpriseDescription') || 'Crédits illimités ou pool dédié, connexion unique pour léquipe, support prioritaire.',
features: [ features: [
t('billing.enterpriseFeature1'), t('billing.enterpriseFeature1'),
@@ -765,7 +796,11 @@ export function BillingPlans() {
)} )}
> >
{t('billing.annual')} {t('billing.annual')}
<span className="ms-1 text-primary/80 dark:text-primary">{t('billing.savePercent')}</span> {savePercent > 0 && (
<span className="ms-1 text-primary/80 dark:text-primary">
{t('billing.savePercent', { percent: savePercent })}
</span>
)}
</button> </button>
</div> </div>
) : ( ) : (
@@ -800,6 +835,9 @@ export function BillingPlans() {
<span className="text-4xl font-serif font-bold text-ink">{plan.price}</span> <span className="text-4xl font-serif font-bold text-ink">{plan.price}</span>
<span className="text-concrete text-xs font-light italic">{plan.period}</span> <span className="text-concrete text-xs font-light italic">{plan.period}</span>
</div> </div>
{plan.yearHint && (
<p className="text-xs text-concrete font-light">{plan.yearHint}</p>
)}
<p className="text-xs text-concrete font-light leading-relaxed pe-4">{plan.description}</p> <p className="text-xs text-concrete font-light leading-relaxed pe-4">{plan.description}</p>
</div> </div>

View File

@@ -0,0 +1,47 @@
export type BillingTier = 'PRO' | 'BUSINESS'
export type BillingInterval = 'month' | 'year'
export interface DynamicPrice {
display: string
amount: number
currency: string
}
export const DEFAULT_PRICES: Record<BillingTier, Record<BillingInterval, DynamicPrice>> = {
PRO: {
month: { display: '9,90 €', amount: 9.9, currency: 'EUR' },
year: { display: '99,00 €', amount: 99, currency: 'EUR' },
},
BUSINESS: {
month: { display: '29,90 €', amount: 29.9, currency: 'EUR' },
year: { display: '299,00 €', amount: 299, currency: 'EUR' },
},
}
export function formatBillingAmount(amount: number, currency = 'EUR'): string {
const c = currency.toUpperCase()
if (c === 'EUR') {
return `${amount.toLocaleString('fr-FR', { minimumFractionDigits: 2, maximumFractionDigits: 2 })} €`
}
if (c === 'USD') {
return `$${amount.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 })}`
}
if (c === 'GBP') {
return `£${amount.toLocaleString('en-GB', { minimumFractionDigits: 2, maximumFractionDigits: 2 })}`
}
return `${amount.toLocaleString('fr-FR', { minimumFractionDigits: 2, maximumFractionDigits: 2 })} ${c}`
}
/** Prix annuel ramené au mois (99 € / an → 8,25 € / mois). */
export function yearToMonthlyEquivalent(yearAmount: number): number {
return Math.round((yearAmount / 12) * 100) / 100
}
/** Remise réelle : 9,90 € × 12 vs 99 € / an → 17 %. */
export function annualDiscountPercent(monthlyAmount: number, yearlyAmount: number): number {
const paidMonthlyForYear = monthlyAmount * 12
if (paidMonthlyForYear <= 0) return 0
const raw = (1 - yearlyAmount / paidMonthlyForYear) * 100
if (!Number.isFinite(raw) || raw <= 0) return 0
return Math.round(raw)
}

View File

@@ -1,26 +1,16 @@
import type { SubscriptionTier } from '@/lib/plan-entitlements'; import type { SubscriptionTier } from '@/lib/plan-entitlements';
import { stripe } from '@/lib/stripe'; import { stripe } from '@/lib/stripe';
import { getConfigValue } from '@/lib/config'; import { getConfigValue } from '@/lib/config';
import {
DEFAULT_PRICES,
formatBillingAmount,
type BillingInterval,
type BillingTier,
type DynamicPrice,
} from '@/lib/billing/price-catalog';
export type BillingTier = 'PRO' | 'BUSINESS'; export type { BillingInterval, BillingTier, DynamicPrice };
export type BillingInterval = 'month' | 'year'; export { DEFAULT_PRICES, formatBillingAmount };
export interface DynamicPrice {
display: string;
amount: number;
currency: string;
}
export const DEFAULT_PRICES: Record<BillingTier, Record<BillingInterval, DynamicPrice>> = {
PRO: {
month: { display: '9,90 €', amount: 9.90, currency: 'EUR' },
year: { display: '99,00 €', amount: 99.00, currency: 'EUR' },
},
BUSINESS: {
month: { display: '29,90 €', amount: 29.90, currency: 'EUR' },
year: { display: '299,00 €', amount: 299.00, currency: 'EUR' },
},
};
export async function isBillingEnabled(): Promise<boolean> { export async function isBillingEnabled(): Promise<boolean> {
const flag = await getConfigValue('BILLING_ENABLED', ''); const flag = await getConfigValue('BILLING_ENABLED', '');
@@ -54,19 +44,11 @@ export async function getDynamicPrices(): Promise<Record<BillingTier, Record<Bil
if (price.unit_amount !== null && price.unit_amount !== undefined) { if (price.unit_amount !== null && price.unit_amount !== undefined) {
const amount = price.unit_amount / 100; const amount = price.unit_amount / 100;
const currency = price.currency.toUpperCase(); const currency = price.currency.toUpperCase();
result[tier][interval] = {
let display = ''; display: formatBillingAmount(amount, currency),
if (currency === 'EUR') { amount,
display = `${amount.toLocaleString('fr-FR', { minimumFractionDigits: 0, maximumFractionDigits: 2 })} €`; currency,
} else if (currency === 'USD') { };
display = `$${amount.toLocaleString('en-US', { minimumFractionDigits: 0, maximumFractionDigits: 2 })}`;
} else if (currency === 'GBP') {
display = `£${amount.toLocaleString('en-GB', { minimumFractionDigits: 0, maximumFractionDigits: 2 })}`;
} else {
display = `${amount} ${currency}`;
}
result[tier][interval] = { display, amount, currency };
} }
} catch (err) { } catch (err) {
console.error(`[stripe-prices] Failed to retrieve price for ${tier}/${interval}:`, err); console.error(`[stripe-prices] Failed to retrieve price for ${tier}/${interval}:`, err);

View File

@@ -2190,7 +2190,7 @@
"custom": "مخصص" "custom": "مخصص"
}, },
"typeDescriptions": { "typeDescriptions": {
"scraper": جمع البيانات من عدة مواقع وينشئ ملخصًا", "scraper": قرأ عدة مواقع ويكتب ملخصًا",
"researcher": "يبحث عن معلومات حول موضوع معين", "researcher": "يبحث عن معلومات حول موضوع معين",
"monitor": "يراقب دفتر ملاحظات ويحلل الملاحظات", "monitor": "يراقب دفتر ملاحظات ويحلل الملاحظات",
"slideGenerator": "إنشاء عرض تقديمي لـ PowerPoint من الملاحظات", "slideGenerator": "إنشاء عرض تقديمي لـ PowerPoint من الملاحظات",
@@ -2203,7 +2203,7 @@
"namePlaceholder": "مثال: مراقبة الذكاء الاصطناعي الثلاثاء", "namePlaceholder": "مثال: مراقبة الذكاء الاصطناعي الثلاثاء",
"description": "الوصف (اختياري)", "description": "الوصف (اختياري)",
"descriptionPlaceholder": "ملخص أخبار الذكاء الاصطناعي الأسبوعي", "descriptionPlaceholder": "ملخص أخبار الذكاء الاصطناعي الأسبوعي",
"urlsLabel": "روابط URLs للجمع", "urlsLabel": "عناوين الصفحات للقراءة",
"urlsOptional": "(اختياري)", "urlsOptional": "(اختياري)",
"sourceNotebook": "دفتر الملاحظات للمراقبة", "sourceNotebook": "دفتر الملاحظات للمراقبة",
"selectNotebook": "اختر دفتر ملاحظات...", "selectNotebook": "اختر دفتر ملاحظات...",
@@ -2248,7 +2248,7 @@
"notifyEmail": "إشعار بالبريد الإلكتروني", "notifyEmail": "إشعار بالبريد الإلكتروني",
"notifyEmailHint": "استلام بريد إلكتروني بنتائج الوكيل بعد كل تشغيل", "notifyEmailHint": "استلام بريد إلكتروني بنتائج الوكيل بعد كل تشغيل",
"includeImages": "تضمين الصور", "includeImages": "تضمين الصور",
"includeImagesHint": "استخراج الصور من الصفحات المجمعة وإرفاقها بالملاحظة المولدة", "includeImagesHint": "أخذ الصور من الصفحات المقروءة وإرفاقها بالملاحظة",
"back": "رجوع", "back": "رجوع",
"configuration": "التكوين", "configuration": "التكوين",
"options": "الخيارات", "options": "الخيارات",
@@ -2347,15 +2347,15 @@
}, },
"veilleAI": { "veilleAI": {
"name": "مراقبة الذكاء الاصطناعي", "name": "مراقبة الذكاء الاصطناعي",
"description": جمع البيانات من 5 مواقع متخصصة في الذكاء الاصطناعي وينشئ ملخصًا أسبوعيًا." "description": قرأ 5 مواقع للذكاء الاصطناعي ويكتب ملخصًا أسبوعيًا."
}, },
"veilleTech": { "veilleTech": {
"name": "مراقبة التقنية", "name": "مراقبة التقنية",
"description": جمع البيانات من مواقع تقنية رئيسية وينشئ ملخص أخبار." "description": قرأ مواقع تقنية رئيسية ويكتب ملخص أخبار."
}, },
"veilleDev": { "veilleDev": {
"name": "مراقبة التطوير", "name": "مراقبة التطوير",
"description": جمع البيانات من مواقع التطوير ويلخص التقنيات والأطر الجديدة." "description": قرأ مواقع التطوير ويلخص ما هو جديد."
}, },
"surveillant": { "surveillant": {
"name": "مراقب الملاحظات", "name": "مراقب الملاحظات",
@@ -2431,15 +2431,15 @@
"btnLabel": "مساعدة", "btnLabel": "مساعدة",
"close": "إغلاق", "close": "إغلاق",
"whatIsAgent": "ما هو الوكيل؟", "whatIsAgent": "ما هو الوكيل؟",
"whatIsAgentContent": "An **agent** is an AI assistant that runs automatically to perform tasks for you. It has access to **tools** (web search, web scraping, note reading...) and produces a **note** with its results.\n\nThink of it as a small autonomous worker: you give it a mission, it researches or scrapes information, then writes a structured note you can read later.", "whatIsAgentContent": "An **agent** is an AI assistant that runs automatically to perform tasks for you. It has access to **tools** (web search, reading pages, note reading...) and produces a **note** with its results.\n\nThink of it as a small autonomous worker: you give it a mission, it researches or reads pages, then writes a structured note you can read later.",
"howToUse": "كيف تستخدم وكيلًا؟", "howToUse": "كيف تستخدم وكيلًا؟",
"howToUseContent": "1. انقر على **\"وكيل جديد\"** (أو ابدأ من **قالب** أسفل الصفحة).", "howToUseContent": "1. انقر على **\"وكيل جديد\"** (أو ابدأ من **قالب** أسفل الصفحة).",
"types": "أنواع الوكلاء", "types": "أنواع الوكلاء",
"typesContent": "### Researcher\nSearches the web on a **topic you define** and creates a structured note with sources and references.\n\n- **Fields:** name, research topic (e.g. \"Latest advances in quantum computing\")\n- **Default tools:** web search, web scraping, note search, note creation\n- **Requirements:** a web search provider must be configured (SearXNG or Brave Search)\n\n### Monitor (Scraper)\nScrapes a **list of URLs** you specify and produces a summary of their content.\n\n- **Fields:** name, list of URLs (e.g. tech news sites, blogs...)\n- **Default tools:** web scraping, note creation\n- **Use case:** weekly tech watch, competitor monitoring, blog roundups\n\n### Observer (Notebook Monitor)\nReads notes from a **notebook you select** and produces analysis, connections, and suggestions.\n\n- **Fields:** name, source notebook (the one to analyze)\n- **Default tools:** note search, note read, note creation\n- **Use case:** find connections between your notes, get reading suggestions, detect recurring themes\n\n### Custom\nA blank canvas: you write your own **prompt** and pick your own **tools**.\n\n- **Fields:** name, description, custom instructions (in Advanced mode)\n- **No default tools** — you choose exactly what the agent needs\n- **Use case:** anything creative or specific that doesn't fit the other types", "typesContent": "### Researcher\nSearches the web on a **topic you define** and creates a structured note with sources and references.\n\n- **Fields:** name, research topic (e.g. \"Latest advances in quantum computing\")\n- **Default tools:** web search, reading pages, note search, note creation\n- **Requirements:** a web search provider must be configured (SearXNG or Brave Search)\n\n### Monitor\nReads a **list of pages** you give it and writes a summary.\n\n- **Fields:** name, list of URLs (e.g. tech news sites, blogs...)\n- **Default tools:** reading pages, note creation\n- **Use case:** weekly tech watch, competitor monitoring, blog roundups\n\n### Observer (Notebook Monitor)\nReads notes from a **notebook you select** and produces analysis, connections, and suggestions.\n\n- **Fields:** name, source notebook (the one to analyze)\n- **Default tools:** note search, note read, note creation\n- **Use case:** find connections between your notes, get reading suggestions, detect recurring themes\n\n### Custom\nA blank canvas: you write your own **prompt** and pick your own **tools**.\n\n- **Fields:** name, description, custom instructions (in Advanced mode)\n- **No default tools** — you choose exactly what the agent needs\n- **Use case:** anything creative or specific that doesn't fit the other types",
"advanced": "الوضع المتقدم (تعليمات الذكاء الاصطناعي، الحد الأقصى للتكرارات)", "advanced": "الوضع المتقدم (تعليمات الذكاء الاصطناعي، الحد الأقصى للتكرارات)",
"advancedContent": "انقر على **\"الوضع المتقدم\"** أسفل النموذج للوصول إلى إعدادات إضافية.", "advancedContent": "انقر على **\"الوضع المتقدم\"** أسفل النموذج للوصول إلى إعدادات إضافية.",
"tools": "الأدوات المتاحة (التفاصيل)", "tools": "الأدوات المتاحة (التفاصيل)",
"toolsContent": "When advanced mode is enabled, you can choose exactly which tools the agent can use.\n\n### Web Search\nAllows the agent to **search the internet** via SearXNG or Brave Search.\n\n- **What it does:** The agent formulates a query, gets search results, and can then scrape the most relevant pages.\n- **When to enable:** When the agent needs to find information on a topic (Researcher or Custom type).\n- **Configuration required:** SearXNG (with JSON format enabled) or a Brave Search API key. Configurable in **Admin > Agent Tools**.\n- **Example:** The agent searches \"React Server Components best practices 2025\", gets 10 results, then scrapes the top 3.\n\n### Web Scrape\nAllows the agent to **extract text content from a web page** given its URL.\n\n- **What it does:** The agent visits a URL and retrieves the structured text (headings, paragraphs, lists). Ads, menus and footers are typically filtered out.\n- **When to enable:** For the Monitor type (mandatory), or any agent that needs to read web pages.\n- **Configuration:** Works out of the box, but a **Jina Reader API key** improves quality and removes rate limits. Configurable in **Admin > Agent Tools**.\n- **Example:** The agent scrapes 5 tech blogs and produces a synthesized summary.\n\n### Note Search\nAllows the agent to **search your existing notes**.\n\n- **What it does:** The agent performs a text search across all your notes (or a specific notebook).\n- **When to enable:** For Observer-type agents, or any agent that needs to cross-reference information with your notes.\n- **Configuration:** None — works immediately.\n- **Example:** The agent searches all notes containing \"machine learning\" to see what you've already written on the topic.\n\n### Read Note\nAllows the agent to **read the full content of a specific note**.\n\n- **What it does:** After finding a note (via Note Search), the agent can read its entire content to analyze or use it.\n- **When to enable:** As a companion to Note Search. Enable both together so the agent can search AND read.\n- **Configuration:** None.\n- **Example:** The agent finds 5 notes about \"productivity\", reads them all, and writes a synthesis.\n\n### Create Note\nAllows the agent to **write a new note** in your target notebook.\n\n- **What it does:** The agent creates a note with a title and content. This is how results end up in your notebooks.\n- **When to enable:** Almost always — without this tool, the agent cannot save its results. **Leave it enabled by default.**\n- **Configuration:** None.\n- **Example:** The agent creates a note \"Tech Watch - Week 16\" with a summary of 5 articles.\n\n### Fetch URL\nAllows the agent to **download the raw content of a URL** (HTML, JSON, text...).\n\n- **What it does:** Unlike scraping which extracts clean text, Fetch URL retrieves raw content. Useful for APIs, JSON files, or non-standard pages.\n- **When to enable:** When the agent needs to query REST APIs, read RSS feeds, or access raw data.\n- **Configuration:** None.\n- **Example:** The agent queries the GitHub API to list the latest commits of a project.\n\n### Memory\nAllows the agent to **access its previous execution history**.\n\n- **What it does:** The agent can search through results from past runs. This lets it compare, track changes, or avoid repeating the same information.\n- **When to enable:** For agents that run regularly and need to maintain continuity between executions.\n- **Configuration:** None.\n- **Example:** The agent compares this week's news with last week's and highlights what's new.", "toolsContent": "When advanced mode is enabled, you can choose exactly which tools the agent can use.\n\n### Web Search\nAllows the agent to **search the internet** via SearXNG or Brave Search.\n\n- **What it does:** The agent formulates a query, gets search results, then can read the most useful pages.\n- **When to enable:** When the agent needs to find information on a topic (Researcher or Custom type).\n- **Configuration required:** SearXNG (with JSON format enabled) or a Brave Search API key. Configurable in **Admin > Agent Tools**.\n- **Example:** The agent searches \"React Server Components best practices 2025\", gets 10 results, then reads the top 3.\n\n### Read web pages\nAllows the agent to **read the text of a page** from its address.\n\n- **What it does:** The agent visits a URL and retrieves the structured text (headings, paragraphs, lists). Ads, menus and footers are typically filtered out.\n- **When to enable:** For the Monitor type (mandatory), or any agent that needs to read web pages.\n- **Configuration:** Works out of the box, but a **Jina Reader API key** improves quality and removes rate limits. Configurable in **Admin > Agent Tools**.\n- **Example:** The agent scrapes 5 tech blogs and produces a synthesized summary.\n\n### Note Search\nAllows the agent to **search your existing notes**.\n\n- **What it does:** The agent performs a text search across all your notes (or a specific notebook).\n- **When to enable:** For Observer-type agents, or any agent that needs to cross-reference information with your notes.\n- **Configuration:** None — works immediately.\n- **Example:** The agent searches all notes containing \"machine learning\" to see what you've already written on the topic.\n\n### Read Note\nAllows the agent to **read the full content of a specific note**.\n\n- **What it does:** After finding a note (via Note Search), the agent can read its entire content to analyze or use it.\n- **When to enable:** As a companion to Note Search. Enable both together so the agent can search AND read.\n- **Configuration:** None.\n- **Example:** The agent finds 5 notes about \"productivity\", reads them all, and writes a synthesis.\n\n### Create Note\nAllows the agent to **write a new note** in your target notebook.\n\n- **What it does:** The agent creates a note with a title and content. This is how results end up in your notebooks.\n- **When to enable:** Almost always — without this tool, the agent cannot save its results. **Leave it enabled by default.**\n- **Configuration:** None.\n- **Example:** The agent creates a note \"Tech Watch - Week 16\" with a summary of 5 articles.\n\n### Fetch URL\nAllows the agent to **download the raw content of a URL** (HTML, JSON, text...).\n\n- **What it does:** Unlike scraping which extracts clean text, Fetch URL retrieves raw content. Useful for APIs, JSON files, or non-standard pages.\n- **When to enable:** When the agent needs to query REST APIs, read RSS feeds, or access raw data.\n- **Configuration:** None.\n- **Example:** The agent queries the GitHub API to list the latest commits of a project.\n\n### Memory\nAllows the agent to **access its previous execution history**.\n\n- **What it does:** The agent can search through results from past runs. This lets it compare, track changes, or avoid repeating the same information.\n- **When to enable:** For agents that run regularly and need to maintain continuity between executions.\n- **Configuration:** None.\n- **Example:** The agent compares this week's news with last week's and highlights what's new.",
"frequency": "التكرار والجدولة", "frequency": "التكرار والجدولة",
"frequencyContent": "| التكرار | السلوك\n|-----------|----------\n| **يدوي** | تنقر بنفسك على \"تشغيل\".", "frequencyContent": "| التكرار | السلوك\n|-----------|----------\n| **يدوي** | تنقر بنفسك على \"تشغيل\".",
"targetNotebook": "دفتر الملاحظات المستهدف", "targetNotebook": "دفتر الملاحظات المستهدف",
@@ -2447,7 +2447,7 @@
"templates": "القوالب", "templates": "القوالب",
"templatesContent": "Templates are pre-configured agents ready to install in one click. You'll find them at the **bottom of the Agents page**.\n\nAvailable templates include:\n\n- **AI Watch** — weekly AI news roundup from 5 specialized sites\n- **Tech Watch** — general tech news summary\n- **Dev Watch** — developer news and new frameworks\n- **Note Observer** — analyzes a notebook and suggests connections\n- **Topic Researcher** — deep research on a specific topic\n\nOnce installed, you can edit the agent to customize it.", "templatesContent": "Templates are pre-configured agents ready to install in one click. You'll find them at the **bottom of the Agents page**.\n\nAvailable templates include:\n\n- **AI Watch** — weekly AI news roundup from 5 specialized sites\n- **Tech Watch** — general tech news summary\n- **Dev Watch** — developer news and new frameworks\n- **Note Observer** — analyzes a notebook and suggests connections\n- **Topic Researcher** — deep research on a specific topic\n\nOnce installed, you can edit the agent to customize it.",
"tips": "نصائح وحل المشكلات", "tips": "نصائح وحل المشكلات",
"tipsContent": "- **Start with a template** and customize it — it's the fastest way to get a working agent\n- **Test with \"Manual\"** frequency before enabling automatic scheduling\n- **A \"Researcher\" agent requires a web search provider** — configure SearXNG (JSON format) or Brave Search in **Admin > Agent Tools**\n- **If an agent fails**, click on its card then **History** to see the execution log and tool traces\n- **The \"Enabled/Disabled\" toggle** lets you pause an agent without deleting it\n- **Web scraping quality** improves with a Jina Reader API key (optional, in Admin > Agent Tools)\n- **Combine \"Note Search\" + \"Read Note\"** so the agent can find AND analyze your notes' content\n- **Enable \"Memory\"** if your agent runs regularly — it will avoid repeating the same information across runs", "tipsContent": "- **Start with a template** and customize it — it's the fastest way to get a working agent\n- **Test with \"Manual\"** frequency before enabling automatic scheduling\n- **A \"Researcher\" agent requires a web search provider** — configure SearXNG (JSON format) or Brave Search in **Admin > Agent Tools**\n- **If an agent fails**, click on its card then **History** to see the execution log and tool traces\n- **The \"Enabled/Disabled\" toggle** lets you pause an agent without deleting it\n- **Page-reading quality** improves with a Jina Reader API key (optional, in Admin > Agent Tools)\n- **Combine \"Note Search\" + \"Read Note\"** so the agent can find AND analyze your notes' content\n- **Enable \"Memory\"** if your agent runs regularly — it will avoid repeating the same information across runs",
"tooltips": { "tooltips": {
"agentType": "اختر نوع المهمة التي سيقوم بها الوكيل. كل نوع لديه قدرات وحقول مختلفة.", "agentType": "اختر نوع المهمة التي سيقوم بها الوكيل. كل نوع لديه قدرات وحقول مختلفة.",
"researchTopic": "الموضوع الذي سيبحث عنه الوكيل على الويب. كن محددًا للحصول على نتائج أفضل.", "researchTopic": "الموضوع الذي سيبحث عنه الوكيل على الويب. كن محددًا للحصول على نتائج أفضل.",
@@ -3176,7 +3176,8 @@
"fetchStatusFailed": "تعذر جلب حالة الفوترة", "fetchStatusFailed": "تعذر جلب حالة الفوترة",
"fetchQuotasFailed": "تعذر جلب الحصص", "fetchQuotasFailed": "تعذر جلب الحصص",
"fetchInvoicesFailed": "تعذر تحميل سجل الفوترة.", "fetchInvoicesFailed": "تعذر تحميل سجل الفوترة.",
"savePercent": "وفّر ~17%", "savePercent": "وفّر ~{percent}%",
"billedYearTotal": "أي {price} في السنة",
"cancelSubscription": "إلغاء الاشتراك", "cancelSubscription": "إلغاء الاشتراك",
"changeOffer": "تغيير العرض", "changeOffer": "تغيير العرض",
"downgradeToFree": "العودة إلى العرض المجاني", "downgradeToFree": "العودة إلى العرض المجاني",
@@ -3385,7 +3386,7 @@
"feature5": "مرافقة عند التثبيت" "feature5": "مرافقة عند التثبيت"
}, },
"basicPrice": "مجاني", "basicPrice": "مجاني",
"savePercent": "وفّر حوالي 17%", "savePercent": "وفّر حوالي {percent}%",
"proMonthly": "9,90€", "proMonthly": "9,90€",
"proAnnualMonthly": "8,25€", "proAnnualMonthly": "8,25€",
"businessMonthly": "29,90€", "businessMonthly": "29,90€",
@@ -3665,7 +3666,7 @@
"mappingHint": "قد يستغرق هذا من دقيقة إلى ثلاث دقائق. يمكنك متابعة التصفح؛ ستتحدث الصفحة تلقائياً.", "mappingHint": "قد يستغرق هذا من دقيقة إلى ثلاث دقائق. يمكنك متابعة التصفح؛ ستتحدث الصفحة تلقائياً.",
"analyzeNow": "تحديث المواضيع", "analyzeNow": "تحديث المواضيع",
"emptyNeedMoreNotes": "أضف {count} ملاحظات أخرى لتجميع مواضيعك (الحد الأدنى 10).", "emptyNeedMoreNotes": "أضف {count} ملاحظات أخرى لتجميع مواضيعك (الحد الأدنى 10).",
"embeddingsHint": "فقط {indexed} من أصل {total} ملاحظة مفهرسة للذكاء الاصطناعي.", "embeddingsHint": "فقط {indexed} من أصل {total} ملاحظة جاهزة للتجميع حسب الموضوع.",
"vsGraphHint": "ليس هذا «خريطة الروابط»: هنا الذكاء الاصطناعي يجمع حسب المعنى وليس الروابط.", "vsGraphHint": "ليس هذا «خريطة الروابط»: هنا الذكاء الاصطناعي يجمع حسب المعنى وليس الروابط.",
"openGraphMap": "فتح خريطة الروابط", "openGraphMap": "فتح خريطة الروابط",
"analysisFailed": "فشل التحليل. تحقق من إعدادات الذكاء الاصطناعي.", "analysisFailed": "فشل التحليل. تحقق من إعدادات الذكاء الاصطناعي.",
@@ -4492,7 +4493,7 @@
"convertSuccess": "اكتمل التحويل! تم إنشاء دفتر مرتبط.", "convertSuccess": "اكتمل التحويل! تم إنشاء دفتر مرتبط.",
"convertToNotebook": "تحويل إلى دفتر", "convertToNotebook": "تحويل إلى دفتر",
"converting": "جاري التحويل…", "converting": "جاري التحويل…",
"createLocalDb": "أنشئ قاعدة بيانات محلية مستقلة", "createLocalDb": "إنشاء جدول في هذه الملاحظة",
"createNotebook": "إنشاء دفتر", "createNotebook": "إنشاء دفتر",
"defaultOption1": "خيار 1", "defaultOption1": "خيار 1",
"defaultOption2": "خيار 2", "defaultOption2": "خيار 2",
@@ -4514,7 +4515,7 @@
"keywordMatch": "كلمة مفتاحية", "keywordMatch": "كلمة مفتاحية",
"linkToNotebook": "ربط بدفتر", "linkToNotebook": "ربط بدفتر",
"loadError": "خطأ في تحميل البيانات المنظمة.", "loadError": "خطأ في تحميل البيانات المنظمة.",
"localDbTitle": "قاعدة بيانات مستقلة", "localDbTitle": "جدول في هذه الملاحظة",
"namePlaceholder": "أدخل اسماً…", "namePlaceholder": "أدخل اسماً…",
"noEchoFound": "لم يُعثر على ملاحظات قريبة.", "noEchoFound": "لم يُعثر على ملاحظات قريبة.",
"noNotebook": "تتطلب هذه الكتلة دفتر ملاحظات. انقل هذه الملاحظة إلى دفتر أولاً.", "noNotebook": "تتطلب هذه الكتلة دفتر ملاحظات. انقل هذه الملاحظة إلى دفتر أولاً.",
@@ -4528,8 +4529,8 @@
"selectNotebook": "ربط بدفتر", "selectNotebook": "ربط بدفتر",
"selectOptionsPlaceholder": "خيارات مفصولة بفواصل", "selectOptionsPlaceholder": "خيارات مفصولة بفواصل",
"semanticEcho": "الرنين الدلالي", "semanticEcho": "الرنين الدلالي",
"switchToLocalDb": "التبديل إلى قاعدة البيانات المحلية", "switchToLocalDb": "العودة إلى جدول هذه الملاحظة",
"turnIntoLabel": "قاعدة بيانات مدمجة", "turnIntoLabel": "جدول في الملاحظة",
"untitled": "بدون عنوان" "untitled": "بدون عنوان"
}, },
"structuredViews": { "structuredViews": {

View File

@@ -2190,7 +2190,7 @@
"custom": "Benutzerdefiniert" "custom": "Benutzerdefiniert"
}, },
"typeDescriptions": { "typeDescriptions": {
"scraper": "Extrahiert Inhalte von mehreren Websites und erstellt eine Zusammenfassung", "scraper": "Liest mehrere Websites und schreibt eine Zusammenfassung",
"researcher": "Sucht nach Informationen zu einem Thema", "researcher": "Sucht nach Informationen zu einem Thema",
"monitor": "Überwacht ein Notizbuch und analysiert Notizen", "monitor": "Überwacht ein Notizbuch und analysiert Notizen",
"slideGenerator": "Erstellt eine PowerPoint-Präsentation aus Notizen", "slideGenerator": "Erstellt eine PowerPoint-Präsentation aus Notizen",
@@ -2203,7 +2203,7 @@
"namePlaceholder": "z.B. Dienstag KI-Watch", "namePlaceholder": "z.B. Dienstag KI-Watch",
"description": "Beschreibung (optional)", "description": "Beschreibung (optional)",
"descriptionPlaceholder": "Wöchentliche KI-Nachrichtenzusammenfassung", "descriptionPlaceholder": "Wöchentliche KI-Nachrichtenzusammenfassung",
"urlsLabel": "URLs zum Extrahieren", "urlsLabel": "Adressen der zu lesenden Seiten",
"urlsOptional": "(optional)", "urlsOptional": "(optional)",
"sourceNotebook": "Zu überwachendes Notizbuch", "sourceNotebook": "Zu überwachendes Notizbuch",
"selectNotebook": "Notizbuch auswählen...", "selectNotebook": "Notizbuch auswählen...",
@@ -2248,7 +2248,7 @@
"notifyEmail": "E-Mail-Benachrichtigung", "notifyEmail": "E-Mail-Benachrichtigung",
"notifyEmailHint": "Erhalten Sie eine E-Mail mit den Ergebnissen des Agenten nach jedem Durchlauf", "notifyEmailHint": "Erhalten Sie eine E-Mail mit den Ergebnissen des Agenten nach jedem Durchlauf",
"includeImages": "Bilder einschließen", "includeImages": "Bilder einschließen",
"includeImagesHint": "Bilder von gescrapten Seiten extrahieren und an die generierte Notiz anhängen", "includeImagesHint": "Bilder von den gelesenen Seiten nehmen und an die Notiz anhängen",
"back": "Zurück", "back": "Zurück",
"configuration": "Konfiguration", "configuration": "Konfiguration",
"options": "Optionen", "options": "Optionen",
@@ -2347,15 +2347,15 @@
}, },
"veilleAI": { "veilleAI": {
"name": "KI-Watch", "name": "KI-Watch",
"description": "Extrahiert Inhalte von 5 KI-spezialisierten Websites und erstellt eine wöchentliche Zusammenfassung." "description": "Liest 5 KI-Websites und schreibt eine wöchentliche Zusammenfassung."
}, },
"veilleTech": { "veilleTech": {
"name": "Tech-Watch", "name": "Tech-Watch",
"description": "Extrahiert Inhalte von großen Tech-Websites und erstellt eine Nachrichtenübersicht." "description": "Liest große Tech-Websites und schreibt eine Nachrichtenübersicht."
}, },
"veilleDev": { "veilleDev": {
"name": "Dev-Watch", "name": "Dev-Watch",
"description": "Extrahiert Inhalte von Entwickler-Websites und fasst neue Technologien und Frameworks zusammen." "description": "Liest Entwickler-Websites und fasst neue Technologien zusammen."
}, },
"surveillant": { "surveillant": {
"name": "Notiz-Beobachter", "name": "Notiz-Beobachter",
@@ -2402,7 +2402,7 @@
"tools": { "tools": {
"title": "Agenten-Werkzeuge", "title": "Agenten-Werkzeuge",
"webSearch": "Websuche", "webSearch": "Websuche",
"webScrape": "Web-Scraping", "webScrape": "Webseiten lesen",
"noteSearch": "Notizsuche", "noteSearch": "Notizsuche",
"noteRead": "Notiz lesen", "noteRead": "Notiz lesen",
"noteCreate": "Notiz erstellen", "noteCreate": "Notiz erstellen",
@@ -2431,15 +2431,15 @@
"btnLabel": "Hilfe", "btnLabel": "Hilfe",
"close": "Schließen", "close": "Schließen",
"whatIsAgent": "Was ist ein Agent?", "whatIsAgent": "Was ist ein Agent?",
"whatIsAgentContent": "An **agent** is an AI assistant that runs automatically to perform tasks for you. It has access to **tools** (web search, web scraping, note reading...) and produces a **note** with its results.\n\nThink of it as a small autonomous worker: you give it a mission, it researches or scrapes information, then writes a structured note you can read later.", "whatIsAgentContent": "An **agent** is an AI assistant that runs automatically to perform tasks for you. It has access to **tools** (web search, reading pages, note reading...) and produces a **note** with its results.\n\nThink of it as a small autonomous worker: you give it a mission, it researches or reads pages, then writes a structured note you can read later.",
"howToUse": "Wie verwendet man einen Agenten?", "howToUse": "Wie verwendet man einen Agenten?",
"howToUseContent": "1. Klicken Sie auf **„Neuer Agent\"** (oder beginnen Sie mit einer **Vorlage** unten auf der Seite).", "howToUseContent": "1. Klicken Sie auf **„Neuer Agent\"** (oder beginnen Sie mit einer **Vorlage** unten auf der Seite).",
"types": "Agententypen", "types": "Agententypen",
"typesContent": "### Researcher\nSearches the web on a **topic you define** and creates a structured note with sources and references.\n\n- **Fields:** name, research topic (e.g. \"Latest advances in quantum computing\")\n- **Default tools:** web search, web scraping, note search, note creation\n- **Requirements:** a web search provider must be configured (SearXNG or Brave Search)\n\n### Monitor (Scraper)\nScrapes a **list of URLs** you specify and produces a summary of their content.\n\n- **Fields:** name, list of URLs (e.g. tech news sites, blogs...)\n- **Default tools:** web scraping, note creation\n- **Use case:** weekly tech watch, competitor monitoring, blog roundups\n\n### Observer (Notebook Monitor)\nReads notes from a **notebook you select** and produces analysis, connections, and suggestions.\n\n- **Fields:** name, source notebook (the one to analyze)\n- **Default tools:** note search, note read, note creation\n- **Use case:** find connections between your notes, get reading suggestions, detect recurring themes\n\n### Custom\nA blank canvas: you write your own **prompt** and pick your own **tools**.\n\n- **Fields:** name, description, custom instructions (in Advanced mode)\n- **No default tools** — you choose exactly what the agent needs\n- **Use case:** anything creative or specific that doesn't fit the other types", "typesContent": "### Researcher\nSearches the web on a **topic you define** and creates a structured note with sources and references.\n\n- **Fields:** name, research topic (e.g. \"Latest advances in quantum computing\")\n- **Default tools:** web search, reading pages, note search, note creation\n- **Requirements:** a web search provider must be configured (SearXNG or Brave Search)\n\n### Monitor\nReads a **list of pages** you give it and writes a summary.\n\n- **Fields:** name, list of URLs (e.g. tech news sites, blogs...)\n- **Default tools:** reading pages, note creation\n- **Use case:** weekly tech watch, competitor monitoring, blog roundups\n\n### Observer (Notebook Monitor)\nReads notes from a **notebook you select** and produces analysis, connections, and suggestions.\n\n- **Fields:** name, source notebook (the one to analyze)\n- **Default tools:** note search, note read, note creation\n- **Use case:** find connections between your notes, get reading suggestions, detect recurring themes\n\n### Custom\nA blank canvas: you write your own **prompt** and pick your own **tools**.\n\n- **Fields:** name, description, custom instructions (in Advanced mode)\n- **No default tools** — you choose exactly what the agent needs\n- **Use case:** anything creative or specific that doesn't fit the other types",
"advanced": "Erweiterter Modus (KI-Anweisungen, Max. Iterationen)", "advanced": "Erweiterter Modus (KI-Anweisungen, Max. Iterationen)",
"advancedContent": "Klicken Sie unten im Formular auf **„Erweiterter Modus\"**, um auf zusätzliche Einstellungen zuzugreifen.", "advancedContent": "Klicken Sie unten im Formular auf **„Erweiterter Modus\"**, um auf zusätzliche Einstellungen zuzugreifen.",
"tools": "Verfügbare Werkzeuge (Details)", "tools": "Verfügbare Werkzeuge (Details)",
"toolsContent": "When advanced mode is enabled, you can choose exactly which tools the agent can use.\n\n### Web Search\nAllows the agent to **search the internet** via SearXNG or Brave Search.\n\n- **What it does:** The agent formulates a query, gets search results, and can then scrape the most relevant pages.\n- **When to enable:** When the agent needs to find information on a topic (Researcher or Custom type).\n- **Configuration required:** SearXNG (with JSON format enabled) or a Brave Search API key. Configurable in **Admin > Agent Tools**.\n- **Example:** The agent searches \"React Server Components best practices 2025\", gets 10 results, then scrapes the top 3.\n\n### Web Scrape\nAllows the agent to **extract text content from a web page** given its URL.\n\n- **What it does:** The agent visits a URL and retrieves the structured text (headings, paragraphs, lists). Ads, menus and footers are typically filtered out.\n- **When to enable:** For the Monitor type (mandatory), or any agent that needs to read web pages.\n- **Configuration:** Works out of the box, but a **Jina Reader API key** improves quality and removes rate limits. Configurable in **Admin > Agent Tools**.\n- **Example:** The agent scrapes 5 tech blogs and produces a synthesized summary.\n\n### Note Search\nAllows the agent to **search your existing notes**.\n\n- **What it does:** The agent performs a text search across all your notes (or a specific notebook).\n- **When to enable:** For Observer-type agents, or any agent that needs to cross-reference information with your notes.\n- **Configuration:** None — works immediately.\n- **Example:** The agent searches all notes containing \"machine learning\" to see what you've already written on the topic.\n\n### Read Note\nAllows the agent to **read the full content of a specific note**.\n\n- **What it does:** After finding a note (via Note Search), the agent can read its entire content to analyze or use it.\n- **When to enable:** As a companion to Note Search. Enable both together so the agent can search AND read.\n- **Configuration:** None.\n- **Example:** The agent finds 5 notes about \"productivity\", reads them all, and writes a synthesis.\n\n### Create Note\nAllows the agent to **write a new note** in your target notebook.\n\n- **What it does:** The agent creates a note with a title and content. This is how results end up in your notebooks.\n- **When to enable:** Almost always — without this tool, the agent cannot save its results. **Leave it enabled by default.**\n- **Configuration:** None.\n- **Example:** The agent creates a note \"Tech Watch - Week 16\" with a summary of 5 articles.\n\n### Fetch URL\nAllows the agent to **download the raw content of a URL** (HTML, JSON, text...).\n\n- **What it does:** Unlike scraping which extracts clean text, Fetch URL retrieves raw content. Useful for APIs, JSON files, or non-standard pages.\n- **When to enable:** When the agent needs to query REST APIs, read RSS feeds, or access raw data.\n- **Configuration:** None.\n- **Example:** The agent queries the GitHub API to list the latest commits of a project.\n\n### Memory\nAllows the agent to **access its previous execution history**.\n\n- **What it does:** The agent can search through results from past runs. This lets it compare, track changes, or avoid repeating the same information.\n- **When to enable:** For agents that run regularly and need to maintain continuity between executions.\n- **Configuration:** None.\n- **Example:** The agent compares this week's news with last week's and highlights what's new.", "toolsContent": "When advanced mode is enabled, you can choose exactly which tools the agent can use.\n\n### Web Search\nAllows the agent to **search the internet** via SearXNG or Brave Search.\n\n- **What it does:** The agent formulates a query, gets search results, then can read the most useful pages.\n- **When to enable:** When the agent needs to find information on a topic (Researcher or Custom type).\n- **Configuration required:** SearXNG (with JSON format enabled) or a Brave Search API key. Configurable in **Admin > Agent Tools**.\n- **Example:** The agent searches \"React Server Components best practices 2025\", gets 10 results, then reads the top 3.\n\n### Read web pages\nAllows the agent to **read the text of a page** from its address.\n\n- **What it does:** The agent visits a URL and retrieves the structured text (headings, paragraphs, lists). Ads, menus and footers are typically filtered out.\n- **When to enable:** For the Monitor type (mandatory), or any agent that needs to read web pages.\n- **Configuration:** Works out of the box, but a **Jina Reader API key** improves quality and removes rate limits. Configurable in **Admin > Agent Tools**.\n- **Example:** The agent scrapes 5 tech blogs and produces a synthesized summary.\n\n### Note Search\nAllows the agent to **search your existing notes**.\n\n- **What it does:** The agent performs a text search across all your notes (or a specific notebook).\n- **When to enable:** For Observer-type agents, or any agent that needs to cross-reference information with your notes.\n- **Configuration:** None — works immediately.\n- **Example:** The agent searches all notes containing \"machine learning\" to see what you've already written on the topic.\n\n### Read Note\nAllows the agent to **read the full content of a specific note**.\n\n- **What it does:** After finding a note (via Note Search), the agent can read its entire content to analyze or use it.\n- **When to enable:** As a companion to Note Search. Enable both together so the agent can search AND read.\n- **Configuration:** None.\n- **Example:** The agent finds 5 notes about \"productivity\", reads them all, and writes a synthesis.\n\n### Create Note\nAllows the agent to **write a new note** in your target notebook.\n\n- **What it does:** The agent creates a note with a title and content. This is how results end up in your notebooks.\n- **When to enable:** Almost always — without this tool, the agent cannot save its results. **Leave it enabled by default.**\n- **Configuration:** None.\n- **Example:** The agent creates a note \"Tech Watch - Week 16\" with a summary of 5 articles.\n\n### Fetch URL\nAllows the agent to **download the raw content of a URL** (HTML, JSON, text...).\n\n- **What it does:** Unlike scraping which extracts clean text, Fetch URL retrieves raw content. Useful for APIs, JSON files, or non-standard pages.\n- **When to enable:** When the agent needs to query REST APIs, read RSS feeds, or access raw data.\n- **Configuration:** None.\n- **Example:** The agent queries the GitHub API to list the latest commits of a project.\n\n### Memory\nAllows the agent to **access its previous execution history**.\n\n- **What it does:** The agent can search through results from past runs. This lets it compare, track changes, or avoid repeating the same information.\n- **When to enable:** For agents that run regularly and need to maintain continuity between executions.\n- **Configuration:** None.\n- **Example:** The agent compares this week's news with last week's and highlights what's new.",
"frequency": "Häufigkeit & Planung", "frequency": "Häufigkeit & Planung",
"frequencyContent": "| Häufigkeit | Verhalten\n|-----------|----------\n| **Manuell** | Sie klicken selbst auf „Ausführen\".", "frequencyContent": "| Häufigkeit | Verhalten\n|-----------|----------\n| **Manuell** | Sie klicken selbst auf „Ausführen\".",
"targetNotebook": "Zielnotizbuch", "targetNotebook": "Zielnotizbuch",
@@ -2447,7 +2447,7 @@
"templates": "Vorlagen", "templates": "Vorlagen",
"templatesContent": "Templates are pre-configured agents ready to install in one click. You'll find them at the **bottom of the Agents page**.\n\nAvailable templates include:\n\n- **AI Watch** — weekly AI news roundup from 5 specialized sites\n- **Tech Watch** — general tech news summary\n- **Dev Watch** — developer news and new frameworks\n- **Note Observer** — analyzes a notebook and suggests connections\n- **Topic Researcher** — deep research on a specific topic\n\nOnce installed, you can edit the agent to customize it.", "templatesContent": "Templates are pre-configured agents ready to install in one click. You'll find them at the **bottom of the Agents page**.\n\nAvailable templates include:\n\n- **AI Watch** — weekly AI news roundup from 5 specialized sites\n- **Tech Watch** — general tech news summary\n- **Dev Watch** — developer news and new frameworks\n- **Note Observer** — analyzes a notebook and suggests connections\n- **Topic Researcher** — deep research on a specific topic\n\nOnce installed, you can edit the agent to customize it.",
"tips": "Tipps & Fehlerbehebung", "tips": "Tipps & Fehlerbehebung",
"tipsContent": "- **Start with a template** and customize it — it's the fastest way to get a working agent\n- **Test with \"Manual\"** frequency before enabling automatic scheduling\n- **A \"Researcher\" agent requires a web search provider** — configure SearXNG (JSON format) or Brave Search in **Admin > Agent Tools**\n- **If an agent fails**, click on its card then **History** to see the execution log and tool traces\n- **The \"Enabled/Disabled\" toggle** lets you pause an agent without deleting it\n- **Web scraping quality** improves with a Jina Reader API key (optional, in Admin > Agent Tools)\n- **Combine \"Note Search\" + \"Read Note\"** so the agent can find AND analyze your notes' content\n- **Enable \"Memory\"** if your agent runs regularly — it will avoid repeating the same information across runs", "tipsContent": "- **Start with a template** and customize it — it's the fastest way to get a working agent\n- **Test with \"Manual\"** frequency before enabling automatic scheduling\n- **A \"Researcher\" agent requires a web search provider** — configure SearXNG (JSON format) or Brave Search in **Admin > Agent Tools**\n- **If an agent fails**, click on its card then **History** to see the execution log and tool traces\n- **The \"Enabled/Disabled\" toggle** lets you pause an agent without deleting it\n- **Page-reading quality** improves with a Jina Reader API key (optional, in Admin > Agent Tools)\n- **Combine \"Note Search\" + \"Read Note\"** so the agent can find AND analyze your notes' content\n- **Enable \"Memory\"** if your agent runs regularly — it will avoid repeating the same information across runs",
"tooltips": { "tooltips": {
"agentType": "Wählen Sie die Art der Aufgabe, die der Agent ausführen soll. Jeder Typ hat unterschiedliche Funktionen und Felder.", "agentType": "Wählen Sie die Art der Aufgabe, die der Agent ausführen soll. Jeder Typ hat unterschiedliche Funktionen und Felder.",
"researchTopic": "Das Thema, das der Agent im Web recherchieren soll. Seien Sie spezifisch für bessere Ergebnisse.", "researchTopic": "Das Thema, das der Agent im Web recherchieren soll. Seien Sie spezifisch für bessere Ergebnisse.",
@@ -3176,7 +3176,8 @@
"fetchStatusFailed": "Abrechnungsstatus konnte nicht abgerufen werden", "fetchStatusFailed": "Abrechnungsstatus konnte nicht abgerufen werden",
"fetchQuotasFailed": "Kontingente konnten nicht abgerufen werden", "fetchQuotasFailed": "Kontingente konnten nicht abgerufen werden",
"fetchInvoicesFailed": "Rechnungsverlauf konnte nicht geladen werden.", "fetchInvoicesFailed": "Rechnungsverlauf konnte nicht geladen werden.",
"savePercent": "~17% sparen", "savePercent": "~{percent} % sparen",
"billedYearTotal": "also {price} im Jahr",
"cancelSubscription": "Abonnement kündigen", "cancelSubscription": "Abonnement kündigen",
"changeOffer": "Angebot wechseln", "changeOffer": "Angebot wechseln",
"downgradeToFree": "Zum kostenlosen Angebot zurück", "downgradeToFree": "Zum kostenlosen Angebot zurück",
@@ -3385,7 +3386,7 @@
"feature5": "Begleitete Einrichtung" "feature5": "Begleitete Einrichtung"
}, },
"basicPrice": "Kostenlos", "basicPrice": "Kostenlos",
"savePercent": "~17% sparen", "savePercent": "~{percent} % sparen",
"proMonthly": "9,90€", "proMonthly": "9,90€",
"proAnnualMonthly": "8,25€", "proAnnualMonthly": "8,25€",
"businessMonthly": "29,90€", "businessMonthly": "29,90€",
@@ -3665,7 +3666,7 @@
"mappingHint": "Dies kann ein bis drei Minuten dauern. Sie können weiter browsen; die Seite wird automatisch aktualisiert.", "mappingHint": "Dies kann ein bis drei Minuten dauern. Sie können weiter browsen; die Seite wird automatisch aktualisiert.",
"analyzeNow": "Themen aktualisieren", "analyzeNow": "Themen aktualisieren",
"emptyNeedMoreNotes": "Fügen Sie {count} weitere Notizen hinzu, um Ihre Themen zu gruppieren (Minimum 10).", "emptyNeedMoreNotes": "Fügen Sie {count} weitere Notizen hinzu, um Ihre Themen zu gruppieren (Minimum 10).",
"embeddingsHint": "Nur {indexed} von {total} Notizen sind für KI indiziert.", "embeddingsHint": "Nur {indexed} von {total} Notizen sind bereit, nach Themen gruppiert zu werden.",
"vsGraphHint": "Nicht dasselbe wie die „Link-Map\" (Netzwerk-Symbol): Hier gruppiert die KI nach Bedeutung, nicht nach Links.", "vsGraphHint": "Nicht dasselbe wie die „Link-Map\" (Netzwerk-Symbol): Hier gruppiert die KI nach Bedeutung, nicht nach Links.",
"openGraphMap": "Link-Map öffnen", "openGraphMap": "Link-Map öffnen",
"analysisFailed": "Analyse fehlgeschlagen. Überprüfe deine KI-Einstellungen.", "analysisFailed": "Analyse fehlgeschlagen. Überprüfe deine KI-Einstellungen.",
@@ -4492,7 +4493,7 @@
"convertSuccess": "Konvertierung abgeschlossen! Verknüpftes Notizbuch erstellt.", "convertSuccess": "Konvertierung abgeschlossen! Verknüpftes Notizbuch erstellt.",
"convertToNotebook": "In Notizbuch umwandeln", "convertToNotebook": "In Notizbuch umwandeln",
"converting": "Konvertieren…", "converting": "Konvertieren…",
"createLocalDb": "Eine eigenständige lokale Datenbank erstellen", "createLocalDb": "Tabelle in dieser Notiz erstellen",
"createNotebook": "Notizbuch erstellen", "createNotebook": "Notizbuch erstellen",
"defaultOption1": "Option 1", "defaultOption1": "Option 1",
"defaultOption2": "Option 2", "defaultOption2": "Option 2",
@@ -4514,7 +4515,7 @@
"keywordMatch": "Schlüsselwort", "keywordMatch": "Schlüsselwort",
"linkToNotebook": "Ein Notizbuch verlinken", "linkToNotebook": "Ein Notizbuch verlinken",
"loadError": "Fehler beim Laden der strukturierten Daten.", "loadError": "Fehler beim Laden der strukturierten Daten.",
"localDbTitle": "Eigenständige Datenbank", "localDbTitle": "Tabelle in dieser Notiz",
"namePlaceholder": "Namen eingeben…", "namePlaceholder": "Namen eingeben…",
"noEchoFound": "Keine nahen Notizen gefunden.", "noEchoFound": "Keine nahen Notizen gefunden.",
"noNotebook": "Dieser Block erfordert ein Notizbuch. Verschieben Sie diese Notiz zuerst in ein Notizbuch.", "noNotebook": "Dieser Block erfordert ein Notizbuch. Verschieben Sie diese Notiz zuerst in ein Notizbuch.",
@@ -4528,8 +4529,8 @@
"selectNotebook": "Ein Notizbuch verlinken", "selectNotebook": "Ein Notizbuch verlinken",
"selectOptionsPlaceholder": "Optionen durch Kommas getrennt", "selectOptionsPlaceholder": "Optionen durch Kommas getrennt",
"semanticEcho": "Semantische Resonanzen", "semanticEcho": "Semantische Resonanzen",
"switchToLocalDb": "Zur lokalen Datenbank wechseln", "switchToLocalDb": "Zurück zur Tabelle dieser Notiz",
"turnIntoLabel": "Inline-Datenbank", "turnIntoLabel": "Tabelle in der Notiz",
"untitled": "Unbenannt" "untitled": "Unbenannt"
}, },
"structuredViews": { "structuredViews": {

View File

@@ -2282,7 +2282,7 @@
"custom": "Custom" "custom": "Custom"
}, },
"typeDescriptions": { "typeDescriptions": {
"scraper": "Scrapes multiple sites and creates a summary", "scraper": "Reads several sites and writes a summary",
"researcher": "Searches for information on a topic", "researcher": "Searches for information on a topic",
"monitor": "Watches a notebook and analyzes notes", "monitor": "Watches a notebook and analyzes notes",
"slideGenerator": "Creates a PowerPoint presentation from notes", "slideGenerator": "Creates a PowerPoint presentation from notes",
@@ -2296,7 +2296,7 @@
"namePlaceholder": "e.g. Tuesday AI Watch", "namePlaceholder": "e.g. Tuesday AI Watch",
"description": "Description (optional)", "description": "Description (optional)",
"descriptionPlaceholder": "Weekly AI news summary", "descriptionPlaceholder": "Weekly AI news summary",
"urlsLabel": "URLs to scrape", "urlsLabel": "Pages to read",
"urlsOptional": "(optional)", "urlsOptional": "(optional)",
"sourceNotebook": "Notebook to watch", "sourceNotebook": "Notebook to watch",
"selectNotebook": "Select a notebook...", "selectNotebook": "Select a notebook...",
@@ -2361,7 +2361,7 @@
"notifyEmail": "Email notification", "notifyEmail": "Email notification",
"notifyEmailHint": "Receive an email with the agent's results after each run", "notifyEmailHint": "Receive an email with the agent's results after each run",
"includeImages": "Include images", "includeImages": "Include images",
"includeImagesHint": "Extract images from scraped pages and attach them to the generated note", "includeImagesHint": "Take images from the pages read and attach them to the note",
"back": "Back", "back": "Back",
"configuration": "Configuration", "configuration": "Configuration",
"options": "Options" "options": "Options"
@@ -2440,15 +2440,15 @@
}, },
"veilleAI": { "veilleAI": {
"name": "AI Watch", "name": "AI Watch",
"description": "Scrapes RSS feeds from 6 AI sites (The Verge, TechCrunch, Ars Technica, MIT Tech Review, WIRED, Korben) and generates a weekly summary." "description": "Reads feeds from 6 AI sites (The Verge, TechCrunch, Ars Technica, MIT Tech Review, WIRED, Korben) and writes a weekly summary."
}, },
"veilleTech": { "veilleTech": {
"name": "Tech Watch", "name": "Tech Watch",
"description": "Scrapes tech RSS feeds (Hacker News, DEV, Product Hunt) and creates a daily news summary." "description": "Reads tech feeds (Hacker News, DEV, Product Hunt) and writes a daily summary."
}, },
"veilleDev": { "veilleDev": {
"name": "Dev Watch", "name": "Dev Watch",
"description": "Scrapes dev RSS feeds (JavaScript, TypeScript, React) and summarizes new tech and frameworks." "description": "Reads development feeds (JavaScript, TypeScript, React) and summarizes what is new."
}, },
"surveillant": { "surveillant": {
"name": "Note Observer", "name": "Note Observer",
@@ -2495,7 +2495,7 @@
"tools": { "tools": {
"title": "Agent Tools", "title": "Agent Tools",
"webSearch": "Web Search", "webSearch": "Web Search",
"webScrape": "Web Scrape", "webScrape": "Read web pages",
"noteSearch": "Note Search", "noteSearch": "Note Search",
"noteRead": "Read Note", "noteRead": "Read Note",
"noteCreate": "Create Note", "noteCreate": "Create Note",
@@ -2524,15 +2524,15 @@
"btnLabel": "Help", "btnLabel": "Help",
"close": "Close", "close": "Close",
"whatIsAgent": "What is an agent?", "whatIsAgent": "What is an agent?",
"whatIsAgentContent": "An **agent** is an AI assistant that runs automatically to perform tasks for you. It has access to **tools** (web search, web scraping, note reading...) and produces a **note** with its results.\n\nThink of it as a small autonomous worker: you give it a mission, it researches or scrapes information, then writes a structured note you can read later.\n\nAgents respond in your language (French or English) based on your settings.", "whatIsAgentContent": "An **agent** is an AI assistant that runs automatically to perform tasks for you. It has access to **tools** (web search, reading pages, note reading...) and produces a **note** with its results.\n\nThink of it as a small autonomous worker: you give it a mission, it researches or reads pages, then writes a structured note you can read later.\n\nAgents respond in your language (French or English) based on your settings.",
"howToUse": "How to use an agent?", "howToUse": "How to use an agent?",
"howToUseContent": "1. Click **\"New Agent\"** (or start from a **Template** at the bottom of the page)\n2. Choose an **agent type** (Researcher, Monitor, Observer, Custom)\n3. Give it a **name** and fill in the type-specific fields\n4. Optionally pick a **target notebook** where results will be saved\n5. Choose a **frequency** (Manual = you trigger it yourself)\n6. Click **Create**, then hit the **Run** button on the agent card\n7. Once finished, a new note appears in your target notebook", "howToUseContent": "1. Click **\"New Agent\"** (or start from a **Template** at the bottom of the page)\n2. Choose an **agent type** (Researcher, Monitor, Observer, Custom)\n3. Give it a **name** and fill in the type-specific fields\n4. Optionally pick a **target notebook** where results will be saved\n5. Choose a **frequency** (Manual = you trigger it yourself)\n6. Click **Create**, then hit the **Run** button on the agent card\n7. Once finished, a new note appears in your target notebook",
"types": "Agent types", "types": "Agent types",
"typesContent": "### Researcher\nSearches the web on a **topic you define** and creates a structured note with sources and references.\n\n- **Fields:** name, research topic (e.g. \"Latest advances in quantum computing\")\n- **Default tools:** web search, web scraping, note search, note creation\n- **Requirements:** a web search provider must be configured (SearXNG or Brave Search)\n\n### Monitor (Scraper)\nScrapes a **list of URLs** you specify and produces a summary of their content.\n\n- **Fields:** name, list of URLs (websites or RSS feeds)\n- **Default tools:** web scraping, note creation\n- **RSS tip:** Use RSS feed URLs (e.g. `site.com/feed`) to automatically scrape individual articles instead of listing pages\n- **Use case:** weekly tech watch, competitor monitoring, blog roundups\n\n### Observer (Notebook Monitor)\nReads notes from a **notebook you select** and produces analysis, connections, and suggestions.\n\n- **Fields:** name, source notebook (the one to analyze)\n- **Default tools:** note search, note read, note creation\n- **Use case:** find connections between your notes, get reading suggestions, detect recurring themes\n\n### Custom\nA blank canvas: you write your own **prompt** and pick your own **tools**.\n\n- **Fields:** name, description, custom instructions (in Advanced mode)\n- **No default tools** — you choose exactly what the agent needs\n- **Use case:** anything creative or specific that doesn't fit the other types", "typesContent": "### Researcher\nSearches the web on a **topic you define** and creates a structured note with sources and references.\n\n- **Fields:** name, research topic (e.g. \"Latest advances in quantum computing\")\n- **Default tools:** web search, web scraping, note search, note creation\n- **Requirements:** a web search provider must be configured (SearXNG or Brave Search)\n\n### Monitor\nReads a **list of pages** you give it and writes a summary.\n\n- **Fields:** name, list of URLs (websites or RSS feeds)\n- **Default tools:** web scraping, note creation\n- **RSS tip:** Use RSS feed URLs (e.g. `site.com/feed`) to automatically read individual articles instead of listing pages\n- **Use case:** weekly tech watch, competitor monitoring, blog roundups\n\n### Observer (Notebook Monitor)\nReads notes from a **notebook you select** and produces analysis, connections, and suggestions.\n\n- **Fields:** name, source notebook (the one to analyze)\n- **Default tools:** note search, note read, note creation\n- **Use case:** find connections between your notes, get reading suggestions, detect recurring themes\n\n### Custom\nA blank canvas: you write your own **prompt** and pick your own **tools**.\n\n- **Fields:** name, description, custom instructions (in Advanced mode)\n- **No default tools** — you choose exactly what the agent needs\n- **Use case:** anything creative or specific that doesn't fit the other types",
"advanced": "Advanced mode (AI Instructions, Max iterations)", "advanced": "Advanced mode (AI Instructions, Max iterations)",
"advancedContent": "Click **\"Advanced mode\"** at the bottom of the form to access additional settings.\n\n### AI Instructions\n\nThis field lets you **replace the default system prompt** for the agent. If left empty, the agent uses an automatic prompt adapted to its type.\n\n**Why use it?** You want to control exactly how the agent behaves. For example:\n- \"Write the summary in English, even if sources are in French\"\n- \"Structure the note with sections: Context, Key Points, Personal Opinion\"\n- \"Ignore articles older than 30 days and focus on recent news\"\n- \"For each detected theme, suggest 3 follow-up leads with links\"\n\n> **Note:** Your instructions replace the defaults, they don't add to them.\n\n### Max iterations\n\nThis is the **maximum number of cycles** the agent can perform. One cycle = the agent thinks, calls a tool, reads the result, then decides the next action.\n\n- **3-5 iterations:** for simple tasks (scraping a single page)\n- **10 iterations (default):** good balance for most cases\n- **15-25 iterations:** for deep research where the agent needs to explore multiple leads\n\n> **Warning:** More iterations = more time and potentially higher API costs.", "advancedContent": "Click **\"Advanced mode\"** at the bottom of the form to access additional settings.\n\n### AI Instructions\n\nThis field lets you **replace the default system prompt** for the agent. If left empty, the agent uses an automatic prompt adapted to its type.\n\n**Why use it?** You want to control exactly how the agent behaves. For example:\n- \"Write the summary in English, even if sources are in French\"\n- \"Structure the note with sections: Context, Key Points, Personal Opinion\"\n- \"Ignore articles older than 30 days and focus on recent news\"\n- \"For each detected theme, suggest 3 follow-up leads with links\"\n\n> **Note:** Your instructions replace the defaults, they don't add to them.\n\n### Max iterations\n\nThis is the **maximum number of cycles** the agent can perform. One cycle = the agent thinks, calls a tool, reads the result, then decides the next action.\n\n- **3-5 iterations:** for simple tasks (scraping a single page)\n- **10 iterations (default):** good balance for most cases\n- **15-25 iterations:** for deep research where the agent needs to explore multiple leads\n\n> **Warning:** More iterations = more time and potentially higher API costs.",
"tools": "Available tools (full details)", "tools": "Available tools (full details)",
"toolsContent": "When advanced mode is enabled, you can choose exactly which tools the agent can use.\n\n### Web Search\nAllows the agent to **search the internet** via SearXNG or Brave Search.\n\n- **What it does:** The agent formulates a query, gets search results, and can then scrape the most relevant pages.\n- **When to enable:** When the agent needs to find information on a topic (Researcher or Custom type).\n- **Configuration required:** SearXNG (with JSON format enabled) or a Brave Search API key. Configurable in **Admin > Agent Tools**.\n- **Example:** The agent searches \"React Server Components best practices 2025\", gets 10 results, then scrapes the top 3.\n\n### Web Scrape\nAllows the agent to **extract text content from a web page** given its URL.\n\n- **What it does:** The agent visits a URL and retrieves the structured text (headings, paragraphs, lists). Ads, menus and footers are typically filtered out.\n- **RSS/Atom support:** If the URL is an RSS feed, the tool automatically detects it, parses the feed and scrapes the 5 latest articles individually. Use RSS feed URLs for much richer content than listing pages.\n- **When to enable:** For the Monitor type (mandatory), or any agent that needs to read web pages.\n- **Configuration:** Works out of the box, but a **Jina Reader API key** improves quality and removes rate limits. Configurable in **Admin > Agent Tools**.\n- **Example:** The agent scrapes the RSS feed at `techcrunch.com/feed/` and gets the 5 latest full articles.\n\n### Note Search\nAllows the agent to **search your existing notes**.\n\n- **What it does:** The agent performs a text search across all your notes (or a specific notebook).\n- **When to enable:** For Observer-type agents, or any agent that needs to cross-reference information with your notes.\n- **Configuration:** None — works immediately.\n- **Example:** The agent searches all notes containing \"machine learning\" to see what you've already written on the topic.\n\n### Read Note\nAllows the agent to **read the full content of a specific note**.\n\n- **What it does:** After finding a note (via Note Search), the agent can read its entire content to analyze or use it.\n- **When to enable:** As a companion to Note Search. Enable both together so the agent can search AND read.\n- **Configuration:** None.\n- **Example:** The agent finds 5 notes about \"productivity\", reads them all, and writes a synthesis.\n\n### Create Note\nAllows the agent to **write a new note** in your target notebook.\n\n- **What it does:** The agent creates a note with a title and content. This is how results end up in your notebooks.\n- **When to enable:** Almost always — without this tool, the agent cannot save its results. **Leave it enabled by default.**\n- **Configuration:** None.\n- **Example:** The agent creates a note \"Tech Watch - Week 16\" with a summary of 5 articles.\n\n### Fetch URL\nAllows the agent to **download the raw content of a URL** (HTML, JSON, text...).\n\n- **What it does:** Unlike scraping which extracts clean text, Fetch URL retrieves raw content. Useful for APIs, JSON files, or non-standard pages.\n- **When to enable:** When the agent needs to query REST APIs, read RSS feeds, or access raw data.\n- **Configuration:** None.\n- **Example:** The agent queries the GitHub API to list the latest commits of a project.\n\n### Memory\nAllows the agent to **access its previous execution history**.\n\n- **What it does:** The agent can search through results from past runs. This lets it compare, track changes, or avoid repeating the same information.\n- **When to enable:** For agents that run regularly and need to maintain continuity between executions.\n- **Configuration:** None.\n- **Example:** The agent compares this week's news with last week's and highlights what's new.", "toolsContent": "When advanced mode is enabled, you can choose exactly which tools the agent can use.\n\n### Web Search\nAllows the agent to **search the internet** via SearXNG or Brave Search.\n\n- **What it does:** The agent formulates a query, gets search results, then can read the most useful pages.\n- **When to enable:** When the agent needs to find information on a topic (Researcher or Custom type).\n- **Configuration required:** SearXNG (with JSON format enabled) or a Brave Search API key. Configurable in **Admin > Agent Tools**.\n- **Example:** The agent searches \"React Server Components best practices 2025\", gets 10 results, then reads the top 3.\n\n### Read web pages\nAllows the agent to **read the text of a page** from its address.\n\n- **What it does:** The agent visits a URL and retrieves the structured text (headings, paragraphs, lists). Ads, menus and footers are typically filtered out.\n- **RSS/Atom support:** If the URL is an RSS feed, the tool automatically detects it, parses the feed and scrapes the 5 latest articles individually. Use RSS feed URLs for much richer content than listing pages.\n- **When to enable:** For the Monitor type (mandatory), or any agent that needs to read web pages.\n- **Configuration:** Works out of the box, but a **Jina Reader API key** improves quality and removes rate limits. Configurable in **Admin > Agent Tools**.\n- **Example:** The agent scrapes the RSS feed at `techcrunch.com/feed/` and gets the 5 latest full articles.\n\n### Note Search\nAllows the agent to **search your existing notes**.\n\n- **What it does:** The agent performs a text search across all your notes (or a specific notebook).\n- **When to enable:** For Observer-type agents, or any agent that needs to cross-reference information with your notes.\n- **Configuration:** None — works immediately.\n- **Example:** The agent searches all notes containing \"machine learning\" to see what you've already written on the topic.\n\n### Read Note\nAllows the agent to **read the full content of a specific note**.\n\n- **What it does:** After finding a note (via Note Search), the agent can read its entire content to analyze or use it.\n- **When to enable:** As a companion to Note Search. Enable both together so the agent can search AND read.\n- **Configuration:** None.\n- **Example:** The agent finds 5 notes about \"productivity\", reads them all, and writes a synthesis.\n\n### Create Note\nAllows the agent to **write a new note** in your target notebook.\n\n- **What it does:** The agent creates a note with a title and content. This is how results end up in your notebooks.\n- **When to enable:** Almost always — without this tool, the agent cannot save its results. **Leave it enabled by default.**\n- **Configuration:** None.\n- **Example:** The agent creates a note \"Tech Watch - Week 16\" with a summary of 5 articles.\n\n### Fetch URL\nAllows the agent to **download the raw content of a URL** (HTML, JSON, text...).\n\n- **What it does:** Unlike scraping which extracts clean text, Fetch URL retrieves raw content. Useful for APIs, JSON files, or non-standard pages.\n- **When to enable:** When the agent needs to query REST APIs, read RSS feeds, or access raw data.\n- **Configuration:** None.\n- **Example:** The agent queries the GitHub API to list the latest commits of a project.\n\n### Memory\nAllows the agent to **access its previous execution history**.\n\n- **What it does:** The agent can search through results from past runs. This lets it compare, track changes, or avoid repeating the same information.\n- **When to enable:** For agents that run regularly and need to maintain continuity between executions.\n- **Configuration:** None.\n- **Example:** The agent compares this week's news with last week's and highlights what's new.",
"frequency": "Frequency & scheduling", "frequency": "Frequency & scheduling",
"frequencyContent": "| Frequency | Behavior\n|-----------|----------\n| **Manual** | You click \"Run\" yourself — no automatic scheduling\n| **Hourly** | Runs every hour\n| **Daily** | Runs once per day\n| **Weekly** | Runs once per week\n| **Monthly** | Runs once per month\n\n> **Tip:** Start with \"Manual\" to test your agent, then switch to an automatic frequency once you're satisfied with the results.", "frequencyContent": "| Frequency | Behavior\n|-----------|----------\n| **Manual** | You click \"Run\" yourself — no automatic scheduling\n| **Hourly** | Runs every hour\n| **Daily** | Runs once per day\n| **Weekly** | Runs once per week\n| **Monthly** | Runs once per month\n\n> **Tip:** Start with \"Manual\" to test your agent, then switch to an automatic frequency once you're satisfied with the results.",
"targetNotebook": "Target notebook", "targetNotebook": "Target notebook",
@@ -2545,7 +2545,7 @@
"agentType": "Choose the type of task the agent will perform. Each type has different capabilities and fields.", "agentType": "Choose the type of task the agent will perform. Each type has different capabilities and fields.",
"researchTopic": "The subject the agent will research on the web. Be specific for better results.", "researchTopic": "The subject the agent will research on the web. Be specific for better results.",
"description": "A short description of what this agent does. Helps you remember its purpose.", "description": "A short description of what this agent does. Helps you remember its purpose.",
"urls": "List of URLs to scrape. Supports RSS feeds — use feed URLs for richer content (e.g. site.com/feed).", "urls": "List of pages to read. RSS feeds work too — a feed address (e.g. site.com/feed) often gives more articles.",
"sourceNotebook": "The notebook the agent will analyze. It reads notes from this notebook to find connections and themes.", "sourceNotebook": "The notebook the agent will analyze. It reads notes from this notebook to find connections and themes.",
"targetNotebook": "Where the agent's result note will be saved. Choose Inbox or a specific notebook.", "targetNotebook": "Where the agent's result note will be saved. Choose Inbox or a specific notebook.",
"frequency": "How often the agent runs automatically. Start with Manual to test.", "frequency": "How often the agent runs automatically. Start with Manual to test.",
@@ -3508,7 +3508,8 @@
"fetchStatusFailed": "Failed to fetch billing status", "fetchStatusFailed": "Failed to fetch billing status",
"fetchQuotasFailed": "Failed to load credit usage", "fetchQuotasFailed": "Failed to load credit usage",
"fetchInvoicesFailed": "Failed to load billing history.", "fetchInvoicesFailed": "Failed to load billing history.",
"savePercent": "Save ~17%", "savePercent": "Save ~{percent}%",
"billedYearTotal": "thats {price} a year",
"startTrialCta": "Start {days}-day free trial", "startTrialCta": "Start {days}-day free trial",
"trialFeature": "{days}-day free trial (card required)", "trialFeature": "{days}-day free trial (card required)",
"trialEndsOn": "Your free trial ends on {date}. You will then be billed automatically.", "trialEndsOn": "Your free trial ends on {date}. You will then be billed automatically.",
@@ -3663,7 +3664,7 @@
"perMonthAnnual": "/mo, billed yearly", "perMonthAnnual": "/mo, billed yearly",
"perUser": "+ €3.90/user", "perUser": "+ €3.90/user",
"perUserAnnual": "+ €2.90/user, yearly", "perUserAnnual": "+ €2.90/user, yearly",
"savePercent": "Save ~17%", "savePercent": "Save ~{percent}%",
"proMonthly": "€9.90", "proMonthly": "€9.90",
"proAnnualMonthly": "€8.25", "proAnnualMonthly": "€8.25",
"businessMonthly": "€29.90", "businessMonthly": "€29.90",
@@ -3807,7 +3808,7 @@
"mappingHint": "This can take one to three minutes. You can keep browsing; the page will update when it's done.", "mappingHint": "This can take one to three minutes. You can keep browsing; the page will update when it's done.",
"analyzeNow": "Update themes", "analyzeNow": "Update themes",
"emptyNeedMoreNotes": "Add {count} more notes to group your themes (minimum 10).", "emptyNeedMoreNotes": "Add {count} more notes to group your themes (minimum 10).",
"embeddingsHint": "Only {indexed} of {total} notes are indexed for AI. Analysis will prepare them first (this may take several minutes).", "embeddingsHint": "Only {indexed} of {total} notes are ready to group by theme. Update will prepare them first (this may take several minutes).",
"vsGraphHint": "This is not the same as “Link map” (network icon in the sidebar): here, AI groups your notes by theme.", "vsGraphHint": "This is not the same as “Link map” (network icon in the sidebar): here, AI groups your notes by theme.",
"openGraphMap": "Open link map", "openGraphMap": "Open link map",
"analysisFailed": "Analysis failed. Check your AI settings or try again.", "analysisFailed": "Analysis failed. Check your AI settings or try again.",
@@ -4076,7 +4077,7 @@
"chooseNotebook": "Choose a notebook", "chooseNotebook": "Choose a notebook",
"changeNotebook": "Change notebook", "changeNotebook": "Change notebook",
"change": "Change", "change": "Change",
"localDbTitle": "Standalone Database", "localDbTitle": "Table in this note",
"echoPopoverTitle": "Nearby notes", "echoPopoverTitle": "Nearby notes",
"noEchoFound": "No nearby notes found.", "noEchoFound": "No nearby notes found.",
"echoUpgradeText": "Turn this table into a notebook so Memento can find nearby notes.", "echoUpgradeText": "Turn this table into a notebook so Memento can find nearby notes.",
@@ -4087,7 +4088,7 @@
"analyticsDistribution": "Distribution", "analyticsDistribution": "Distribution",
"analyticsTotalRows": "Total Rows", "analyticsTotalRows": "Total Rows",
"analyticsShort": "Analytics", "analyticsShort": "Analytics",
"turnIntoLabel": "Inline database", "turnIntoLabel": "Table in the note",
"columnAdded": "Column added!", "columnAdded": "Column added!",
"columnRemoved": "Column removed", "columnRemoved": "Column removed",
"propertyName": "Property {{index}}", "propertyName": "Property {{index}}",
@@ -4125,8 +4126,8 @@
"selectOptionsPlaceholder": "Options separated by commas", "selectOptionsPlaceholder": "Options separated by commas",
"namePlaceholder": "Enter a name…", "namePlaceholder": "Enter a name…",
"or": "or", "or": "or",
"createLocalDb": "Create a standalone local database", "createLocalDb": "Create a table in this note",
"switchToLocalDb": "Switch to local database", "switchToLocalDb": "Back to this notes table",
"untitled": "Untitled", "untitled": "Untitled",
"citationInserted": "Link inserted in the editor!", "citationInserted": "Link inserted in the editor!",
"notesLoadError": "Error loading notes", "notesLoadError": "Error loading notes",

View File

@@ -2190,7 +2190,7 @@
"custom": "Personalizado" "custom": "Personalizado"
}, },
"typeDescriptions": { "typeDescriptions": {
"scraper": "Extrae contenido de múltiples sitios y crea un resumen", "scraper": "Lee varios sitios y hace un resumen",
"researcher": "Busca información sobre un tema", "researcher": "Busca información sobre un tema",
"monitor": "Observa un cuaderno y analiza notas", "monitor": "Observa un cuaderno y analiza notas",
"slideGenerator": "Crea una presentación de PowerPoint a partir de notas.", "slideGenerator": "Crea una presentación de PowerPoint a partir de notas.",
@@ -2203,7 +2203,7 @@
"namePlaceholder": "ej. Vigilancia IA del martes", "namePlaceholder": "ej. Vigilancia IA del martes",
"description": "Descripción (opcional)", "description": "Descripción (opcional)",
"descriptionPlaceholder": "Resumen semanal de noticias de IA", "descriptionPlaceholder": "Resumen semanal de noticias de IA",
"urlsLabel": "URLs a extraer", "urlsLabel": "Direcciones de las páginas a leer",
"urlsOptional": "(opcional)", "urlsOptional": "(opcional)",
"sourceNotebook": "Cuaderno a observar", "sourceNotebook": "Cuaderno a observar",
"selectNotebook": "Seleccionar un cuaderno...", "selectNotebook": "Seleccionar un cuaderno...",
@@ -2248,7 +2248,7 @@
"notifyEmail": "Notificación por correo", "notifyEmail": "Notificación por correo",
"notifyEmailHint": "Recibe un correo con los resultados del agente después de cada ejecución", "notifyEmailHint": "Recibe un correo con los resultados del agente después de cada ejecución",
"includeImages": "Incluir imágenes", "includeImages": "Incluir imágenes",
"includeImagesHint": "Extraer imágenes de las páginas analizadas y adjuntarlas a la nota generada", "includeImagesHint": "Tomar las imágenes de las páginas leídas y adjuntarlas a la nota",
"back": "Atrás", "back": "Atrás",
"configuration": "Configuración", "configuration": "Configuración",
"options": "Opciones", "options": "Opciones",
@@ -2347,15 +2347,15 @@
}, },
"veilleAI": { "veilleAI": {
"name": "Vigilancia IA", "name": "Vigilancia IA",
"description": "Extrae contenido de 5 sitios especializados en IA y genera un resumen semanal." "description": "Lee 5 sitios de IA y escribe un resumen semanal."
}, },
"veilleTech": { "veilleTech": {
"name": "Vigilancia Tech", "name": "Vigilancia Tech",
"description": "Extrae contenido de los principales sitios tecnológicos y crea un resumen de noticias." "description": "Lee los principales sitios tecnológicos y escribe un resumen de noticias."
}, },
"veilleDev": { "veilleDev": {
"name": "Vigilancia Dev", "name": "Vigilancia Dev",
"description": "Extrae contenido de sitios de desarrollo y resume nuevas tecnologías y frameworks." "description": "Lee sitios de desarrollo y resume las novedades."
}, },
"surveillant": { "surveillant": {
"name": "Observador de notas", "name": "Observador de notas",
@@ -2402,7 +2402,7 @@
"tools": { "tools": {
"title": "Herramientas del Agente", "title": "Herramientas del Agente",
"webSearch": "Búsqueda Web", "webSearch": "Búsqueda Web",
"webScrape": "Scraping Web", "webScrape": "Lectura de páginas",
"noteSearch": "Búsqueda de Notas", "noteSearch": "Búsqueda de Notas",
"noteRead": "Leer Nota", "noteRead": "Leer Nota",
"noteCreate": "Crear Nota", "noteCreate": "Crear Nota",
@@ -2431,15 +2431,15 @@
"btnLabel": "Ayuda", "btnLabel": "Ayuda",
"close": "Cerrar", "close": "Cerrar",
"whatIsAgent": "¿Qué es un agente?", "whatIsAgent": "¿Qué es un agente?",
"whatIsAgentContent": "An **agent** is an AI assistant that runs automatically to perform tasks for you. It has access to **tools** (web search, web scraping, note reading...) and produces a **note** with its results.\n\nThink of it as a small autonomous worker: you give it a mission, it researches or scrapes information, then writes a structured note you can read later.", "whatIsAgentContent": "An **agent** is an AI assistant that runs automatically to perform tasks for you. It has access to **tools** (web search, reading pages, note reading...) and produces a **note** with its results.\n\nThink of it as a small autonomous worker: you give it a mission, it researches or reads pages, then writes a structured note you can read later.",
"howToUse": "¿Cómo usar un agente?", "howToUse": "¿Cómo usar un agente?",
"howToUseContent": "1. Haz clic en **\"Nuevo agente\"** (o empieza desde una **Plantilla** al final de la página)\n2. Elige un **tipo de agente** (Investigador, Monitor, Observador, Personalizado)\n3. Dale un **nombre** y rellena los campos específicos del tipo\n4. Opcionalmente elige un **cuaderno de destino** donde se guardarán los resultados\n5. Elige una **frecuencia** (Manual = tú lo activas)\n6. Haz clic en **Crear**, luego pulsa el botón **Ejecutar** en la tarjeta del agente\n7. Cuando termine, aparecerá una nueva nota en tu cuaderno de destino", "howToUseContent": "1. Haz clic en **\"Nuevo agente\"** (o empieza desde una **Plantilla** al final de la página)\n2. Elige un **tipo de agente** (Investigador, Monitor, Observador, Personalizado)\n3. Dale un **nombre** y rellena los campos específicos del tipo\n4. Opcionalmente elige un **cuaderno de destino** donde se guardarán los resultados\n5. Elige una **frecuencia** (Manual = tú lo activas)\n6. Haz clic en **Crear**, luego pulsa el botón **Ejecutar** en la tarjeta del agente\n7. Cuando termine, aparecerá una nueva nota en tu cuaderno de destino",
"types": "Tipos de agentes", "types": "Tipos de agentes",
"typesContent": "### Researcher\nSearches the web on a **topic you define** and creates a structured note with sources and references.\n\n- **Fields:** name, research topic (e.g. \"Latest advances in quantum computing\")\n- **Default tools:** web search, web scraping, note search, note creation\n- **Requirements:** a web search provider must be configured (SearXNG or Brave Search)\n\n### Monitor (Scraper)\nScrapes a **list of URLs** you specify and produces a summary of their content.\n\n- **Fields:** name, list of URLs (e.g. tech news sites, blogs...)\n- **Default tools:** web scraping, note creation\n- **Use case:** weekly tech watch, competitor monitoring, blog roundups\n\n### Observer (Notebook Monitor)\nReads notes from a **notebook you select** and produces analysis, connections, and suggestions.\n\n- **Fields:** name, source notebook (the one to analyze)\n- **Default tools:** note search, note read, note creation\n- **Use case:** find connections between your notes, get reading suggestions, detect recurring themes\n\n### Custom\nA blank canvas: you write your own **prompt** and pick your own **tools**.\n\n- **Fields:** name, description, custom instructions (in Advanced mode)\n- **No default tools** — you choose exactly what the agent needs\n- **Use case:** anything creative or specific that doesn't fit the other types", "typesContent": "### Researcher\nSearches the web on a **topic you define** and creates a structured note with sources and references.\n\n- **Fields:** name, research topic (e.g. \"Latest advances in quantum computing\")\n- **Default tools:** web search, reading pages, note search, note creation\n- **Requirements:** a web search provider must be configured (SearXNG or Brave Search)\n\n### Monitor\nReads a **list of pages** you give it and writes a summary.\n\n- **Fields:** name, list of URLs (e.g. tech news sites, blogs...)\n- **Default tools:** reading pages, note creation\n- **Use case:** weekly tech watch, competitor monitoring, blog roundups\n\n### Observer (Notebook Monitor)\nReads notes from a **notebook you select** and produces analysis, connections, and suggestions.\n\n- **Fields:** name, source notebook (the one to analyze)\n- **Default tools:** note search, note read, note creation\n- **Use case:** find connections between your notes, get reading suggestions, detect recurring themes\n\n### Custom\nA blank canvas: you write your own **prompt** and pick your own **tools**.\n\n- **Fields:** name, description, custom instructions (in Advanced mode)\n- **No default tools** — you choose exactly what the agent needs\n- **Use case:** anything creative or specific that doesn't fit the other types",
"advanced": "Modo avanzado (Instrucciones IA, Iteraciones máx.)", "advanced": "Modo avanzado (Instrucciones IA, Iteraciones máx.)",
"advancedContent": "Haz clic en **\"Modo avanzado\"** en la parte inferior del formulario para acceder a ajustes adicionales.\n\n### Instrucciones de IA\n\nEste campo te permite **reemplazar el prompt del sistema por defecto** del agente. Si se deja vacío, el agente usa un prompt automático adaptado a su tipo.\n\n**¿Por qué usarlo?** Quieres controlar exactamente cómo se comporta el agente. Por ejemplo:\n- \"Escribe el resumen en inglés, aunque las fuentes estén en francés\"\n- \"Estructura la nota con secciones: Contexto, Puntos clave, Opinión personal\"\n- \"Ignora los artículos de hace más de 30 días y céntrate en noticias recientes\"\n- \"Para cada tema detectado, sugiere 3 pistas de seguimiento con enlaces\"\n\n> **Nota:** Tus instrucciones reemplazan los valores por defecto, no se añaden a ellos.\n\n### Iteraciones máximas\n\nEste es el **número máximo de ciclos** que puede realizar el agente. Un ciclo = el agente piensa, llama a una herramienta, lee el resultado y luego decide la siguiente acción.\n\n- **3-5 iteraciones:** para tareas simples (analizar una sola página)\n- **10 iteraciones (por defecto):** buen equilibrio para la mayoría de casos\n- **15-25 iteraciones:** para investigación profunda donde el agente necesita explorar múltiples pistas\n\n> **Advertencia:** Más iteraciones = más tiempo y potencialmente mayores costes de API.", "advancedContent": "Haz clic en **\"Modo avanzado\"** en la parte inferior del formulario para acceder a ajustes adicionales.\n\n### Instrucciones de IA\n\nEste campo te permite **reemplazar el prompt del sistema por defecto** del agente. Si se deja vacío, el agente usa un prompt automático adaptado a su tipo.\n\n**¿Por qué usarlo?** Quieres controlar exactamente cómo se comporta el agente. Por ejemplo:\n- \"Escribe el resumen en inglés, aunque las fuentes estén en francés\"\n- \"Estructura la nota con secciones: Contexto, Puntos clave, Opinión personal\"\n- \"Ignora los artículos de hace más de 30 días y céntrate en noticias recientes\"\n- \"Para cada tema detectado, sugiere 3 pistas de seguimiento con enlaces\"\n\n> **Nota:** Tus instrucciones reemplazan los valores por defecto, no se añaden a ellos.\n\n### Iteraciones máximas\n\nEste es el **número máximo de ciclos** que puede realizar el agente. Un ciclo = el agente piensa, llama a una herramienta, lee el resultado y luego decide la siguiente acción.\n\n- **3-5 iteraciones:** para tareas simples (analizar una sola página)\n- **10 iteraciones (por defecto):** buen equilibrio para la mayoría de casos\n- **15-25 iteraciones:** para investigación profunda donde el agente necesita explorar múltiples pistas\n\n> **Advertencia:** Más iteraciones = más tiempo y potencialmente mayores costes de API.",
"tools": "Herramientas disponibles (detalle)", "tools": "Herramientas disponibles (detalle)",
"toolsContent": "When advanced mode is enabled, you can choose exactly which tools the agent can use.\n\n### Web Search\nAllows the agent to **search the internet** via SearXNG or Brave Search.\n\n- **What it does:** The agent formulates a query, gets search results, and can then scrape the most relevant pages.\n- **When to enable:** When the agent needs to find information on a topic (Researcher or Custom type).\n- **Configuration required:** SearXNG (with JSON format enabled) or a Brave Search API key. Configurable in **Admin > Agent Tools**.\n- **Example:** The agent searches \"React Server Components best practices 2025\", gets 10 results, then scrapes the top 3.\n\n### Web Scrape\nAllows the agent to **extract text content from a web page** given its URL.\n\n- **What it does:** The agent visits a URL and retrieves the structured text (headings, paragraphs, lists). Ads, menus and footers are typically filtered out.\n- **When to enable:** For the Monitor type (mandatory), or any agent that needs to read web pages.\n- **Configuration:** Works out of the box, but a **Jina Reader API key** improves quality and removes rate limits. Configurable in **Admin > Agent Tools**.\n- **Example:** The agent scrapes 5 tech blogs and produces a synthesized summary.\n\n### Note Search\nAllows the agent to **search your existing notes**.\n\n- **What it does:** The agent performs a text search across all your notes (or a specific notebook).\n- **When to enable:** For Observer-type agents, or any agent that needs to cross-reference information with your notes.\n- **Configuration:** None — works immediately.\n- **Example:** The agent searches all notes containing \"machine learning\" to see what you've already written on the topic.\n\n### Read Note\nAllows the agent to **read the full content of a specific note**.\n\n- **What it does:** After finding a note (via Note Search), the agent can read its entire content to analyze or use it.\n- **When to enable:** As a companion to Note Search. Enable both together so the agent can search AND read.\n- **Configuration:** None.\n- **Example:** The agent finds 5 notes about \"productivity\", reads them all, and writes a synthesis.\n\n### Create Note\nAllows the agent to **write a new note** in your target notebook.\n\n- **What it does:** The agent creates a note with a title and content. This is how results end up in your notebooks.\n- **When to enable:** Almost always — without this tool, the agent cannot save its results. **Leave it enabled by default.**\n- **Configuration:** None.\n- **Example:** The agent creates a note \"Tech Watch - Week 16\" with a summary of 5 articles.\n\n### Fetch URL\nAllows the agent to **download the raw content of a URL** (HTML, JSON, text...).\n\n- **What it does:** Unlike scraping which extracts clean text, Fetch URL retrieves raw content. Useful for APIs, JSON files, or non-standard pages.\n- **When to enable:** When the agent needs to query REST APIs, read RSS feeds, or access raw data.\n- **Configuration:** None.\n- **Example:** The agent queries the GitHub API to list the latest commits of a project.\n\n### Memory\nAllows the agent to **access its previous execution history**.\n\n- **What it does:** The agent can search through results from past runs. This lets it compare, track changes, or avoid repeating the same information.\n- **When to enable:** For agents that run regularly and need to maintain continuity between executions.\n- **Configuration:** None.\n- **Example:** The agent compares this week's news with last week's and highlights what's new.", "toolsContent": "When advanced mode is enabled, you can choose exactly which tools the agent can use.\n\n### Web Search\nAllows the agent to **search the internet** via SearXNG or Brave Search.\n\n- **What it does:** The agent formulates a query, gets search results, then can read the most useful pages.\n- **When to enable:** When the agent needs to find information on a topic (Researcher or Custom type).\n- **Configuration required:** SearXNG (with JSON format enabled) or a Brave Search API key. Configurable in **Admin > Agent Tools**.\n- **Example:** The agent searches \"React Server Components best practices 2025\", gets 10 results, then reads the top 3.\n\n### Read web pages\nAllows the agent to **read the text of a page** from its address.\n\n- **What it does:** The agent visits a URL and retrieves the structured text (headings, paragraphs, lists). Ads, menus and footers are typically filtered out.\n- **When to enable:** For the Monitor type (mandatory), or any agent that needs to read web pages.\n- **Configuration:** Works out of the box, but a **Jina Reader API key** improves quality and removes rate limits. Configurable in **Admin > Agent Tools**.\n- **Example:** The agent scrapes 5 tech blogs and produces a synthesized summary.\n\n### Note Search\nAllows the agent to **search your existing notes**.\n\n- **What it does:** The agent performs a text search across all your notes (or a specific notebook).\n- **When to enable:** For Observer-type agents, or any agent that needs to cross-reference information with your notes.\n- **Configuration:** None — works immediately.\n- **Example:** The agent searches all notes containing \"machine learning\" to see what you've already written on the topic.\n\n### Read Note\nAllows the agent to **read the full content of a specific note**.\n\n- **What it does:** After finding a note (via Note Search), the agent can read its entire content to analyze or use it.\n- **When to enable:** As a companion to Note Search. Enable both together so the agent can search AND read.\n- **Configuration:** None.\n- **Example:** The agent finds 5 notes about \"productivity\", reads them all, and writes a synthesis.\n\n### Create Note\nAllows the agent to **write a new note** in your target notebook.\n\n- **What it does:** The agent creates a note with a title and content. This is how results end up in your notebooks.\n- **When to enable:** Almost always — without this tool, the agent cannot save its results. **Leave it enabled by default.**\n- **Configuration:** None.\n- **Example:** The agent creates a note \"Tech Watch - Week 16\" with a summary of 5 articles.\n\n### Fetch URL\nAllows the agent to **download the raw content of a URL** (HTML, JSON, text...).\n\n- **What it does:** Unlike scraping which extracts clean text, Fetch URL retrieves raw content. Useful for APIs, JSON files, or non-standard pages.\n- **When to enable:** When the agent needs to query REST APIs, read RSS feeds, or access raw data.\n- **Configuration:** None.\n- **Example:** The agent queries the GitHub API to list the latest commits of a project.\n\n### Memory\nAllows the agent to **access its previous execution history**.\n\n- **What it does:** The agent can search through results from past runs. This lets it compare, track changes, or avoid repeating the same information.\n- **When to enable:** For agents that run regularly and need to maintain continuity between executions.\n- **Configuration:** None.\n- **Example:** The agent compares this week's news with last week's and highlights what's new.",
"frequency": "Frecuencia y programación", "frequency": "Frecuencia y programación",
"frequencyContent": "| Frecuencia | Comportamiento\n|------------|-------------\n| **Manual** | Haces clic en \"Ejecutar\" tú mismo — sin programación automática\n| **Cada hora** | Se ejecuta cada hora\n| **Diario** | Se ejecuta una vez al día\n| **Semanal** | Se ejecuta una vez por semana\n| **Mensual** | Se ejecuta una vez al mes\n\n> **Consejo:** Empieza con \"Manual\" para probar tu agente, luego cambia a una frecuencia automática cuando estés satisfecho con los resultados.", "frequencyContent": "| Frecuencia | Comportamiento\n|------------|-------------\n| **Manual** | Haces clic en \"Ejecutar\" tú mismo — sin programación automática\n| **Cada hora** | Se ejecuta cada hora\n| **Diario** | Se ejecuta una vez al día\n| **Semanal** | Se ejecuta una vez por semana\n| **Mensual** | Se ejecuta una vez al mes\n\n> **Consejo:** Empieza con \"Manual\" para probar tu agente, luego cambia a una frecuencia automática cuando estés satisfecho con los resultados.",
"targetNotebook": "Libreta destino", "targetNotebook": "Libreta destino",
@@ -2447,7 +2447,7 @@
"templates": "Plantillas", "templates": "Plantillas",
"templatesContent": "Templates are pre-configured agents ready to install in one click. You'll find them at the **bottom of the Agents page**.\n\nAvailable templates include:\n\n- **AI Watch** — weekly AI news roundup from 5 specialized sites\n- **Tech Watch** — general tech news summary\n- **Dev Watch** — developer news and new frameworks\n- **Note Observer** — analyzes a notebook and suggests connections\n- **Topic Researcher** — deep research on a specific topic\n\nOnce installed, you can edit the agent to customize it.", "templatesContent": "Templates are pre-configured agents ready to install in one click. You'll find them at the **bottom of the Agents page**.\n\nAvailable templates include:\n\n- **AI Watch** — weekly AI news roundup from 5 specialized sites\n- **Tech Watch** — general tech news summary\n- **Dev Watch** — developer news and new frameworks\n- **Note Observer** — analyzes a notebook and suggests connections\n- **Topic Researcher** — deep research on a specific topic\n\nOnce installed, you can edit the agent to customize it.",
"tips": "Consejos y solución de problemas", "tips": "Consejos y solución de problemas",
"tipsContent": "- **Start with a template** and customize it — it's the fastest way to get a working agent\n- **Test with \"Manual\"** frequency before enabling automatic scheduling\n- **A \"Researcher\" agent requires a web search provider** — configure SearXNG (JSON format) or Brave Search in **Admin > Agent Tools**\n- **If an agent fails**, click on its card then **History** to see the execution log and tool traces\n- **The \"Enabled/Disabled\" toggle** lets you pause an agent without deleting it\n- **Web scraping quality** improves with a Jina Reader API key (optional, in Admin > Agent Tools)\n- **Combine \"Note Search\" + \"Read Note\"** so the agent can find AND analyze your notes' content\n- **Enable \"Memory\"** if your agent runs regularly — it will avoid repeating the same information across runs", "tipsContent": "- **Start with a template** and customize it — it's the fastest way to get a working agent\n- **Test with \"Manual\"** frequency before enabling automatic scheduling\n- **A \"Researcher\" agent requires a web search provider** — configure SearXNG (JSON format) or Brave Search in **Admin > Agent Tools**\n- **If an agent fails**, click on its card then **History** to see the execution log and tool traces\n- **The \"Enabled/Disabled\" toggle** lets you pause an agent without deleting it\n- **Page-reading quality** improves with a Jina Reader API key (optional, in Admin > Agent Tools)\n- **Combine \"Note Search\" + \"Read Note\"** so the agent can find AND analyze your notes' content\n- **Enable \"Memory\"** if your agent runs regularly — it will avoid repeating the same information across runs",
"tooltips": { "tooltips": {
"agentType": "Elija el tipo de tarea que realizará el agente. Cada tipo tiene diferentes capacidades y campos.", "agentType": "Elija el tipo de tarea que realizará el agente. Cada tipo tiene diferentes capacidades y campos.",
"researchTopic": "El tema que el agente investigará en la web. Sea específico para mejores resultados.", "researchTopic": "El tema que el agente investigará en la web. Sea específico para mejores resultados.",
@@ -3176,7 +3176,8 @@
"fetchStatusFailed": "No se pudo obtener el estado de facturación", "fetchStatusFailed": "No se pudo obtener el estado de facturación",
"fetchQuotasFailed": "No se pudieron obtener las cuotas", "fetchQuotasFailed": "No se pudieron obtener las cuotas",
"fetchInvoicesFailed": "No se pudo cargar el historial de facturación.", "fetchInvoicesFailed": "No se pudo cargar el historial de facturación.",
"savePercent": "Ahorra ~17%", "savePercent": "Ahorra ~{percent} %",
"billedYearTotal": "o sea {price} al año",
"cancelSubscription": "Cancelar suscripción", "cancelSubscription": "Cancelar suscripción",
"changeOffer": "Cambiar de oferta", "changeOffer": "Cambiar de oferta",
"downgradeToFree": "Volver a la oferta gratuita", "downgradeToFree": "Volver a la oferta gratuita",
@@ -3385,7 +3386,7 @@
"feature5": "Acompañamiento en la instalación" "feature5": "Acompañamiento en la instalación"
}, },
"basicPrice": "Gratis", "basicPrice": "Gratis",
"savePercent": "Ahorra ~17%", "savePercent": "Ahorra ~{percent} %",
"proMonthly": "9,90€", "proMonthly": "9,90€",
"proAnnualMonthly": "8,25€", "proAnnualMonthly": "8,25€",
"businessMonthly": "29,90€", "businessMonthly": "29,90€",
@@ -3665,7 +3666,7 @@
"mappingHint": "Esto puede tardar de uno a tres minutos. Puedes seguir navegando; la página se actualizará cuando termine.", "mappingHint": "Esto puede tardar de uno a tres minutos. Puedes seguir navegando; la página se actualizará cuando termine.",
"analyzeNow": "Actualizar los temas", "analyzeNow": "Actualizar los temas",
"emptyNeedMoreNotes": "Añade {count} notas más para agrupar tus temas (mínimo 10).", "emptyNeedMoreNotes": "Añade {count} notas más para agrupar tus temas (mínimo 10).",
"embeddingsHint": "Solo {indexed} de {total} notas están indexadas para IA.", "embeddingsHint": "Solo {indexed} de {total} notas están listas para agrupar por temas.",
"vsGraphHint": "Esto no es lo mismo que el \"Mapa de enlaces\" (icono de red en la barra lateral): aquí, la IA agrupa tus notas por tema.", "vsGraphHint": "Esto no es lo mismo que el \"Mapa de enlaces\" (icono de red en la barra lateral): aquí, la IA agrupa tus notas por tema.",
"openGraphMap": "Abrir mapa de enlaces", "openGraphMap": "Abrir mapa de enlaces",
"analysisFailed": "Análisis fallido. Revisa tu configuración de IA.", "analysisFailed": "Análisis fallido. Revisa tu configuración de IA.",
@@ -4492,7 +4493,7 @@
"convertSuccess": "¡Conversión completa! Cuaderno vinculado creado.", "convertSuccess": "¡Conversión completa! Cuaderno vinculado creado.",
"convertToNotebook": "Convertir a cuaderno", "convertToNotebook": "Convertir a cuaderno",
"converting": "Convirtiendo…", "converting": "Convirtiendo…",
"createLocalDb": "Crear una base de datos local independiente", "createLocalDb": "Crear una tabla en esta nota",
"createNotebook": "Crear", "createNotebook": "Crear",
"defaultOption1": "Opción 1", "defaultOption1": "Opción 1",
"defaultOption2": "Opción 2", "defaultOption2": "Opción 2",
@@ -4514,7 +4515,7 @@
"keywordMatch": "Palabra clave", "keywordMatch": "Palabra clave",
"linkToNotebook": "Enlazar un cuaderno", "linkToNotebook": "Enlazar un cuaderno",
"loadError": "Error al cargar datos estructurados.", "loadError": "Error al cargar datos estructurados.",
"localDbTitle": "Base de datos independiente", "localDbTitle": "Tabla en esta nota",
"namePlaceholder": "Introduce un nombre…", "namePlaceholder": "Introduce un nombre…",
"noEchoFound": "No se encontraron notas cercanas.", "noEchoFound": "No se encontraron notas cercanas.",
"noNotebook": "Este bloque requiere un cuaderno. Mueve esta nota a un cuaderno primero.", "noNotebook": "Este bloque requiere un cuaderno. Mueve esta nota a un cuaderno primero.",
@@ -4528,8 +4529,8 @@
"selectNotebook": "Enlazar un cuaderno", "selectNotebook": "Enlazar un cuaderno",
"selectOptionsPlaceholder": "Opciones separadas por comas", "selectOptionsPlaceholder": "Opciones separadas por comas",
"semanticEcho": "Resonancias semánticas", "semanticEcho": "Resonancias semánticas",
"switchToLocalDb": "Cambiar a base de datos local", "switchToLocalDb": "Volver a la tabla de esta nota",
"turnIntoLabel": "Base de datos en línea", "turnIntoLabel": "Tabla en la nota",
"untitled": "Sin título" "untitled": "Sin título"
}, },
"structuredViews": { "structuredViews": {

View File

@@ -2190,7 +2190,7 @@
"custom": "سفارشی" "custom": "سفارشی"
}, },
"typeDescriptions": { "typeDescriptions": {
"scraper": "چندین سایت را استخراج و خلاصه‌ای ایجاد می‌کند", "scraper": "چند سایت را می‌خواند و خلاصه می‌نویسد",
"researcher": "اطلاعاتی درباره یک موضوع جستجو می‌کند", "researcher": "اطلاعاتی درباره یک موضوع جستجو می‌کند",
"monitor": "یک دفترچه را نظارت و یادداشت‌ها را تحلیل می‌کند", "monitor": "یک دفترچه را نظارت و یادداشت‌ها را تحلیل می‌کند",
"slideGenerator": "یک ارائه پاورپوینت از یادداشت ها ایجاد می کند", "slideGenerator": "یک ارائه پاورپوینت از یادداشت ها ایجاد می کند",
@@ -2203,7 +2203,7 @@
"namePlaceholder": "مثال: پایش هوش مصنوعی سه‌شنبه", "namePlaceholder": "مثال: پایش هوش مصنوعی سه‌شنبه",
"description": "توضیحات (اختیاری)", "description": "توضیحات (اختیاری)",
"descriptionPlaceholder": "خلاصه هفتگی اخبار هوش مصنوعی", "descriptionPlaceholder": "خلاصه هفتگی اخبار هوش مصنوعی",
"urlsLabel": "آدرس‌های URL برای استخراج", "urlsLabel": "نشانی صفحه‌هایی که باید خوانده شوند",
"urlsOptional": "(اختیاری)", "urlsOptional": "(اختیاری)",
"sourceNotebook": "دفترچه برای نظارت", "sourceNotebook": "دفترچه برای نظارت",
"selectNotebook": "یک دفترچه انتخاب کنید...", "selectNotebook": "یک دفترچه انتخاب کنید...",
@@ -2248,7 +2248,7 @@
"notifyEmail": "اعلان ایمیل", "notifyEmail": "اعلان ایمیل",
"notifyEmailHint": "پس از هر اجرا، ایمیل حاوی نتایج عامل دریافت کنید", "notifyEmailHint": "پس از هر اجرا، ایمیل حاوی نتایج عامل دریافت کنید",
"includeImages": "شامل تصاویر", "includeImages": "شامل تصاویر",
"includeImagesHint": "استخراج تصاویر از صفحات استخراج شده و پیوست به یادداشت تولید شده", "includeImagesHint": "تصویرها را از صفحه‌های خوانده‌شده به یادداشت بچسبانید",
"back": "بازگشت", "back": "بازگشت",
"configuration": "پیکربندی", "configuration": "پیکربندی",
"options": "گزینه‌ها", "options": "گزینه‌ها",
@@ -2347,15 +2347,15 @@
}, },
"veilleAI": { "veilleAI": {
"name": "پایش هوش مصنوعی", "name": "پایش هوش مصنوعی",
"description": "از ۵ سایت تخصصی هوش مصنوعی استخراج و خلاصه هفتگی تولید می‌کند." "description": "۵ سایت هوش مصنوعی را می‌خواند و خلاصه هفتگی می‌نویسد."
}, },
"veilleTech": { "veilleTech": {
"name": "پایش فناوری", "name": "پایش فناوری",
"description": "از سایت‌های فناوری اصلی استخراج و خلاصه اخبار ایجاد می‌کند." "description": "سایت‌های فناوری اصلی را می‌خواند و خلاصه اخبار می‌نویسد."
}, },
"veilleDev": { "veilleDev": {
"name": "پایش توسعه", "name": "پایش توسعه",
"description": "از سایت‌های توسعه استخراج و فناوری‌ها و فریمورک‌های جدید را خلاصه می‌کند." "description": "سایت‌های توسعه را می‌خواند و تازه‌ها را خلاصه می‌کند."
}, },
"surveillant": { "surveillant": {
"name": "ناظر یادداشت", "name": "ناظر یادداشت",
@@ -3177,7 +3177,8 @@
"fetchStatusFailed": "دریافت وضعیت صورتحساب ناموفق بود", "fetchStatusFailed": "دریافت وضعیت صورتحساب ناموفق بود",
"fetchQuotasFailed": "دریافت سهمیه‌ها ناموفق بود", "fetchQuotasFailed": "دریافت سهمیه‌ها ناموفق بود",
"fetchInvoicesFailed": "بارگذاری تاریخچه صورتحساب ناموفق بود.", "fetchInvoicesFailed": "بارگذاری تاریخچه صورتحساب ناموفق بود.",
"savePercent": "~۱۷٪ صرفه‌جویی", "savePercent": "~{percent}٪ صرفه‌جویی",
"billedYearTotal": "یعنی {price} در سال",
"cancelSubscription": "لغو اشتراک", "cancelSubscription": "لغو اشتراک",
"changeOffer": "تغییر طرح", "changeOffer": "تغییر طرح",
"downgradeToFree": "بازگشت به طرح رایگان", "downgradeToFree": "بازگشت به طرح رایگان",
@@ -3385,7 +3386,7 @@
"feature5": "همراهی هنگام راه‌اندازی" "feature5": "همراهی هنگام راه‌اندازی"
}, },
"basicPrice": "رایگان", "basicPrice": "رایگان",
"savePercent": "حدود ۱۷٪ صرفه‌جویی", "savePercent": "حدود {percent}٪ صرفه‌جویی",
"proMonthly": "۹٫۹۰€", "proMonthly": "۹٫۹۰€",
"proAnnualMonthly": "۸٫۲۵€", "proAnnualMonthly": "۸٫۲۵€",
"businessMonthly": "۲۹٫۹۰€", "businessMonthly": "۲۹٫۹۰€",
@@ -3665,7 +3666,7 @@
"mappingHint": "این کار ممکن است یک تا سه دقیقه طول بکشد. می‌توانید به مرور ادامه دهید؛ صفحه به‌طور خودکار به‌روزرسانی می‌شود.", "mappingHint": "این کار ممکن است یک تا سه دقیقه طول بکشد. می‌توانید به مرور ادامه دهید؛ صفحه به‌طور خودکار به‌روزرسانی می‌شود.",
"analyzeNow": "به‌روزرسانی موضوع‌ها", "analyzeNow": "به‌روزرسانی موضوع‌ها",
"emptyNeedMoreNotes": "{count} یادداشت دیگر اضافه کنید تا موضوع‌ها گروه‌بندی شوند (حداقل ۱۰).", "emptyNeedMoreNotes": "{count} یادداشت دیگر اضافه کنید تا موضوع‌ها گروه‌بندی شوند (حداقل ۱۰).",
"embeddingsHint": "فقط {indexed} از {total} یادداشت برای هوش مصنوعی نمایه‌سازی شده‌اند.", "embeddingsHint": "فقط {indexed} از {total} یادداشت آماده گروه‌بندی بر اساس موضوع هستند.",
"vsGraphHint": "با «نقشه پیوندها» (آیکون شبکه) یکسان نیست: اینجا هوش مصنوعی بر اساس معنا گروه‌بندی می‌کند.", "vsGraphHint": "با «نقشه پیوندها» (آیکون شبکه) یکسان نیست: اینجا هوش مصنوعی بر اساس معنا گروه‌بندی می‌کند.",
"openGraphMap": "باز کردن نقشه پیوندها", "openGraphMap": "باز کردن نقشه پیوندها",
"analysisFailed": "تحلیل ناموفق. تنظیمات هوش مصنوعی را بررسی کنید.", "analysisFailed": "تحلیل ناموفق. تنظیمات هوش مصنوعی را بررسی کنید.",
@@ -4492,7 +4493,7 @@
"convertSuccess": "تبدیل کامل شد! دفترچه پیوندی ایجاد شد.", "convertSuccess": "تبدیل کامل شد! دفترچه پیوندی ایجاد شد.",
"convertToNotebook": "تبدیل به دفترچه", "convertToNotebook": "تبدیل به دفترچه",
"converting": "در حال تبدیل…", "converting": "در حال تبدیل…",
"createLocalDb": "ایجاد یک پایگاه داده محلی مستقل", "createLocalDb": "ایجاد جدول در این یادداشت",
"createNotebook": "ایجاد دفترچه", "createNotebook": "ایجاد دفترچه",
"defaultOption1": "گزینه ۱", "defaultOption1": "گزینه ۱",
"defaultOption2": "گزینه ۲", "defaultOption2": "گزینه ۲",
@@ -4514,7 +4515,7 @@
"keywordMatch": "کلمه کلیدی", "keywordMatch": "کلمه کلیدی",
"linkToNotebook": "پیوند به یک دفترچه", "linkToNotebook": "پیوند به یک دفترچه",
"loadError": "خطا در بارگذاری داده‌های ساختاریافته.", "loadError": "خطا در بارگذاری داده‌های ساختاریافته.",
"localDbTitle": "پایگاه داده مستقل", "localDbTitle": "جدول در این یادداشت",
"namePlaceholder": "یک نام وارد کنید…", "namePlaceholder": "یک نام وارد کنید…",
"noEchoFound": "یادداشت نزدیکی پیدا نشد.", "noEchoFound": "یادداشت نزدیکی پیدا نشد.",
"noNotebook": "این بلوک به یک دفترچه نیاز دارد. ابتدا این یادداشت را به یک دفترچه منتقل کنید.", "noNotebook": "این بلوک به یک دفترچه نیاز دارد. ابتدا این یادداشت را به یک دفترچه منتقل کنید.",
@@ -4528,8 +4529,8 @@
"selectNotebook": "پیوند به یک دفترچه", "selectNotebook": "پیوند به یک دفترچه",
"selectOptionsPlaceholder": "گزینه‌های جدا شده با ویرگول", "selectOptionsPlaceholder": "گزینه‌های جدا شده با ویرگول",
"semanticEcho": "طنین‌های معنایی", "semanticEcho": "طنین‌های معنایی",
"switchToLocalDb": "تغییر به پایگاه داده محلی", "switchToLocalDb": "بازگشت به جدول این یادداشت",
"turnIntoLabel": "پایگاه داده درون‌خطی", "turnIntoLabel": "جدول داخل یادداشت",
"untitled": "بدون عنوان" "untitled": "بدون عنوان"
}, },
"structuredViews": { "structuredViews": {

View File

@@ -2288,7 +2288,7 @@
"custom": "Personnalisé" "custom": "Personnalisé"
}, },
"typeDescriptions": { "typeDescriptions": {
"scraper": "Scrape plusieurs sites et crée un résumé", "scraper": "Lit plusieurs sites et en fait un résumé",
"researcher": "Recherche des informations sur un sujet", "researcher": "Recherche des informations sur un sujet",
"monitor": "Surveille un carnet et analyse les notes", "monitor": "Surveille un carnet et analyse les notes",
"slideGenerator": "Crée une présentation PowerPoint à partir de notes", "slideGenerator": "Crée une présentation PowerPoint à partir de notes",
@@ -2302,7 +2302,7 @@
"namePlaceholder": "Ex : Veille IA du mardi", "namePlaceholder": "Ex : Veille IA du mardi",
"description": "Description (optionnel)", "description": "Description (optionnel)",
"descriptionPlaceholder": "Résumé hebdo des actus IA", "descriptionPlaceholder": "Résumé hebdo des actus IA",
"urlsLabel": "URLs à scraper", "urlsLabel": "Adresses des pages à lire",
"urlsOptional": "(optionnel)", "urlsOptional": "(optionnel)",
"sourceNotebook": "Carnet à surveiller", "sourceNotebook": "Carnet à surveiller",
"selectNotebook": "Sélectionner un carnet...", "selectNotebook": "Sélectionner un carnet...",
@@ -2367,7 +2367,7 @@
"notifyEmail": "Notification par email", "notifyEmail": "Notification par email",
"notifyEmailHint": "Recevez un email avec les résultats de l'agent après chaque exécution", "notifyEmailHint": "Recevez un email avec les résultats de l'agent après chaque exécution",
"includeImages": "Inclure les images", "includeImages": "Inclure les images",
"includeImagesHint": "Extraire les images des pages scrapées et les joindre à la note générée", "includeImagesHint": "Prendre les images des pages lues et les joindre à la note",
"back": "Retour", "back": "Retour",
"configuration": "Configuration", "configuration": "Configuration",
"options": "Options" "options": "Options"
@@ -2446,15 +2446,15 @@
}, },
"veilleAI": { "veilleAI": {
"name": "Veille IA", "name": "Veille IA",
"description": "Scrape les flux RSS de 6 sites IA (The Verge, TechCrunch, Ars Technica, MIT Tech Review, WIRED, Korben) et génère un résumé hebdomadaire." "description": "Lit les flux de 6 sites IA (The Verge, TechCrunch, Ars Technica, MIT Tech Review, WIRED, Korben) et en fait un résumé de la semaine."
}, },
"veilleTech": { "veilleTech": {
"name": "Veille Tech", "name": "Veille Tech",
"description": "Scrape les flux RSS tech (Hacker News, DEV, Product Hunt) et crée un résumé quotidien." "description": "Lit les flux tech (Hacker News, DEV, Product Hunt) et en fait un résumé du jour."
}, },
"veilleDev": { "veilleDev": {
"name": "Veille Dev", "name": "Veille Dev",
"description": "Scrape les flux RSS dev (JavaScript, TypeScript, React) et résume les nouvelles techs." "description": "Lit les flux développement (JavaScript, TypeScript, React) et résume les nouveautés."
}, },
"surveillant": { "surveillant": {
"name": "Surveillant de Notes", "name": "Surveillant de Notes",
@@ -2501,7 +2501,7 @@
"tools": { "tools": {
"title": "Outils de l'agent", "title": "Outils de l'agent",
"webSearch": "Recherche web", "webSearch": "Recherche web",
"webScrape": "Scraping web", "webScrape": "Lecture de pages web",
"noteSearch": "Recherche notes", "noteSearch": "Recherche notes",
"noteRead": "Lire une note", "noteRead": "Lire une note",
"noteCreate": "Créer une note", "noteCreate": "Créer une note",
@@ -2534,11 +2534,11 @@
"howToUse": "Comment utiliser un agent ?", "howToUse": "Comment utiliser un agent ?",
"howToUseContent": "1. Cliquez sur **\"Nouvel Agent\"** (ou commencez par un **Template** en bas de page)\n2. Choisissez un **type d'agent** (Chercheur, Veilleur, Surveillant, Personnalise)\n3. Donnez-lui un **nom** et remplissez les champs specifiques au type\n4. Choisissez optionnellement un **carnet cible** ou sauvegarder les resultats\n5. Selectionnez une **frequence** (Manuel = vous le lancez vous-meme)\n6. Cliquez sur **Creer**, puis appuyez sur le bouton **Executer** sur la carte de l'agent\n7. Une fois termine, une nouvelle note apparait dans votre carnet cible", "howToUseContent": "1. Cliquez sur **\"Nouvel Agent\"** (ou commencez par un **Template** en bas de page)\n2. Choisissez un **type d'agent** (Chercheur, Veilleur, Surveillant, Personnalise)\n3. Donnez-lui un **nom** et remplissez les champs specifiques au type\n4. Choisissez optionnellement un **carnet cible** ou sauvegarder les resultats\n5. Selectionnez une **frequence** (Manuel = vous le lancez vous-meme)\n6. Cliquez sur **Creer**, puis appuyez sur le bouton **Executer** sur la carte de l'agent\n7. Une fois termine, une nouvelle note apparait dans votre carnet cible",
"types": "Types d'agents", "types": "Types d'agents",
"typesContent": "### Chercheur\nRecherche le web sur un **sujet que vous definissez** et cree une note structuree avec des sources et references.\n\n- **Champs :** nom, sujet de recherche (ex : \"Dernieres avancees en intelligence artificielle\")\n- **Outils par defaut :** recherche web, scraping web, recherche de notes, creation de note\n- **Prerequis :** un fournisseur de recherche web doit etre configure (SearXNG ou Brave Search)\n\n### Veilleur (Scraper)\nScrape une **liste d'URLs** que vous spécifiez et produit un résumé de leur contenu.\n\n- **Champs :** nom, liste d'URLs (sites web ou flux RSS)\n- **Outils par défaut :** scraping web, création de note\n- **Astuce RSS :** Utilisez des URLs de flux RSS (ex: `site.com/feed`) pour scraper automatiquement les articles individuels au lieu des pages de liste\n- **Cas d'usage :** veille hebdomadaire tech, surveillance de concurrents, revue de blogs\n\n### Surveillant (Observateur de carnet)\nLit les notes d'un **carnet que vous selectionnez** et produit une analyse, des connexions et des suggestions.\n\n- **Champs :** nom, carnet source (celui a analyser)\n- **Outils par defaut :** recherche de notes, lecture de note, creation de note\n- **Cas d'usage :** trouver des connexions entre vos notes, obtenir des suggestions de lecture, detecter des themes recurrents\n\n### Personnalise\nUne toile vierge : vous ecrivez votre propre **prompt** et choisissez vos **outils**.\n\n- **Champs :** nom, description, instructions personnalisees (en mode avance)\n- **Aucun outil par defaut** — vous choisissez exactement ce dont l'agent a besoin\n- **Cas d'usage :** tout projet creatif ou specifique qui ne rentre pas dans les autres types", "typesContent": "### Chercheur\nRecherche le web sur un **sujet que vous definissez** et cree une note structuree avec des sources et references.\n\n- **Champs :** nom, sujet de recherche (ex : \"Dernieres avancees en intelligence artificielle\")\n- **Outils par defaut :** recherche web, scraping web, recherche de notes, creation de note\n- **Prerequis :** un fournisseur de recherche web doit etre configure (SearXNG ou Brave Search)\n\n### Veilleur\nLit une **liste de pages** que vous indiquez et en produit un résumé.\n\n- **Champs :** nom, liste d'URLs (sites web ou flux RSS)\n- **Outils par défaut :** lecture de pages web, création de note\n- **Astuce RSS :** Utilisez des URLs de flux RSS (ex: `site.com/feed`) pour lire automatiquement les articles un par un au lieu des pages de liste\n- **Cas d'usage :** veille hebdomadaire tech, surveillance de concurrents, revue de blogs\n\n### Surveillant (Observateur de carnet)\nLit les notes d'un **carnet que vous selectionnez** et produit une analyse, des connexions et des suggestions.\n\n- **Champs :** nom, carnet source (celui a analyser)\n- **Outils par defaut :** recherche de notes, lecture de note, creation de note\n- **Cas d'usage :** trouver des connexions entre vos notes, obtenir des suggestions de lecture, detecter des themes recurrents\n\n### Personnalise\nUne toile vierge : vous ecrivez votre propre **prompt** et choisissez vos **outils**.\n\n- **Champs :** nom, description, instructions personnalisees (en mode avance)\n- **Aucun outil par defaut** — vous choisissez exactement ce dont l'agent a besoin\n- **Cas d'usage :** tout projet creatif ou specifique qui ne rentre pas dans les autres types",
"advanced": "Mode avance (Instructions IA, Iterations max)", "advanced": "Mode avance (Instructions IA, Iterations max)",
"advancedContent": "Cliquez sur **\"Mode avance\"** en bas du formulaire pour acceder aux reglages supplementaires.\n\n### Instructions IA\n\nCe champ vous permet de **remplacer le prompt systeme par defaut** de l'agent. Si vous le laissez vide, l'agent utilise un prompt automatique adapte a son type.\n\n**Pourquoi l'utiliser ?** Vous voulez controler exactement le comportement de l'agent. Par exemple :\n- \"Redige le resume en anglais, meme si les sources sont en francais\"\n- \"Structure la note avec les sections : Contexte, Points cles, Opinion personnelle\"\n- \"Ignore les articles de plus de 30 jours et concentre-toi sur l'actualite recente\"\n- \"Pour chaque theme detecte, propose 3 pistes d'approfondissement avec des liens\"\n\n> **Note :** Vos instructions remplacent celles par defaut, pas qu'elles s'y ajoutent.\n\n### Iterations max\n\nC'est le **nombre maximum de cycles** que l'agent peut effectuer. Un cycle = l'agent reflechit, appelle un outil, lit le resultat, puis decide de la prochaine action.\n\n- **3-5 iterations :** pour des taches simples (scraping d'une seule page)\n- **10 iterations (defaut) :** bon equilibre pour la plupart des cas\n- **15-25 iterations :** pour des recherches profondes ou l'agent doit explorer plusieurs pistes\n\n> **Attention :** Plus d'iterations = plus de temps et potentiellement plus de couts API.", "advancedContent": "Cliquez sur **\"Mode avance\"** en bas du formulaire pour acceder aux reglages supplementaires.\n\n### Instructions IA\n\nCe champ vous permet de **remplacer le prompt systeme par defaut** de l'agent. Si vous le laissez vide, l'agent utilise un prompt automatique adapte a son type.\n\n**Pourquoi l'utiliser ?** Vous voulez controler exactement le comportement de l'agent. Par exemple :\n- \"Redige le resume en anglais, meme si les sources sont en francais\"\n- \"Structure la note avec les sections : Contexte, Points cles, Opinion personnelle\"\n- \"Ignore les articles de plus de 30 jours et concentre-toi sur l'actualite recente\"\n- \"Pour chaque theme detecte, propose 3 pistes d'approfondissement avec des liens\"\n\n> **Note :** Vos instructions remplacent celles par defaut, pas qu'elles s'y ajoutent.\n\n### Iterations max\n\nC'est le **nombre maximum de cycles** que l'agent peut effectuer. Un cycle = l'agent reflechit, appelle un outil, lit le resultat, puis decide de la prochaine action.\n\n- **3-5 iterations :** pour des taches simples (scraping d'une seule page)\n- **10 iterations (defaut) :** bon equilibre pour la plupart des cas\n- **15-25 iterations :** pour des recherches profondes ou l'agent doit explorer plusieurs pistes\n\n> **Attention :** Plus d'iterations = plus de temps et potentiellement plus de couts API.",
"tools": "Outils disponibles (detail complet)", "tools": "Outils disponibles (detail complet)",
"toolsContent": "Quand le mode avance est active, vous pouvez choisir precisement quels outils l'agent peut utiliser.\n\n### Recherche web\nPermet a l'agent de **lancer des recherches sur internet** via SearXNG ou Brave Search.\n\n- **Ce que ca fait :** L'agent formule une requete, obtient des resultats de recherche, et peut ensuite scraper les pages les plus pertinentes.\n- **Quand l'activer :** Quand l'agent doit trouver des informations sur un sujet (type Chercheur ou Personnalise).\n- **Configuration requise :** SearXNG (avec format JSON active) ou une cle API Brave Search. Configurable dans **Admin > Outils Agents**.\n- **Exemple :** L'agent cherche \"React Server Components best practices 2025\" et obtient 10 resultats, puis scrape les 3 plus pertinents.\n\n### Scraping web\nPermet à l'agent d'**extraire le contenu texte d'une page web** à partir de son URL.\n\n- **Ce que ça fait :** L'agent visite une URL et récupère le texte structuré de la page (titres, paragraphes, listes). Les publicités, menus et pieds de page sont généralement filtrés.\n- **Support RSS/Atom :** Si l'URL est un flux RSS, l'outil détecte automatiquement le flux, parse les articles et scrape les 5 derniers individuellement. Utilisez des URLs de flux RSS pour un contenu beaucoup plus riche que les pages de listing.\n- **Quand l'activer :** Pour le type Veilleur (obligatoire), ou tout agent qui doit lire des pages web.\n- **Configuration :** Fonctionne sans configuration, mais une **clé API Jina Reader** améliore la qualité et supprime les limites de débit. Configurable dans **Admin > Outils Agents**.\n- **Exemple :** L'agent scrape le flux RSS de `techcrunch.com/feed/` et récupère les 5 derniers articles complets.\n\n### Recherche de notes\nPermet a l'agent de **chercher dans vos notes existantes**.\n\n- **Ce que ca fait :** L'agent effectue une recherche textuelle dans toutes vos notes (ou celles d'un carnet specifique).\n- **Quand l'activer :** Pour les agents de type Surveillant, ou tout agent qui doit croiser des informations avec vos notes.\n- **Configuration :** Aucune — fonctionne immediatement.\n- **Exemple :** L'agent cherche toutes les notes contenant \"machine learning\" pour voir ce que vous avez deja ecrit sur le sujet.\n\n### Lire une note\nPermet a l'agent de **lire le contenu complet d'une note** specifique.\n\n- **Ce que ca fait :** Apres avoir trouve une note (via Recherche de notes), l'agent peut lire son contenu integral pour l'analyser ou l'utiliser.\n- **Quand l'activer :** En complement de Recherche de notes. Activer les deux ensemble permet a l'agent de chercher PUIS lire.\n- **Configuration :** Aucune.\n- **Exemple :** L'agent trouve 5 notes sur \"productivite\", les lit toutes, et redige une synthese.\n\n### Creer une note\nPermet a l'agent d'**ecrire une nouvelle note** dans votre carnet cible.\n\n- **Ce que ca fait :** L'agent cree une note avec un titre et du contenu. C'est ainsi que les resultats arrivent dans vos carnets.\n- **Quand l'activer :** Presque toujours — sans cet outil, l'agent ne peut pas sauvegarder ses resultats. **Laissez-le active par defaut.**\n- **Configuration :** Aucune.\n- **Exemple :** L'agent cree une note \"Veille Tech - Semaine 16\" avec un resume de 5 articles.\n\n### Fetch URL\nPermet a l'agent de **telecharger le contenu brut d'une URL** (HTML, JSON, texte...).\n\n- **Ce que ca fait :** Contrairement au scraping qui extrait le texte proprement, Fetch URL recupere le contenu brut. Utile pour les API, les fichiers JSON, ou les pages non standard.\n- **Quand l'activer :** Quand l'agent doit interroger des API REST, lire des flux RSS, ou acceder a des donnees brutes.\n- **Configuration :** Aucune.\n- **Exemple :** L'agent interroge l'API GitHub pour lister les derniers commits d'un projet.\n\n### Memoire\nPermet a l'agent d'**acceder a l'historique de ses executions precedentes**.\n\n- **Ce que ca fait :** L'agent peut rechercher dans les resultats de ses runs passes. Cela lui permet de comparer, de suivre des evolutions, ou de ne pas repeter les memes informations.\n- **Quand l'activer :** Pour les agents qui s'executent regulierement et doivent maintenir une continuite entre les executions.\n- **Configuration :** Aucune.\n- **Exemple :** L'agent compare les actus de cette semaine avec celles de la semaine derniere et met en evidence les nouveautes.", "toolsContent": "Quand le mode avance est active, vous pouvez choisir precisement quels outils l'agent peut utiliser.\n\n### Recherche web\nPermet a l'agent de **lancer des recherches sur internet** via SearXNG ou Brave Search.\n\n- **Ce que ca fait :** L'agent formule une requete, obtient des resultats de recherche, puis peut lire les pages les plus utiles.\n- **Quand l'activer :** Quand l'agent doit trouver des informations sur un sujet (type Chercheur ou Personnalise).\n- **Configuration requise :** SearXNG (avec format JSON active) ou une cle API Brave Search. Configurable dans **Admin > Outils Agents**.\n- **Exemple :** L'agent cherche \"React Server Components best practices 2025\" et obtient 10 resultats, puis lit les 3 plus utiles.\n\n### Lecture de pages web\nPermet à l'agent de **lire le texte d'une page** à partir de son adresse.\n\n- **Ce que ça fait :** L'agent visite une URL et récupère le texte structuré de la page (titres, paragraphes, listes). Les publicités, menus et pieds de page sont généralement filtrés.\n- **Support RSS/Atom :** Si l'URL est un flux RSS, l'outil détecte automatiquement le flux, parse les articles et scrape les 5 derniers individuellement. Utilisez des URLs de flux RSS pour un contenu beaucoup plus riche que les pages de listing.\n- **Quand l'activer :** Pour le type Veilleur (obligatoire), ou tout agent qui doit lire des pages web.\n- **Configuration :** Fonctionne sans configuration, mais une **clé API Jina Reader** améliore la qualité et supprime les limites de débit. Configurable dans **Admin > Outils Agents**.\n- **Exemple :** L'agent scrape le flux RSS de `techcrunch.com/feed/` et récupère les 5 derniers articles complets.\n\n### Recherche de notes\nPermet a l'agent de **chercher dans vos notes existantes**.\n\n- **Ce que ca fait :** L'agent effectue une recherche textuelle dans toutes vos notes (ou celles d'un carnet specifique).\n- **Quand l'activer :** Pour les agents de type Surveillant, ou tout agent qui doit croiser des informations avec vos notes.\n- **Configuration :** Aucune — fonctionne immediatement.\n- **Exemple :** L'agent cherche toutes les notes contenant \"machine learning\" pour voir ce que vous avez deja ecrit sur le sujet.\n\n### Lire une note\nPermet a l'agent de **lire le contenu complet d'une note** specifique.\n\n- **Ce que ca fait :** Apres avoir trouve une note (via Recherche de notes), l'agent peut lire son contenu integral pour l'analyser ou l'utiliser.\n- **Quand l'activer :** En complement de Recherche de notes. Activer les deux ensemble permet a l'agent de chercher PUIS lire.\n- **Configuration :** Aucune.\n- **Exemple :** L'agent trouve 5 notes sur \"productivite\", les lit toutes, et redige une synthese.\n\n### Creer une note\nPermet a l'agent d'**ecrire une nouvelle note** dans votre carnet cible.\n\n- **Ce que ca fait :** L'agent cree une note avec un titre et du contenu. C'est ainsi que les resultats arrivent dans vos carnets.\n- **Quand l'activer :** Presque toujours — sans cet outil, l'agent ne peut pas sauvegarder ses resultats. **Laissez-le active par defaut.**\n- **Configuration :** Aucune.\n- **Exemple :** L'agent cree une note \"Veille Tech - Semaine 16\" avec un resume de 5 articles.\n\n### Fetch URL\nPermet a l'agent de **telecharger le contenu brut d'une URL** (HTML, JSON, texte...).\n\n- **Ce que ca fait :** Contrairement au scraping qui extrait le texte proprement, Fetch URL recupere le contenu brut. Utile pour les API, les fichiers JSON, ou les pages non standard.\n- **Quand l'activer :** Quand l'agent doit interroger des API REST, lire des flux RSS, ou acceder a des donnees brutes.\n- **Configuration :** Aucune.\n- **Exemple :** L'agent interroge l'API GitHub pour lister les derniers commits d'un projet.\n\n### Memoire\nPermet a l'agent d'**acceder a l'historique de ses executions precedentes**.\n\n- **Ce que ca fait :** L'agent peut rechercher dans les resultats de ses runs passes. Cela lui permet de comparer, de suivre des evolutions, ou de ne pas repeter les memes informations.\n- **Quand l'activer :** Pour les agents qui s'executent regulierement et doivent maintenir une continuite entre les executions.\n- **Configuration :** Aucune.\n- **Exemple :** L'agent compare les actus de cette semaine avec celles de la semaine derniere et met en evidence les nouveautes.",
"frequency": "Frequence & planification", "frequency": "Frequence & planification",
"frequencyContent": "| Frequence | Comportement\n|-----------|------------\n| **Manuel** | Vous cliquez sur \"Executer\" — aucune planification automatique\n| **Toutes les heures** | S'execute toutes les heures\n| **Quotidien** | S'execute une fois par jour\n| **Hebdomadaire** | S'execute une fois par semaine\n| **Mensuel** | S'execute une fois par mois\n\n> **Astuce :** Commencez par \"Manuel\" pour tester votre agent, puis passez a une frequence automatique une fois satisfait.", "frequencyContent": "| Frequence | Comportement\n|-----------|------------\n| **Manuel** | Vous cliquez sur \"Executer\" — aucune planification automatique\n| **Toutes les heures** | S'execute toutes les heures\n| **Quotidien** | S'execute une fois par jour\n| **Hebdomadaire** | S'execute une fois par semaine\n| **Mensuel** | S'execute une fois par mois\n\n> **Astuce :** Commencez par \"Manuel\" pour tester votre agent, puis passez a une frequence automatique une fois satisfait.",
"targetNotebook": "Carnet cible", "targetNotebook": "Carnet cible",
@@ -2546,12 +2546,12 @@
"templates": "Modèles", "templates": "Modèles",
"templatesContent": "Les templates sont des agents pré-configurés installables en un clic. Vous les trouvez en **bas de la page Agents**.\n\nTemplates disponibles :\n\n- **Veille IA** — revue hebdomadaire via les flux RSS de 6 sites IA (The Verge, TechCrunch, Ars Technica, MIT Tech Review, WIRED, Korben)\n- **Veille Tech** — résumé quotidien via les flux RSS de Hacker News, DEV Community, Product Hunt\n- **Veille Dev** — nouvelles technos via les flux RSS de DEV (JavaScript, TypeScript, React)\n- **Surveillant de Notes** — analyse un carnet et suggère des connexions\n- **Chercheur de Sujet** — recherche approfondie sur un sujet spécifique\n\nLes templates sont installés avec les outils adaptés à leur type. Vous pouvez les modifier après installation.", "templatesContent": "Les templates sont des agents pré-configurés installables en un clic. Vous les trouvez en **bas de la page Agents**.\n\nTemplates disponibles :\n\n- **Veille IA** — revue hebdomadaire via les flux RSS de 6 sites IA (The Verge, TechCrunch, Ars Technica, MIT Tech Review, WIRED, Korben)\n- **Veille Tech** — résumé quotidien via les flux RSS de Hacker News, DEV Community, Product Hunt\n- **Veille Dev** — nouvelles technos via les flux RSS de DEV (JavaScript, TypeScript, React)\n- **Surveillant de Notes** — analyse un carnet et suggère des connexions\n- **Chercheur de Sujet** — recherche approfondie sur un sujet spécifique\n\nLes templates sont installés avec les outils adaptés à leur type. Vous pouvez les modifier après installation.",
"tips": "Conseils & depannage", "tips": "Conseils & depannage",
"tipsContent": "- **Commencez par un template** et personnalisez-le — c'est le moyen le plus rapide d'obtenir un agent fonctionnel\n- **Testez en \"Manuel\"** avant d'activer la planification automatique\n- **Utilisez des URLs de flux RSS** au lieu des pages de liste pour un contenu beaucoup plus riche (ex: `techcrunch.com/feed/` au lieu de `techcrunch.com/category/ai/`)\n- **Un agent \"Chercheur\" nécessite un fournisseur de recherche web** — configurez SearXNG (format JSON) ou Brave Search dans **Admin > Outils Agents**\n- **Si un agent échoue**, cliquez sur sa carte puis **Historique** pour voir le journal d'exécution et les traces d'outils\n- **Le bouton Activer/Désactiver** permet de mettre en pause un agent sans le supprimer\n- **La qualité du scraping web** s'améliore avec une clé API Jina Reader (optionnel, dans Admin > Outils Agents)\n- **Combinez \"Recherche de notes\" + \"Lire une note\"** pour que l'agent puisse chercher ET analyser le contenu de vos notes\n- **Activez \"Mémoire\"** si votre agent tourne régulièrement — il évitera de répéter les mêmes informations d'une exécution à l'autre\n- **Les agents répondent dans votre langue** — basculez entre français et anglais dans les paramètres", "tipsContent": "- **Commencez par un template** et personnalisez-le — c'est le moyen le plus rapide d'obtenir un agent fonctionnel\n- **Testez en \"Manuel\"** avant d'activer la planification automatique\n- **Utilisez des URLs de flux RSS** au lieu des pages de liste pour un contenu beaucoup plus riche (ex: `techcrunch.com/feed/` au lieu de `techcrunch.com/category/ai/`)\n- **Un agent \"Chercheur\" nécessite un fournisseur de recherche web** — configurez SearXNG (format JSON) ou Brave Search dans **Admin > Outils Agents**\n- **Si un agent échoue**, cliquez sur sa carte puis **Historique** pour voir le journal d'exécution et les traces d'outils\n- **Le bouton Activer/Désactiver** permet de mettre en pause un agent sans le supprimer\n- **La qualité de la lecture de pages** s'améliore avec une clé Jina Reader (optionnel, dans Admin > Outils Agents)\n- **Combinez \"Recherche de notes\" + \"Lire une note\"** pour que l'agent puisse chercher ET analyser le contenu de vos notes\n- **Activez \"Mémoire\"** si votre agent tourne régulièrement — il évitera de répéter les mêmes informations d'une exécution à l'autre\n- **Les agents répondent dans votre langue** — basculez entre français et anglais dans les paramètres",
"tooltips": { "tooltips": {
"agentType": "Choisissez le type de tâche que l'agent effectuera. Chaque type a des capacités et des champs différents.", "agentType": "Choisissez le type de tâche que l'agent effectuera. Chaque type a des capacités et des champs différents.",
"researchTopic": "Le sujet que l'agent recherchera sur le web. Soyez précis pour de meilleurs résultats.", "researchTopic": "Le sujet que l'agent recherchera sur le web. Soyez précis pour de meilleurs résultats.",
"description": "Une courte description de ce que fait cet agent. Vous aide à vous souvenir de son objectif.", "description": "Une courte description de ce que fait cet agent. Vous aide à vous souvenir de son objectif.",
"urls": "Liste des URLs à scraper. Supporte les flux RSS — utilisez les URLs de flux pour un contenu plus riche (ex: site.com/feed).", "urls": "Liste des pages à lire. Les flux RSS marchent aussi — une adresse de flux (ex. site.com/feed) donne souvent plus darticles.",
"sourceNotebook": "Le carnet que l'agent analysera. Il lit les notes de ce carnet pour trouver des connexions et des thèmes.", "sourceNotebook": "Le carnet que l'agent analysera. Il lit les notes de ce carnet pour trouver des connexions et des thèmes.",
"targetNotebook": "Où la note résultat de l'agent sera sauvegardée. Choisissez Boîte de réception ou un carnet spécifique.", "targetNotebook": "Où la note résultat de l'agent sera sauvegardée. Choisissez Boîte de réception ou un carnet spécifique.",
"frequency": "À quelle fréquence l'agent s'exécute automatiquement. Commencez par Manuel pour tester.", "frequency": "À quelle fréquence l'agent s'exécute automatiquement. Commencez par Manuel pour tester.",
@@ -3514,7 +3514,8 @@
"fetchStatusFailed": "Échec du chargement des informations de facturation", "fetchStatusFailed": "Échec du chargement des informations de facturation",
"fetchQuotasFailed": "Échec du chargement des crédits", "fetchQuotasFailed": "Échec du chargement des crédits",
"fetchInvoicesFailed": "Impossible de charger l'historique de facturation.", "fetchInvoicesFailed": "Impossible de charger l'historique de facturation.",
"savePercent": "Économisez ~17%", "savePercent": "Économisez ~{percent} %",
"billedYearTotal": "soit {price} par an",
"startTrialCta": "Essai gratuit {days} jours", "startTrialCta": "Essai gratuit {days} jours",
"trialFeature": "Essai gratuit {days} jours (carte requise)", "trialFeature": "Essai gratuit {days} jours (carte requise)",
"trialEndsOn": "Votre essai gratuit se termine le {date}. Vous serez ensuite facturé automatiquement.", "trialEndsOn": "Votre essai gratuit se termine le {date}. Vous serez ensuite facturé automatiquement.",
@@ -3669,7 +3670,7 @@
"perMonthAnnual": "/mois, facturé à l'année", "perMonthAnnual": "/mois, facturé à l'année",
"perUser": "+ 3,90€/user", "perUser": "+ 3,90€/user",
"perUserAnnual": "+ 2,90€/user, à l'année", "perUserAnnual": "+ 2,90€/user, à l'année",
"savePercent": "~17 %", "savePercent": "~{percent} %",
"proMonthly": "9,90€", "proMonthly": "9,90€",
"proAnnualMonthly": "8,25€", "proAnnualMonthly": "8,25€",
"businessMonthly": "29,90€", "businessMonthly": "29,90€",
@@ -3813,7 +3814,7 @@
"mappingHint": "Cela peut prendre une à trois minutes. Vous pouvez continuer à naviguer ; la page se mettra à jour à la fin.", "mappingHint": "Cela peut prendre une à trois minutes. Vous pouvez continuer à naviguer ; la page se mettra à jour à la fin.",
"analyzeNow": "Mettre à jour les thèmes", "analyzeNow": "Mettre à jour les thèmes",
"emptyNeedMoreNotes": "Ajoutez encore {count} notes pour regrouper vos thèmes (minimum 10).", "emptyNeedMoreNotes": "Ajoutez encore {count} notes pour regrouper vos thèmes (minimum 10).",
"embeddingsHint": "Seulement {indexed} notes sur {total} sont indexées pour lIA. Lanalyse va dabord les préparer (cela peut prendre plusieurs minutes).", "embeddingsHint": "Seulement {indexed} notes sur {total} sont prêtes pour relier les thèmes. La mise à jour va dabord les préparer (cela peut prendre plusieurs minutes).",
"vsGraphHint": "Ce nest pas la même chose que la « Carte des liens » (icône réseau dans la barre latérale) : ici, lIA regroupe vos notes par thèmes.", "vsGraphHint": "Ce nest pas la même chose que la « Carte des liens » (icône réseau dans la barre latérale) : ici, lIA regroupe vos notes par thèmes.",
"openGraphMap": "Ouvrir la carte des liens", "openGraphMap": "Ouvrir la carte des liens",
"analysisFailed": "Lanalyse a échoué. Vérifiez vos paramètres IA ou réessayez.", "analysisFailed": "Lanalyse a échoué. Vérifiez vos paramètres IA ou réessayez.",
@@ -3881,17 +3882,17 @@
}, },
"badgeDominant": "Dominant", "badgeDominant": "Dominant",
"bridgeCount": "pont(s)", "bridgeCount": "pont(s)",
"echoTitle": "Tu reviens sur cette idée", "echoTitle": "Vous revenez sur cette idée",
"tipClusters": "LIA a regroupé vos notes par thèmes, même si elles sont dans des carnets différents. Chaque thème est un sujet sur lequel vous revenez.", "tipClusters": "LIA a regroupé vos notes par thèmes, même si elles sont dans des carnets différents. Chaque thème est un sujet sur lequel vous revenez.",
"tipClustersAction": "Clique sur un thème pour voir ses notes. Clique sur une note pour l'ouvrir.", "tipClustersAction": "Cliquez sur un thème pour voir ses notes. Cliquez sur une note pour louvrir.",
"tipBridgeNotes": "Une note pont relie deux thèmes. On ne garde que le lien le plus fort.", "tipBridgeNotes": "Une note pont relie deux thèmes. On ne garde que le lien le plus fort.",
"tipBridgeNotesAction": "Clique sur une note pour l'ouvrir et comprendre le lien.", "tipBridgeNotesAction": "Cliquez sur une note pour louvrir et comprendre le lien.",
"tipEcho": "Le Memory Echo détecte deux notes écrites à des moments très différents mais qui parlent de la même chose. Ton esprit a revisité une idée sans que tu t'en rendes compte.", "tipEcho": "Memory Echo détecte deux notes écrites à des moments très différents mais qui parlent de la même chose. Votre esprit a revisité une idée sans que vous vous en rendiez compte.",
"tipEchoAction": "Deux notes, même idée, moments différents. Clique pour explorer.", "tipEchoAction": "Deux notes, même idée, moments différents. Cliquez pour explorer.",
"tipSuggestions": "LIA propose un pont seulement quand deux thèmes se touchent vraiment — pas des rapprochements forcés.", "tipSuggestions": "LIA propose un pont seulement quand deux thèmes se touchent vraiment — pas des rapprochements forcés.",
"tipSuggestionsAction": "Clique sur « Créer la note pont » pour créer la note et l'ouvrir immédiatement.", "tipSuggestionsAction": "Cliquez sur « Créer la note pont » pour créer la note et louvrir immédiatement.",
"tipIsolated": "Ces thèmes sont isolés : aucune note ne les relie aux autres. Peut-être explores-tu une idée encore fragile ? Une note de synthèse suffirait à créer le lien.", "tipIsolated": "Ces thèmes sont isolés : aucune note ne les relie aux autres. Peut-être explorez-vous une idée encore fragile ? Une note de synthèse suffirait à créer le lien.",
"tipIsolatedAction": "Ces thèmes n'ont aucune note qui les relie au reste de ta réflexion.", "tipIsolatedAction": "Ces thèmes nont aucune note qui les relie au reste de votre réflexion.",
"recalcSystem": { "recalcSystem": {
"title": "Mise à jour des thèmes", "title": "Mise à jour des thèmes",
"statusSynced": "À jour", "statusSynced": "À jour",
@@ -4082,7 +4083,7 @@
"chooseNotebook": "Choisir un carnet", "chooseNotebook": "Choisir un carnet",
"changeNotebook": "Changer de carnet", "changeNotebook": "Changer de carnet",
"change": "Changer", "change": "Changer",
"localDbTitle": "Base de Données Autonome", "localDbTitle": "Tableau dans cette note",
"echoPopoverTitle": "Notes proches", "echoPopoverTitle": "Notes proches",
"noEchoFound": "Aucune note proche trouvée.", "noEchoFound": "Aucune note proche trouvée.",
"echoUpgradeText": "Convertissez ce tableau en carnet pour que Memento trouve les notes proches.", "echoUpgradeText": "Convertissez ce tableau en carnet pour que Memento trouve les notes proches.",
@@ -4093,7 +4094,7 @@
"analyticsDistribution": "Répartition", "analyticsDistribution": "Répartition",
"analyticsTotalRows": "Total des lignes", "analyticsTotalRows": "Total des lignes",
"analyticsShort": "Analyses", "analyticsShort": "Analyses",
"turnIntoLabel": "Base de données inline", "turnIntoLabel": "Tableau dans la note",
"columnAdded": "Colonne ajoutée !", "columnAdded": "Colonne ajoutée !",
"columnRemoved": "Colonne supprimée", "columnRemoved": "Colonne supprimée",
"propertyName": "Propriété {{index}}", "propertyName": "Propriété {{index}}",
@@ -4131,8 +4132,8 @@
"selectOptionsPlaceholder": "Options séparées par des virgules", "selectOptionsPlaceholder": "Options séparées par des virgules",
"namePlaceholder": "Saisir un nom…", "namePlaceholder": "Saisir un nom…",
"or": "ou", "or": "ou",
"createLocalDb": "Créer une base locale autonome", "createLocalDb": "Créer un tableau dans cette note",
"switchToLocalDb": "Passer en base locale", "switchToLocalDb": "Revenir au tableau de cette note",
"untitled": "Sans titre", "untitled": "Sans titre",
"citationInserted": "Citation insérée dans l'éditeur !", "citationInserted": "Citation insérée dans l'éditeur !",
"notesLoadError": "Erreur de chargement des notes", "notesLoadError": "Erreur de chargement des notes",

View File

@@ -2190,7 +2190,7 @@
"custom": "कस्टम" "custom": "कस्टम"
}, },
"typeDescriptions": { "typeDescriptions": {
"scraper": "कई साइटों से डेटा एकत्र करता है और सारांश बनाता है", "scraper": "कई साइटें पढ़कर सार लिखता है",
"researcher": "किसी विषय पर जानकारी खोजता है", "researcher": "किसी विषय पर जानकारी खोजता है",
"monitor": "नोटबुक की निगरानी करता है और नोट्स का विश्लेषण करता है", "monitor": "नोटबुक की निगरानी करता है और नोट्स का विश्लेषण करता है",
"slideGenerator": "नोट्स से एक पावरपॉइंट प्रेजेंटेशन बनाता है", "slideGenerator": "नोट्स से एक पावरपॉइंट प्रेजेंटेशन बनाता है",
@@ -2203,7 +2203,7 @@
"namePlaceholder": "उदा: मंगलवार AI वॉच", "namePlaceholder": "उदा: मंगलवार AI वॉच",
"description": "विवरण (वैकल्पिक)", "description": "विवरण (वैकल्पिक)",
"descriptionPlaceholder": "साप्ताहिक AI समाचार सारांश", "descriptionPlaceholder": "साप्ताहिक AI समाचार सारांश",
"urlsLabel": "स्क्रैप करने के लिए URL", "urlsLabel": "पढ़ने वाले पेज के पते",
"urlsOptional": "(वैकल्पिक)", "urlsOptional": "(वैकल्पिक)",
"sourceNotebook": "निगरानी करने के लिए नोटबुक", "sourceNotebook": "निगरानी करने के लिए नोटबुक",
"selectNotebook": "नोटबुक चुनें...", "selectNotebook": "नोटबुक चुनें...",
@@ -2248,7 +2248,7 @@
"notifyEmail": "ईमेल सूचना", "notifyEmail": "ईमेल सूचना",
"notifyEmailHint": "प्रत्येक रन के बाद एजेंट के परिणामों के साथ ईमेल प्राप्त करें", "notifyEmailHint": "प्रत्येक रन के बाद एजेंट के परिणामों के साथ ईमेल प्राप्त करें",
"includeImages": "चित्र शामिल करें", "includeImages": "चित्र शामिल करें",
"includeImagesHint": "स्क्रैप किए गए पेजों से चित्र निकालें और उत्पन्न नोट में संलग्न करें", "includeImagesHint": "पढ़े गए पेजों की तस्वीरें नोट में जोड़ें",
"back": "वापस", "back": "वापस",
"configuration": "कॉन्फ़िगरेशन", "configuration": "कॉन्फ़िगरेशन",
"options": "विकल्प", "options": "विकल्प",
@@ -2347,15 +2347,15 @@
}, },
"veilleAI": { "veilleAI": {
"name": "AI वॉच", "name": "AI वॉच",
"description": "5 AI विशेष साइटों से डेटा एकत्र करता है और साप्ताहिक सारांश बनाता है।" "description": "5 AI साइटें पढ़कर साप्ताहिक सार लिखता है।"
}, },
"veilleTech": { "veilleTech": {
"name": "टेक वॉच", "name": "टेक वॉच",
"description": "प्रमुख तकनीकी साइटसे डेटा एकत्र करता है और समाचार सारांश बनाता है।" "description": "मुख्य तकनीकी साइटपढ़कर समाचार सार लिखता है।"
}, },
"veilleDev": { "veilleDev": {
"name": "डेव वॉच", "name": "डेव वॉच",
"description": "विकास साइटसे डेटा एकत्र करता है और नई तकनीकों का सारांश देता है।" "description": "डेव साइटपढ़कर नई तकनीकों का सार लिखता है।"
}, },
"surveillant": { "surveillant": {
"name": "नोट पर्यवेक्षक", "name": "नोट पर्यवेक्षक",
@@ -2402,7 +2402,7 @@
"tools": { "tools": {
"title": "एजेंट टूल", "title": "एजेंट टूल",
"webSearch": "वेब खोज", "webSearch": "वेब खोज",
"webScrape": "वेब स्क्रैप", "webScrape": "पेज पढ़ना",
"noteSearch": "नोट खोज", "noteSearch": "नोट खोज",
"noteRead": "नोट पढ़ें", "noteRead": "नोट पढ़ें",
"noteCreate": "नोट बनाएं", "noteCreate": "नोट बनाएं",
@@ -2431,15 +2431,15 @@
"btnLabel": "सहायता", "btnLabel": "सहायता",
"close": "बंद करें", "close": "बंद करें",
"whatIsAgent": "एजेंट क्या है?", "whatIsAgent": "एजेंट क्या है?",
"whatIsAgentContent": "An **agent** is an AI assistant that runs automatically to perform tasks for you. It has access to **tools** (web search, web scraping, note reading...) and produces a **note** with its results.\n\nThink of it as a small autonomous worker: you give it a mission, it researches or scrapes information, then writes a structured note you can read later.", "whatIsAgentContent": "An **agent** is an AI assistant that runs automatically to perform tasks for you. It has access to **tools** (web search, reading pages, note reading...) and produces a **note** with its results.\n\nThink of it as a small autonomous worker: you give it a mission, it researches or reads pages, then writes a structured note you can read later.",
"howToUse": "एजेंट का उपयोग कैसे करें?", "howToUse": "एजेंट का उपयोग कैसे करें?",
"howToUseContent": "1. **\"नया एजेंट\"** पर क्लिक करें (या पेज के नीचे **टेम्पलेट** से शुरू करें)।", "howToUseContent": "1. **\"नया एजेंट\"** पर क्लिक करें (या पेज के नीचे **टेम्पलेट** से शुरू करें)।",
"types": "एजेंट प्रकार", "types": "एजेंट प्रकार",
"typesContent": "### Researcher\nSearches the web on a **topic you define** and creates a structured note with sources and references.\n\n- **Fields:** name, research topic (e.g. \"Latest advances in quantum computing\")\n- **Default tools:** web search, web scraping, note search, note creation\n- **Requirements:** a web search provider must be configured (SearXNG or Brave Search)\n\n### Monitor (Scraper)\nScrapes a **list of URLs** you specify and produces a summary of their content.\n\n- **Fields:** name, list of URLs (e.g. tech news sites, blogs...)\n- **Default tools:** web scraping, note creation\n- **Use case:** weekly tech watch, competitor monitoring, blog roundups\n\n### Observer (Notebook Monitor)\nReads notes from a **notebook you select** and produces analysis, connections, and suggestions.\n\n- **Fields:** name, source notebook (the one to analyze)\n- **Default tools:** note search, note read, note creation\n- **Use case:** find connections between your notes, get reading suggestions, detect recurring themes\n\n### Custom\nA blank canvas: you write your own **prompt** and pick your own **tools**.\n\n- **Fields:** name, description, custom instructions (in Advanced mode)\n- **No default tools** — you choose exactly what the agent needs\n- **Use case:** anything creative or specific that doesn't fit the other types", "typesContent": "### Researcher\nSearches the web on a **topic you define** and creates a structured note with sources and references.\n\n- **Fields:** name, research topic (e.g. \"Latest advances in quantum computing\")\n- **Default tools:** web search, reading pages, note search, note creation\n- **Requirements:** a web search provider must be configured (SearXNG or Brave Search)\n\n### Monitor\nReads a **list of pages** you give it and writes a summary.\n\n- **Fields:** name, list of URLs (e.g. tech news sites, blogs...)\n- **Default tools:** reading pages, note creation\n- **Use case:** weekly tech watch, competitor monitoring, blog roundups\n\n### Observer (Notebook Monitor)\nReads notes from a **notebook you select** and produces analysis, connections, and suggestions.\n\n- **Fields:** name, source notebook (the one to analyze)\n- **Default tools:** note search, note read, note creation\n- **Use case:** find connections between your notes, get reading suggestions, detect recurring themes\n\n### Custom\nA blank canvas: you write your own **prompt** and pick your own **tools**.\n\n- **Fields:** name, description, custom instructions (in Advanced mode)\n- **No default tools** — you choose exactly what the agent needs\n- **Use case:** anything creative or specific that doesn't fit the other types",
"advanced": "उन्नत मोड (AI निर्देश, अधिकतम पुनरावृत्ति)", "advanced": "उन्नत मोड (AI निर्देश, अधिकतम पुनरावृत्ति)",
"advancedContent": "अतिरिक्त सेटिंग्स तक पहुँचने के लिए फ़ॉर्म के नीचे **\"उन्नत मोड\"** पर क्लिक करें।", "advancedContent": "अतिरिक्त सेटिंग्स तक पहुँचने के लिए फ़ॉर्म के नीचे **\"उन्नत मोड\"** पर क्लिक करें।",
"tools": "उपलब्ध उपकरण (विस्तार)", "tools": "उपलब्ध उपकरण (विस्तार)",
"toolsContent": "When advanced mode is enabled, you can choose exactly which tools the agent can use.\n\n### Web Search\nAllows the agent to **search the internet** via SearXNG or Brave Search.\n\n- **What it does:** The agent formulates a query, gets search results, and can then scrape the most relevant pages.\n- **When to enable:** When the agent needs to find information on a topic (Researcher or Custom type).\n- **Configuration required:** SearXNG (with JSON format enabled) or a Brave Search API key. Configurable in **Admin > Agent Tools**.\n- **Example:** The agent searches \"React Server Components best practices 2025\", gets 10 results, then scrapes the top 3.\n\n### Web Scrape\nAllows the agent to **extract text content from a web page** given its URL.\n\n- **What it does:** The agent visits a URL and retrieves the structured text (headings, paragraphs, lists). Ads, menus and footers are typically filtered out.\n- **When to enable:** For the Monitor type (mandatory), or any agent that needs to read web pages.\n- **Configuration:** Works out of the box, but a **Jina Reader API key** improves quality and removes rate limits. Configurable in **Admin > Agent Tools**.\n- **Example:** The agent scrapes 5 tech blogs and produces a synthesized summary.\n\n### Note Search\nAllows the agent to **search your existing notes**.\n\n- **What it does:** The agent performs a text search across all your notes (or a specific notebook).\n- **When to enable:** For Observer-type agents, or any agent that needs to cross-reference information with your notes.\n- **Configuration:** None — works immediately.\n- **Example:** The agent searches all notes containing \"machine learning\" to see what you've already written on the topic.\n\n### Read Note\nAllows the agent to **read the full content of a specific note**.\n\n- **What it does:** After finding a note (via Note Search), the agent can read its entire content to analyze or use it.\n- **When to enable:** As a companion to Note Search. Enable both together so the agent can search AND read.\n- **Configuration:** None.\n- **Example:** The agent finds 5 notes about \"productivity\", reads them all, and writes a synthesis.\n\n### Create Note\nAllows the agent to **write a new note** in your target notebook.\n\n- **What it does:** The agent creates a note with a title and content. This is how results end up in your notebooks.\n- **When to enable:** Almost always — without this tool, the agent cannot save its results. **Leave it enabled by default.**\n- **Configuration:** None.\n- **Example:** The agent creates a note \"Tech Watch - Week 16\" with a summary of 5 articles.\n\n### Fetch URL\nAllows the agent to **download the raw content of a URL** (HTML, JSON, text...).\n\n- **What it does:** Unlike scraping which extracts clean text, Fetch URL retrieves raw content. Useful for APIs, JSON files, or non-standard pages.\n- **When to enable:** When the agent needs to query REST APIs, read RSS feeds, or access raw data.\n- **Configuration:** None.\n- **Example:** The agent queries the GitHub API to list the latest commits of a project.\n\n### Memory\nAllows the agent to **access its previous execution history**.\n\n- **What it does:** The agent can search through results from past runs. This lets it compare, track changes, or avoid repeating the same information.\n- **When to enable:** For agents that run regularly and need to maintain continuity between executions.\n- **Configuration:** None.\n- **Example:** The agent compares this week's news with last week's and highlights what's new.", "toolsContent": "When advanced mode is enabled, you can choose exactly which tools the agent can use.\n\n### Web Search\nAllows the agent to **search the internet** via SearXNG or Brave Search.\n\n- **What it does:** The agent formulates a query, gets search results, then can read the most useful pages.\n- **When to enable:** When the agent needs to find information on a topic (Researcher or Custom type).\n- **Configuration required:** SearXNG (with JSON format enabled) or a Brave Search API key. Configurable in **Admin > Agent Tools**.\n- **Example:** The agent searches \"React Server Components best practices 2025\", gets 10 results, then reads the top 3.\n\n### Read web pages\nAllows the agent to **read the text of a page** from its address.\n\n- **What it does:** The agent visits a URL and retrieves the structured text (headings, paragraphs, lists). Ads, menus and footers are typically filtered out.\n- **When to enable:** For the Monitor type (mandatory), or any agent that needs to read web pages.\n- **Configuration:** Works out of the box, but a **Jina Reader API key** improves quality and removes rate limits. Configurable in **Admin > Agent Tools**.\n- **Example:** The agent scrapes 5 tech blogs and produces a synthesized summary.\n\n### Note Search\nAllows the agent to **search your existing notes**.\n\n- **What it does:** The agent performs a text search across all your notes (or a specific notebook).\n- **When to enable:** For Observer-type agents, or any agent that needs to cross-reference information with your notes.\n- **Configuration:** None — works immediately.\n- **Example:** The agent searches all notes containing \"machine learning\" to see what you've already written on the topic.\n\n### Read Note\nAllows the agent to **read the full content of a specific note**.\n\n- **What it does:** After finding a note (via Note Search), the agent can read its entire content to analyze or use it.\n- **When to enable:** As a companion to Note Search. Enable both together so the agent can search AND read.\n- **Configuration:** None.\n- **Example:** The agent finds 5 notes about \"productivity\", reads them all, and writes a synthesis.\n\n### Create Note\nAllows the agent to **write a new note** in your target notebook.\n\n- **What it does:** The agent creates a note with a title and content. This is how results end up in your notebooks.\n- **When to enable:** Almost always — without this tool, the agent cannot save its results. **Leave it enabled by default.**\n- **Configuration:** None.\n- **Example:** The agent creates a note \"Tech Watch - Week 16\" with a summary of 5 articles.\n\n### Fetch URL\nAllows the agent to **download the raw content of a URL** (HTML, JSON, text...).\n\n- **What it does:** Unlike scraping which extracts clean text, Fetch URL retrieves raw content. Useful for APIs, JSON files, or non-standard pages.\n- **When to enable:** When the agent needs to query REST APIs, read RSS feeds, or access raw data.\n- **Configuration:** None.\n- **Example:** The agent queries the GitHub API to list the latest commits of a project.\n\n### Memory\nAllows the agent to **access its previous execution history**.\n\n- **What it does:** The agent can search through results from past runs. This lets it compare, track changes, or avoid repeating the same information.\n- **When to enable:** For agents that run regularly and need to maintain continuity between executions.\n- **Configuration:** None.\n- **Example:** The agent compares this week's news with last week's and highlights what's new.",
"frequency": "आवृत्ति और शेड्यूलिंग", "frequency": "आवृत्ति और शेड्यूलिंग",
"frequencyContent": "| आवृत्ति | व्यवहार\n|-----------|----------\n| **मैनुअल** | आप स्वयं \"चलाएँ\" पर क्लिक करते हैं।", "frequencyContent": "| आवृत्ति | व्यवहार\n|-----------|----------\n| **मैनुअल** | आप स्वयं \"चलाएँ\" पर क्लिक करते हैं।",
"targetNotebook": "लक्ष्य नोटबुक", "targetNotebook": "लक्ष्य नोटबुक",
@@ -2447,7 +2447,7 @@
"templates": "टेम्पलेट", "templates": "टेम्पलेट",
"templatesContent": "Templates are pre-configured agents ready to install in one click. You'll find them at the **bottom of the Agents page**.\n\nAvailable templates include:\n\n- **AI Watch** — weekly AI news roundup from 5 specialized sites\n- **Tech Watch** — general tech news summary\n- **Dev Watch** — developer news and new frameworks\n- **Note Observer** — analyzes a notebook and suggests connections\n- **Topic Researcher** — deep research on a specific topic\n\nOnce installed, you can edit the agent to customize it.", "templatesContent": "Templates are pre-configured agents ready to install in one click. You'll find them at the **bottom of the Agents page**.\n\nAvailable templates include:\n\n- **AI Watch** — weekly AI news roundup from 5 specialized sites\n- **Tech Watch** — general tech news summary\n- **Dev Watch** — developer news and new frameworks\n- **Note Observer** — analyzes a notebook and suggests connections\n- **Topic Researcher** — deep research on a specific topic\n\nOnce installed, you can edit the agent to customize it.",
"tips": "सुझाव और समस्या हल", "tips": "सुझाव और समस्या हल",
"tipsContent": "- **Start with a template** and customize it — it's the fastest way to get a working agent\n- **Test with \"Manual\"** frequency before enabling automatic scheduling\n- **A \"Researcher\" agent requires a web search provider** — configure SearXNG (JSON format) or Brave Search in **Admin > Agent Tools**\n- **If an agent fails**, click on its card then **History** to see the execution log and tool traces\n- **The \"Enabled/Disabled\" toggle** lets you pause an agent without deleting it\n- **Web scraping quality** improves with a Jina Reader API key (optional, in Admin > Agent Tools)\n- **Combine \"Note Search\" + \"Read Note\"** so the agent can find AND analyze your notes' content\n- **Enable \"Memory\"** if your agent runs regularly — it will avoid repeating the same information across runs", "tipsContent": "- **Start with a template** and customize it — it's the fastest way to get a working agent\n- **Test with \"Manual\"** frequency before enabling automatic scheduling\n- **A \"Researcher\" agent requires a web search provider** — configure SearXNG (JSON format) or Brave Search in **Admin > Agent Tools**\n- **If an agent fails**, click on its card then **History** to see the execution log and tool traces\n- **The \"Enabled/Disabled\" toggle** lets you pause an agent without deleting it\n- **Page-reading quality** improves with a Jina Reader API key (optional, in Admin > Agent Tools)\n- **Combine \"Note Search\" + \"Read Note\"** so the agent can find AND analyze your notes' content\n- **Enable \"Memory\"** if your agent runs regularly — it will avoid repeating the same information across runs",
"tooltips": { "tooltips": {
"agentType": "एजेंट किस प्रकार का कार्य करेगा उसे चुनें। प्रत्येक प्रकार की अलग क्षमताएं और फ़ील्ड हैं।", "agentType": "एजेंट किस प्रकार का कार्य करेगा उसे चुनें। प्रत्येक प्रकार की अलग क्षमताएं और फ़ील्ड हैं।",
"researchTopic": "वह विषय जिस पर एजेंट वेब पर शोध करेगा। बेहतर परिणामों के लिए विशिष्ट रहें।", "researchTopic": "वह विषय जिस पर एजेंट वेब पर शोध करेगा। बेहतर परिणामों के लिए विशिष्ट रहें।",
@@ -3176,7 +3176,8 @@
"fetchStatusFailed": "बिलिंग स्थिति प्राप्त करने में विफल", "fetchStatusFailed": "बिलिंग स्थिति प्राप्त करने में विफल",
"fetchQuotasFailed": "कोटा प्राप्त करने में विफल", "fetchQuotasFailed": "कोटा प्राप्त करने में विफल",
"fetchInvoicesFailed": "बिलिंग इतिहास लोड करने में विफल।", "fetchInvoicesFailed": "बिलिंग इतिहास लोड करने में विफल।",
"savePercent": "~17% बचाएँ", "savePercent": "~{percent}% बचाएँ",
"billedYearTotal": "अर्थात {price} प्रति वर्ष",
"cancelSubscription": "सदस्यता रद्द करें", "cancelSubscription": "सदस्यता रद्द करें",
"changeOffer": "योजना बदलें", "changeOffer": "योजना बदलें",
"downgradeToFree": "मुफ़्त योजना पर वापस जाएँ", "downgradeToFree": "मुफ़्त योजना पर वापस जाएँ",
@@ -3385,7 +3386,7 @@
"feature5": "शुरुआत में साथ" "feature5": "शुरुआत में साथ"
}, },
"basicPrice": "मुफ़्त", "basicPrice": "मुफ़्त",
"savePercent": "~17% बचाएँ", "savePercent": "~{percent}% बचाएँ",
"proMonthly": "€9.90", "proMonthly": "€9.90",
"proAnnualMonthly": "€8.25", "proAnnualMonthly": "€8.25",
"businessMonthly": "€29.90", "businessMonthly": "€29.90",
@@ -3665,7 +3666,7 @@
"mappingHint": "इसमें एक से तीन मिनट लग सकते हैं। आप ब्राउज़िंग जारी रख सकते हैं; पेज स्वचालित अपडेट होगा।", "mappingHint": "इसमें एक से तीन मिनट लग सकते हैं। आप ब्राउज़िंग जारी रख सकते हैं; पेज स्वचालित अपडेट होगा।",
"analyzeNow": "विषय अपडेट करें", "analyzeNow": "विषय अपडेट करें",
"emptyNeedMoreNotes": "विषय समूह करने के लिए {count} और नोट्स जोड़ें (न्यूनतम 10).", "emptyNeedMoreNotes": "विषय समूह करने के लिए {count} और नोट्स जोड़ें (न्यूनतम 10).",
"embeddingsHint": "केवल {indexed}/{total} नोट्स AI के लिए अनुक्रमित हैं।", "embeddingsHint": "केवल {indexed} / {total} नोट विषय के अनुसार जुड़ने के लिए तैयार हैं।",
"vsGraphHint": "यह \"लिंक मैप\" से अलग है: यहाँ AI लिंक के बजाय अर्थ के अनुसार समूहबद्ध करता है।", "vsGraphHint": "यह \"लिंक मैप\" से अलग है: यहाँ AI लिंक के बजाय अर्थ के अनुसार समूहबद्ध करता है।",
"openGraphMap": "लिंक मानचित्र खोलें", "openGraphMap": "लिंक मानचित्र खोलें",
"analysisFailed": "विश्लेषण विफल। AI सेटिंग्स जांचें।", "analysisFailed": "विश्लेषण विफल। AI सेटिंग्स जांचें।",
@@ -4492,7 +4493,7 @@
"convertSuccess": "रूपांतरण पूर्ण! लिंक किया गया नोटबुक बनाया गया।", "convertSuccess": "रूपांतरण पूर्ण! लिंक किया गया नोटबुक बनाया गया।",
"convertToNotebook": "नोटबुक में बदलें", "convertToNotebook": "नोटबुक में बदलें",
"converting": "रूपांतरित कर रहा है…", "converting": "रूपांतरित कर रहा है…",
"createLocalDb": "स्टैंडअलोन लोकल डेटाबेस बनाए", "createLocalDb": "इस नोट में तालिका बनाए",
"createNotebook": "नोटबुक बनाएं", "createNotebook": "नोटबुक बनाएं",
"defaultOption1": "विकल्प 1", "defaultOption1": "विकल्प 1",
"defaultOption2": "विकल्प 2", "defaultOption2": "विकल्प 2",
@@ -4514,7 +4515,7 @@
"keywordMatch": "कीवर्ड", "keywordMatch": "कीवर्ड",
"linkToNotebook": "नोटबुक से लिंक", "linkToNotebook": "नोटबुक से लिंक",
"loadError": "संरचित डेटा लोड करने में त्रुटि।", "loadError": "संरचित डेटा लोड करने में त्रुटि।",
"localDbTitle": "स्टैंडअलोन डेटाबेस", "localDbTitle": "इस नोट की तालिका",
"namePlaceholder": "नाम दर्ज करें…", "namePlaceholder": "नाम दर्ज करें…",
"noEchoFound": "कोई पास का नोट नहीं मिला।", "noEchoFound": "कोई पास का नोट नहीं मिला।",
"noNotebook": "इस ब्लॉक को नोटबुक चाहिए। पहले इस नोट को नोटबुक में ले जाएं।", "noNotebook": "इस ब्लॉक को नोटबुक चाहिए। पहले इस नोट को नोटबुक में ले जाएं।",
@@ -4528,8 +4529,8 @@
"selectNotebook": "नोटबुक से लिंक", "selectNotebook": "नोटबुक से लिंक",
"selectOptionsPlaceholder": "कॉमा से अलग किए गए विकल्प", "selectOptionsPlaceholder": "कॉमा से अलग किए गए विकल्प",
"semanticEcho": "सिमेंटिक अनुनाद", "semanticEcho": "सिमेंटिक अनुनाद",
"switchToLocalDb": "स्थानीय डेटाबेस पर स्विच करें", "switchToLocalDb": "इस नोट की तालिका पर वापस जाएँ",
"turnIntoLabel": "इनलाइन डेटाबेस", "turnIntoLabel": "नोट में तालिका",
"untitled": "बिना शीर्षक" "untitled": "बिना शीर्षक"
}, },
"structuredViews": { "structuredViews": {

View File

@@ -2190,7 +2190,7 @@
"custom": "Personalizzato" "custom": "Personalizzato"
}, },
"typeDescriptions": { "typeDescriptions": {
"scraper": "Estrae contenuti da più siti e crea un riepilogo", "scraper": "Legge più siti e ne fa un riepilogo",
"researcher": "Cerca informazioni su un argomento", "researcher": "Cerca informazioni su un argomento",
"monitor": "Osserva un quaderno e analizza le note", "monitor": "Osserva un quaderno e analizza le note",
"slideGenerator": "Crea una presentazione PowerPoint dalle note", "slideGenerator": "Crea una presentazione PowerPoint dalle note",
@@ -2203,7 +2203,7 @@
"namePlaceholder": "es. Martedì Watch IA", "namePlaceholder": "es. Martedì Watch IA",
"description": "Descrizione (opzionale)", "description": "Descrizione (opzionale)",
"descriptionPlaceholder": "Riepilogo settimanale delle notizie sull'IA", "descriptionPlaceholder": "Riepilogo settimanale delle notizie sull'IA",
"urlsLabel": "URL da estrarre", "urlsLabel": "Indirizzi delle pagine da leggere",
"urlsOptional": "(opzionale)", "urlsOptional": "(opzionale)",
"sourceNotebook": "Quaderno da osservare", "sourceNotebook": "Quaderno da osservare",
"selectNotebook": "Seleziona un quaderno...", "selectNotebook": "Seleziona un quaderno...",
@@ -2248,7 +2248,7 @@
"notifyEmail": "Notifica email", "notifyEmail": "Notifica email",
"notifyEmailHint": "Ricevi un'email con i risultati dell'agent dopo ogni esecuzione", "notifyEmailHint": "Ricevi un'email con i risultati dell'agent dopo ogni esecuzione",
"includeImages": "Includi immagini", "includeImages": "Includi immagini",
"includeImagesHint": "Estrai immagini dalle pagine analizzate e allegale alla nota generata", "includeImagesHint": "Prendi le immagini dalle pagine lette e allegale alla nota",
"back": "Indietro", "back": "Indietro",
"configuration": "Configurazione", "configuration": "Configurazione",
"options": "Opzioni", "options": "Opzioni",
@@ -2347,15 +2347,15 @@
}, },
"veilleAI": { "veilleAI": {
"name": "Watch IA", "name": "Watch IA",
"description": "Estrae contenuti da 5 siti specializzati in IA e genera un riepilogo settimanale." "description": "Legge 5 siti di IA e scrive un riepilogo settimanale."
}, },
"veilleTech": { "veilleTech": {
"name": "Watch Tech", "name": "Watch Tech",
"description": "Estrae contenuti dai principali siti tecnologici e crea un riepilogo delle notizie." "description": "Legge i principali siti tecnologici e scrive un riepilogo delle notizie."
}, },
"veilleDev": { "veilleDev": {
"name": "Watch Dev", "name": "Watch Dev",
"description": "Estrae contenuti da siti di sviluppo e riassume nuove tecnologie e framework." "description": "Legge siti di sviluppo e riassume le novità."
}, },
"surveillant": { "surveillant": {
"name": "Osservatore di note", "name": "Osservatore di note",
@@ -2402,7 +2402,7 @@
"tools": { "tools": {
"title": "Strumenti Agente", "title": "Strumenti Agente",
"webSearch": "Ricerca Web", "webSearch": "Ricerca Web",
"webScrape": "Scraping Web", "webScrape": "Lettura di pagine",
"noteSearch": "Cerca Note", "noteSearch": "Cerca Note",
"noteRead": "Leggi Nota", "noteRead": "Leggi Nota",
"noteCreate": "Crea Nota", "noteCreate": "Crea Nota",
@@ -2431,15 +2431,15 @@
"btnLabel": "Aiuto", "btnLabel": "Aiuto",
"close": "Chiudi", "close": "Chiudi",
"whatIsAgent": "Cos'è un agente?", "whatIsAgent": "Cos'è un agente?",
"whatIsAgentContent": "An **agent** is an AI assistant that runs automatically to perform tasks for you. It has access to **tools** (web search, web scraping, note reading...) and produces a **note** with its results.\n\nThink of it as a small autonomous worker: you give it a mission, it researches or scrapes information, then writes a structured note you can read later.", "whatIsAgentContent": "An **agent** is an AI assistant that runs automatically to perform tasks for you. It has access to **tools** (web search, reading pages, note reading...) and produces a **note** with its results.\n\nThink of it as a small autonomous worker: you give it a mission, it researches or reads pages, then writes a structured note you can read later.",
"howToUse": "Come usare un agente?", "howToUse": "Come usare un agente?",
"howToUseContent": "1. Fai clic su **\"Nuovo agente\"** (oppure inizia da un **Modello** in fondo alla pagina).", "howToUseContent": "1. Fai clic su **\"Nuovo agente\"** (oppure inizia da un **Modello** in fondo alla pagina).",
"types": "Tipi di agenti", "types": "Tipi di agenti",
"typesContent": "### Researcher\nSearches the web on a **topic you define** and creates a structured note with sources and references.\n\n- **Fields:** name, research topic (e.g. \"Latest advances in quantum computing\")\n- **Default tools:** web search, web scraping, note search, note creation\n- **Requirements:** a web search provider must be configured (SearXNG or Brave Search)\n\n### Monitor (Scraper)\nScrapes a **list of URLs** you specify and produces a summary of their content.\n\n- **Fields:** name, list of URLs (e.g. tech news sites, blogs...)\n- **Default tools:** web scraping, note creation\n- **Use case:** weekly tech watch, competitor monitoring, blog roundups\n\n### Observer (Notebook Monitor)\nReads notes from a **notebook you select** and produces analysis, connections, and suggestions.\n\n- **Fields:** name, source notebook (the one to analyze)\n- **Default tools:** note search, note read, note creation\n- **Use case:** find connections between your notes, get reading suggestions, detect recurring themes\n\n### Custom\nA blank canvas: you write your own **prompt** and pick your own **tools**.\n\n- **Fields:** name, description, custom instructions (in Advanced mode)\n- **No default tools** — you choose exactly what the agent needs\n- **Use case:** anything creative or specific that doesn't fit the other types", "typesContent": "### Researcher\nSearches the web on a **topic you define** and creates a structured note with sources and references.\n\n- **Fields:** name, research topic (e.g. \"Latest advances in quantum computing\")\n- **Default tools:** web search, reading pages, note search, note creation\n- **Requirements:** a web search provider must be configured (SearXNG or Brave Search)\n\n### Monitor\nReads a **list of pages** you give it and writes a summary.\n\n- **Fields:** name, list of URLs (e.g. tech news sites, blogs...)\n- **Default tools:** reading pages, note creation\n- **Use case:** weekly tech watch, competitor monitoring, blog roundups\n\n### Observer (Notebook Monitor)\nReads notes from a **notebook you select** and produces analysis, connections, and suggestions.\n\n- **Fields:** name, source notebook (the one to analyze)\n- **Default tools:** note search, note read, note creation\n- **Use case:** find connections between your notes, get reading suggestions, detect recurring themes\n\n### Custom\nA blank canvas: you write your own **prompt** and pick your own **tools**.\n\n- **Fields:** name, description, custom instructions (in Advanced mode)\n- **No default tools** — you choose exactly what the agent needs\n- **Use case:** anything creative or specific that doesn't fit the other types",
"advanced": "Modalità avanzata (Istruzioni IA, Iterazioni max)", "advanced": "Modalità avanzata (Istruzioni IA, Iterazioni max)",
"advancedContent": "Fai clic su **\"Modalità avanzata\"** in fondo al modulo per accedere a impostazioni aggiuntive.", "advancedContent": "Fai clic su **\"Modalità avanzata\"** in fondo al modulo per accedere a impostazioni aggiuntive.",
"tools": "Strumenti disponibili (dettaglio)", "tools": "Strumenti disponibili (dettaglio)",
"toolsContent": "When advanced mode is enabled, you can choose exactly which tools the agent can use.\n\n### Web Search\nAllows the agent to **search the internet** via SearXNG or Brave Search.\n\n- **What it does:** The agent formulates a query, gets search results, and can then scrape the most relevant pages.\n- **When to enable:** When the agent needs to find information on a topic (Researcher or Custom type).\n- **Configuration required:** SearXNG (with JSON format enabled) or a Brave Search API key. Configurable in **Admin > Agent Tools**.\n- **Example:** The agent searches \"React Server Components best practices 2025\", gets 10 results, then scrapes the top 3.\n\n### Web Scrape\nAllows the agent to **extract text content from a web page** given its URL.\n\n- **What it does:** The agent visits a URL and retrieves the structured text (headings, paragraphs, lists). Ads, menus and footers are typically filtered out.\n- **When to enable:** For the Monitor type (mandatory), or any agent that needs to read web pages.\n- **Configuration:** Works out of the box, but a **Jina Reader API key** improves quality and removes rate limits. Configurable in **Admin > Agent Tools**.\n- **Example:** The agent scrapes 5 tech blogs and produces a synthesized summary.\n\n### Note Search\nAllows the agent to **search your existing notes**.\n\n- **What it does:** The agent performs a text search across all your notes (or a specific notebook).\n- **When to enable:** For Observer-type agents, or any agent that needs to cross-reference information with your notes.\n- **Configuration:** None — works immediately.\n- **Example:** The agent searches all notes containing \"machine learning\" to see what you've already written on the topic.\n\n### Read Note\nAllows the agent to **read the full content of a specific note**.\n\n- **What it does:** After finding a note (via Note Search), the agent can read its entire content to analyze or use it.\n- **When to enable:** As a companion to Note Search. Enable both together so the agent can search AND read.\n- **Configuration:** None.\n- **Example:** The agent finds 5 notes about \"productivity\", reads them all, and writes a synthesis.\n\n### Create Note\nAllows the agent to **write a new note** in your target notebook.\n\n- **What it does:** The agent creates a note with a title and content. This is how results end up in your notebooks.\n- **When to enable:** Almost always — without this tool, the agent cannot save its results. **Leave it enabled by default.**\n- **Configuration:** None.\n- **Example:** The agent creates a note \"Tech Watch - Week 16\" with a summary of 5 articles.\n\n### Fetch URL\nAllows the agent to **download the raw content of a URL** (HTML, JSON, text...).\n\n- **What it does:** Unlike scraping which extracts clean text, Fetch URL retrieves raw content. Useful for APIs, JSON files, or non-standard pages.\n- **When to enable:** When the agent needs to query REST APIs, read RSS feeds, or access raw data.\n- **Configuration:** None.\n- **Example:** The agent queries the GitHub API to list the latest commits of a project.\n\n### Memory\nAllows the agent to **access its previous execution history**.\n\n- **What it does:** The agent can search through results from past runs. This lets it compare, track changes, or avoid repeating the same information.\n- **When to enable:** For agents that run regularly and need to maintain continuity between executions.\n- **Configuration:** None.\n- **Example:** The agent compares this week's news with last week's and highlights what's new.", "toolsContent": "When advanced mode is enabled, you can choose exactly which tools the agent can use.\n\n### Web Search\nAllows the agent to **search the internet** via SearXNG or Brave Search.\n\n- **What it does:** The agent formulates a query, gets search results, then can read the most useful pages.\n- **When to enable:** When the agent needs to find information on a topic (Researcher or Custom type).\n- **Configuration required:** SearXNG (with JSON format enabled) or a Brave Search API key. Configurable in **Admin > Agent Tools**.\n- **Example:** The agent searches \"React Server Components best practices 2025\", gets 10 results, then reads the top 3.\n\n### Read web pages\nAllows the agent to **read the text of a page** from its address.\n\n- **What it does:** The agent visits a URL and retrieves the structured text (headings, paragraphs, lists). Ads, menus and footers are typically filtered out.\n- **When to enable:** For the Monitor type (mandatory), or any agent that needs to read web pages.\n- **Configuration:** Works out of the box, but a **Jina Reader API key** improves quality and removes rate limits. Configurable in **Admin > Agent Tools**.\n- **Example:** The agent scrapes 5 tech blogs and produces a synthesized summary.\n\n### Note Search\nAllows the agent to **search your existing notes**.\n\n- **What it does:** The agent performs a text search across all your notes (or a specific notebook).\n- **When to enable:** For Observer-type agents, or any agent that needs to cross-reference information with your notes.\n- **Configuration:** None — works immediately.\n- **Example:** The agent searches all notes containing \"machine learning\" to see what you've already written on the topic.\n\n### Read Note\nAllows the agent to **read the full content of a specific note**.\n\n- **What it does:** After finding a note (via Note Search), the agent can read its entire content to analyze or use it.\n- **When to enable:** As a companion to Note Search. Enable both together so the agent can search AND read.\n- **Configuration:** None.\n- **Example:** The agent finds 5 notes about \"productivity\", reads them all, and writes a synthesis.\n\n### Create Note\nAllows the agent to **write a new note** in your target notebook.\n\n- **What it does:** The agent creates a note with a title and content. This is how results end up in your notebooks.\n- **When to enable:** Almost always — without this tool, the agent cannot save its results. **Leave it enabled by default.**\n- **Configuration:** None.\n- **Example:** The agent creates a note \"Tech Watch - Week 16\" with a summary of 5 articles.\n\n### Fetch URL\nAllows the agent to **download the raw content of a URL** (HTML, JSON, text...).\n\n- **What it does:** Unlike scraping which extracts clean text, Fetch URL retrieves raw content. Useful for APIs, JSON files, or non-standard pages.\n- **When to enable:** When the agent needs to query REST APIs, read RSS feeds, or access raw data.\n- **Configuration:** None.\n- **Example:** The agent queries the GitHub API to list the latest commits of a project.\n\n### Memory\nAllows the agent to **access its previous execution history**.\n\n- **What it does:** The agent can search through results from past runs. This lets it compare, track changes, or avoid repeating the same information.\n- **When to enable:** For agents that run regularly and need to maintain continuity between executions.\n- **Configuration:** None.\n- **Example:** The agent compares this week's news with last week's and highlights what's new.",
"frequency": "Frequenza e pianificazione", "frequency": "Frequenza e pianificazione",
"frequencyContent": "| Frequenza | Comportamento\n|-----------|----------\n| **Manuale** | Fai clic su \"Esegui\".", "frequencyContent": "| Frequenza | Comportamento\n|-----------|----------\n| **Manuale** | Fai clic su \"Esegui\".",
"targetNotebook": "Quaderno di destinazione", "targetNotebook": "Quaderno di destinazione",
@@ -2447,7 +2447,7 @@
"templates": "Modelli", "templates": "Modelli",
"templatesContent": "Templates are pre-configured agents ready to install in one click. You'll find them at the **bottom of the Agents page**.\n\nAvailable templates include:\n\n- **AI Watch** — weekly AI news roundup from 5 specialized sites\n- **Tech Watch** — general tech news summary\n- **Dev Watch** — developer news and new frameworks\n- **Note Observer** — analyzes a notebook and suggests connections\n- **Topic Researcher** — deep research on a specific topic\n\nOnce installed, you can edit the agent to customize it.", "templatesContent": "Templates are pre-configured agents ready to install in one click. You'll find them at the **bottom of the Agents page**.\n\nAvailable templates include:\n\n- **AI Watch** — weekly AI news roundup from 5 specialized sites\n- **Tech Watch** — general tech news summary\n- **Dev Watch** — developer news and new frameworks\n- **Note Observer** — analyzes a notebook and suggests connections\n- **Topic Researcher** — deep research on a specific topic\n\nOnce installed, you can edit the agent to customize it.",
"tips": "Suggerimenti e risoluzione problemi", "tips": "Suggerimenti e risoluzione problemi",
"tipsContent": "- **Start with a template** and customize it — it's the fastest way to get a working agent\n- **Test with \"Manual\"** frequency before enabling automatic scheduling\n- **A \"Researcher\" agent requires a web search provider** — configure SearXNG (JSON format) or Brave Search in **Admin > Agent Tools**\n- **If an agent fails**, click on its card then **History** to see the execution log and tool traces\n- **The \"Enabled/Disabled\" toggle** lets you pause an agent without deleting it\n- **Web scraping quality** improves with a Jina Reader API key (optional, in Admin > Agent Tools)\n- **Combine \"Note Search\" + \"Read Note\"** so the agent can find AND analyze your notes' content\n- **Enable \"Memory\"** if your agent runs regularly — it will avoid repeating the same information across runs", "tipsContent": "- **Start with a template** and customize it — it's the fastest way to get a working agent\n- **Test with \"Manual\"** frequency before enabling automatic scheduling\n- **A \"Researcher\" agent requires a web search provider** — configure SearXNG (JSON format) or Brave Search in **Admin > Agent Tools**\n- **If an agent fails**, click on its card then **History** to see the execution log and tool traces\n- **The \"Enabled/Disabled\" toggle** lets you pause an agent without deleting it\n- **Page-reading quality** improves with a Jina Reader API key (optional, in Admin > Agent Tools)\n- **Combine \"Note Search\" + \"Read Note\"** so the agent can find AND analyze your notes' content\n- **Enable \"Memory\"** if your agent runs regularly — it will avoid repeating the same information across runs",
"tooltips": { "tooltips": {
"agentType": "Scegli il tipo di attività che l'agente svolgerà. Ogni tipo ha capacità e campi diversi.", "agentType": "Scegli il tipo di attività che l'agente svolgerà. Ogni tipo ha capacità e campi diversi.",
"researchTopic": "L'argomento che l'agente cercherà sul web. Sii specifico per risultati migliori.", "researchTopic": "L'argomento che l'agente cercherà sul web. Sii specifico per risultati migliori.",
@@ -3176,7 +3176,8 @@
"fetchStatusFailed": "Impossibile recuperare lo stato della fatturazione", "fetchStatusFailed": "Impossibile recuperare lo stato della fatturazione",
"fetchQuotasFailed": "Impossibile recuperare le quote", "fetchQuotasFailed": "Impossibile recuperare le quote",
"fetchInvoicesFailed": "Impossibile caricare lo storico delle fatture.", "fetchInvoicesFailed": "Impossibile caricare lo storico delle fatture.",
"savePercent": "Risparmia ~17%", "savePercent": "Risparmia ~{percent} %",
"billedYearTotal": "cioè {price} allanno",
"cancelSubscription": "Annulla abbonamento", "cancelSubscription": "Annulla abbonamento",
"changeOffer": "Cambia offerta", "changeOffer": "Cambia offerta",
"downgradeToFree": "Torna allofferta gratuita", "downgradeToFree": "Torna allofferta gratuita",
@@ -3385,7 +3386,7 @@
"feature5": "Accompagnamento allinstallazione" "feature5": "Accompagnamento allinstallazione"
}, },
"basicPrice": "Gratis", "basicPrice": "Gratis",
"savePercent": "Risparmia ~17%", "savePercent": "Risparmia ~{percent} %",
"proMonthly": "9,90€", "proMonthly": "9,90€",
"proAnnualMonthly": "8,25€", "proAnnualMonthly": "8,25€",
"businessMonthly": "29,90€", "businessMonthly": "29,90€",
@@ -3665,7 +3666,7 @@
"mappingHint": "Può richiedere da uno a tre minuti. Puoi continuare a navigare; la pagina si aggiornerà automaticamente.", "mappingHint": "Può richiedere da uno a tre minuti. Puoi continuare a navigare; la pagina si aggiornerà automaticamente.",
"analyzeNow": "Aggiorna i temi", "analyzeNow": "Aggiorna i temi",
"emptyNeedMoreNotes": "Aggiungi altre {count} note per raggruppare i temi (minimo 10).", "emptyNeedMoreNotes": "Aggiungi altre {count} note per raggruppare i temi (minimo 10).",
"embeddingsHint": "Solo {indexed} di {total} note indicizzate per IA.", "embeddingsHint": "Solo {indexed} di {total} note sono pronte per essere raggruppate per temi.",
"vsGraphHint": "Non è la \"Mappa dei link\": qui l'IA raggruppa per significato, non per link.", "vsGraphHint": "Non è la \"Mappa dei link\": qui l'IA raggruppa per significato, non per link.",
"openGraphMap": "Apri mappa link", "openGraphMap": "Apri mappa link",
"analysisFailed": "Analisi fallita. Controlla le impostazioni IA.", "analysisFailed": "Analisi fallita. Controlla le impostazioni IA.",
@@ -4492,7 +4493,7 @@
"convertSuccess": "Conversione completata! Quaderno collegato creato.", "convertSuccess": "Conversione completata! Quaderno collegato creato.",
"convertToNotebook": "Converti in quaderno", "convertToNotebook": "Converti in quaderno",
"converting": "Conversione…", "converting": "Conversione…",
"createLocalDb": "Crea un database locale autonomo", "createLocalDb": "Crea una tabella in questa nota",
"createNotebook": "Crea notebook", "createNotebook": "Crea notebook",
"defaultOption1": "Opzione 1", "defaultOption1": "Opzione 1",
"defaultOption2": "Opzione 2", "defaultOption2": "Opzione 2",
@@ -4514,7 +4515,7 @@
"keywordMatch": "Parola chiave", "keywordMatch": "Parola chiave",
"linkToNotebook": "Collega a un quaderno", "linkToNotebook": "Collega a un quaderno",
"loadError": "Errore nel caricamento dei dati strutturati.", "loadError": "Errore nel caricamento dei dati strutturati.",
"localDbTitle": "Database autonomo", "localDbTitle": "Tabella in questa nota",
"namePlaceholder": "Inserisci un nome…", "namePlaceholder": "Inserisci un nome…",
"noEchoFound": "Nessuna nota vicina trovata.", "noEchoFound": "Nessuna nota vicina trovata.",
"noNotebook": "Questo blocco richiede un quaderno. Sposta prima questa nota in un quaderno.", "noNotebook": "Questo blocco richiede un quaderno. Sposta prima questa nota in un quaderno.",
@@ -4528,8 +4529,8 @@
"selectNotebook": "Collega a un quaderno", "selectNotebook": "Collega a un quaderno",
"selectOptionsPlaceholder": "Opzioni separate da virgole", "selectOptionsPlaceholder": "Opzioni separate da virgole",
"semanticEcho": "Risonanze semantiche", "semanticEcho": "Risonanze semantiche",
"switchToLocalDb": "Passa a database locale", "switchToLocalDb": "Torna alla tabella di questa nota",
"turnIntoLabel": "Database inline", "turnIntoLabel": "Tabella nella nota",
"untitled": "Senza titolo" "untitled": "Senza titolo"
}, },
"structuredViews": { "structuredViews": {

View File

@@ -2190,7 +2190,7 @@
"custom": "カスタム" "custom": "カスタム"
}, },
"typeDescriptions": { "typeDescriptions": {
"scraper": "複数のサイトをスクレイピングして要約を作成", "scraper": "複数のサイトを読んで要約する",
"researcher": "トピックに関する情報を検索", "researcher": "トピックに関する情報を検索",
"monitor": "ノートブックを監視しノートを分析", "monitor": "ノートブックを監視しノートを分析",
"slideGenerator": "メモから PowerPoint プレゼンテーションを作成します", "slideGenerator": "メモから PowerPoint プレゼンテーションを作成します",
@@ -2203,7 +2203,7 @@
"namePlaceholder": "例火曜日のAIウォッチ", "namePlaceholder": "例火曜日のAIウォッチ",
"description": "説明(任意)", "description": "説明(任意)",
"descriptionPlaceholder": "週次AIニュースまとめ", "descriptionPlaceholder": "週次AIニュースまとめ",
"urlsLabel": "スクレイピングするURL", "urlsLabel": "読むページのアドレス",
"urlsOptional": "(任意)", "urlsOptional": "(任意)",
"sourceNotebook": "監視するノートブック", "sourceNotebook": "監視するノートブック",
"selectNotebook": "ノートブックを選択...", "selectNotebook": "ノートブックを選択...",
@@ -2248,7 +2248,7 @@
"notifyEmail": "メール通知", "notifyEmail": "メール通知",
"notifyEmailHint": "実行後にエージェントの結果をメールで受け取る", "notifyEmailHint": "実行後にエージェントの結果をメールで受け取る",
"includeImages": "画像を含む", "includeImages": "画像を含む",
"includeImagesHint": "スクレイピングしたページから画像を抽出し、生成されたノートに添付する", "includeImagesHint": "読んだページ画像をノートに付ける",
"back": "戻る", "back": "戻る",
"configuration": "設定", "configuration": "設定",
"options": "オプション", "options": "オプション",
@@ -2347,15 +2347,15 @@
}, },
"veilleAI": { "veilleAI": {
"name": "AIウォッチ", "name": "AIウォッチ",
"description": "AI専門の5サイトをスクレイピングし、週まとめを生成します。" "description": "AI専門サイト5件を読んで、週まとめを作ります。"
}, },
"veilleTech": { "veilleTech": {
"name": "Techウォッチ", "name": "Techウォッチ",
"description": "主テックサイトをスクレイピングし、ニュースまとめを作成します。" "description": "主テックサイトを読んで、ニュースまとめを作ます。"
}, },
"veilleDev": { "veilleDev": {
"name": "Devウォッチ", "name": "Devウォッチ",
"description": "開発者向けサイトをスクレイピングし、新しい技術やフレームワークを要約します。" "description": "開発者向けサイトを読んで、新しい技術を要約します。"
}, },
"surveillant": { "surveillant": {
"name": "ノートオブザーバー", "name": "ノートオブザーバー",
@@ -2402,7 +2402,7 @@
"tools": { "tools": {
"title": "エージェントツール", "title": "エージェントツール",
"webSearch": "ウェブ検索", "webSearch": "ウェブ検索",
"webScrape": "ウェブスクレイプ", "webScrape": "ページを読む",
"noteSearch": "ノート検索", "noteSearch": "ノート検索",
"noteRead": "ノート読み取り", "noteRead": "ノート読み取り",
"noteCreate": "ノート作成", "noteCreate": "ノート作成",
@@ -2431,15 +2431,15 @@
"btnLabel": "ヘルプ", "btnLabel": "ヘルプ",
"close": "閉じる", "close": "閉じる",
"whatIsAgent": "エージェントとは?", "whatIsAgent": "エージェントとは?",
"whatIsAgentContent": "An **agent** is an AI assistant that runs automatically to perform tasks for you. It has access to **tools** (web search, web scraping, note reading...) and produces a **note** with its results.\n\nThink of it as a small autonomous worker: you give it a mission, it researches or scrapes information, then writes a structured note you can read later.", "whatIsAgentContent": "An **agent** is an AI assistant that runs automatically to perform tasks for you. It has access to **tools** (web search, reading pages, note reading...) and produces a **note** with its results.\n\nThink of it as a small autonomous worker: you give it a mission, it researches or reads pages, then writes a structured note you can read later.",
"howToUse": "エージェントの使い方", "howToUse": "エージェントの使い方",
"howToUseContent": "1. **「新しいエージェント」**をクリックします(またはページ下部の**テンプレート**から開始します)。", "howToUseContent": "1. **「新しいエージェント」**をクリックします(またはページ下部の**テンプレート**から開始します)。",
"types": "エージェントの種類", "types": "エージェントの種類",
"typesContent": "### Researcher\nSearches the web on a **topic you define** and creates a structured note with sources and references.\n\n- **Fields:** name, research topic (e.g. \"Latest advances in quantum computing\")\n- **Default tools:** web search, web scraping, note search, note creation\n- **Requirements:** a web search provider must be configured (SearXNG or Brave Search)\n\n### Monitor (Scraper)\nScrapes a **list of URLs** you specify and produces a summary of their content.\n\n- **Fields:** name, list of URLs (e.g. tech news sites, blogs...)\n- **Default tools:** web scraping, note creation\n- **Use case:** weekly tech watch, competitor monitoring, blog roundups\n\n### Observer (Notebook Monitor)\nReads notes from a **notebook you select** and produces analysis, connections, and suggestions.\n\n- **Fields:** name, source notebook (the one to analyze)\n- **Default tools:** note search, note read, note creation\n- **Use case:** find connections between your notes, get reading suggestions, detect recurring themes\n\n### Custom\nA blank canvas: you write your own **prompt** and pick your own **tools**.\n\n- **Fields:** name, description, custom instructions (in Advanced mode)\n- **No default tools** — you choose exactly what the agent needs\n- **Use case:** anything creative or specific that doesn't fit the other types", "typesContent": "### Researcher\nSearches the web on a **topic you define** and creates a structured note with sources and references.\n\n- **Fields:** name, research topic (e.g. \"Latest advances in quantum computing\")\n- **Default tools:** web search, reading pages, note search, note creation\n- **Requirements:** a web search provider must be configured (SearXNG or Brave Search)\n\n### Monitor\nReads a **list of pages** you give it and writes a summary.\n\n- **Fields:** name, list of URLs (e.g. tech news sites, blogs...)\n- **Default tools:** reading pages, note creation\n- **Use case:** weekly tech watch, competitor monitoring, blog roundups\n\n### Observer (Notebook Monitor)\nReads notes from a **notebook you select** and produces analysis, connections, and suggestions.\n\n- **Fields:** name, source notebook (the one to analyze)\n- **Default tools:** note search, note read, note creation\n- **Use case:** find connections between your notes, get reading suggestions, detect recurring themes\n\n### Custom\nA blank canvas: you write your own **prompt** and pick your own **tools**.\n\n- **Fields:** name, description, custom instructions (in Advanced mode)\n- **No default tools** — you choose exactly what the agent needs\n- **Use case:** anything creative or specific that doesn't fit the other types",
"advanced": "詳細モードAI指示、最大反復回数", "advanced": "詳細モードAI指示、最大反復回数",
"advancedContent": "フォームの下部にある**「詳細モード」**をクリックして追加設定にアクセスしてください。", "advancedContent": "フォームの下部にある**「詳細モード」**をクリックして追加設定にアクセスしてください。",
"tools": "利用可能なツール(詳細)", "tools": "利用可能なツール(詳細)",
"toolsContent": "When advanced mode is enabled, you can choose exactly which tools the agent can use.\n\n### Web Search\nAllows the agent to **search the internet** via SearXNG or Brave Search.\n\n- **What it does:** The agent formulates a query, gets search results, and can then scrape the most relevant pages.\n- **When to enable:** When the agent needs to find information on a topic (Researcher or Custom type).\n- **Configuration required:** SearXNG (with JSON format enabled) or a Brave Search API key. Configurable in **Admin > Agent Tools**.\n- **Example:** The agent searches \"React Server Components best practices 2025\", gets 10 results, then scrapes the top 3.\n\n### Web Scrape\nAllows the agent to **extract text content from a web page** given its URL.\n\n- **What it does:** The agent visits a URL and retrieves the structured text (headings, paragraphs, lists). Ads, menus and footers are typically filtered out.\n- **When to enable:** For the Monitor type (mandatory), or any agent that needs to read web pages.\n- **Configuration:** Works out of the box, but a **Jina Reader API key** improves quality and removes rate limits. Configurable in **Admin > Agent Tools**.\n- **Example:** The agent scrapes 5 tech blogs and produces a synthesized summary.\n\n### Note Search\nAllows the agent to **search your existing notes**.\n\n- **What it does:** The agent performs a text search across all your notes (or a specific notebook).\n- **When to enable:** For Observer-type agents, or any agent that needs to cross-reference information with your notes.\n- **Configuration:** None — works immediately.\n- **Example:** The agent searches all notes containing \"machine learning\" to see what you've already written on the topic.\n\n### Read Note\nAllows the agent to **read the full content of a specific note**.\n\n- **What it does:** After finding a note (via Note Search), the agent can read its entire content to analyze or use it.\n- **When to enable:** As a companion to Note Search. Enable both together so the agent can search AND read.\n- **Configuration:** None.\n- **Example:** The agent finds 5 notes about \"productivity\", reads them all, and writes a synthesis.\n\n### Create Note\nAllows the agent to **write a new note** in your target notebook.\n\n- **What it does:** The agent creates a note with a title and content. This is how results end up in your notebooks.\n- **When to enable:** Almost always — without this tool, the agent cannot save its results. **Leave it enabled by default.**\n- **Configuration:** None.\n- **Example:** The agent creates a note \"Tech Watch - Week 16\" with a summary of 5 articles.\n\n### Fetch URL\nAllows the agent to **download the raw content of a URL** (HTML, JSON, text...).\n\n- **What it does:** Unlike scraping which extracts clean text, Fetch URL retrieves raw content. Useful for APIs, JSON files, or non-standard pages.\n- **When to enable:** When the agent needs to query REST APIs, read RSS feeds, or access raw data.\n- **Configuration:** None.\n- **Example:** The agent queries the GitHub API to list the latest commits of a project.\n\n### Memory\nAllows the agent to **access its previous execution history**.\n\n- **What it does:** The agent can search through results from past runs. This lets it compare, track changes, or avoid repeating the same information.\n- **When to enable:** For agents that run regularly and need to maintain continuity between executions.\n- **Configuration:** None.\n- **Example:** The agent compares this week's news with last week's and highlights what's new.", "toolsContent": "When advanced mode is enabled, you can choose exactly which tools the agent can use.\n\n### Web Search\nAllows the agent to **search the internet** via SearXNG or Brave Search.\n\n- **What it does:** The agent formulates a query, gets search results, then can read the most useful pages.\n- **When to enable:** When the agent needs to find information on a topic (Researcher or Custom type).\n- **Configuration required:** SearXNG (with JSON format enabled) or a Brave Search API key. Configurable in **Admin > Agent Tools**.\n- **Example:** The agent searches \"React Server Components best practices 2025\", gets 10 results, then reads the top 3.\n\n### Read web pages\nAllows the agent to **read the text of a page** from its address.\n\n- **What it does:** The agent visits a URL and retrieves the structured text (headings, paragraphs, lists). Ads, menus and footers are typically filtered out.\n- **When to enable:** For the Monitor type (mandatory), or any agent that needs to read web pages.\n- **Configuration:** Works out of the box, but a **Jina Reader API key** improves quality and removes rate limits. Configurable in **Admin > Agent Tools**.\n- **Example:** The agent scrapes 5 tech blogs and produces a synthesized summary.\n\n### Note Search\nAllows the agent to **search your existing notes**.\n\n- **What it does:** The agent performs a text search across all your notes (or a specific notebook).\n- **When to enable:** For Observer-type agents, or any agent that needs to cross-reference information with your notes.\n- **Configuration:** None — works immediately.\n- **Example:** The agent searches all notes containing \"machine learning\" to see what you've already written on the topic.\n\n### Read Note\nAllows the agent to **read the full content of a specific note**.\n\n- **What it does:** After finding a note (via Note Search), the agent can read its entire content to analyze or use it.\n- **When to enable:** As a companion to Note Search. Enable both together so the agent can search AND read.\n- **Configuration:** None.\n- **Example:** The agent finds 5 notes about \"productivity\", reads them all, and writes a synthesis.\n\n### Create Note\nAllows the agent to **write a new note** in your target notebook.\n\n- **What it does:** The agent creates a note with a title and content. This is how results end up in your notebooks.\n- **When to enable:** Almost always — without this tool, the agent cannot save its results. **Leave it enabled by default.**\n- **Configuration:** None.\n- **Example:** The agent creates a note \"Tech Watch - Week 16\" with a summary of 5 articles.\n\n### Fetch URL\nAllows the agent to **download the raw content of a URL** (HTML, JSON, text...).\n\n- **What it does:** Unlike scraping which extracts clean text, Fetch URL retrieves raw content. Useful for APIs, JSON files, or non-standard pages.\n- **When to enable:** When the agent needs to query REST APIs, read RSS feeds, or access raw data.\n- **Configuration:** None.\n- **Example:** The agent queries the GitHub API to list the latest commits of a project.\n\n### Memory\nAllows the agent to **access its previous execution history**.\n\n- **What it does:** The agent can search through results from past runs. This lets it compare, track changes, or avoid repeating the same information.\n- **When to enable:** For agents that run regularly and need to maintain continuity between executions.\n- **Configuration:** None.\n- **Example:** The agent compares this week's news with last week's and highlights what's new.",
"frequency": "頻度とスケジュール", "frequency": "頻度とスケジュール",
"frequencyContent": "| 頻度 | 動作\n|-----------|----------\n| **手動** | 自分で「実行」をクリックします。", "frequencyContent": "| 頻度 | 動作\n|-----------|----------\n| **手動** | 自分で「実行」をクリックします。",
"targetNotebook": "保存先ノートブック", "targetNotebook": "保存先ノートブック",
@@ -2447,7 +2447,7 @@
"templates": "テンプレート", "templates": "テンプレート",
"templatesContent": "Templates are pre-configured agents ready to install in one click. You'll find them at the **bottom of the Agents page**.\n\nAvailable templates include:\n\n- **AI Watch** — weekly AI news roundup from 5 specialized sites\n- **Tech Watch** — general tech news summary\n- **Dev Watch** — developer news and new frameworks\n- **Note Observer** — analyzes a notebook and suggests connections\n- **Topic Researcher** — deep research on a specific topic\n\nOnce installed, you can edit the agent to customize it.", "templatesContent": "Templates are pre-configured agents ready to install in one click. You'll find them at the **bottom of the Agents page**.\n\nAvailable templates include:\n\n- **AI Watch** — weekly AI news roundup from 5 specialized sites\n- **Tech Watch** — general tech news summary\n- **Dev Watch** — developer news and new frameworks\n- **Note Observer** — analyzes a notebook and suggests connections\n- **Topic Researcher** — deep research on a specific topic\n\nOnce installed, you can edit the agent to customize it.",
"tips": "ヒントとトラブルシューティング", "tips": "ヒントとトラブルシューティング",
"tipsContent": "- **Start with a template** and customize it — it's the fastest way to get a working agent\n- **Test with \"Manual\"** frequency before enabling automatic scheduling\n- **A \"Researcher\" agent requires a web search provider** — configure SearXNG (JSON format) or Brave Search in **Admin > Agent Tools**\n- **If an agent fails**, click on its card then **History** to see the execution log and tool traces\n- **The \"Enabled/Disabled\" toggle** lets you pause an agent without deleting it\n- **Web scraping quality** improves with a Jina Reader API key (optional, in Admin > Agent Tools)\n- **Combine \"Note Search\" + \"Read Note\"** so the agent can find AND analyze your notes' content\n- **Enable \"Memory\"** if your agent runs regularly — it will avoid repeating the same information across runs", "tipsContent": "- **Start with a template** and customize it — it's the fastest way to get a working agent\n- **Test with \"Manual\"** frequency before enabling automatic scheduling\n- **A \"Researcher\" agent requires a web search provider** — configure SearXNG (JSON format) or Brave Search in **Admin > Agent Tools**\n- **If an agent fails**, click on its card then **History** to see the execution log and tool traces\n- **The \"Enabled/Disabled\" toggle** lets you pause an agent without deleting it\n- **Page-reading quality** improves with a Jina Reader API key (optional, in Admin > Agent Tools)\n- **Combine \"Note Search\" + \"Read Note\"** so the agent can find AND analyze your notes' content\n- **Enable \"Memory\"** if your agent runs regularly — it will avoid repeating the same information across runs",
"tooltips": { "tooltips": {
"agentType": "エージェントが実行するタスクの種類を選択してください。各タイプには異なる機能とフィールドがあります。", "agentType": "エージェントが実行するタスクの種類を選択してください。各タイプには異なる機能とフィールドがあります。",
"researchTopic": "エージェントがウェブで調査するトピック。より良い結果のために具体的に指定してください。", "researchTopic": "エージェントがウェブで調査するトピック。より良い結果のために具体的に指定してください。",
@@ -3176,7 +3176,8 @@
"fetchStatusFailed": "請求ステータスを取得できませんでした", "fetchStatusFailed": "請求ステータスを取得できませんでした",
"fetchQuotasFailed": "クォータを取得できませんでした", "fetchQuotasFailed": "クォータを取得できませんでした",
"fetchInvoicesFailed": "請求履歴を読み込めませんでした。", "fetchInvoicesFailed": "請求履歴を読み込めませんでした。",
"savePercent": "17%お得", "savePercent": "{percent}%お得",
"billedYearTotal": "年額 {price}",
"cancelSubscription": "サブスクリプションをキャンセル", "cancelSubscription": "サブスクリプションをキャンセル",
"changeOffer": "プランを変更", "changeOffer": "プランを変更",
"downgradeToFree": "無料プランに戻る", "downgradeToFree": "無料プランに戻る",
@@ -3385,7 +3386,7 @@
"feature5": "導入の案内" "feature5": "導入の案内"
}, },
"basicPrice": "無料", "basicPrice": "無料",
"savePercent": "約17%お得", "savePercent": "約{percent}%お得",
"proMonthly": "€9.90", "proMonthly": "€9.90",
"proAnnualMonthly": "€8.25", "proAnnualMonthly": "€8.25",
"businessMonthly": "€29.90", "businessMonthly": "€29.90",
@@ -3665,7 +3666,7 @@
"mappingHint": "1〜3分かかる場合があります。ブラウジングを続けられます。ページは自動更新されます。", "mappingHint": "1〜3分かかる場合があります。ブラウジングを続けられます。ページは自動更新されます。",
"analyzeNow": "テーマを更新", "analyzeNow": "テーマを更新",
"emptyNeedMoreNotes": "テーマをまとめるには、あと{count}件のートを追加してください最小10。", "emptyNeedMoreNotes": "テーマをまとめるには、あと{count}件のートを追加してください最小10。",
"embeddingsHint": "AI索引付き{indexed}/{total}ノートのみ。", "embeddingsHint": "{indexed} / {total} 件のノートがテーマ分けの準備ができています。",
"vsGraphHint": "「リンクマップ」とは異なりますここではAIが意味でグループ化します。", "vsGraphHint": "「リンクマップ」とは異なりますここではAIが意味でグループ化します。",
"openGraphMap": "リンクマップを開く", "openGraphMap": "リンクマップを開く",
"analysisFailed": "分析失敗。AI設定を確認。", "analysisFailed": "分析失敗。AI設定を確認。",
@@ -4492,7 +4493,7 @@
"convertSuccess": "変換完了!リンクされたノートブックが作成されました。", "convertSuccess": "変換完了!リンクされたノートブックが作成されました。",
"convertToNotebook": "ノートブックに変換", "convertToNotebook": "ノートブックに変換",
"converting": "変換中…", "converting": "変換中…",
"createLocalDb": "独立したローカルデータベースを作", "createLocalDb": "このノートに表を作",
"createNotebook": "ノートブックを作成", "createNotebook": "ノートブックを作成",
"defaultOption1": "オプション 1", "defaultOption1": "オプション 1",
"defaultOption2": "オプション 2", "defaultOption2": "オプション 2",
@@ -4514,7 +4515,7 @@
"keywordMatch": "キーワード", "keywordMatch": "キーワード",
"linkToNotebook": "ノートブックにリンク", "linkToNotebook": "ノートブックにリンク",
"loadError": "構造化データの読み込みに失敗しました。", "loadError": "構造化データの読み込みに失敗しました。",
"localDbTitle": "スタンドアロンデータベース", "localDbTitle": "このノート内の表",
"namePlaceholder": "名前を入力…", "namePlaceholder": "名前を入力…",
"noEchoFound": "近いノートは見つかりませんでした。", "noEchoFound": "近いノートは見つかりませんでした。",
"noNotebook": "このブロックにはノートブックが必要です。まずこのノートをノートブックに移動してください。", "noNotebook": "このブロックにはノートブックが必要です。まずこのノートをノートブックに移動してください。",
@@ -4528,8 +4529,8 @@
"selectNotebook": "ノートブックにリンク", "selectNotebook": "ノートブックにリンク",
"selectOptionsPlaceholder": "カンマ区切りのオプション", "selectOptionsPlaceholder": "カンマ区切りのオプション",
"semanticEcho": "セマンティック共鳴", "semanticEcho": "セマンティック共鳴",
"switchToLocalDb": "ローカルデータベースに切り替え", "switchToLocalDb": "このノートの表に戻る",
"turnIntoLabel": "インラインデータベース", "turnIntoLabel": "ノート内の表",
"untitled": "無題" "untitled": "無題"
}, },
"structuredViews": { "structuredViews": {

View File

@@ -2190,7 +2190,7 @@
"custom": "사용자 정의" "custom": "사용자 정의"
}, },
"typeDescriptions": { "typeDescriptions": {
"scraper": "여러 사이트를 스크랩하고 요약을 생성합니다", "scraper": "여러 사이트를 고 요약을 만듭니다",
"researcher": "주제에 대한 정보를 검색합니다", "researcher": "주제에 대한 정보를 검색합니다",
"monitor": "노트북을 감시하고 노트를 분석합니다", "monitor": "노트북을 감시하고 노트를 분석합니다",
"slideGenerator": "노트에서 PowerPoint 프레젠테이션을 만듭니다.", "slideGenerator": "노트에서 PowerPoint 프레젠테이션을 만듭니다.",
@@ -2203,7 +2203,7 @@
"namePlaceholder": "예: 화요일 AI 와치", "namePlaceholder": "예: 화요일 AI 와치",
"description": "설명 (선택 사항)", "description": "설명 (선택 사항)",
"descriptionPlaceholder": "주간 AI 뉴스 요약", "descriptionPlaceholder": "주간 AI 뉴스 요약",
"urlsLabel": "스크랩할 URL", "urlsLabel": "읽을 페이지 주소",
"urlsOptional": "(선택 사항)", "urlsOptional": "(선택 사항)",
"sourceNotebook": "감시할 노트북", "sourceNotebook": "감시할 노트북",
"selectNotebook": "노트북을 선택하세요...", "selectNotebook": "노트북을 선택하세요...",
@@ -2248,7 +2248,7 @@
"notifyEmail": "이메일 알림", "notifyEmail": "이메일 알림",
"notifyEmailHint": "각 실행 후 에이전트 결과가 포함된 이메일 받기", "notifyEmailHint": "각 실행 후 에이전트 결과가 포함된 이메일 받기",
"includeImages": "이미지 포함", "includeImages": "이미지 포함",
"includeImagesHint": "스크래핑된 페이지에서 이미지를 추출하여 생성된 노트에 첨부", "includeImagesHint": "읽은 페이지 이미지를 노트에 붙입니다",
"back": "뒤로", "back": "뒤로",
"configuration": "구성", "configuration": "구성",
"options": "옵션", "options": "옵션",
@@ -2347,15 +2347,15 @@
}, },
"veilleAI": { "veilleAI": {
"name": "AI 와치", "name": "AI 와치",
"description": "AI 전문 사이트 5곳을 스크랩하여 주간 요약을 생성합니다." "description": "AI 전문 사이트 5곳을 읽고 주간 요약을 만듭니다."
}, },
"veilleTech": { "veilleTech": {
"name": "테크 와치", "name": "테크 와치",
"description": "주요 기술 사이트를 스크랩하여 뉴스 요약을 만듭니다." "description": "주요 기술 사이트를 읽고 뉴스 요약을 만듭니다."
}, },
"veilleDev": { "veilleDev": {
"name": "개발 와치", "name": "개발 와치",
"description": "개발 사이트를 스크랩하여 새로운 기술과 프레임워크를 요약합니다." "description": "개발 사이트를 읽고 새로운 기술 요약합니다."
}, },
"surveillant": { "surveillant": {
"name": "노트 관찰자", "name": "노트 관찰자",
@@ -2402,7 +2402,7 @@
"tools": { "tools": {
"title": "에이전트 도구", "title": "에이전트 도구",
"webSearch": "웹 검색", "webSearch": "웹 검색",
"webScrape": "웹 스크랩", "webScrape": "페이지 읽기",
"noteSearch": "노트 검색", "noteSearch": "노트 검색",
"noteRead": "노트 읽기", "noteRead": "노트 읽기",
"noteCreate": "노트 만들기", "noteCreate": "노트 만들기",
@@ -2431,15 +2431,15 @@
"btnLabel": "도움말", "btnLabel": "도움말",
"close": "닫기", "close": "닫기",
"whatIsAgent": "에이전트란?", "whatIsAgent": "에이전트란?",
"whatIsAgentContent": "An **agent** is an AI assistant that runs automatically to perform tasks for you. It has access to **tools** (web search, web scraping, note reading...) and produces a **note** with its results.\n\nThink of it as a small autonomous worker: you give it a mission, it researches or scrapes information, then writes a structured note you can read later.", "whatIsAgentContent": "An **agent** is an AI assistant that runs automatically to perform tasks for you. It has access to **tools** (web search, reading pages, note reading...) and produces a **note** with its results.\n\nThink of it as a small autonomous worker: you give it a mission, it researches or reads pages, then writes a structured note you can read later.",
"howToUse": "에이전트 사용 방법", "howToUse": "에이전트 사용 방법",
"howToUseContent": "1. **\"새 에이전트\"**를 클릭하세요 (또는 페이지 하단의 **템플릿**에서 시작하세요).", "howToUseContent": "1. **\"새 에이전트\"**를 클릭하세요 (또는 페이지 하단의 **템플릿**에서 시작하세요).",
"types": "에이전트 유형", "types": "에이전트 유형",
"typesContent": "### Researcher\nSearches the web on a **topic you define** and creates a structured note with sources and references.\n\n- **Fields:** name, research topic (e.g. \"Latest advances in quantum computing\")\n- **Default tools:** web search, web scraping, note search, note creation\n- **Requirements:** a web search provider must be configured (SearXNG or Brave Search)\n\n### Monitor (Scraper)\nScrapes a **list of URLs** you specify and produces a summary of their content.\n\n- **Fields:** name, list of URLs (e.g. tech news sites, blogs...)\n- **Default tools:** web scraping, note creation\n- **Use case:** weekly tech watch, competitor monitoring, blog roundups\n\n### Observer (Notebook Monitor)\nReads notes from a **notebook you select** and produces analysis, connections, and suggestions.\n\n- **Fields:** name, source notebook (the one to analyze)\n- **Default tools:** note search, note read, note creation\n- **Use case:** find connections between your notes, get reading suggestions, detect recurring themes\n\n### Custom\nA blank canvas: you write your own **prompt** and pick your own **tools**.\n\n- **Fields:** name, description, custom instructions (in Advanced mode)\n- **No default tools** — you choose exactly what the agent needs\n- **Use case:** anything creative or specific that doesn't fit the other types", "typesContent": "### Researcher\nSearches the web on a **topic you define** and creates a structured note with sources and references.\n\n- **Fields:** name, research topic (e.g. \"Latest advances in quantum computing\")\n- **Default tools:** web search, reading pages, note search, note creation\n- **Requirements:** a web search provider must be configured (SearXNG or Brave Search)\n\n### Monitor\nReads a **list of pages** you give it and writes a summary.\n\n- **Fields:** name, list of URLs (e.g. tech news sites, blogs...)\n- **Default tools:** reading pages, note creation\n- **Use case:** weekly tech watch, competitor monitoring, blog roundups\n\n### Observer (Notebook Monitor)\nReads notes from a **notebook you select** and produces analysis, connections, and suggestions.\n\n- **Fields:** name, source notebook (the one to analyze)\n- **Default tools:** note search, note read, note creation\n- **Use case:** find connections between your notes, get reading suggestions, detect recurring themes\n\n### Custom\nA blank canvas: you write your own **prompt** and pick your own **tools**.\n\n- **Fields:** name, description, custom instructions (in Advanced mode)\n- **No default tools** — you choose exactly what the agent needs\n- **Use case:** anything creative or specific that doesn't fit the other types",
"advanced": "고급 모드 (AI 지시어, 최대 반복)", "advanced": "고급 모드 (AI 지시어, 최대 반복)",
"advancedContent": "양식 하단의 **\"고급 모드\"**를 클릭하여 추가 설정에 액세스하세요.", "advancedContent": "양식 하단의 **\"고급 모드\"**를 클릭하여 추가 설정에 액세스하세요.",
"tools": "사용 가능한 도구 (상세)", "tools": "사용 가능한 도구 (상세)",
"toolsContent": "When advanced mode is enabled, you can choose exactly which tools the agent can use.\n\n### Web Search\nAllows the agent to **search the internet** via SearXNG or Brave Search.\n\n- **What it does:** The agent formulates a query, gets search results, and can then scrape the most relevant pages.\n- **When to enable:** When the agent needs to find information on a topic (Researcher or Custom type).\n- **Configuration required:** SearXNG (with JSON format enabled) or a Brave Search API key. Configurable in **Admin > Agent Tools**.\n- **Example:** The agent searches \"React Server Components best practices 2025\", gets 10 results, then scrapes the top 3.\n\n### Web Scrape\nAllows the agent to **extract text content from a web page** given its URL.\n\n- **What it does:** The agent visits a URL and retrieves the structured text (headings, paragraphs, lists). Ads, menus and footers are typically filtered out.\n- **When to enable:** For the Monitor type (mandatory), or any agent that needs to read web pages.\n- **Configuration:** Works out of the box, but a **Jina Reader API key** improves quality and removes rate limits. Configurable in **Admin > Agent Tools**.\n- **Example:** The agent scrapes 5 tech blogs and produces a synthesized summary.\n\n### Note Search\nAllows the agent to **search your existing notes**.\n\n- **What it does:** The agent performs a text search across all your notes (or a specific notebook).\n- **When to enable:** For Observer-type agents, or any agent that needs to cross-reference information with your notes.\n- **Configuration:** None — works immediately.\n- **Example:** The agent searches all notes containing \"machine learning\" to see what you've already written on the topic.\n\n### Read Note\nAllows the agent to **read the full content of a specific note**.\n\n- **What it does:** After finding a note (via Note Search), the agent can read its entire content to analyze or use it.\n- **When to enable:** As a companion to Note Search. Enable both together so the agent can search AND read.\n- **Configuration:** None.\n- **Example:** The agent finds 5 notes about \"productivity\", reads them all, and writes a synthesis.\n\n### Create Note\nAllows the agent to **write a new note** in your target notebook.\n\n- **What it does:** The agent creates a note with a title and content. This is how results end up in your notebooks.\n- **When to enable:** Almost always — without this tool, the agent cannot save its results. **Leave it enabled by default.**\n- **Configuration:** None.\n- **Example:** The agent creates a note \"Tech Watch - Week 16\" with a summary of 5 articles.\n\n### Fetch URL\nAllows the agent to **download the raw content of a URL** (HTML, JSON, text...).\n\n- **What it does:** Unlike scraping which extracts clean text, Fetch URL retrieves raw content. Useful for APIs, JSON files, or non-standard pages.\n- **When to enable:** When the agent needs to query REST APIs, read RSS feeds, or access raw data.\n- **Configuration:** None.\n- **Example:** The agent queries the GitHub API to list the latest commits of a project.\n\n### Memory\nAllows the agent to **access its previous execution history**.\n\n- **What it does:** The agent can search through results from past runs. This lets it compare, track changes, or avoid repeating the same information.\n- **When to enable:** For agents that run regularly and need to maintain continuity between executions.\n- **Configuration:** None.\n- **Example:** The agent compares this week's news with last week's and highlights what's new.", "toolsContent": "When advanced mode is enabled, you can choose exactly which tools the agent can use.\n\n### Web Search\nAllows the agent to **search the internet** via SearXNG or Brave Search.\n\n- **What it does:** The agent formulates a query, gets search results, then can read the most useful pages.\n- **When to enable:** When the agent needs to find information on a topic (Researcher or Custom type).\n- **Configuration required:** SearXNG (with JSON format enabled) or a Brave Search API key. Configurable in **Admin > Agent Tools**.\n- **Example:** The agent searches \"React Server Components best practices 2025\", gets 10 results, then reads the top 3.\n\n### Read web pages\nAllows the agent to **read the text of a page** from its address.\n\n- **What it does:** The agent visits a URL and retrieves the structured text (headings, paragraphs, lists). Ads, menus and footers are typically filtered out.\n- **When to enable:** For the Monitor type (mandatory), or any agent that needs to read web pages.\n- **Configuration:** Works out of the box, but a **Jina Reader API key** improves quality and removes rate limits. Configurable in **Admin > Agent Tools**.\n- **Example:** The agent scrapes 5 tech blogs and produces a synthesized summary.\n\n### Note Search\nAllows the agent to **search your existing notes**.\n\n- **What it does:** The agent performs a text search across all your notes (or a specific notebook).\n- **When to enable:** For Observer-type agents, or any agent that needs to cross-reference information with your notes.\n- **Configuration:** None — works immediately.\n- **Example:** The agent searches all notes containing \"machine learning\" to see what you've already written on the topic.\n\n### Read Note\nAllows the agent to **read the full content of a specific note**.\n\n- **What it does:** After finding a note (via Note Search), the agent can read its entire content to analyze or use it.\n- **When to enable:** As a companion to Note Search. Enable both together so the agent can search AND read.\n- **Configuration:** None.\n- **Example:** The agent finds 5 notes about \"productivity\", reads them all, and writes a synthesis.\n\n### Create Note\nAllows the agent to **write a new note** in your target notebook.\n\n- **What it does:** The agent creates a note with a title and content. This is how results end up in your notebooks.\n- **When to enable:** Almost always — without this tool, the agent cannot save its results. **Leave it enabled by default.**\n- **Configuration:** None.\n- **Example:** The agent creates a note \"Tech Watch - Week 16\" with a summary of 5 articles.\n\n### Fetch URL\nAllows the agent to **download the raw content of a URL** (HTML, JSON, text...).\n\n- **What it does:** Unlike scraping which extracts clean text, Fetch URL retrieves raw content. Useful for APIs, JSON files, or non-standard pages.\n- **When to enable:** When the agent needs to query REST APIs, read RSS feeds, or access raw data.\n- **Configuration:** None.\n- **Example:** The agent queries the GitHub API to list the latest commits of a project.\n\n### Memory\nAllows the agent to **access its previous execution history**.\n\n- **What it does:** The agent can search through results from past runs. This lets it compare, track changes, or avoid repeating the same information.\n- **When to enable:** For agents that run regularly and need to maintain continuity between executions.\n- **Configuration:** None.\n- **Example:** The agent compares this week's news with last week's and highlights what's new.",
"frequency": "빈도 및 예약", "frequency": "빈도 및 예약",
"frequencyContent": "| 빈도 | 동작\n|-----------|----------\n| **수동** | 직접 \"실행\"을 클릭합니다.", "frequencyContent": "| 빈도 | 동작\n|-----------|----------\n| **수동** | 직접 \"실행\"을 클릭합니다.",
"targetNotebook": "대상 노트북", "targetNotebook": "대상 노트북",
@@ -2447,7 +2447,7 @@
"templates": "템플릿", "templates": "템플릿",
"templatesContent": "Templates are pre-configured agents ready to install in one click. You'll find them at the **bottom of the Agents page**.\n\nAvailable templates include:\n\n- **AI Watch** — weekly AI news roundup from 5 specialized sites\n- **Tech Watch** — general tech news summary\n- **Dev Watch** — developer news and new frameworks\n- **Note Observer** — analyzes a notebook and suggests connections\n- **Topic Researcher** — deep research on a specific topic\n\nOnce installed, you can edit the agent to customize it.", "templatesContent": "Templates are pre-configured agents ready to install in one click. You'll find them at the **bottom of the Agents page**.\n\nAvailable templates include:\n\n- **AI Watch** — weekly AI news roundup from 5 specialized sites\n- **Tech Watch** — general tech news summary\n- **Dev Watch** — developer news and new frameworks\n- **Note Observer** — analyzes a notebook and suggests connections\n- **Topic Researcher** — deep research on a specific topic\n\nOnce installed, you can edit the agent to customize it.",
"tips": "팁과 문제 해결", "tips": "팁과 문제 해결",
"tipsContent": "- **Start with a template** and customize it — it's the fastest way to get a working agent\n- **Test with \"Manual\"** frequency before enabling automatic scheduling\n- **A \"Researcher\" agent requires a web search provider** — configure SearXNG (JSON format) or Brave Search in **Admin > Agent Tools**\n- **If an agent fails**, click on its card then **History** to see the execution log and tool traces\n- **The \"Enabled/Disabled\" toggle** lets you pause an agent without deleting it\n- **Web scraping quality** improves with a Jina Reader API key (optional, in Admin > Agent Tools)\n- **Combine \"Note Search\" + \"Read Note\"** so the agent can find AND analyze your notes' content\n- **Enable \"Memory\"** if your agent runs regularly — it will avoid repeating the same information across runs", "tipsContent": "- **Start with a template** and customize it — it's the fastest way to get a working agent\n- **Test with \"Manual\"** frequency before enabling automatic scheduling\n- **A \"Researcher\" agent requires a web search provider** — configure SearXNG (JSON format) or Brave Search in **Admin > Agent Tools**\n- **If an agent fails**, click on its card then **History** to see the execution log and tool traces\n- **The \"Enabled/Disabled\" toggle** lets you pause an agent without deleting it\n- **Page-reading quality** improves with a Jina Reader API key (optional, in Admin > Agent Tools)\n- **Combine \"Note Search\" + \"Read Note\"** so the agent can find AND analyze your notes' content\n- **Enable \"Memory\"** if your agent runs regularly — it will avoid repeating the same information across runs",
"tooltips": { "tooltips": {
"agentType": "에이전트가 수행할 작업 유형을 선택하세요. 각 유형은 다른 기능과 필드를 가집니다.", "agentType": "에이전트가 수행할 작업 유형을 선택하세요. 각 유형은 다른 기능과 필드를 가집니다.",
"researchTopic": "에이전트가 웹에서 조사할 주제입니다. 더 나은 결과를 위해 구체적으로 작성하세요.", "researchTopic": "에이전트가 웹에서 조사할 주제입니다. 더 나은 결과를 위해 구체적으로 작성하세요.",
@@ -3176,7 +3176,8 @@
"fetchStatusFailed": "결제 상태를 가져올 수 없습니다", "fetchStatusFailed": "결제 상태를 가져올 수 없습니다",
"fetchQuotasFailed": "할당량을 가져올 수 없습니다", "fetchQuotasFailed": "할당량을 가져올 수 없습니다",
"fetchInvoicesFailed": "결제 내역을 불러올 수 없습니다.", "fetchInvoicesFailed": "결제 내역을 불러올 수 없습니다.",
"savePercent": "~17% 절약", "savePercent": "~{percent}% 절약",
"billedYearTotal": "연 {price}",
"cancelSubscription": "구독 취소", "cancelSubscription": "구독 취소",
"changeOffer": "요금제 변경", "changeOffer": "요금제 변경",
"downgradeToFree": "무료 요금제로 돌아가기", "downgradeToFree": "무료 요금제로 돌아가기",
@@ -3385,7 +3386,7 @@
"feature5": "설치 안내" "feature5": "설치 안내"
}, },
"basicPrice": "무료", "basicPrice": "무료",
"savePercent": "약 17% 절약", "savePercent": "약 {percent}% 절약",
"proMonthly": "€9.90", "proMonthly": "€9.90",
"proAnnualMonthly": "€8.25", "proAnnualMonthly": "€8.25",
"businessMonthly": "€29.90", "businessMonthly": "€29.90",
@@ -3665,7 +3666,7 @@
"mappingHint": "1~3분 정도 걸릴 수 있습니다. 계속 브라우징할 수 있습니다. 페이지가 자동 업데이트됩니다.", "mappingHint": "1~3분 정도 걸릴 수 있습니다. 계속 브라우징할 수 있습니다. 페이지가 자동 업데이트됩니다.",
"analyzeNow": "주제 업데이트", "analyzeNow": "주제 업데이트",
"emptyNeedMoreNotes": "주제를 묶으려면 노트를 {count}개 더 추가하세요 (최소 10).", "emptyNeedMoreNotes": "주제를 묶으려면 노트를 {count}개 더 추가하세요 (최소 10).",
"embeddingsHint": "AI 인덱싱: {indexed}/{total}노트만.", "embeddingsHint": "{indexed} / {total}개 노트가 주제별로 묶일 준비가 되었습니다.",
"vsGraphHint": "\"링크 맵\"과 다릅니다: 여기서는 AI가 링크가 아닌 의미로 그룹화합니다.", "vsGraphHint": "\"링크 맵\"과 다릅니다: 여기서는 AI가 링크가 아닌 의미로 그룹화합니다.",
"openGraphMap": "링크 맵 열기", "openGraphMap": "링크 맵 열기",
"analysisFailed": "분석 실패. AI 설정을 확인하세요.", "analysisFailed": "분석 실패. AI 설정을 확인하세요.",
@@ -4492,7 +4493,7 @@
"convertSuccess": "변환 완료! 연결된 노트북이 생성되었습니다.", "convertSuccess": "변환 완료! 연결된 노트북이 생성되었습니다.",
"convertToNotebook": "노트북으로 변환", "convertToNotebook": "노트북으로 변환",
"converting": "변환 중…", "converting": "변환 중…",
"createLocalDb": "독립적인 로컬 데이터베이스 만들기", "createLocalDb": "이 노트에 표 만들기",
"createNotebook": "노트북 만들기", "createNotebook": "노트북 만들기",
"defaultOption1": "옵션 1", "defaultOption1": "옵션 1",
"defaultOption2": "옵션 2", "defaultOption2": "옵션 2",
@@ -4514,7 +4515,7 @@
"keywordMatch": "키워드", "keywordMatch": "키워드",
"linkToNotebook": "노트북에 연결", "linkToNotebook": "노트북에 연결",
"loadError": "구조화된 데이터 로드 실패.", "loadError": "구조화된 데이터 로드 실패.",
"localDbTitle": "독립 데이터베이스", "localDbTitle": "이 노트의 표",
"namePlaceholder": "이름 입력…", "namePlaceholder": "이름 입력…",
"noEchoFound": "가까운 노트를 찾지 못했습니다.", "noEchoFound": "가까운 노트를 찾지 못했습니다.",
"noNotebook": "이 블록은 노트북이 필요합니다. 먼저 이 노트를 노트북으로 이동하세요.", "noNotebook": "이 블록은 노트북이 필요합니다. 먼저 이 노트를 노트북으로 이동하세요.",
@@ -4528,8 +4529,8 @@
"selectNotebook": "노트북에 연결", "selectNotebook": "노트북에 연결",
"selectOptionsPlaceholder": "쉼표로 구분된 옵션", "selectOptionsPlaceholder": "쉼표로 구분된 옵션",
"semanticEcho": "시맨틱 공명", "semanticEcho": "시맨틱 공명",
"switchToLocalDb": "로컬 데이터베이스로 전환", "switchToLocalDb": "이 노트의 표로 돌아가기",
"turnIntoLabel": "인라인 데이터베이스", "turnIntoLabel": "노트 안의 표",
"untitled": "제목 없음" "untitled": "제목 없음"
}, },
"structuredViews": { "structuredViews": {

View File

@@ -2190,7 +2190,7 @@
"custom": "Aangepast" "custom": "Aangepast"
}, },
"typeDescriptions": { "typeDescriptions": {
"scraper": "Schraapt meerdere sites en maakt een samenvatting", "scraper": "Leest meerdere sites en maakt een samenvatting",
"researcher": "Zoekt naar informatie over een onderwerp", "researcher": "Zoekt naar informatie over een onderwerp",
"monitor": "Bewaakt een notitieboek en analyseert notities", "monitor": "Bewaakt een notitieboek en analyseert notities",
"slideGenerator": "Creëert een PowerPoint-presentatie van notities", "slideGenerator": "Creëert een PowerPoint-presentatie van notities",
@@ -2203,7 +2203,7 @@
"namePlaceholder": "bijv. Dinsdag AI Watch", "namePlaceholder": "bijv. Dinsdag AI Watch",
"description": "Beschrijving (optioneel)", "description": "Beschrijving (optioneel)",
"descriptionPlaceholder": "Wekelijkse AI-nieuwssamenvatting", "descriptionPlaceholder": "Wekelijkse AI-nieuwssamenvatting",
"urlsLabel": "URL's om te schrapen", "urlsLabel": "Adressen van te lezen paginas",
"urlsOptional": "(optioneel)", "urlsOptional": "(optioneel)",
"sourceNotebook": "Notitieboek om te bewaken", "sourceNotebook": "Notitieboek om te bewaken",
"selectNotebook": "Selecteer een notitieboek...", "selectNotebook": "Selecteer een notitieboek...",
@@ -2248,7 +2248,7 @@
"notifyEmail": "E-mailnotificatie", "notifyEmail": "E-mailnotificatie",
"notifyEmailHint": "Ontvang een e-mail met de resultaten van de agent na elke uitvoering", "notifyEmailHint": "Ontvang een e-mail met de resultaten van de agent na elke uitvoering",
"includeImages": "Afbeeldingen opnemen", "includeImages": "Afbeeldingen opnemen",
"includeImagesHint": "Afbeeldingen extraheren van gescrapte pagina's en toevoegen aan de gegenereerde notitie", "includeImagesHint": "Afbeeldingen van de gelezen paginas nemen en aan de notitie toevoegen",
"back": "Terug", "back": "Terug",
"configuration": "Configuratie", "configuration": "Configuratie",
"options": "Opties", "options": "Opties",
@@ -2347,15 +2347,15 @@
}, },
"veilleAI": { "veilleAI": {
"name": "AI Watch", "name": "AI Watch",
"description": "Schraapt 5 op AI gespecialiseerde sites en genereert een wekelijkse samenvatting." "description": "Leest 5 AI-sites en schrijft een wekelijkse samenvatting."
}, },
"veilleTech": { "veilleTech": {
"name": "Tech Watch", "name": "Tech Watch",
"description": "Schraapt grote techsites en maakt een nieuwssamenvatting." "description": "Leest grote techsites en maakt een nieuwssamenvatting."
}, },
"veilleDev": { "veilleDev": {
"name": "Dev Watch", "name": "Dev Watch",
"description": "Schraapt ontwikkelingssites en vat nieuwe tech en frameworks samen." "description": "Leest ontwikkelingssites en vat samen wat er nieuw is."
}, },
"surveillant": { "surveillant": {
"name": "Notitie-waarnemer", "name": "Notitie-waarnemer",
@@ -2402,7 +2402,7 @@
"tools": { "tools": {
"title": "Agent-tools", "title": "Agent-tools",
"webSearch": "Web Zoeken", "webSearch": "Web Zoeken",
"webScrape": "Web Schrapen", "webScrape": "Webpaginas lezen",
"noteSearch": "Notitie Zoeken", "noteSearch": "Notitie Zoeken",
"noteRead": "Notitie Lezen", "noteRead": "Notitie Lezen",
"noteCreate": "Notitie Maken", "noteCreate": "Notitie Maken",
@@ -2431,15 +2431,15 @@
"btnLabel": "Hulp", "btnLabel": "Hulp",
"close": "Sluiten", "close": "Sluiten",
"whatIsAgent": "Wat is een agent?", "whatIsAgent": "Wat is een agent?",
"whatIsAgentContent": "An **agent** is an AI assistant that runs automatically to perform tasks for you. It has access to **tools** (web search, web scraping, note reading...) and produces a **note** with its results.\n\nThink of it as a small autonomous worker: you give it a mission, it researches or scrapes information, then writes a structured note you can read later.", "whatIsAgentContent": "An **agent** is an AI assistant that runs automatically to perform tasks for you. It has access to **tools** (web search, reading pages, note reading...) and produces a **note** with its results.\n\nThink of it as a small autonomous worker: you give it a mission, it researches or reads pages, then writes a structured note you can read later.",
"howToUse": "Hoe gebruik je een agent?", "howToUse": "Hoe gebruik je een agent?",
"howToUseContent": "1. Klik op **\"Nieuwe agent\"** (of begin met een **Sjabloon** onderaan de pagina).", "howToUseContent": "1. Klik op **\"Nieuwe agent\"** (of begin met een **Sjabloon** onderaan de pagina).",
"types": "Typen agents", "types": "Typen agents",
"typesContent": "### Researcher\nSearches the web on a **topic you define** and creates a structured note with sources and references.\n\n- **Fields:** name, research topic (e.g. \"Latest advances in quantum computing\")\n- **Default tools:** web search, web scraping, note search, note creation\n- **Requirements:** a web search provider must be configured (SearXNG or Brave Search)\n\n### Monitor (Scraper)\nScrapes a **list of URLs** you specify and produces a summary of their content.\n\n- **Fields:** name, list of URLs (e.g. tech news sites, blogs...)\n- **Default tools:** web scraping, note creation\n- **Use case:** weekly tech watch, competitor monitoring, blog roundups\n\n### Observer (Notebook Monitor)\nReads notes from a **notebook you select** and produces analysis, connections, and suggestions.\n\n- **Fields:** name, source notebook (the one to analyze)\n- **Default tools:** note search, note read, note creation\n- **Use case:** find connections between your notes, get reading suggestions, detect recurring themes\n\n### Custom\nA blank canvas: you write your own **prompt** and pick your own **tools**.\n\n- **Fields:** name, description, custom instructions (in Advanced mode)\n- **No default tools** — you choose exactly what the agent needs\n- **Use case:** anything creative or specific that doesn't fit the other types", "typesContent": "### Researcher\nSearches the web on a **topic you define** and creates a structured note with sources and references.\n\n- **Fields:** name, research topic (e.g. \"Latest advances in quantum computing\")\n- **Default tools:** web search, reading pages, note search, note creation\n- **Requirements:** a web search provider must be configured (SearXNG or Brave Search)\n\n### Monitor\nReads a **list of pages** you give it and writes a summary.\n\n- **Fields:** name, list of URLs (e.g. tech news sites, blogs...)\n- **Default tools:** reading pages, note creation\n- **Use case:** weekly tech watch, competitor monitoring, blog roundups\n\n### Observer (Notebook Monitor)\nReads notes from a **notebook you select** and produces analysis, connections, and suggestions.\n\n- **Fields:** name, source notebook (the one to analyze)\n- **Default tools:** note search, note read, note creation\n- **Use case:** find connections between your notes, get reading suggestions, detect recurring themes\n\n### Custom\nA blank canvas: you write your own **prompt** and pick your own **tools**.\n\n- **Fields:** name, description, custom instructions (in Advanced mode)\n- **No default tools** — you choose exactly what the agent needs\n- **Use case:** anything creative or specific that doesn't fit the other types",
"advanced": "Geavanceerde modus (AI-instructies, Max iteraties)", "advanced": "Geavanceerde modus (AI-instructies, Max iteraties)",
"advancedContent": "Klik onderaan het formulier op **\"Geavanceerde modus\"** voor toegang tot aanvullende instellingen.", "advancedContent": "Klik onderaan het formulier op **\"Geavanceerde modus\"** voor toegang tot aanvullende instellingen.",
"tools": "Beschikbare tools (details)", "tools": "Beschikbare tools (details)",
"toolsContent": "When advanced mode is enabled, you can choose exactly which tools the agent can use.\n\n### Web Search\nAllows the agent to **search the internet** via SearXNG or Brave Search.\n\n- **What it does:** The agent formulates a query, gets search results, and can then scrape the most relevant pages.\n- **When to enable:** When the agent needs to find information on a topic (Researcher or Custom type).\n- **Configuration required:** SearXNG (with JSON format enabled) or a Brave Search API key. Configurable in **Admin > Agent Tools**.\n- **Example:** The agent searches \"React Server Components best practices 2025\", gets 10 results, then scrapes the top 3.\n\n### Web Scrape\nAllows the agent to **extract text content from a web page** given its URL.\n\n- **What it does:** The agent visits a URL and retrieves the structured text (headings, paragraphs, lists). Ads, menus and footers are typically filtered out.\n- **When to enable:** For the Monitor type (mandatory), or any agent that needs to read web pages.\n- **Configuration:** Works out of the box, but a **Jina Reader API key** improves quality and removes rate limits. Configurable in **Admin > Agent Tools**.\n- **Example:** The agent scrapes 5 tech blogs and produces a synthesized summary.\n\n### Note Search\nAllows the agent to **search your existing notes**.\n\n- **What it does:** The agent performs a text search across all your notes (or a specific notebook).\n- **When to enable:** For Observer-type agents, or any agent that needs to cross-reference information with your notes.\n- **Configuration:** None — works immediately.\n- **Example:** The agent searches all notes containing \"machine learning\" to see what you've already written on the topic.\n\n### Read Note\nAllows the agent to **read the full content of a specific note**.\n\n- **What it does:** After finding a note (via Note Search), the agent can read its entire content to analyze or use it.\n- **When to enable:** As a companion to Note Search. Enable both together so the agent can search AND read.\n- **Configuration:** None.\n- **Example:** The agent finds 5 notes about \"productivity\", reads them all, and writes a synthesis.\n\n### Create Note\nAllows the agent to **write a new note** in your target notebook.\n\n- **What it does:** The agent creates a note with a title and content. This is how results end up in your notebooks.\n- **When to enable:** Almost always — without this tool, the agent cannot save its results. **Leave it enabled by default.**\n- **Configuration:** None.\n- **Example:** The agent creates a note \"Tech Watch - Week 16\" with a summary of 5 articles.\n\n### Fetch URL\nAllows the agent to **download the raw content of a URL** (HTML, JSON, text...).\n\n- **What it does:** Unlike scraping which extracts clean text, Fetch URL retrieves raw content. Useful for APIs, JSON files, or non-standard pages.\n- **When to enable:** When the agent needs to query REST APIs, read RSS feeds, or access raw data.\n- **Configuration:** None.\n- **Example:** The agent queries the GitHub API to list the latest commits of a project.\n\n### Memory\nAllows the agent to **access its previous execution history**.\n\n- **What it does:** The agent can search through results from past runs. This lets it compare, track changes, or avoid repeating the same information.\n- **When to enable:** For agents that run regularly and need to maintain continuity between executions.\n- **Configuration:** None.\n- **Example:** The agent compares this week's news with last week's and highlights what's new.", "toolsContent": "When advanced mode is enabled, you can choose exactly which tools the agent can use.\n\n### Web Search\nAllows the agent to **search the internet** via SearXNG or Brave Search.\n\n- **What it does:** The agent formulates a query, gets search results, then can read the most useful pages.\n- **When to enable:** When the agent needs to find information on a topic (Researcher or Custom type).\n- **Configuration required:** SearXNG (with JSON format enabled) or a Brave Search API key. Configurable in **Admin > Agent Tools**.\n- **Example:** The agent searches \"React Server Components best practices 2025\", gets 10 results, then reads the top 3.\n\n### Read web pages\nAllows the agent to **read the text of a page** from its address.\n\n- **What it does:** The agent visits a URL and retrieves the structured text (headings, paragraphs, lists). Ads, menus and footers are typically filtered out.\n- **When to enable:** For the Monitor type (mandatory), or any agent that needs to read web pages.\n- **Configuration:** Works out of the box, but a **Jina Reader API key** improves quality and removes rate limits. Configurable in **Admin > Agent Tools**.\n- **Example:** The agent scrapes 5 tech blogs and produces a synthesized summary.\n\n### Note Search\nAllows the agent to **search your existing notes**.\n\n- **What it does:** The agent performs a text search across all your notes (or a specific notebook).\n- **When to enable:** For Observer-type agents, or any agent that needs to cross-reference information with your notes.\n- **Configuration:** None — works immediately.\n- **Example:** The agent searches all notes containing \"machine learning\" to see what you've already written on the topic.\n\n### Read Note\nAllows the agent to **read the full content of a specific note**.\n\n- **What it does:** After finding a note (via Note Search), the agent can read its entire content to analyze or use it.\n- **When to enable:** As a companion to Note Search. Enable both together so the agent can search AND read.\n- **Configuration:** None.\n- **Example:** The agent finds 5 notes about \"productivity\", reads them all, and writes a synthesis.\n\n### Create Note\nAllows the agent to **write a new note** in your target notebook.\n\n- **What it does:** The agent creates a note with a title and content. This is how results end up in your notebooks.\n- **When to enable:** Almost always — without this tool, the agent cannot save its results. **Leave it enabled by default.**\n- **Configuration:** None.\n- **Example:** The agent creates a note \"Tech Watch - Week 16\" with a summary of 5 articles.\n\n### Fetch URL\nAllows the agent to **download the raw content of a URL** (HTML, JSON, text...).\n\n- **What it does:** Unlike scraping which extracts clean text, Fetch URL retrieves raw content. Useful for APIs, JSON files, or non-standard pages.\n- **When to enable:** When the agent needs to query REST APIs, read RSS feeds, or access raw data.\n- **Configuration:** None.\n- **Example:** The agent queries the GitHub API to list the latest commits of a project.\n\n### Memory\nAllows the agent to **access its previous execution history**.\n\n- **What it does:** The agent can search through results from past runs. This lets it compare, track changes, or avoid repeating the same information.\n- **When to enable:** For agents that run regularly and need to maintain continuity between executions.\n- **Configuration:** None.\n- **Example:** The agent compares this week's news with last week's and highlights what's new.",
"frequency": "Frequentie & planning", "frequency": "Frequentie & planning",
"frequencyContent": "| Frequentie | Gedrag\n|-----------|----------\n| **Handmatig** | U klikt zelf op \"Uitvoeren\".", "frequencyContent": "| Frequentie | Gedrag\n|-----------|----------\n| **Handmatig** | U klikt zelf op \"Uitvoeren\".",
"targetNotebook": "Doelnotitieboek", "targetNotebook": "Doelnotitieboek",
@@ -2447,7 +2447,7 @@
"templates": "Sjablonen", "templates": "Sjablonen",
"templatesContent": "Templates are pre-configured agents ready to install in one click. You'll find them at the **bottom of the Agents page**.\n\nAvailable templates include:\n\n- **AI Watch** — weekly AI news roundup from 5 specialized sites\n- **Tech Watch** — general tech news summary\n- **Dev Watch** — developer news and new frameworks\n- **Note Observer** — analyzes a notebook and suggests connections\n- **Topic Researcher** — deep research on a specific topic\n\nOnce installed, you can edit the agent to customize it.", "templatesContent": "Templates are pre-configured agents ready to install in one click. You'll find them at the **bottom of the Agents page**.\n\nAvailable templates include:\n\n- **AI Watch** — weekly AI news roundup from 5 specialized sites\n- **Tech Watch** — general tech news summary\n- **Dev Watch** — developer news and new frameworks\n- **Note Observer** — analyzes a notebook and suggests connections\n- **Topic Researcher** — deep research on a specific topic\n\nOnce installed, you can edit the agent to customize it.",
"tips": "Tips & probleemoplossing", "tips": "Tips & probleemoplossing",
"tipsContent": "- **Start with a template** and customize it — it's the fastest way to get a working agent\n- **Test with \"Manual\"** frequency before enabling automatic scheduling\n- **A \"Researcher\" agent requires a web search provider** — configure SearXNG (JSON format) or Brave Search in **Admin > Agent Tools**\n- **If an agent fails**, click on its card then **History** to see the execution log and tool traces\n- **The \"Enabled/Disabled\" toggle** lets you pause an agent without deleting it\n- **Web scraping quality** improves with a Jina Reader API key (optional, in Admin > Agent Tools)\n- **Combine \"Note Search\" + \"Read Note\"** so the agent can find AND analyze your notes' content\n- **Enable \"Memory\"** if your agent runs regularly — it will avoid repeating the same information across runs", "tipsContent": "- **Start with a template** and customize it — it's the fastest way to get a working agent\n- **Test with \"Manual\"** frequency before enabling automatic scheduling\n- **A \"Researcher\" agent requires a web search provider** — configure SearXNG (JSON format) or Brave Search in **Admin > Agent Tools**\n- **If an agent fails**, click on its card then **History** to see the execution log and tool traces\n- **The \"Enabled/Disabled\" toggle** lets you pause an agent without deleting it\n- **Page-reading quality** improves with a Jina Reader API key (optional, in Admin > Agent Tools)\n- **Combine \"Note Search\" + \"Read Note\"** so the agent can find AND analyze your notes' content\n- **Enable \"Memory\"** if your agent runs regularly — it will avoid repeating the same information across runs",
"tooltips": { "tooltips": {
"agentType": "Kies het type taak dat de agent zal uitvoeren. Elk type heeft verschillende mogelijkheden en velden.", "agentType": "Kies het type taak dat de agent zal uitvoeren. Elk type heeft verschillende mogelijkheden en velden.",
"researchTopic": "Het onderwerp dat de agent op het web zal onderzoeken. Wees specifiek voor betere resultaten.", "researchTopic": "Het onderwerp dat de agent op het web zal onderzoeken. Wees specifiek voor betere resultaten.",
@@ -3176,7 +3176,8 @@
"fetchStatusFailed": "Facturatiestatus kon niet worden opgehaald", "fetchStatusFailed": "Facturatiestatus kon niet worden opgehaald",
"fetchQuotasFailed": "Quota konden niet worden opgehaald", "fetchQuotasFailed": "Quota konden niet worden opgehaald",
"fetchInvoicesFailed": "Factuurgeschiedenis kon niet worden geladen.", "fetchInvoicesFailed": "Factuurgeschiedenis kon niet worden geladen.",
"savePercent": "Bespaar ~17%", "savePercent": "Bespaar ~{percent} %",
"billedYearTotal": "of {price} per jaar",
"cancelSubscription": "Abonnement opzeggen", "cancelSubscription": "Abonnement opzeggen",
"changeOffer": "Ander aanbod kiezen", "changeOffer": "Ander aanbod kiezen",
"downgradeToFree": "Terug naar het gratis aanbod", "downgradeToFree": "Terug naar het gratis aanbod",
@@ -3385,7 +3386,7 @@
"feature5": "Begeleide installatie" "feature5": "Begeleide installatie"
}, },
"basicPrice": "Gratis", "basicPrice": "Gratis",
"savePercent": "Bespaar ~17%", "savePercent": "Bespaar ~{percent} %",
"proMonthly": "€9,90", "proMonthly": "€9,90",
"proAnnualMonthly": "€8,25", "proAnnualMonthly": "€8,25",
"businessMonthly": "€29,90", "businessMonthly": "€29,90",
@@ -3665,7 +3666,7 @@
"mappingHint": "Dit kan één tot drie minuten duren. U kunt blijven browsen; de pagina wordt automatisch bijgewerkt.", "mappingHint": "Dit kan één tot drie minuten duren. U kunt blijven browsen; de pagina wordt automatisch bijgewerkt.",
"analyzeNow": "Thema's bijwerken", "analyzeNow": "Thema's bijwerken",
"emptyNeedMoreNotes": "Voeg {count} notities meer toe om uw thema's te groeperen (minimum 10).", "emptyNeedMoreNotes": "Voeg {count} notities meer toe om uw thema's te groeperen (minimum 10).",
"embeddingsHint": "Slechts {indexed} van {total} notities geïndexeerd voor AI.", "embeddingsHint": "Slechts {indexed} van {total} notities zijn klaar om per thema te groeperen.",
"vsGraphHint": "Dit is niet de \"Link-kaart\": hier groepeert de AI op betekenis, niet op links.", "vsGraphHint": "Dit is niet de \"Link-kaart\": hier groepeert de AI op betekenis, niet op links.",
"openGraphMap": "Linkkaart openen", "openGraphMap": "Linkkaart openen",
"analysisFailed": "Analyse mislukt. Controleer je AI-instellingen.", "analysisFailed": "Analyse mislukt. Controleer je AI-instellingen.",
@@ -4492,7 +4493,7 @@
"convertSuccess": "Conversie voltooid! Gekoppeld notitieboek aangemaakt.", "convertSuccess": "Conversie voltooid! Gekoppeld notitieboek aangemaakt.",
"convertToNotebook": "Naar notitieboek converteren", "convertToNotebook": "Naar notitieboek converteren",
"converting": "Converteren…", "converting": "Converteren…",
"createLocalDb": "Maak een zelfstandige lokale database", "createLocalDb": "Maak een tabel in deze notitie",
"createNotebook": "Notitieboek maken", "createNotebook": "Notitieboek maken",
"defaultOption1": "Optie 1", "defaultOption1": "Optie 1",
"defaultOption2": "Optie 2", "defaultOption2": "Optie 2",
@@ -4514,7 +4515,7 @@
"keywordMatch": "Trefwoord", "keywordMatch": "Trefwoord",
"linkToNotebook": "Koppel aan een notitieboek", "linkToNotebook": "Koppel aan een notitieboek",
"loadError": "Fout bij laden van gestructureerde gegevens.", "loadError": "Fout bij laden van gestructureerde gegevens.",
"localDbTitle": "Zelfstandige database", "localDbTitle": "Tabel in deze notitie",
"namePlaceholder": "Naam invoeren…", "namePlaceholder": "Naam invoeren…",
"noEchoFound": "Geen nabije notities gevonden.", "noEchoFound": "Geen nabije notities gevonden.",
"noNotebook": "Dit blok vereist een notitieboek. Verplaats deze notitie eerst naar een notitieboek.", "noNotebook": "Dit blok vereist een notitieboek. Verplaats deze notitie eerst naar een notitieboek.",
@@ -4528,8 +4529,8 @@
"selectNotebook": "Koppel aan een notitieboek", "selectNotebook": "Koppel aan een notitieboek",
"selectOptionsPlaceholder": "Opties gescheiden door komma's", "selectOptionsPlaceholder": "Opties gescheiden door komma's",
"semanticEcho": "Semantische resonanties", "semanticEcho": "Semantische resonanties",
"switchToLocalDb": "Schakel naar lokale database", "switchToLocalDb": "Terug naar de tabel van deze notitie",
"turnIntoLabel": "Inline database", "turnIntoLabel": "Tabel in de notitie",
"untitled": "Naamloos" "untitled": "Naamloos"
}, },
"structuredViews": { "structuredViews": {

View File

@@ -2190,7 +2190,7 @@
"custom": "Niestandardowy" "custom": "Niestandardowy"
}, },
"typeDescriptions": { "typeDescriptions": {
"scraper": "Pobiera dane z wielu stron i tworzy podsumowanie", "scraper": "Czyta kilka stron i robi podsumowanie",
"researcher": "Wyszukuje informacje na dany temat", "researcher": "Wyszukuje informacje na dany temat",
"monitor": "Obserwuje notatnik i analizuje notatki", "monitor": "Obserwuje notatnik i analizuje notatki",
"slideGenerator": "Tworzy prezentację programu PowerPoint z notatek", "slideGenerator": "Tworzy prezentację programu PowerPoint z notatek",
@@ -2203,7 +2203,7 @@
"namePlaceholder": "np. Wtorkowy Przegląd AI", "namePlaceholder": "np. Wtorkowy Przegląd AI",
"description": "Opis (opcjonalnie)", "description": "Opis (opcjonalnie)",
"descriptionPlaceholder": "Tygodniowe podsumowanie wiadomości AI", "descriptionPlaceholder": "Tygodniowe podsumowanie wiadomości AI",
"urlsLabel": "Adresy URL do pobrania", "urlsLabel": "Adresy stron do przeczytania",
"urlsOptional": "(opcjonalnie)", "urlsOptional": "(opcjonalnie)",
"sourceNotebook": "Notatnik do obserwacji", "sourceNotebook": "Notatnik do obserwacji",
"selectNotebook": "Wybierz notatnik...", "selectNotebook": "Wybierz notatnik...",
@@ -2248,7 +2248,7 @@
"notifyEmail": "Powiadomienie e-mail", "notifyEmail": "Powiadomienie e-mail",
"notifyEmailHint": "Otrzymuj e-mail z wynikami agenta po każdym uruchomieniu", "notifyEmailHint": "Otrzymuj e-mail z wynikami agenta po każdym uruchomieniu",
"includeImages": "Uwzględnij obrazy", "includeImages": "Uwzględnij obrazy",
"includeImagesHint": "Wyodrębnij obrazy ze zeskrapowanych stron i dołącz do wygenerowanej notatki", "includeImagesHint": "Weź obrazy z przeczytanych stron i dołącz do notatki",
"back": "Wstecz", "back": "Wstecz",
"configuration": "Konfiguracja", "configuration": "Konfiguracja",
"options": "Opcje", "options": "Opcje",
@@ -2347,15 +2347,15 @@
}, },
"veilleAI": { "veilleAI": {
"name": "Przegląd AI", "name": "Przegląd AI",
"description": "Pobiera dane z 5 stron specjalizujących się w AI i generuje tygodniowe podsumowanie." "description": "Czyta 5 stron o AI i pisze tygodniowe podsumowanie."
}, },
"veilleTech": { "veilleTech": {
"name": "Przegląd technologiczny", "name": "Przegląd technologiczny",
"description": "Pobiera dane z dużych portali technologicznych i tworzy podsumowanie wiadomości." "description": "Czyta duże portale technologiczne i pisze podsumowanie wiadomości."
}, },
"veilleDev": { "veilleDev": {
"name": "Przegląd deweloperski", "name": "Przegląd deweloperski",
"description": "Pobiera dane z portali dla programistów i podsumowuje nowe technologie i frameworki." "description": "Czyta portale dla programistów i podsumowuje nowości."
}, },
"surveillant": { "surveillant": {
"name": "Obserwator notatek", "name": "Obserwator notatek",
@@ -2431,15 +2431,15 @@
"btnLabel": "Pomoc", "btnLabel": "Pomoc",
"close": "Zamknij", "close": "Zamknij",
"whatIsAgent": "Czym jest agent?", "whatIsAgent": "Czym jest agent?",
"whatIsAgentContent": "An **agent** is an AI assistant that runs automatically to perform tasks for you. It has access to **tools** (web search, web scraping, note reading...) and produces a **note** with its results.\n\nThink of it as a small autonomous worker: you give it a mission, it researches or scrapes information, then writes a structured note you can read later.", "whatIsAgentContent": "An **agent** is an AI assistant that runs automatically to perform tasks for you. It has access to **tools** (web search, reading pages, note reading...) and produces a **note** with its results.\n\nThink of it as a small autonomous worker: you give it a mission, it researches or reads pages, then writes a structured note you can read later.",
"howToUse": "Jak używać agenta?", "howToUse": "Jak używać agenta?",
"howToUseContent": "1. Kliknij **„Nowy agent\"** (lub zacznij od **Szablonu** na dole strony).", "howToUseContent": "1. Kliknij **„Nowy agent\"** (lub zacznij od **Szablonu** na dole strony).",
"types": "Typy agentów", "types": "Typy agentów",
"typesContent": "### Researcher\nSearches the web on a **topic you define** and creates a structured note with sources and references.\n\n- **Fields:** name, research topic (e.g. \"Latest advances in quantum computing\")\n- **Default tools:** web search, web scraping, note search, note creation\n- **Requirements:** a web search provider must be configured (SearXNG or Brave Search)\n\n### Monitor (Scraper)\nScrapes a **list of URLs** you specify and produces a summary of their content.\n\n- **Fields:** name, list of URLs (e.g. tech news sites, blogs...)\n- **Default tools:** web scraping, note creation\n- **Use case:** weekly tech watch, competitor monitoring, blog roundups\n\n### Observer (Notebook Monitor)\nReads notes from a **notebook you select** and produces analysis, connections, and suggestions.\n\n- **Fields:** name, source notebook (the one to analyze)\n- **Default tools:** note search, note read, note creation\n- **Use case:** find connections between your notes, get reading suggestions, detect recurring themes\n\n### Custom\nA blank canvas: you write your own **prompt** and pick your own **tools**.\n\n- **Fields:** name, description, custom instructions (in Advanced mode)\n- **No default tools** — you choose exactly what the agent needs\n- **Use case:** anything creative or specific that doesn't fit the other types", "typesContent": "### Researcher\nSearches the web on a **topic you define** and creates a structured note with sources and references.\n\n- **Fields:** name, research topic (e.g. \"Latest advances in quantum computing\")\n- **Default tools:** web search, reading pages, note search, note creation\n- **Requirements:** a web search provider must be configured (SearXNG or Brave Search)\n\n### Monitor\nReads a **list of pages** you give it and writes a summary.\n\n- **Fields:** name, list of URLs (e.g. tech news sites, blogs...)\n- **Default tools:** reading pages, note creation\n- **Use case:** weekly tech watch, competitor monitoring, blog roundups\n\n### Observer (Notebook Monitor)\nReads notes from a **notebook you select** and produces analysis, connections, and suggestions.\n\n- **Fields:** name, source notebook (the one to analyze)\n- **Default tools:** note search, note read, note creation\n- **Use case:** find connections between your notes, get reading suggestions, detect recurring themes\n\n### Custom\nA blank canvas: you write your own **prompt** and pick your own **tools**.\n\n- **Fields:** name, description, custom instructions (in Advanced mode)\n- **No default tools** — you choose exactly what the agent needs\n- **Use case:** anything creative or specific that doesn't fit the other types",
"advanced": "Tryb zaawansowany (Instrukcje AI, Maks. iteracje)", "advanced": "Tryb zaawansowany (Instrukcje AI, Maks. iteracje)",
"advancedContent": "Kliknij na **„Tryb zaawansowany\"** na dole formularza, aby uzyskać dostęp do dodatkowych ustawień.", "advancedContent": "Kliknij na **„Tryb zaawansowany\"** na dole formularza, aby uzyskać dostęp do dodatkowych ustawień.",
"tools": "Dostępne narzędzia (szczegóły)", "tools": "Dostępne narzędzia (szczegóły)",
"toolsContent": "When advanced mode is enabled, you can choose exactly which tools the agent can use.\n\n### Web Search\nAllows the agent to **search the internet** via SearXNG or Brave Search.\n\n- **What it does:** The agent formulates a query, gets search results, and can then scrape the most relevant pages.\n- **When to enable:** When the agent needs to find information on a topic (Researcher or Custom type).\n- **Configuration required:** SearXNG (with JSON format enabled) or a Brave Search API key. Configurable in **Admin > Agent Tools**.\n- **Example:** The agent searches \"React Server Components best practices 2025\", gets 10 results, then scrapes the top 3.\n\n### Web Scrape\nAllows the agent to **extract text content from a web page** given its URL.\n\n- **What it does:** The agent visits a URL and retrieves the structured text (headings, paragraphs, lists). Ads, menus and footers are typically filtered out.\n- **When to enable:** For the Monitor type (mandatory), or any agent that needs to read web pages.\n- **Configuration:** Works out of the box, but a **Jina Reader API key** improves quality and removes rate limits. Configurable in **Admin > Agent Tools**.\n- **Example:** The agent scrapes 5 tech blogs and produces a synthesized summary.\n\n### Note Search\nAllows the agent to **search your existing notes**.\n\n- **What it does:** The agent performs a text search across all your notes (or a specific notebook).\n- **When to enable:** For Observer-type agents, or any agent that needs to cross-reference information with your notes.\n- **Configuration:** None — works immediately.\n- **Example:** The agent searches all notes containing \"machine learning\" to see what you've already written on the topic.\n\n### Read Note\nAllows the agent to **read the full content of a specific note**.\n\n- **What it does:** After finding a note (via Note Search), the agent can read its entire content to analyze or use it.\n- **When to enable:** As a companion to Note Search. Enable both together so the agent can search AND read.\n- **Configuration:** None.\n- **Example:** The agent finds 5 notes about \"productivity\", reads them all, and writes a synthesis.\n\n### Create Note\nAllows the agent to **write a new note** in your target notebook.\n\n- **What it does:** The agent creates a note with a title and content. This is how results end up in your notebooks.\n- **When to enable:** Almost always — without this tool, the agent cannot save its results. **Leave it enabled by default.**\n- **Configuration:** None.\n- **Example:** The agent creates a note \"Tech Watch - Week 16\" with a summary of 5 articles.\n\n### Fetch URL\nAllows the agent to **download the raw content of a URL** (HTML, JSON, text...).\n\n- **What it does:** Unlike scraping which extracts clean text, Fetch URL retrieves raw content. Useful for APIs, JSON files, or non-standard pages.\n- **When to enable:** When the agent needs to query REST APIs, read RSS feeds, or access raw data.\n- **Configuration:** None.\n- **Example:** The agent queries the GitHub API to list the latest commits of a project.\n\n### Memory\nAllows the agent to **access its previous execution history**.\n\n- **What it does:** The agent can search through results from past runs. This lets it compare, track changes, or avoid repeating the same information.\n- **When to enable:** For agents that run regularly and need to maintain continuity between executions.\n- **Configuration:** None.\n- **Example:** The agent compares this week's news with last week's and highlights what's new.", "toolsContent": "When advanced mode is enabled, you can choose exactly which tools the agent can use.\n\n### Web Search\nAllows the agent to **search the internet** via SearXNG or Brave Search.\n\n- **What it does:** The agent formulates a query, gets search results, then can read the most useful pages.\n- **When to enable:** When the agent needs to find information on a topic (Researcher or Custom type).\n- **Configuration required:** SearXNG (with JSON format enabled) or a Brave Search API key. Configurable in **Admin > Agent Tools**.\n- **Example:** The agent searches \"React Server Components best practices 2025\", gets 10 results, then reads the top 3.\n\n### Read web pages\nAllows the agent to **read the text of a page** from its address.\n\n- **What it does:** The agent visits a URL and retrieves the structured text (headings, paragraphs, lists). Ads, menus and footers are typically filtered out.\n- **When to enable:** For the Monitor type (mandatory), or any agent that needs to read web pages.\n- **Configuration:** Works out of the box, but a **Jina Reader API key** improves quality and removes rate limits. Configurable in **Admin > Agent Tools**.\n- **Example:** The agent scrapes 5 tech blogs and produces a synthesized summary.\n\n### Note Search\nAllows the agent to **search your existing notes**.\n\n- **What it does:** The agent performs a text search across all your notes (or a specific notebook).\n- **When to enable:** For Observer-type agents, or any agent that needs to cross-reference information with your notes.\n- **Configuration:** None — works immediately.\n- **Example:** The agent searches all notes containing \"machine learning\" to see what you've already written on the topic.\n\n### Read Note\nAllows the agent to **read the full content of a specific note**.\n\n- **What it does:** After finding a note (via Note Search), the agent can read its entire content to analyze or use it.\n- **When to enable:** As a companion to Note Search. Enable both together so the agent can search AND read.\n- **Configuration:** None.\n- **Example:** The agent finds 5 notes about \"productivity\", reads them all, and writes a synthesis.\n\n### Create Note\nAllows the agent to **write a new note** in your target notebook.\n\n- **What it does:** The agent creates a note with a title and content. This is how results end up in your notebooks.\n- **When to enable:** Almost always — without this tool, the agent cannot save its results. **Leave it enabled by default.**\n- **Configuration:** None.\n- **Example:** The agent creates a note \"Tech Watch - Week 16\" with a summary of 5 articles.\n\n### Fetch URL\nAllows the agent to **download the raw content of a URL** (HTML, JSON, text...).\n\n- **What it does:** Unlike scraping which extracts clean text, Fetch URL retrieves raw content. Useful for APIs, JSON files, or non-standard pages.\n- **When to enable:** When the agent needs to query REST APIs, read RSS feeds, or access raw data.\n- **Configuration:** None.\n- **Example:** The agent queries the GitHub API to list the latest commits of a project.\n\n### Memory\nAllows the agent to **access its previous execution history**.\n\n- **What it does:** The agent can search through results from past runs. This lets it compare, track changes, or avoid repeating the same information.\n- **When to enable:** For agents that run regularly and need to maintain continuity between executions.\n- **Configuration:** None.\n- **Example:** The agent compares this week's news with last week's and highlights what's new.",
"frequency": "Częstotliwość i harmonogram", "frequency": "Częstotliwość i harmonogram",
"frequencyContent": "| Częstotliwość | Zachowanie\n|-----------|----------\n| **Ręcznie** | Klikasz samodzielnie \"Uruchom\".", "frequencyContent": "| Częstotliwość | Zachowanie\n|-----------|----------\n| **Ręcznie** | Klikasz samodzielnie \"Uruchom\".",
"targetNotebook": "Docelowy notatnik", "targetNotebook": "Docelowy notatnik",
@@ -2447,7 +2447,7 @@
"templates": "Szablony", "templates": "Szablony",
"templatesContent": "Templates are pre-configured agents ready to install in one click. You'll find them at the **bottom of the Agents page**.\n\nAvailable templates include:\n\n- **AI Watch** — weekly AI news roundup from 5 specialized sites\n- **Tech Watch** — general tech news summary\n- **Dev Watch** — developer news and new frameworks\n- **Note Observer** — analyzes a notebook and suggests connections\n- **Topic Researcher** — deep research on a specific topic\n\nOnce installed, you can edit the agent to customize it.", "templatesContent": "Templates are pre-configured agents ready to install in one click. You'll find them at the **bottom of the Agents page**.\n\nAvailable templates include:\n\n- **AI Watch** — weekly AI news roundup from 5 specialized sites\n- **Tech Watch** — general tech news summary\n- **Dev Watch** — developer news and new frameworks\n- **Note Observer** — analyzes a notebook and suggests connections\n- **Topic Researcher** — deep research on a specific topic\n\nOnce installed, you can edit the agent to customize it.",
"tips": "Porady i rozwiązywanie problemów", "tips": "Porady i rozwiązywanie problemów",
"tipsContent": "- **Start with a template** and customize it — it's the fastest way to get a working agent\n- **Test with \"Manual\"** frequency before enabling automatic scheduling\n- **A \"Researcher\" agent requires a web search provider** — configure SearXNG (JSON format) or Brave Search in **Admin > Agent Tools**\n- **If an agent fails**, click on its card then **History** to see the execution log and tool traces\n- **The \"Enabled/Disabled\" toggle** lets you pause an agent without deleting it\n- **Web scraping quality** improves with a Jina Reader API key (optional, in Admin > Agent Tools)\n- **Combine \"Note Search\" + \"Read Note\"** so the agent can find AND analyze your notes' content\n- **Enable \"Memory\"** if your agent runs regularly — it will avoid repeating the same information across runs", "tipsContent": "- **Start with a template** and customize it — it's the fastest way to get a working agent\n- **Test with \"Manual\"** frequency before enabling automatic scheduling\n- **A \"Researcher\" agent requires a web search provider** — configure SearXNG (JSON format) or Brave Search in **Admin > Agent Tools**\n- **If an agent fails**, click on its card then **History** to see the execution log and tool traces\n- **The \"Enabled/Disabled\" toggle** lets you pause an agent without deleting it\n- **Page-reading quality** improves with a Jina Reader API key (optional, in Admin > Agent Tools)\n- **Combine \"Note Search\" + \"Read Note\"** so the agent can find AND analyze your notes' content\n- **Enable \"Memory\"** if your agent runs regularly — it will avoid repeating the same information across runs",
"tooltips": { "tooltips": {
"agentType": "Wybierz typ zadania, które będzie wykonywał agent. Każdy typ ma różne możliwości i pola.", "agentType": "Wybierz typ zadania, które będzie wykonywał agent. Każdy typ ma różne możliwości i pola.",
"researchTopic": "Temat, który agent zbada w internecie. Bądź konkretny, aby uzyskać lepsze wyniki.", "researchTopic": "Temat, który agent zbada w internecie. Bądź konkretny, aby uzyskać lepsze wyniki.",
@@ -3176,7 +3176,8 @@
"fetchStatusFailed": "Nie udało się pobrać statusu rozliczeń", "fetchStatusFailed": "Nie udało się pobrać statusu rozliczeń",
"fetchQuotasFailed": "Nie udało się pobrać limitów", "fetchQuotasFailed": "Nie udało się pobrać limitów",
"fetchInvoicesFailed": "Nie udało się załadować historii rozliczeń.", "fetchInvoicesFailed": "Nie udało się załadować historii rozliczeń.",
"savePercent": "Oszczędź ~17%", "savePercent": "Oszczędź ~{percent} %",
"billedYearTotal": "czyli {price} rocznie",
"cancelSubscription": "Anuluj subskrypcję", "cancelSubscription": "Anuluj subskrypcję",
"changeOffer": "Zmień ofertę", "changeOffer": "Zmień ofertę",
"downgradeToFree": "Wróć do oferty darmowej", "downgradeToFree": "Wróć do oferty darmowej",
@@ -3385,7 +3386,7 @@
"feature5": "Pomoc przy starcie" "feature5": "Pomoc przy starcie"
}, },
"basicPrice": "Za darmo", "basicPrice": "Za darmo",
"savePercent": "Oszczędź ~17%", "savePercent": "Oszczędź ~{percent} %",
"proMonthly": "9,90€", "proMonthly": "9,90€",
"proAnnualMonthly": "8,25€", "proAnnualMonthly": "8,25€",
"businessMonthly": "29,90€", "businessMonthly": "29,90€",
@@ -3665,7 +3666,7 @@
"mappingHint": "To może zająć od jednej do trzech minut. Możesz dalej przeglądać; strona zaktualizuje się automatycznie.", "mappingHint": "To może zająć od jednej do trzech minut. Możesz dalej przeglądać; strona zaktualizuje się automatycznie.",
"analyzeNow": "Zaktualizuj tematy", "analyzeNow": "Zaktualizuj tematy",
"emptyNeedMoreNotes": "Dodaj jeszcze {count} notatek, aby pogrupować tematy (minimum 10).", "emptyNeedMoreNotes": "Dodaj jeszcze {count} notatek, aby pogrupować tematy (minimum 10).",
"embeddingsHint": "Tylko {indexed} z {total} notatek zaindeksowanych dla AI.", "embeddingsHint": "Tylko {indexed} z {total} notatek jest gotowych do grupowania według motywów.",
"vsGraphHint": "To nie „Mapa linków\": tutaj AI grupuje wg znaczenia, nie linków.", "vsGraphHint": "To nie „Mapa linków\": tutaj AI grupuje wg znaczenia, nie linków.",
"openGraphMap": "Otwórz mapę linków", "openGraphMap": "Otwórz mapę linków",
"analysisFailed": "Analiza nieudana. Sprawdź ustawienia AI.", "analysisFailed": "Analiza nieudana. Sprawdź ustawienia AI.",
@@ -4492,7 +4493,7 @@
"convertSuccess": "Konwersja zakończona! Utworzono powiązany notatnik.", "convertSuccess": "Konwersja zakończona! Utworzono powiązany notatnik.",
"convertToNotebook": "Konwertuj na notatnik", "convertToNotebook": "Konwertuj na notatnik",
"converting": "Konwertowanie…", "converting": "Konwertowanie…",
"createLocalDb": "Utwórz autonomiczną lokalną bazę danych", "createLocalDb": "Utwórz tabelę w tej notatce",
"createNotebook": "Utwórz notatnik", "createNotebook": "Utwórz notatnik",
"defaultOption1": "Opcja 1", "defaultOption1": "Opcja 1",
"defaultOption2": "Opcja 2", "defaultOption2": "Opcja 2",
@@ -4514,7 +4515,7 @@
"keywordMatch": "Słowo kluczowe", "keywordMatch": "Słowo kluczowe",
"linkToNotebook": "Połącz z notatnikiem", "linkToNotebook": "Połącz z notatnikiem",
"loadError": "Błąd ładowania danych ustrukturyzowanych.", "loadError": "Błąd ładowania danych ustrukturyzowanych.",
"localDbTitle": "Autonomiczna baza danych", "localDbTitle": "Tabela w tej notatce",
"namePlaceholder": "Wprowadź nazwę…", "namePlaceholder": "Wprowadź nazwę…",
"noEchoFound": "Nie znaleziono bliskich notatek.", "noEchoFound": "Nie znaleziono bliskich notatek.",
"noNotebook": "Ten blok wymaga notatnika. Najpierw przenieś tę notatkę do notatnika.", "noNotebook": "Ten blok wymaga notatnika. Najpierw przenieś tę notatkę do notatnika.",
@@ -4528,8 +4529,8 @@
"selectNotebook": "Połącz z notatnikiem", "selectNotebook": "Połącz z notatnikiem",
"selectOptionsPlaceholder": "Opcje oddzielone przecinkami", "selectOptionsPlaceholder": "Opcje oddzielone przecinkami",
"semanticEcho": "Rezonanse semantyczne", "semanticEcho": "Rezonanse semantyczne",
"switchToLocalDb": "Przełącz na lokalną bazę danych", "switchToLocalDb": "Wróć do tabeli tej notatki",
"turnIntoLabel": "Wbudowana baza danych", "turnIntoLabel": "Tabela w notatce",
"untitled": "Bez tytułu" "untitled": "Bez tytułu"
}, },
"structuredViews": { "structuredViews": {

View File

@@ -2190,7 +2190,7 @@
"custom": "Personalizado" "custom": "Personalizado"
}, },
"typeDescriptions": { "typeDescriptions": {
"scraper": "Extrai conteúdo de vários sites e cria um resumo", "scraper": " vários sites e faz um resumo",
"researcher": "Busca informações sobre um tema", "researcher": "Busca informações sobre um tema",
"monitor": "Observa um caderno e analisa as notas", "monitor": "Observa um caderno e analisa as notas",
"slideGenerator": "Cria uma apresentação do PowerPoint a partir de notas", "slideGenerator": "Cria uma apresentação do PowerPoint a partir de notas",
@@ -2203,7 +2203,7 @@
"namePlaceholder": "ex. Terça-feira IA Watch", "namePlaceholder": "ex. Terça-feira IA Watch",
"description": "Descrição (opcional)", "description": "Descrição (opcional)",
"descriptionPlaceholder": "Resumo semanal de notícias de IA", "descriptionPlaceholder": "Resumo semanal de notícias de IA",
"urlsLabel": "URLs para extrair", "urlsLabel": "Endereços das páginas a ler",
"urlsOptional": "(opcional)", "urlsOptional": "(opcional)",
"sourceNotebook": "Caderno para observar", "sourceNotebook": "Caderno para observar",
"selectNotebook": "Selecione um caderno...", "selectNotebook": "Selecione um caderno...",
@@ -2248,7 +2248,7 @@
"notifyEmail": "Notificação por e-mail", "notifyEmail": "Notificação por e-mail",
"notifyEmailHint": "Receba um e-mail com os resultados do agente após cada execução", "notifyEmailHint": "Receba um e-mail com os resultados do agente após cada execução",
"includeImages": "Incluir imagens", "includeImages": "Incluir imagens",
"includeImagesHint": "Extrair imagens das páginas rastreadas e anexá-las à nota gerada", "includeImagesHint": "Tirar as imagens das páginas lidas e anexá-las à nota",
"back": "Voltar", "back": "Voltar",
"configuration": "Configuração", "configuration": "Configuração",
"options": "Opções", "options": "Opções",
@@ -2347,15 +2347,15 @@
}, },
"veilleAI": { "veilleAI": {
"name": "Watch IA", "name": "Watch IA",
"description": "Extrai conteúdo de 5 sites especializados em IA e gera um resumo semanal." "description": "Lê 5 sites de IA e escreve um resumo semanal."
}, },
"veilleTech": { "veilleTech": {
"name": "Watch Tech", "name": "Watch Tech",
"description": "Extrai conteúdo dos principais sites de tecnologia e cria um resumo de notícias." "description": "os principais sites de tecnologia e escreve um resumo de notícias."
}, },
"veilleDev": { "veilleDev": {
"name": "Watch Dev", "name": "Watch Dev",
"description": "Extrai conteúdo de sites de desenvolvimento e resume novas tecnologias e frameworks." "description": " sites de desenvolvimento e resume as novidades."
}, },
"surveillant": { "surveillant": {
"name": "Observador de notas", "name": "Observador de notas",
@@ -2431,15 +2431,15 @@
"btnLabel": "Ajuda", "btnLabel": "Ajuda",
"close": "Fechar", "close": "Fechar",
"whatIsAgent": "O que é um agente?", "whatIsAgent": "O que é um agente?",
"whatIsAgentContent": "An **agent** is an AI assistant that runs automatically to perform tasks for you. It has access to **tools** (web search, web scraping, note reading...) and produces a **note** with its results.\n\nThink of it as a small autonomous worker: you give it a mission, it researches or scrapes information, then writes a structured note you can read later.", "whatIsAgentContent": "An **agent** is an AI assistant that runs automatically to perform tasks for you. It has access to **tools** (web search, reading pages, note reading...) and produces a **note** with its results.\n\nThink of it as a small autonomous worker: you give it a mission, it researches or reads pages, then writes a structured note you can read later.",
"howToUse": "Como usar um agente?", "howToUse": "Como usar um agente?",
"howToUseContent": "1. Clique em **\"Novo Agente\"** (ou comece a partir de um **Modelo** na parte inferior da página).", "howToUseContent": "1. Clique em **\"Novo Agente\"** (ou comece a partir de um **Modelo** na parte inferior da página).",
"types": "Tipos de agentes", "types": "Tipos de agentes",
"typesContent": "### Researcher\nSearches the web on a **topic you define** and creates a structured note with sources and references.\n\n- **Fields:** name, research topic (e.g. \"Latest advances in quantum computing\")\n- **Default tools:** web search, web scraping, note search, note creation\n- **Requirements:** a web search provider must be configured (SearXNG or Brave Search)\n\n### Monitor (Scraper)\nScrapes a **list of URLs** you specify and produces a summary of their content.\n\n- **Fields:** name, list of URLs (e.g. tech news sites, blogs...)\n- **Default tools:** web scraping, note creation\n- **Use case:** weekly tech watch, competitor monitoring, blog roundups\n\n### Observer (Notebook Monitor)\nReads notes from a **notebook you select** and produces analysis, connections, and suggestions.\n\n- **Fields:** name, source notebook (the one to analyze)\n- **Default tools:** note search, note read, note creation\n- **Use case:** find connections between your notes, get reading suggestions, detect recurring themes\n\n### Custom\nA blank canvas: you write your own **prompt** and pick your own **tools**.\n\n- **Fields:** name, description, custom instructions (in Advanced mode)\n- **No default tools** — you choose exactly what the agent needs\n- **Use case:** anything creative or specific that doesn't fit the other types", "typesContent": "### Researcher\nSearches the web on a **topic you define** and creates a structured note with sources and references.\n\n- **Fields:** name, research topic (e.g. \"Latest advances in quantum computing\")\n- **Default tools:** web search, reading pages, note search, note creation\n- **Requirements:** a web search provider must be configured (SearXNG or Brave Search)\n\n### Monitor\nReads a **list of pages** you give it and writes a summary.\n\n- **Fields:** name, list of URLs (e.g. tech news sites, blogs...)\n- **Default tools:** reading pages, note creation\n- **Use case:** weekly tech watch, competitor monitoring, blog roundups\n\n### Observer (Notebook Monitor)\nReads notes from a **notebook you select** and produces analysis, connections, and suggestions.\n\n- **Fields:** name, source notebook (the one to analyze)\n- **Default tools:** note search, note read, note creation\n- **Use case:** find connections between your notes, get reading suggestions, detect recurring themes\n\n### Custom\nA blank canvas: you write your own **prompt** and pick your own **tools**.\n\n- **Fields:** name, description, custom instructions (in Advanced mode)\n- **No default tools** — you choose exactly what the agent needs\n- **Use case:** anything creative or specific that doesn't fit the other types",
"advanced": "Modo avançado (Instruções IA, Iterações máx.)", "advanced": "Modo avançado (Instruções IA, Iterações máx.)",
"advancedContent": "Clique em **\"Modo avançado\"** na parte inferior do formulário para acessar definições adicionais.", "advancedContent": "Clique em **\"Modo avançado\"** na parte inferior do formulário para acessar definições adicionais.",
"tools": "Ferramentas disponíveis (detalhes)", "tools": "Ferramentas disponíveis (detalhes)",
"toolsContent": "When advanced mode is enabled, you can choose exactly which tools the agent can use.\n\n### Web Search\nAllows the agent to **search the internet** via SearXNG or Brave Search.\n\n- **What it does:** The agent formulates a query, gets search results, and can then scrape the most relevant pages.\n- **When to enable:** When the agent needs to find information on a topic (Researcher or Custom type).\n- **Configuration required:** SearXNG (with JSON format enabled) or a Brave Search API key. Configurable in **Admin > Agent Tools**.\n- **Example:** The agent searches \"React Server Components best practices 2025\", gets 10 results, then scrapes the top 3.\n\n### Web Scrape\nAllows the agent to **extract text content from a web page** given its URL.\n\n- **What it does:** The agent visits a URL and retrieves the structured text (headings, paragraphs, lists). Ads, menus and footers are typically filtered out.\n- **When to enable:** For the Monitor type (mandatory), or any agent that needs to read web pages.\n- **Configuration:** Works out of the box, but a **Jina Reader API key** improves quality and removes rate limits. Configurable in **Admin > Agent Tools**.\n- **Example:** The agent scrapes 5 tech blogs and produces a synthesized summary.\n\n### Note Search\nAllows the agent to **search your existing notes**.\n\n- **What it does:** The agent performs a text search across all your notes (or a specific notebook).\n- **When to enable:** For Observer-type agents, or any agent that needs to cross-reference information with your notes.\n- **Configuration:** None — works immediately.\n- **Example:** The agent searches all notes containing \"machine learning\" to see what you've already written on the topic.\n\n### Read Note\nAllows the agent to **read the full content of a specific note**.\n\n- **What it does:** After finding a note (via Note Search), the agent can read its entire content to analyze or use it.\n- **When to enable:** As a companion to Note Search. Enable both together so the agent can search AND read.\n- **Configuration:** None.\n- **Example:** The agent finds 5 notes about \"productivity\", reads them all, and writes a synthesis.\n\n### Create Note\nAllows the agent to **write a new note** in your target notebook.\n\n- **What it does:** The agent creates a note with a title and content. This is how results end up in your notebooks.\n- **When to enable:** Almost always — without this tool, the agent cannot save its results. **Leave it enabled by default.**\n- **Configuration:** None.\n- **Example:** The agent creates a note \"Tech Watch - Week 16\" with a summary of 5 articles.\n\n### Fetch URL\nAllows the agent to **download the raw content of a URL** (HTML, JSON, text...).\n\n- **What it does:** Unlike scraping which extracts clean text, Fetch URL retrieves raw content. Useful for APIs, JSON files, or non-standard pages.\n- **When to enable:** When the agent needs to query REST APIs, read RSS feeds, or access raw data.\n- **Configuration:** None.\n- **Example:** The agent queries the GitHub API to list the latest commits of a project.\n\n### Memory\nAllows the agent to **access its previous execution history**.\n\n- **What it does:** The agent can search through results from past runs. This lets it compare, track changes, or avoid repeating the same information.\n- **When to enable:** For agents that run regularly and need to maintain continuity between executions.\n- **Configuration:** None.\n- **Example:** The agent compares this week's news with last week's and highlights what's new.", "toolsContent": "When advanced mode is enabled, you can choose exactly which tools the agent can use.\n\n### Web Search\nAllows the agent to **search the internet** via SearXNG or Brave Search.\n\n- **What it does:** The agent formulates a query, gets search results, then can read the most useful pages.\n- **When to enable:** When the agent needs to find information on a topic (Researcher or Custom type).\n- **Configuration required:** SearXNG (with JSON format enabled) or a Brave Search API key. Configurable in **Admin > Agent Tools**.\n- **Example:** The agent searches \"React Server Components best practices 2025\", gets 10 results, then reads the top 3.\n\n### Read web pages\nAllows the agent to **read the text of a page** from its address.\n\n- **What it does:** The agent visits a URL and retrieves the structured text (headings, paragraphs, lists). Ads, menus and footers are typically filtered out.\n- **When to enable:** For the Monitor type (mandatory), or any agent that needs to read web pages.\n- **Configuration:** Works out of the box, but a **Jina Reader API key** improves quality and removes rate limits. Configurable in **Admin > Agent Tools**.\n- **Example:** The agent scrapes 5 tech blogs and produces a synthesized summary.\n\n### Note Search\nAllows the agent to **search your existing notes**.\n\n- **What it does:** The agent performs a text search across all your notes (or a specific notebook).\n- **When to enable:** For Observer-type agents, or any agent that needs to cross-reference information with your notes.\n- **Configuration:** None — works immediately.\n- **Example:** The agent searches all notes containing \"machine learning\" to see what you've already written on the topic.\n\n### Read Note\nAllows the agent to **read the full content of a specific note**.\n\n- **What it does:** After finding a note (via Note Search), the agent can read its entire content to analyze or use it.\n- **When to enable:** As a companion to Note Search. Enable both together so the agent can search AND read.\n- **Configuration:** None.\n- **Example:** The agent finds 5 notes about \"productivity\", reads them all, and writes a synthesis.\n\n### Create Note\nAllows the agent to **write a new note** in your target notebook.\n\n- **What it does:** The agent creates a note with a title and content. This is how results end up in your notebooks.\n- **When to enable:** Almost always — without this tool, the agent cannot save its results. **Leave it enabled by default.**\n- **Configuration:** None.\n- **Example:** The agent creates a note \"Tech Watch - Week 16\" with a summary of 5 articles.\n\n### Fetch URL\nAllows the agent to **download the raw content of a URL** (HTML, JSON, text...).\n\n- **What it does:** Unlike scraping which extracts clean text, Fetch URL retrieves raw content. Useful for APIs, JSON files, or non-standard pages.\n- **When to enable:** When the agent needs to query REST APIs, read RSS feeds, or access raw data.\n- **Configuration:** None.\n- **Example:** The agent queries the GitHub API to list the latest commits of a project.\n\n### Memory\nAllows the agent to **access its previous execution history**.\n\n- **What it does:** The agent can search through results from past runs. This lets it compare, track changes, or avoid repeating the same information.\n- **When to enable:** For agents that run regularly and need to maintain continuity between executions.\n- **Configuration:** None.\n- **Example:** The agent compares this week's news with last week's and highlights what's new.",
"frequency": "Frequência e agendamento", "frequency": "Frequência e agendamento",
"frequencyContent": "| Frequência | Comportamento\n|-----------|----------\n| **Manual** | Clica em \"Executar\".", "frequencyContent": "| Frequência | Comportamento\n|-----------|----------\n| **Manual** | Clica em \"Executar\".",
"targetNotebook": "Caderno de destino", "targetNotebook": "Caderno de destino",
@@ -2447,7 +2447,7 @@
"templates": "Modelos", "templates": "Modelos",
"templatesContent": "Templates are pre-configured agents ready to install in one click. You'll find them at the **bottom of the Agents page**.\n\nAvailable templates include:\n\n- **AI Watch** — weekly AI news roundup from 5 specialized sites\n- **Tech Watch** — general tech news summary\n- **Dev Watch** — developer news and new frameworks\n- **Note Observer** — analyzes a notebook and suggests connections\n- **Topic Researcher** — deep research on a specific topic\n\nOnce installed, you can edit the agent to customize it.", "templatesContent": "Templates are pre-configured agents ready to install in one click. You'll find them at the **bottom of the Agents page**.\n\nAvailable templates include:\n\n- **AI Watch** — weekly AI news roundup from 5 specialized sites\n- **Tech Watch** — general tech news summary\n- **Dev Watch** — developer news and new frameworks\n- **Note Observer** — analyzes a notebook and suggests connections\n- **Topic Researcher** — deep research on a specific topic\n\nOnce installed, you can edit the agent to customize it.",
"tips": "Dicas e solução de problemas", "tips": "Dicas e solução de problemas",
"tipsContent": "- **Start with a template** and customize it — it's the fastest way to get a working agent\n- **Test with \"Manual\"** frequency before enabling automatic scheduling\n- **A \"Researcher\" agent requires a web search provider** — configure SearXNG (JSON format) or Brave Search in **Admin > Agent Tools**\n- **If an agent fails**, click on its card then **History** to see the execution log and tool traces\n- **The \"Enabled/Disabled\" toggle** lets you pause an agent without deleting it\n- **Web scraping quality** improves with a Jina Reader API key (optional, in Admin > Agent Tools)\n- **Combine \"Note Search\" + \"Read Note\"** so the agent can find AND analyze your notes' content\n- **Enable \"Memory\"** if your agent runs regularly — it will avoid repeating the same information across runs", "tipsContent": "- **Start with a template** and customize it — it's the fastest way to get a working agent\n- **Test with \"Manual\"** frequency before enabling automatic scheduling\n- **A \"Researcher\" agent requires a web search provider** — configure SearXNG (JSON format) or Brave Search in **Admin > Agent Tools**\n- **If an agent fails**, click on its card then **History** to see the execution log and tool traces\n- **The \"Enabled/Disabled\" toggle** lets you pause an agent without deleting it\n- **Page-reading quality** improves with a Jina Reader API key (optional, in Admin > Agent Tools)\n- **Combine \"Note Search\" + \"Read Note\"** so the agent can find AND analyze your notes' content\n- **Enable \"Memory\"** if your agent runs regularly — it will avoid repeating the same information across runs",
"tooltips": { "tooltips": {
"agentType": "Escolha o tipo de tarefa que o agente realizará. Cada tipo tem capacidades e campos diferentes.", "agentType": "Escolha o tipo de tarefa que o agente realizará. Cada tipo tem capacidades e campos diferentes.",
"researchTopic": "O tema que o agente pesquisará na web. Seja específico para melhores resultados.", "researchTopic": "O tema que o agente pesquisará na web. Seja específico para melhores resultados.",
@@ -3176,7 +3176,8 @@
"fetchStatusFailed": "Falha ao buscar o status de cobrança", "fetchStatusFailed": "Falha ao buscar o status de cobrança",
"fetchQuotasFailed": "Falha ao buscar as cotas", "fetchQuotasFailed": "Falha ao buscar as cotas",
"fetchInvoicesFailed": "Falha ao carregar o histórico de cobrança.", "fetchInvoicesFailed": "Falha ao carregar o histórico de cobrança.",
"savePercent": "Economize ~17%", "savePercent": "Economize ~{percent} %",
"billedYearTotal": "ou seja, {price} por ano",
"cancelSubscription": "Cancelar subscrição", "cancelSubscription": "Cancelar subscrição",
"changeOffer": "Mudar de oferta", "changeOffer": "Mudar de oferta",
"downgradeToFree": "Voltar à oferta gratuita", "downgradeToFree": "Voltar à oferta gratuita",
@@ -3385,7 +3386,7 @@
"feature5": "Acompanhamento na instalação" "feature5": "Acompanhamento na instalação"
}, },
"basicPrice": "Grátis", "basicPrice": "Grátis",
"savePercent": "Economize ~17%", "savePercent": "Economize ~{percent} %",
"proMonthly": "9,90€", "proMonthly": "9,90€",
"proAnnualMonthly": "8,25€", "proAnnualMonthly": "8,25€",
"businessMonthly": "29,90€", "businessMonthly": "29,90€",
@@ -3665,7 +3666,7 @@
"mappingHint": "Pode demorar de um a três minutos. Pode continuar a navegar; a página atualizar-se-á automaticamente.", "mappingHint": "Pode demorar de um a três minutos. Pode continuar a navegar; a página atualizar-se-á automaticamente.",
"analyzeNow": "Atualizar os temas", "analyzeNow": "Atualizar os temas",
"emptyNeedMoreNotes": "Adicione mais {count} notas para agrupar os seus temas (mínimo 10).", "emptyNeedMoreNotes": "Adicione mais {count} notas para agrupar os seus temas (mínimo 10).",
"embeddingsHint": "Apenas {indexed} de {total} notas indexadas para IA.", "embeddingsHint": "Apenas {indexed} de {total} notas estão prontas para agrupar por temas.",
"vsGraphHint": "Não é o \"Mapa de ligações\": aqui a IA agrupa por significado, não por ligações.", "vsGraphHint": "Não é o \"Mapa de ligações\": aqui a IA agrupa por significado, não por ligações.",
"openGraphMap": "Abrir mapa de links", "openGraphMap": "Abrir mapa de links",
"analysisFailed": "Análise falhou. Verifica as configurações de IA.", "analysisFailed": "Análise falhou. Verifica as configurações de IA.",
@@ -4492,7 +4493,7 @@
"convertSuccess": "Conversão concluída! Caderno vinculado criado.", "convertSuccess": "Conversão concluída! Caderno vinculado criado.",
"convertToNotebook": "Converter em caderno", "convertToNotebook": "Converter em caderno",
"converting": "Convertendo…", "converting": "Convertendo…",
"createLocalDb": "Criar um banco de dados local autônomo", "createLocalDb": "Criar uma tabela nesta nota",
"createNotebook": "Criar caderno", "createNotebook": "Criar caderno",
"defaultOption1": "Opção 1", "defaultOption1": "Opção 1",
"defaultOption2": "Opção 2", "defaultOption2": "Opção 2",
@@ -4514,7 +4515,7 @@
"keywordMatch": "Palavra-chave", "keywordMatch": "Palavra-chave",
"linkToNotebook": "Vincular a um caderno", "linkToNotebook": "Vincular a um caderno",
"loadError": "Erro ao carregar dados estruturados.", "loadError": "Erro ao carregar dados estruturados.",
"localDbTitle": "Banco de dados autônomo", "localDbTitle": "Tabela nesta nota",
"namePlaceholder": "Digite um nome…", "namePlaceholder": "Digite um nome…",
"noEchoFound": "Nenhuma nota próxima encontrada.", "noEchoFound": "Nenhuma nota próxima encontrada.",
"noNotebook": "Este bloco requer um caderno. Mova esta nota para um caderno primeiro.", "noNotebook": "Este bloco requer um caderno. Mova esta nota para um caderno primeiro.",
@@ -4528,8 +4529,8 @@
"selectNotebook": "Vincular a um caderno", "selectNotebook": "Vincular a um caderno",
"selectOptionsPlaceholder": "Opções separadas por vírgulas", "selectOptionsPlaceholder": "Opções separadas por vírgulas",
"semanticEcho": "Ressonâncias semânticas", "semanticEcho": "Ressonâncias semânticas",
"switchToLocalDb": "Mudar para banco de dados local", "switchToLocalDb": "Voltar à tabela desta nota",
"turnIntoLabel": "Banco de dados embutido", "turnIntoLabel": "Tabela na nota",
"untitled": "Sem título" "untitled": "Sem título"
}, },
"structuredViews": { "structuredViews": {

View File

@@ -2190,7 +2190,7 @@
"custom": "Пользовательский" "custom": "Пользовательский"
}, },
"typeDescriptions": { "typeDescriptions": {
"scraper": "Собирает данные с нескольких сайтов и создаёт сводку", "scraper": "Читает несколько сайтов и пишет сводку",
"researcher": "Ищет информацию по теме", "researcher": "Ищет информацию по теме",
"monitor": "Следит за блокнотом и анализирует заметки", "monitor": "Следит за блокнотом и анализирует заметки",
"slideGenerator": "Создает презентацию PowerPoint из заметок.", "slideGenerator": "Создает презентацию PowerPoint из заметок.",
@@ -2203,7 +2203,7 @@
"namePlaceholder": "напр. Еженедельный обзор ИИ", "namePlaceholder": "напр. Еженедельный обзор ИИ",
"description": "Описание (необязательно)", "description": "Описание (необязательно)",
"descriptionPlaceholder": "Еженедельная сводка новостей ИИ", "descriptionPlaceholder": "Еженедельная сводка новостей ИИ",
"urlsLabel": "URL-адреса для сбора", "urlsLabel": "Адреса страниц для чтения",
"urlsOptional": "(необязательно)", "urlsOptional": "(необязательно)",
"sourceNotebook": "Блокнот для наблюдения", "sourceNotebook": "Блокнот для наблюдения",
"selectNotebook": "Выберите блокнот...", "selectNotebook": "Выберите блокнот...",
@@ -2248,7 +2248,7 @@
"notifyEmail": "Email-уведомление", "notifyEmail": "Email-уведомление",
"notifyEmailHint": "Получайте письмо с результатами агента после каждого запуска", "notifyEmailHint": "Получайте письмо с результатами агента после каждого запуска",
"includeImages": "Включить изображения", "includeImages": "Включить изображения",
"includeImagesHint": "Извлекать изображения со страниц и прикреплять к созданной заметке", "includeImagesHint": "Брать изображения с прочитанных страниц и прикреплять к заметке",
"back": "Назад", "back": "Назад",
"configuration": "Конфигурация", "configuration": "Конфигурация",
"options": "Параметры", "options": "Параметры",
@@ -2347,15 +2347,15 @@
}, },
"veilleAI": { "veilleAI": {
"name": "Обзор ИИ", "name": "Обзор ИИ",
"description": "Собирает данные с 5 сайтов, специализирующихся на ИИ, и генерирует еженедельную сводку." "description": "Читает 5 сайтов об ИИ и пишет еженедельную сводку."
}, },
"veilleTech": { "veilleTech": {
"name": "Обзор технологий", "name": "Обзор технологий",
"description": "Собирает данные с крупных технических сайтов и создаёт сводку новостей." "description": "Читает крупные технические сайты и пишет сводку новостей."
}, },
"veilleDev": { "veilleDev": {
"name": "Обзор разработок", "name": "Обзор разработок",
"description": "Собирает данные с сайтов для разработчиков и обобщает новые технологии и фреймворки." "description": "Читает сайты для разработчиков и кратко описывает новинки."
}, },
"surveillant": { "surveillant": {
"name": "Наблюдатель за заметками", "name": "Наблюдатель за заметками",
@@ -2402,7 +2402,7 @@
"tools": { "tools": {
"title": "Инструменты Агента", "title": "Инструменты Агента",
"webSearch": "Веб-поиск", "webSearch": "Веб-поиск",
"webScrape": "Веб-скрейпинг", "webScrape": "Чтение страниц",
"noteSearch": "Поиск Заметок", "noteSearch": "Поиск Заметок",
"noteRead": "Читать Заметку", "noteRead": "Читать Заметку",
"noteCreate": "Создать Заметку", "noteCreate": "Создать Заметку",
@@ -2431,15 +2431,15 @@
"btnLabel": "Помощь", "btnLabel": "Помощь",
"close": "Закрыть", "close": "Закрыть",
"whatIsAgent": "Что такое агент?", "whatIsAgent": "Что такое агент?",
"whatIsAgentContent": "An **agent** is an AI assistant that runs automatically to perform tasks for you. It has access to **tools** (web search, web scraping, note reading...) and produces a **note** with its results.\n\nThink of it as a small autonomous worker: you give it a mission, it researches or scrapes information, then writes a structured note you can read later.", "whatIsAgentContent": "An **agent** is an AI assistant that runs automatically to perform tasks for you. It has access to **tools** (web search, reading pages, note reading...) and produces a **note** with its results.\n\nThink of it as a small autonomous worker: you give it a mission, it researches or reads pages, then writes a structured note you can read later.",
"howToUse": "Как использовать агента?", "howToUse": "Как использовать агента?",
"howToUseContent": "1. Нажмите **«Новый агент»** (или начните с **шаблона** в нижней части страницы).", "howToUseContent": "1. Нажмите **«Новый агент»** (или начните с **шаблона** в нижней части страницы).",
"types": "Типы агентов", "types": "Типы агентов",
"typesContent": "### Researcher\nSearches the web on a **topic you define** and creates a structured note with sources and references.\n\n- **Fields:** name, research topic (e.g. \"Latest advances in quantum computing\")\n- **Default tools:** web search, web scraping, note search, note creation\n- **Requirements:** a web search provider must be configured (SearXNG or Brave Search)\n\n### Monitor (Scraper)\nScrapes a **list of URLs** you specify and produces a summary of their content.\n\n- **Fields:** name, list of URLs (e.g. tech news sites, blogs...)\n- **Default tools:** web scraping, note creation\n- **Use case:** weekly tech watch, competitor monitoring, blog roundups\n\n### Observer (Notebook Monitor)\nReads notes from a **notebook you select** and produces analysis, connections, and suggestions.\n\n- **Fields:** name, source notebook (the one to analyze)\n- **Default tools:** note search, note read, note creation\n- **Use case:** find connections between your notes, get reading suggestions, detect recurring themes\n\n### Custom\nA blank canvas: you write your own **prompt** and pick your own **tools**.\n\n- **Fields:** name, description, custom instructions (in Advanced mode)\n- **No default tools** — you choose exactly what the agent needs\n- **Use case:** anything creative or specific that doesn't fit the other types", "typesContent": "### Researcher\nSearches the web on a **topic you define** and creates a structured note with sources and references.\n\n- **Fields:** name, research topic (e.g. \"Latest advances in quantum computing\")\n- **Default tools:** web search, reading pages, note search, note creation\n- **Requirements:** a web search provider must be configured (SearXNG or Brave Search)\n\n### Monitor\nReads a **list of pages** you give it and writes a summary.\n\n- **Fields:** name, list of URLs (e.g. tech news sites, blogs...)\n- **Default tools:** reading pages, note creation\n- **Use case:** weekly tech watch, competitor monitoring, blog roundups\n\n### Observer (Notebook Monitor)\nReads notes from a **notebook you select** and produces analysis, connections, and suggestions.\n\n- **Fields:** name, source notebook (the one to analyze)\n- **Default tools:** note search, note read, note creation\n- **Use case:** find connections between your notes, get reading suggestions, detect recurring themes\n\n### Custom\nA blank canvas: you write your own **prompt** and pick your own **tools**.\n\n- **Fields:** name, description, custom instructions (in Advanced mode)\n- **No default tools** — you choose exactly what the agent needs\n- **Use case:** anything creative or specific that doesn't fit the other types",
"advanced": "Расширенный режим (Инструкции ИИ, Макс. итерации)", "advanced": "Расширенный режим (Инструкции ИИ, Макс. итерации)",
"advancedContent": "Нажмите **«Расширенный режим»** в нижней части формы, чтобы получить доступ к дополнительным настройкам.", "advancedContent": "Нажмите **«Расширенный режим»** в нижней части формы, чтобы получить доступ к дополнительным настройкам.",
"tools": "Доступные инструменты (подробно)", "tools": "Доступные инструменты (подробно)",
"toolsContent": "When advanced mode is enabled, you can choose exactly which tools the agent can use.\n\n### Web Search\nAllows the agent to **search the internet** via SearXNG or Brave Search.\n\n- **What it does:** The agent formulates a query, gets search results, and can then scrape the most relevant pages.\n- **When to enable:** When the agent needs to find information on a topic (Researcher or Custom type).\n- **Configuration required:** SearXNG (with JSON format enabled) or a Brave Search API key. Configurable in **Admin > Agent Tools**.\n- **Example:** The agent searches \"React Server Components best practices 2025\", gets 10 results, then scrapes the top 3.\n\n### Web Scrape\nAllows the agent to **extract text content from a web page** given its URL.\n\n- **What it does:** The agent visits a URL and retrieves the structured text (headings, paragraphs, lists). Ads, menus and footers are typically filtered out.\n- **When to enable:** For the Monitor type (mandatory), or any agent that needs to read web pages.\n- **Configuration:** Works out of the box, but a **Jina Reader API key** improves quality and removes rate limits. Configurable in **Admin > Agent Tools**.\n- **Example:** The agent scrapes 5 tech blogs and produces a synthesized summary.\n\n### Note Search\nAllows the agent to **search your existing notes**.\n\n- **What it does:** The agent performs a text search across all your notes (or a specific notebook).\n- **When to enable:** For Observer-type agents, or any agent that needs to cross-reference information with your notes.\n- **Configuration:** None — works immediately.\n- **Example:** The agent searches all notes containing \"machine learning\" to see what you've already written on the topic.\n\n### Read Note\nAllows the agent to **read the full content of a specific note**.\n\n- **What it does:** After finding a note (via Note Search), the agent can read its entire content to analyze or use it.\n- **When to enable:** As a companion to Note Search. Enable both together so the agent can search AND read.\n- **Configuration:** None.\n- **Example:** The agent finds 5 notes about \"productivity\", reads them all, and writes a synthesis.\n\n### Create Note\nAllows the agent to **write a new note** in your target notebook.\n\n- **What it does:** The agent creates a note with a title and content. This is how results end up in your notebooks.\n- **When to enable:** Almost always — without this tool, the agent cannot save its results. **Leave it enabled by default.**\n- **Configuration:** None.\n- **Example:** The agent creates a note \"Tech Watch - Week 16\" with a summary of 5 articles.\n\n### Fetch URL\nAllows the agent to **download the raw content of a URL** (HTML, JSON, text...).\n\n- **What it does:** Unlike scraping which extracts clean text, Fetch URL retrieves raw content. Useful for APIs, JSON files, or non-standard pages.\n- **When to enable:** When the agent needs to query REST APIs, read RSS feeds, or access raw data.\n- **Configuration:** None.\n- **Example:** The agent queries the GitHub API to list the latest commits of a project.\n\n### Memory\nAllows the agent to **access its previous execution history**.\n\n- **What it does:** The agent can search through results from past runs. This lets it compare, track changes, or avoid repeating the same information.\n- **When to enable:** For agents that run regularly and need to maintain continuity between executions.\n- **Configuration:** None.\n- **Example:** The agent compares this week's news with last week's and highlights what's new.", "toolsContent": "When advanced mode is enabled, you can choose exactly which tools the agent can use.\n\n### Web Search\nAllows the agent to **search the internet** via SearXNG or Brave Search.\n\n- **What it does:** The agent formulates a query, gets search results, then can read the most useful pages.\n- **When to enable:** When the agent needs to find information on a topic (Researcher or Custom type).\n- **Configuration required:** SearXNG (with JSON format enabled) or a Brave Search API key. Configurable in **Admin > Agent Tools**.\n- **Example:** The agent searches \"React Server Components best practices 2025\", gets 10 results, then reads the top 3.\n\n### Read web pages\nAllows the agent to **read the text of a page** from its address.\n\n- **What it does:** The agent visits a URL and retrieves the structured text (headings, paragraphs, lists). Ads, menus and footers are typically filtered out.\n- **When to enable:** For the Monitor type (mandatory), or any agent that needs to read web pages.\n- **Configuration:** Works out of the box, but a **Jina Reader API key** improves quality and removes rate limits. Configurable in **Admin > Agent Tools**.\n- **Example:** The agent scrapes 5 tech blogs and produces a synthesized summary.\n\n### Note Search\nAllows the agent to **search your existing notes**.\n\n- **What it does:** The agent performs a text search across all your notes (or a specific notebook).\n- **When to enable:** For Observer-type agents, or any agent that needs to cross-reference information with your notes.\n- **Configuration:** None — works immediately.\n- **Example:** The agent searches all notes containing \"machine learning\" to see what you've already written on the topic.\n\n### Read Note\nAllows the agent to **read the full content of a specific note**.\n\n- **What it does:** After finding a note (via Note Search), the agent can read its entire content to analyze or use it.\n- **When to enable:** As a companion to Note Search. Enable both together so the agent can search AND read.\n- **Configuration:** None.\n- **Example:** The agent finds 5 notes about \"productivity\", reads them all, and writes a synthesis.\n\n### Create Note\nAllows the agent to **write a new note** in your target notebook.\n\n- **What it does:** The agent creates a note with a title and content. This is how results end up in your notebooks.\n- **When to enable:** Almost always — without this tool, the agent cannot save its results. **Leave it enabled by default.**\n- **Configuration:** None.\n- **Example:** The agent creates a note \"Tech Watch - Week 16\" with a summary of 5 articles.\n\n### Fetch URL\nAllows the agent to **download the raw content of a URL** (HTML, JSON, text...).\n\n- **What it does:** Unlike scraping which extracts clean text, Fetch URL retrieves raw content. Useful for APIs, JSON files, or non-standard pages.\n- **When to enable:** When the agent needs to query REST APIs, read RSS feeds, or access raw data.\n- **Configuration:** None.\n- **Example:** The agent queries the GitHub API to list the latest commits of a project.\n\n### Memory\nAllows the agent to **access its previous execution history**.\n\n- **What it does:** The agent can search through results from past runs. This lets it compare, track changes, or avoid repeating the same information.\n- **When to enable:** For agents that run regularly and need to maintain continuity between executions.\n- **Configuration:** None.\n- **Example:** The agent compares this week's news with last week's and highlights what's new.",
"frequency": "Частота и расписание", "frequency": "Частота и расписание",
"frequencyContent": "| Частота | Поведение\n|-----------|----------\n| **Вручную** | Вы нажимаете «Запустить».", "frequencyContent": "| Частота | Поведение\n|-----------|----------\n| **Вручную** | Вы нажимаете «Запустить».",
"targetNotebook": "Целевой блокнот", "targetNotebook": "Целевой блокнот",
@@ -2447,7 +2447,7 @@
"templates": "Шаблоны", "templates": "Шаблоны",
"templatesContent": "Templates are pre-configured agents ready to install in one click. You'll find them at the **bottom of the Agents page**.\n\nAvailable templates include:\n\n- **AI Watch** — weekly AI news roundup from 5 specialized sites\n- **Tech Watch** — general tech news summary\n- **Dev Watch** — developer news and new frameworks\n- **Note Observer** — analyzes a notebook and suggests connections\n- **Topic Researcher** — deep research on a specific topic\n\nOnce installed, you can edit the agent to customize it.", "templatesContent": "Templates are pre-configured agents ready to install in one click. You'll find them at the **bottom of the Agents page**.\n\nAvailable templates include:\n\n- **AI Watch** — weekly AI news roundup from 5 specialized sites\n- **Tech Watch** — general tech news summary\n- **Dev Watch** — developer news and new frameworks\n- **Note Observer** — analyzes a notebook and suggests connections\n- **Topic Researcher** — deep research on a specific topic\n\nOnce installed, you can edit the agent to customize it.",
"tips": "Советы и устранение неполадок", "tips": "Советы и устранение неполадок",
"tipsContent": "- **Start with a template** and customize it — it's the fastest way to get a working agent\n- **Test with \"Manual\"** frequency before enabling automatic scheduling\n- **A \"Researcher\" agent requires a web search provider** — configure SearXNG (JSON format) or Brave Search in **Admin > Agent Tools**\n- **If an agent fails**, click on its card then **History** to see the execution log and tool traces\n- **The \"Enabled/Disabled\" toggle** lets you pause an agent without deleting it\n- **Web scraping quality** improves with a Jina Reader API key (optional, in Admin > Agent Tools)\n- **Combine \"Note Search\" + \"Read Note\"** so the agent can find AND analyze your notes' content\n- **Enable \"Memory\"** if your agent runs regularly — it will avoid repeating the same information across runs", "tipsContent": "- **Start with a template** and customize it — it's the fastest way to get a working agent\n- **Test with \"Manual\"** frequency before enabling automatic scheduling\n- **A \"Researcher\" agent requires a web search provider** — configure SearXNG (JSON format) or Brave Search in **Admin > Agent Tools**\n- **If an agent fails**, click on its card then **History** to see the execution log and tool traces\n- **The \"Enabled/Disabled\" toggle** lets you pause an agent without deleting it\n- **Page-reading quality** improves with a Jina Reader API key (optional, in Admin > Agent Tools)\n- **Combine \"Note Search\" + \"Read Note\"** so the agent can find AND analyze your notes' content\n- **Enable \"Memory\"** if your agent runs regularly — it will avoid repeating the same information across runs",
"tooltips": { "tooltips": {
"agentType": "Выберите тип задачи, которую будет выполнять агент. Каждый тип имеет разные возможности и поля.", "agentType": "Выберите тип задачи, которую будет выполнять агент. Каждый тип имеет разные возможности и поля.",
"researchTopic": "Тема, которую агент будет исследовать в интернете. Будьте конкретны для лучших результатов.", "researchTopic": "Тема, которую агент будет исследовать в интернете. Будьте конкретны для лучших результатов.",
@@ -3176,7 +3176,8 @@
"fetchStatusFailed": "Не удалось получить статус биллинга", "fetchStatusFailed": "Не удалось получить статус биллинга",
"fetchQuotasFailed": "Не удалось получить квоты", "fetchQuotasFailed": "Не удалось получить квоты",
"fetchInvoicesFailed": "Не удалось загрузить историю счетов.", "fetchInvoicesFailed": "Не удалось загрузить историю счетов.",
"savePercent": "Экономия ~17%", "savePercent": "Экономия ~{percent} %",
"billedYearTotal": "то есть {price} в год",
"cancelSubscription": "Отменить подписку", "cancelSubscription": "Отменить подписку",
"changeOffer": "Сменить тариф", "changeOffer": "Сменить тариф",
"downgradeToFree": "Вернуться к бесплатному тарифу", "downgradeToFree": "Вернуться к бесплатному тарифу",
@@ -3385,7 +3386,7 @@
"feature5": "Помощь при запуске" "feature5": "Помощь при запуске"
}, },
"basicPrice": "Бесплатно", "basicPrice": "Бесплатно",
"savePercent": "Экономия ~17%", "savePercent": "Экономия ~{percent} %",
"proMonthly": "9,90€", "proMonthly": "9,90€",
"proAnnualMonthly": "8,25€", "proAnnualMonthly": "8,25€",
"businessMonthly": "29,90€", "businessMonthly": "29,90€",
@@ -3665,7 +3666,7 @@
"mappingHint": "Это может занять от одной до трёх минут. Вы можете продолжать просмотр; страница обновится автоматически.", "mappingHint": "Это может занять от одной до трёх минут. Вы можете продолжать просмотр; страница обновится автоматически.",
"analyzeNow": "Обновить темы", "analyzeNow": "Обновить темы",
"emptyNeedMoreNotes": "Добавьте ещё {count} заметок, чтобы сгруппировать темы (минимум 10).", "emptyNeedMoreNotes": "Добавьте ещё {count} заметок, чтобы сгруппировать темы (минимум 10).",
"embeddingsHint": "Только {indexed} из {total} заметок индексированы для ИИ.", "embeddingsHint": "Только {indexed} из {total} заметок готовы к группировке по темам.",
"vsGraphHint": "Это не «Карта ссылок»: здесь ИИ группирует по смыслу, а не по ссылкам.", "vsGraphHint": "Это не «Карта ссылок»: здесь ИИ группирует по смыслу, а не по ссылкам.",
"openGraphMap": "Открыть карту связей", "openGraphMap": "Открыть карту связей",
"analysisFailed": "Анализ не удался. Проверьте настройки ИИ.", "analysisFailed": "Анализ не удался. Проверьте настройки ИИ.",
@@ -4492,7 +4493,7 @@
"convertSuccess": "Конвертация завершена! Связанный блокнот создан.", "convertSuccess": "Конвертация завершена! Связанный блокнот создан.",
"convertToNotebook": "В блокнот", "convertToNotebook": "В блокнот",
"converting": "Конвертация…", "converting": "Конвертация…",
"createLocalDb": "Создать автономную локальную базу данных", "createLocalDb": "Создать таблицу в этой заметке",
"createNotebook": "Создать блокнот", "createNotebook": "Создать блокнот",
"defaultOption1": "Вариант 1", "defaultOption1": "Вариант 1",
"defaultOption2": "Вариант 2", "defaultOption2": "Вариант 2",
@@ -4514,7 +4515,7 @@
"keywordMatch": "Ключевое слово", "keywordMatch": "Ключевое слово",
"linkToNotebook": "Ссылка на блокнот", "linkToNotebook": "Ссылка на блокнот",
"loadError": "Ошибка загрузки структурированных данных.", "loadError": "Ошибка загрузки структурированных данных.",
"localDbTitle": "Автономная база данных", "localDbTitle": "Таблица в этой заметке",
"namePlaceholder": "Введите имя…", "namePlaceholder": "Введите имя…",
"noEchoFound": "Близких заметок не найдено.", "noEchoFound": "Близких заметок не найдено.",
"noNotebook": "Этот блок требует блокнот. Сначала переместите эту запись в блокнот.", "noNotebook": "Этот блок требует блокнот. Сначала переместите эту запись в блокнот.",
@@ -4528,8 +4529,8 @@
"selectNotebook": "Ссылка на блокнот", "selectNotebook": "Ссылка на блокнот",
"selectOptionsPlaceholder": "Варианты, разделённые запятыми", "selectOptionsPlaceholder": "Варианты, разделённые запятыми",
"semanticEcho": "Семантические резонансы", "semanticEcho": "Семантические резонансы",
"switchToLocalDb": "Перейти к локальной базе данных", "switchToLocalDb": "Вернуться к таблице этой заметки",
"turnIntoLabel": "Встроенная база данных", "turnIntoLabel": "Таблица в заметке",
"untitled": "Без названия" "untitled": "Без названия"
}, },
"structuredViews": { "structuredViews": {

View File

@@ -2190,7 +2190,7 @@
"custom": "自定义" "custom": "自定义"
}, },
"typeDescriptions": { "typeDescriptions": {
"scraper": "抓取多个网站并创建摘要", "scraper": "阅读多个网站并写出摘要",
"researcher": "搜索有关主题的信息", "researcher": "搜索有关主题的信息",
"monitor": "监视笔记本并分析笔记", "monitor": "监视笔记本并分析笔记",
"slideGenerator": "根据笔记创建 PowerPoint 演示文稿", "slideGenerator": "根据笔记创建 PowerPoint 演示文稿",
@@ -2203,7 +2203,7 @@
"namePlaceholder": "例如:周二 AI 观察", "namePlaceholder": "例如:周二 AI 观察",
"description": "描述(可选)", "description": "描述(可选)",
"descriptionPlaceholder": "每周 AI 新闻摘要", "descriptionPlaceholder": "每周 AI 新闻摘要",
"urlsLabel": "要抓取的 URL", "urlsLabel": "要阅读的页面地址",
"urlsOptional": "(可选)", "urlsOptional": "(可选)",
"sourceNotebook": "要监视的笔记本", "sourceNotebook": "要监视的笔记本",
"selectNotebook": "选择笔记本...", "selectNotebook": "选择笔记本...",
@@ -2248,7 +2248,7 @@
"notifyEmail": "邮件通知", "notifyEmail": "邮件通知",
"notifyEmailHint": "每次运行后通过邮件接收代理结果", "notifyEmailHint": "每次运行后通过邮件接收代理结果",
"includeImages": "包含图片", "includeImages": "包含图片",
"includeImagesHint": "从抓取的页面中提取图片并附加到生成的笔记", "includeImagesHint": "从已阅读的页面取出图片并附到笔记",
"back": "返回", "back": "返回",
"configuration": "配置", "configuration": "配置",
"options": "选项", "options": "选项",
@@ -2347,15 +2347,15 @@
}, },
"veilleAI": { "veilleAI": {
"name": "AI 观察", "name": "AI 观察",
"description": "抓取 5 个 AI 专业网站并生成每周摘要。" "description": "阅读 5 个 AI 网站并写出每周摘要。"
}, },
"veilleTech": { "veilleTech": {
"name": "科技观察", "name": "科技观察",
"description": "抓取主要科技网站并创建新闻摘要。" "description": "阅读主要科技网站并写出新闻摘要。"
}, },
"veilleDev": { "veilleDev": {
"name": "开发观察", "name": "开发观察",
"description": "抓取开发网站并总结新技术和框架。" "description": "阅读开发网站并总结新技术。"
}, },
"surveillant": { "surveillant": {
"name": "笔记观察者", "name": "笔记观察者",
@@ -2402,7 +2402,7 @@
"tools": { "tools": {
"title": "代理工具", "title": "代理工具",
"webSearch": "网络搜索", "webSearch": "网络搜索",
"webScrape": "网页抓取", "webScrape": "阅读网页",
"noteSearch": "笔记搜索", "noteSearch": "笔记搜索",
"noteRead": "读取笔记", "noteRead": "读取笔记",
"noteCreate": "创建笔记", "noteCreate": "创建笔记",
@@ -2431,15 +2431,15 @@
"btnLabel": "帮助", "btnLabel": "帮助",
"close": "关闭", "close": "关闭",
"whatIsAgent": "什么是代理?", "whatIsAgent": "什么是代理?",
"whatIsAgentContent": "An **agent** is an AI assistant that runs automatically to perform tasks for you. It has access to **tools** (web search, web scraping, note reading...) and produces a **note** with its results.\n\nThink of it as a small autonomous worker: you give it a mission, it researches or scrapes information, then writes a structured note you can read later.", "whatIsAgentContent": "An **agent** is an AI assistant that runs automatically to perform tasks for you. It has access to **tools** (web search, reading pages, note reading...) and produces a **note** with its results.\n\nThink of it as a small autonomous worker: you give it a mission, it researches or reads pages, then writes a structured note you can read later.",
"howToUse": "如何使用代理?", "howToUse": "如何使用代理?",
"howToUseContent": "1. 点击**\"新建智能体\"**(或从页面底部的**模板**开始)。", "howToUseContent": "1. 点击**\"新建智能体\"**(或从页面底部的**模板**开始)。",
"types": "代理类型", "types": "代理类型",
"typesContent": "### Researcher\nSearches the web on a **topic you define** and creates a structured note with sources and references.\n\n- **Fields:** name, research topic (e.g. \"Latest advances in quantum computing\")\n- **Default tools:** web search, web scraping, note search, note creation\n- **Requirements:** a web search provider must be configured (SearXNG or Brave Search)\n\n### Monitor (Scraper)\nScrapes a **list of URLs** you specify and produces a summary of their content.\n\n- **Fields:** name, list of URLs (e.g. tech news sites, blogs...)\n- **Default tools:** web scraping, note creation\n- **Use case:** weekly tech watch, competitor monitoring, blog roundups\n\n### Observer (Notebook Monitor)\nReads notes from a **notebook you select** and produces analysis, connections, and suggestions.\n\n- **Fields:** name, source notebook (the one to analyze)\n- **Default tools:** note search, note read, note creation\n- **Use case:** find connections between your notes, get reading suggestions, detect recurring themes\n\n### Custom\nA blank canvas: you write your own **prompt** and pick your own **tools**.\n\n- **Fields:** name, description, custom instructions (in Advanced mode)\n- **No default tools** — you choose exactly what the agent needs\n- **Use case:** anything creative or specific that doesn't fit the other types", "typesContent": "### Researcher\nSearches the web on a **topic you define** and creates a structured note with sources and references.\n\n- **Fields:** name, research topic (e.g. \"Latest advances in quantum computing\")\n- **Default tools:** web search, reading pages, note search, note creation\n- **Requirements:** a web search provider must be configured (SearXNG or Brave Search)\n\n### Monitor\nReads a **list of pages** you give it and writes a summary.\n\n- **Fields:** name, list of URLs (e.g. tech news sites, blogs...)\n- **Default tools:** reading pages, note creation\n- **Use case:** weekly tech watch, competitor monitoring, blog roundups\n\n### Observer (Notebook Monitor)\nReads notes from a **notebook you select** and produces analysis, connections, and suggestions.\n\n- **Fields:** name, source notebook (the one to analyze)\n- **Default tools:** note search, note read, note creation\n- **Use case:** find connections between your notes, get reading suggestions, detect recurring themes\n\n### Custom\nA blank canvas: you write your own **prompt** and pick your own **tools**.\n\n- **Fields:** name, description, custom instructions (in Advanced mode)\n- **No default tools** — you choose exactly what the agent needs\n- **Use case:** anything creative or specific that doesn't fit the other types",
"advanced": "高级模式AI指令最大迭代", "advanced": "高级模式AI指令最大迭代",
"advancedContent": "点击表单底部的**\"高级模式\"**以访问附加设置。", "advancedContent": "点击表单底部的**\"高级模式\"**以访问附加设置。",
"tools": "可用工具(详细)", "tools": "可用工具(详细)",
"toolsContent": "When advanced mode is enabled, you can choose exactly which tools the agent can use.\n\n### Web Search\nAllows the agent to **search the internet** via SearXNG or Brave Search.\n\n- **What it does:** The agent formulates a query, gets search results, and can then scrape the most relevant pages.\n- **When to enable:** When the agent needs to find information on a topic (Researcher or Custom type).\n- **Configuration required:** SearXNG (with JSON format enabled) or a Brave Search API key. Configurable in **Admin > Agent Tools**.\n- **Example:** The agent searches \"React Server Components best practices 2025\", gets 10 results, then scrapes the top 3.\n\n### Web Scrape\nAllows the agent to **extract text content from a web page** given its URL.\n\n- **What it does:** The agent visits a URL and retrieves the structured text (headings, paragraphs, lists). Ads, menus and footers are typically filtered out.\n- **When to enable:** For the Monitor type (mandatory), or any agent that needs to read web pages.\n- **Configuration:** Works out of the box, but a **Jina Reader API key** improves quality and removes rate limits. Configurable in **Admin > Agent Tools**.\n- **Example:** The agent scrapes 5 tech blogs and produces a synthesized summary.\n\n### Note Search\nAllows the agent to **search your existing notes**.\n\n- **What it does:** The agent performs a text search across all your notes (or a specific notebook).\n- **When to enable:** For Observer-type agents, or any agent that needs to cross-reference information with your notes.\n- **Configuration:** None — works immediately.\n- **Example:** The agent searches all notes containing \"machine learning\" to see what you've already written on the topic.\n\n### Read Note\nAllows the agent to **read the full content of a specific note**.\n\n- **What it does:** After finding a note (via Note Search), the agent can read its entire content to analyze or use it.\n- **When to enable:** As a companion to Note Search. Enable both together so the agent can search AND read.\n- **Configuration:** None.\n- **Example:** The agent finds 5 notes about \"productivity\", reads them all, and writes a synthesis.\n\n### Create Note\nAllows the agent to **write a new note** in your target notebook.\n\n- **What it does:** The agent creates a note with a title and content. This is how results end up in your notebooks.\n- **When to enable:** Almost always — without this tool, the agent cannot save its results. **Leave it enabled by default.**\n- **Configuration:** None.\n- **Example:** The agent creates a note \"Tech Watch - Week 16\" with a summary of 5 articles.\n\n### Fetch URL\nAllows the agent to **download the raw content of a URL** (HTML, JSON, text...).\n\n- **What it does:** Unlike scraping which extracts clean text, Fetch URL retrieves raw content. Useful for APIs, JSON files, or non-standard pages.\n- **When to enable:** When the agent needs to query REST APIs, read RSS feeds, or access raw data.\n- **Configuration:** None.\n- **Example:** The agent queries the GitHub API to list the latest commits of a project.\n\n### Memory\nAllows the agent to **access its previous execution history**.\n\n- **What it does:** The agent can search through results from past runs. This lets it compare, track changes, or avoid repeating the same information.\n- **When to enable:** For agents that run regularly and need to maintain continuity between executions.\n- **Configuration:** None.\n- **Example:** The agent compares this week's news with last week's and highlights what's new.", "toolsContent": "When advanced mode is enabled, you can choose exactly which tools the agent can use.\n\n### Web Search\nAllows the agent to **search the internet** via SearXNG or Brave Search.\n\n- **What it does:** The agent formulates a query, gets search results, then can read the most useful pages.\n- **When to enable:** When the agent needs to find information on a topic (Researcher or Custom type).\n- **Configuration required:** SearXNG (with JSON format enabled) or a Brave Search API key. Configurable in **Admin > Agent Tools**.\n- **Example:** The agent searches \"React Server Components best practices 2025\", gets 10 results, then reads the top 3.\n\n### Read web pages\nAllows the agent to **read the text of a page** from its address.\n\n- **What it does:** The agent visits a URL and retrieves the structured text (headings, paragraphs, lists). Ads, menus and footers are typically filtered out.\n- **When to enable:** For the Monitor type (mandatory), or any agent that needs to read web pages.\n- **Configuration:** Works out of the box, but a **Jina Reader API key** improves quality and removes rate limits. Configurable in **Admin > Agent Tools**.\n- **Example:** The agent scrapes 5 tech blogs and produces a synthesized summary.\n\n### Note Search\nAllows the agent to **search your existing notes**.\n\n- **What it does:** The agent performs a text search across all your notes (or a specific notebook).\n- **When to enable:** For Observer-type agents, or any agent that needs to cross-reference information with your notes.\n- **Configuration:** None — works immediately.\n- **Example:** The agent searches all notes containing \"machine learning\" to see what you've already written on the topic.\n\n### Read Note\nAllows the agent to **read the full content of a specific note**.\n\n- **What it does:** After finding a note (via Note Search), the agent can read its entire content to analyze or use it.\n- **When to enable:** As a companion to Note Search. Enable both together so the agent can search AND read.\n- **Configuration:** None.\n- **Example:** The agent finds 5 notes about \"productivity\", reads them all, and writes a synthesis.\n\n### Create Note\nAllows the agent to **write a new note** in your target notebook.\n\n- **What it does:** The agent creates a note with a title and content. This is how results end up in your notebooks.\n- **When to enable:** Almost always — without this tool, the agent cannot save its results. **Leave it enabled by default.**\n- **Configuration:** None.\n- **Example:** The agent creates a note \"Tech Watch - Week 16\" with a summary of 5 articles.\n\n### Fetch URL\nAllows the agent to **download the raw content of a URL** (HTML, JSON, text...).\n\n- **What it does:** Unlike scraping which extracts clean text, Fetch URL retrieves raw content. Useful for APIs, JSON files, or non-standard pages.\n- **When to enable:** When the agent needs to query REST APIs, read RSS feeds, or access raw data.\n- **Configuration:** None.\n- **Example:** The agent queries the GitHub API to list the latest commits of a project.\n\n### Memory\nAllows the agent to **access its previous execution history**.\n\n- **What it does:** The agent can search through results from past runs. This lets it compare, track changes, or avoid repeating the same information.\n- **When to enable:** For agents that run regularly and need to maintain continuity between executions.\n- **Configuration:** None.\n- **Example:** The agent compares this week's news with last week's and highlights what's new.",
"frequency": "频率和计划", "frequency": "频率和计划",
"frequencyContent": "| 频率 | 行为\n|-----------|----------\n| **手动** | 您自己点击\"运行\"。", "frequencyContent": "| 频率 | 行为\n|-----------|----------\n| **手动** | 您自己点击\"运行\"。",
"targetNotebook": "目标笔记本", "targetNotebook": "目标笔记本",
@@ -2447,7 +2447,7 @@
"templates": "模板", "templates": "模板",
"templatesContent": "Templates are pre-configured agents ready to install in one click. You'll find them at the **bottom of the Agents page**.\n\nAvailable templates include:\n\n- **AI Watch** — weekly AI news roundup from 5 specialized sites\n- **Tech Watch** — general tech news summary\n- **Dev Watch** — developer news and new frameworks\n- **Note Observer** — analyzes a notebook and suggests connections\n- **Topic Researcher** — deep research on a specific topic\n\nOnce installed, you can edit the agent to customize it.", "templatesContent": "Templates are pre-configured agents ready to install in one click. You'll find them at the **bottom of the Agents page**.\n\nAvailable templates include:\n\n- **AI Watch** — weekly AI news roundup from 5 specialized sites\n- **Tech Watch** — general tech news summary\n- **Dev Watch** — developer news and new frameworks\n- **Note Observer** — analyzes a notebook and suggests connections\n- **Topic Researcher** — deep research on a specific topic\n\nOnce installed, you can edit the agent to customize it.",
"tips": "提示和故障排除", "tips": "提示和故障排除",
"tipsContent": "- **Start with a template** and customize it — it's the fastest way to get a working agent\n- **Test with \"Manual\"** frequency before enabling automatic scheduling\n- **A \"Researcher\" agent requires a web search provider** — configure SearXNG (JSON format) or Brave Search in **Admin > Agent Tools**\n- **If an agent fails**, click on its card then **History** to see the execution log and tool traces\n- **The \"Enabled/Disabled\" toggle** lets you pause an agent without deleting it\n- **Web scraping quality** improves with a Jina Reader API key (optional, in Admin > Agent Tools)\n- **Combine \"Note Search\" + \"Read Note\"** so the agent can find AND analyze your notes' content\n- **Enable \"Memory\"** if your agent runs regularly — it will avoid repeating the same information across runs", "tipsContent": "- **Start with a template** and customize it — it's the fastest way to get a working agent\n- **Test with \"Manual\"** frequency before enabling automatic scheduling\n- **A \"Researcher\" agent requires a web search provider** — configure SearXNG (JSON format) or Brave Search in **Admin > Agent Tools**\n- **If an agent fails**, click on its card then **History** to see the execution log and tool traces\n- **The \"Enabled/Disabled\" toggle** lets you pause an agent without deleting it\n- **Page-reading quality** improves with a Jina Reader API key (optional, in Admin > Agent Tools)\n- **Combine \"Note Search\" + \"Read Note\"** so the agent can find AND analyze your notes' content\n- **Enable \"Memory\"** if your agent runs regularly — it will avoid repeating the same information across runs",
"tooltips": { "tooltips": {
"agentType": "选择代理将执行的任务类型。每种类型具有不同的功能和字段。", "agentType": "选择代理将执行的任务类型。每种类型具有不同的功能和字段。",
"researchTopic": "代理将在网络上研究的主题。请具体说明以获得更好的结果。", "researchTopic": "代理将在网络上研究的主题。请具体说明以获得更好的结果。",
@@ -3176,7 +3176,8 @@
"fetchStatusFailed": "无法获取计费状态", "fetchStatusFailed": "无法获取计费状态",
"fetchQuotasFailed": "无法获取配额", "fetchQuotasFailed": "无法获取配额",
"fetchInvoicesFailed": "无法加载计费历史记录。", "fetchInvoicesFailed": "无法加载计费历史记录。",
"savePercent": "节省 ~17%", "savePercent": "节省约 {percent}%",
"billedYearTotal": "即每年 {price}",
"cancelSubscription": "取消订阅", "cancelSubscription": "取消订阅",
"changeOffer": "更换套餐", "changeOffer": "更换套餐",
"downgradeToFree": "回到免费套餐", "downgradeToFree": "回到免费套餐",
@@ -3385,7 +3386,7 @@
"feature5": "安装陪同" "feature5": "安装陪同"
}, },
"basicPrice": "免费", "basicPrice": "免费",
"savePercent": "节省约 17%", "savePercent": "节省约 {percent}%",
"proMonthly": "€9.90", "proMonthly": "€9.90",
"proAnnualMonthly": "€8.25", "proAnnualMonthly": "€8.25",
"businessMonthly": "€29.90", "businessMonthly": "€29.90",
@@ -3665,7 +3666,7 @@
"mappingHint": "这可能需要一到三分钟。您可以继续浏览;页面会自动更新。", "mappingHint": "这可能需要一到三分钟。您可以继续浏览;页面会自动更新。",
"analyzeNow": "更新主题", "analyzeNow": "更新主题",
"emptyNeedMoreNotes": "再添加 {count} 条笔记即可分组主题(至少 10 条)。", "emptyNeedMoreNotes": "再添加 {count} 条笔记即可分组主题(至少 10 条)。",
"embeddingsHint": "仅{indexed}/{total}笔记被AI索引。", "embeddingsHint": "仅 {indexed} / {total} 条笔记已准备好按主题分组。",
"vsGraphHint": "这与\"链接地图\"不同这里AI按语义分组而非按链接。", "vsGraphHint": "这与\"链接地图\"不同这里AI按语义分组而非按链接。",
"openGraphMap": "打开链接地图", "openGraphMap": "打开链接地图",
"analysisFailed": "分析失败。请检查AI设置。", "analysisFailed": "分析失败。请检查AI设置。",
@@ -4492,7 +4493,7 @@
"convertSuccess": "转换完成!已创建关联笔记本。", "convertSuccess": "转换完成!已创建关联笔记本。",
"convertToNotebook": "转换为笔记本", "convertToNotebook": "转换为笔记本",
"converting": "转换中…", "converting": "转换中…",
"createLocalDb": "创建独立本地数据库", "createLocalDb": "在本笔记中创建表格",
"createNotebook": "创建笔记本", "createNotebook": "创建笔记本",
"defaultOption1": "选项 1", "defaultOption1": "选项 1",
"defaultOption2": "选项 2", "defaultOption2": "选项 2",
@@ -4514,7 +4515,7 @@
"keywordMatch": "关键词", "keywordMatch": "关键词",
"linkToNotebook": "链接到笔记本", "linkToNotebook": "链接到笔记本",
"loadError": "加载结构化数据失败。", "loadError": "加载结构化数据失败。",
"localDbTitle": "独立数据库", "localDbTitle": "本笔记中的表格",
"namePlaceholder": "输入名称…", "namePlaceholder": "输入名称…",
"noEchoFound": "未找到相近笔记。", "noEchoFound": "未找到相近笔记。",
"noNotebook": "此块需要笔记本。先将此笔记移至笔记本。", "noNotebook": "此块需要笔记本。先将此笔记移至笔记本。",
@@ -4528,8 +4529,8 @@
"selectNotebook": "链接到笔记本", "selectNotebook": "链接到笔记本",
"selectOptionsPlaceholder": "用逗号分隔的选项", "selectOptionsPlaceholder": "用逗号分隔的选项",
"semanticEcho": "语义共振", "semanticEcho": "语义共振",
"switchToLocalDb": "切换到本地数据库", "switchToLocalDb": "回到本笔记的表格",
"turnIntoLabel": "内联数据库", "turnIntoLabel": "笔记中的表格",
"untitled": "无标题" "untitled": "无标题"
}, },
"structuredViews": { "structuredViews": {