Kuukauden päätöksessä on oma rytminsä: laske tunnit yhteen, täsmäytä rahat, karhua laskut, arkistoi luvut. Jos jo elät terminaalissa, näyttöjen läpi klikkailu on hidas tapa tehdä se. Ceum-komentorivi (@ceum/cli) ajaa samat toiminnot kuin sovellus – joten koko rutiini kutistuu kouralliseksi komentoja, jotka voit lukea uudelleen ensi kuussa tai antaa cronille.
Tämä läpikäynti seuraa yhtä konkreettista työtä – kuukauden päättämistä – tyhjästä komentotulkista raporttiin, jonka voit arkistoida. Vaiheen 1 määritys on kertaluonteinen kustannus; vaiheet 2 ja 3 ovat se rutiini, jonka todella toistat.
Tavoite
Muuta ”kuukausi on lopussa” lyhyeksi, toistettavaksi sarjaksi: vedä kuukauden seurattu aika ja tilitapahtumat muodossa, jota kone osaa lukea, muokkaa siitä tarvitsemasi yhteenveto ja kirjoita mahdolliset korjaukset takaisin – skriptattavasti, jotta ensi kuukausi on yksi komento.
1. Asenna ja todenna – kerran
Ennen muuta tarkista tilauksesi. Komentorivi tunnistautuu MCP-tunnuksella, ja MCP-tunnusten raja on nolla Pro-tilausta alempana – alemmissa tilauksissa ei ole mitään luotavaa, joten komentorivi kuuluu vain Pro-tilaukseen.
Kun se on selvä, komentorivi on pieni binääri, jonka asennat npm:stä:
$ npm install -g @ceum/cli # installs the `ceum` command (Node.js 22+)
Se on sama tunnus, joka pyörittää MCP-integraatiota. Luo se sovelluksessa kohdassa Asetukset → Integraatiot ja kirjaudu sitten sisään:
$ ceum auth login # paste the token (starts with ceum_)
Sisäänkirjautuminen tarkistaa tunnuksen päätepistettä vasten ja kertoo, kuinka moneen työkaluun se yltää – komentopinta johdetaan reaaliajassa tunnuksen omista oikeuksista, joten ceum --help näyttää aina täsmälleen ne resurssit ja toiminnot, joihin se yltää.
Tunnus tallennetaan 0600-oikeuksilla määrityshakemistoosi. Ajastetulle työlle, jonka ei pitäisi koskea levyyn, välitä se sen sijaan ympäristön kautta – ihanteellinen cronille tai CI:lle:
$ CEUM_TOKEN=ceum_… ceum invoices list
Jos käytät useampaa tiliä, anna kullekin nimetty profiili: ceum auth add work, sitten ceum --profile work …. Profiili on yksi tunnus ja se päätepiste, jota vasten se tunnistautuu, joten profiilin vaihtaminen vaihtaa tilin, jolla työskentelet.
2. Nouda kuukauden tiedot – muodossa, jota voit käyttää
Jokainen list-komento on resurssi ensin (ceum <resource> <action>) ja ottaa -o:n tulosteen valintaan. Oletusarvoinen text taulukoituu mukavasti luettavaksi; konemuodot – json, csv, ndjson – ovat tavupuhtaita putkitukseen.
Aloita pääluvusta. time-entries aggregate laskee seuratun ajan yhteen suodatinjoukolla ja voi ryhmitellä sen:
$ ceum time-entries aggregate \
--start-date 2026-07-01 --end-date 2026-07-31 \
--group-by project -o json
Se palauttaa kuukauden kokonaissekunnit ja projektikohtaisen erittelyn. Vetääksesi taustalla olevat rivit taulukkolaskentaan, listaa ne suoraan CSV:hen – ja käytä --all:ia ohittaaksesi pyyntökohtaisen sivurajan ja yhdistääksesi kaikki sivut:
$ ceum time-entries list --start-date 2026-07-01 --end-date 2026-07-31 \
--all -o csv > july-time.csv
$ ceum transactions list --all -o csv > july-transactions.csv
Kaksi hienosäätöä tiivistää tulosteen: --columns valitsee täsmälleen haluamasi kentät, ja tallennettu esiasetus vangitsee suodatinjoukon, jottet kirjoita sitä uudelleen:
$ ceum transactions list --columns date,desc,amount,type,client
$ ceum presets save transactions month --type expense # save once
$ ceum transactions list --preset month -o json # reuse (explicit flags win)
3. Muokkaa sitä ja lähetä korjaukset takaisin
Koska vain komennon tuloste menee stdoutiin – kehotteet, edistyminen ja virheet menevät kaikki stderriin – putket pysyvät puhtaina. Se tarkoittaa, että jq ja kumppanit toimivat juuri kuten odottaisitkin:
$ ceum invoices list --all -o json | jq -r '.data[] | [.invoiceNumber, .statusConfig.name, .amount] | @tsv'
$ ceum time-entries aggregate --group-by tag -o json \
| jq -r '.groups[] | [.key, .totalSeconds/3600] | @tsv'
Putki kulkee molempiin suuntiin. Kun kuukauden päätökseen kuuluu tietojen kirjoittaminen takaisin – vaikkapa kuluerän tallentaminen – syötä rivit tiedostosta tai stdinistä bulk-create-komennolle; syöte tunnistetaan automaattisesti (JSON-taulukko, yksittäinen objekti, NDJSON tai CSV) ja paloitellaan palvelimen 50 per pyyntö -rajaan:
$ ceum transactions bulk-create --file july-expenses.ndjson
$ jq -c '.[]' corrections.json | ceum transactions bulk-create --stdin
Nyt koko juttu on skripti. Poistumiskoodit koodaavat virheluokan (0 ok, 2 käyttö, 3 todennus, 4 kielletty, 5 työkaluvirhe, 6 verkko, 7 määritys), joten cron-työ osaa erottaa verkkohäiriön viallisesta tunnuksesta ja reagoida siihen sen sijaan, että epäonnistuisi hiljaa.
Mitä lopputuloksena saat
Kuukauden päätös, joka on tiedosto jonka ajat, ei näyttö jonka läpi klikkailet: todenna kerran, vedä kuukausi JSON- tai CSV-muodossa, muokkaa sitä työkaluilla jotka jo osaat ja kirjoita tulos takaisin – samat toiminnot jotka sovelluskin suorittaa, kytkettynä komentotulkkiisi ja ajastimeesi.
Pysytkö mieluummin sovelluksessa mutta pidät näppäimistövetoisen nopeuden? Sovelluksen sisäinen komentorivi ajaa saman komentokieliopin paneelista sovelluksen sisällä.