Komut satırı aracı (CLI)
Shogi Dojo resmî CLI'si. Yazı yayımlayın, oyun kaydı yükleyin ve tarayıcıda yaptığınız her şeyi uçbirimden otomatikleştirin. Aynı komutlar macOS, Windows ve Linux'ta çalışır.
1 Gereken: Node.js 20 veya üzeri
CLI'nin kendi bağımlılığı yok. Tek gereken Node.js — ve sistemler arasında farklı olan yalnızca onun kurulumu.
Homebrew ile:
brew install node
node --version winget ile (resmî kurulum programı da aynı işi görür):
winget install OpenJS.NodeJS.LTS
node --version Debian / Ubuntu'da — diğer dağıtımlarda kendi paket yöneticinizi kullanın:
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt install -y nodejs
node --version 2 Kurulum
Komut üç sistemde de aynı, ancak Linux'ta ev dizinine kurun. Sistem geneline kurulum root ister ve bir CLI için sudo'ya uzanmaya değmez.
Çalıştırın:
npm install -g @shogidojo/cli PowerShell'de de aynı komut:
npm install -g @shogidojo/cli Ev dizinine kurulur, dolayısıyla sudo gerekmez. İkinci satırı kabuk profilinize de (~/.bashrc veya ~/.zshrc) ekleyin ki yeni bir terminal de bulabilsin:
npm install -g --prefix ~/.local @shogidojo/cli
export PATH="$HOME/.local/bin:$PATH" Kurulduğunu doğrulayın:
shogidojo --version
shogidojo --help 3 Oturum açma
CLI kişisel bir API anahtarıyla kimlik doğrular. Anahtar, hesabınızın yapabildiği her şeyi yapabilir — parolanız gibi saklayın. Bir otomasyona kendi adlandırılmış anahtarı verilebilir; yalnızca okuyorsa salt okunur olarak.
Olağan yol. Tarayıcı açılır, oturum açarsınız ve anahtar kendiliğinden döner — hiçbir zaman komut satırında görünmez, dolayısıyla kabuk geçmişine de düşmez:
shogidojo login --browser SSH ile ulaştığınız bir makinede yalnız --browser tamamlanamaz: anahtar, komutu çalıştıran makinenin 127.0.0.1 adresine döner; kendi masaüstünüzdeki tarayıcının onu teslim edeceği kimse yoktur. Kendi seçtiğiniz bir portu yönlendirin:
ssh -L 47311:127.0.0.1:47311 you@host
shogidojo login --browser --port 47311 Ya da bir anahtar yapıştırın. Standart girdiden okunur, bu yüzden kabuk geçmişine girmez:
shogidojo login --stdin Tarayıcının olmadığı yerlerde, örneğin CI'da, ortam değişkeniyle verin. Diske hiçbir şey yazılmaz:
SHOGIDOJO_TOKEN=rustify… shogidojo whoami CI, Windmill veya başka bir otomasyon için ayrı, adlandırılmış bir anahtar oluşturun; makinenizdeki anahtar çalışmaya devam eder. Anahtar yalnızca bir kez gösterilir (stdout'ta yalnızca anahtar bulunur) ve bu makinede saklanmaz. --read-only ile okuyabilir, ama hiçbir şey yayımlayamaz veya değiştiremez:
shogidojo token create --name windmill --read-only --days 90 Sahip olduğunuz anahtarları listelemek (ad, kapsam, oluşturulma, son kullanım, bitiş) ve birini iptal etmek. `app`, ayarlar sayfasının verdiği hesap anahtarıdır:
shogidojo token list
shogidojo token revoke 3 Anahtar ~/.config/shogidojo/config.json içinde 0600 kipiyle saklanır (Windows'ta %APPDATA%\shogidojo). Görmek ve silmek için:
shogidojo whoami
shogidojo logout 4 Kullanım
Adlandırılmış komutlar birer kısayoldur. Uygulamanın yapabildiği her şeye call ile erişilir.
Yazı yayımlamak:
shogidojo post create --title "..." --body-file note.md --tag 居飛車 Oyun kaydı yüklemek:
shogidojo kif upload game.kif --dir /2026 Kullanabileceğiniz motorları görmek, bir oyunu incelemek ve gidişatı izlemek:
shogidojo engines
shogidojo analyze game.kif --seconds 5
shogidojo jobs Bir oyundan test oluşturmak. --ply 44, 43. hamleden sonraki konumu göstererek 44. hamleyi sorar. --answer oyunda oynanmamış bir hamle olabilir (USI ya da △5五歩 gibi bir gösterim); bu durumda kart oynanan hamleyi de saklar:
shogidojo quiz create --game user-1-… --ply 44 --answer △5五歩 --note "Suggested in the post-mortem" --deck Ryuo --public Geri kalan her şey — okumak için --query, yazmak için yok:
shogidojo call post.list --query --input '{"page":1}'
shogidojo call quiz.createDeck --input '{"name":"..."}' Bu sunucuya sorulabilecek her şey. Bu liste, call'un aldığı şeyin tam kendisidir:
shogidojo procedures --grep quiz 5 Yazı yazmak
post create gövdesi Markdown'dur; konum ve oyun gömmek için iki eklemesi vardır.
[sfen:<SFEN>] bir konum çizer, [game:<gameId>] bir oyun kartı gömer. Geri kalan her şey sıradan Markdown'dur:
## After ▲7六歩 △3四歩
[sfen:lnsgkgsnl/1r5b1/pppppp1pp/6p2/9/2P6/PP1PPPPPP/1B5R1/LNSGKGSNL b - 3]
[game:user-1-…] İçe aktarılan bir oyun PRIVATE olarak başlar. Onun [game:] kartı size görünür, diğer tüm okuyucular için boş kalır. İçe aktarırken --public ile yayımlayın ya da bunu post create --game'e bırakın: [game:] belirtecini ekler ve PRIVATE bir oyun PUBLIC bir yazıya giriyorsa durur (önce yayımlamak için --publish-game ekleyin):
shogidojo kif import game.kif --public
shogidojo post create --type KIFU --title "..." --body-file note.md --game user-1-… --publish-game Bir makaleye önemli konumları koymak için N. hamleden sonraki SFEN'i alıp [sfen:] içine yazın (0 başlangıçtır; --ply olmadan son konum):
shogidojo kif position user-1-… --ply 60 Aynı diyagramı başka bir yerdeki bir makalede kullanmak için SVG olarak dışa aktarın. --sfen ne hesap ne ağ ister; --game bir oyundan konumu, oyuncuları ve son hamlenin karesini alır. PNG için SVG'yi dönüştürün (rsvg-convert, ImageMagick, bir tarayıcı):
shogidojo diagram --sfen "lnsgkgsnl/1r5b1/ppppppppp/9/9/9/PPPPPPPPP/1B5R1/LNSGKGSNL b - 1" -o start.svg
shogidojo diagram --game user-1-… --ply 60 -o move60.svg
rsvg-convert -o move60.png move60.svg --type yalnızca bir etiket ve akış filtresidir; gövde aynı şekilde görüntülenir. ARTICLE bir makale, KIFU bir oyun kaydı tanıtımı, BOOK bir kitap tanıtımıdır.
post create yazının URL'sini (/posts/<id>) yazdırır. Bir oyunun sayfası /review/<gameId>'dir (/game/<id> canlı tahtadır) ve kif import / upload onu yazdırır:
Posted #12 https://shogidojo.online/posts/12
Imported game.kif as user-1-…
https://shogidojo.online/review/user-1-… (private — only you can open it) Sınırlar: başlık 200 karakter, gövde 50.000, her biri 40 karakterlik en fazla 20 etiket. CLI bunları aşan bir şeyi göndermeden önce durur.
6 call için prosedürler
call'un ne aldığını --describe söyler. Sunucu, girdiyi doğruladığı Zod şemasını JSON Schema olarak döndürür; bu yüzden gerçekten sapamaz. Dönüş biçimi yalnızca bunu bildiren prosedürlerde gösterilir; yaygın olanlar aşağıdadır (okuma için --query ekleyin).
Bir prosedürün ne aldığını görmek:
shogidojo procedures --describe quiz.import Oyun kayıtları:
game.importKifFromText {"kifText":"…","dir":"/2026"}
→ {"game_id":"user-1-…"}
game.setGameVisibility {"gameId":"user-1-…","visibility":"PUBLIC"}
→ {"success":true}
game.getFullGameById (read) {"gameId":"user-1-…"}
→ {"game_id":…, "visibility":…, "moves":[{"id":1, "moveNumber":0, "sfen":"…",
"children":[{"childId":2, "usi":"7g7f", "notation":"▲7六歩"}]}, …]}
game.applyMove (read) {"sfen":"…","move":"△5五歩","lastUsi":"7g7f"}
→ {"sfen":"…","usi":"5d5e","notation":"△5五歩","nextSfen":"…"} Yazılar:
post.create {"type":"KIFU","title":"…","body":"…","tags":["居飛車"],"visibility":"PUBLIC"}
→ {"id":12, …} Testler (playedUsi / playedNotation oyunda oynanan hamle, gameId kaynak oyundur; ikisi de isteğe bağlı):
quiz.import {"title":"…","visibility":"PUBLIC","gameId":"user-1-…",
"items":[{"sfen":"…","answerUsi":"5d5e","answerNotation":"△5五歩",
"nextSfen":"…","note":"…",
"playedUsi":"8a7c","playedNotation":"△7三桂"}]}
→ {"deckId":5,"listIds":[9]}
(or {"deck":{"title":"…"},"lists":[ …the same list… ]} for a named deck) 7 Bir şeyler ters giderse
Üç neden çoğunu açıklar.
"Unsupported engine" iletisi ya da bir sözdizimi hatası genellikle Node'un eski olduğu anlamına gelir. 20 veya üzeri gerekir:
node --version Genel kurulum EACCES ile başarısız olursa, sudo'ya başvurmak yerine kurulum önekini ev dizininize taşıyın:
npm config set prefix ~/.local
export PATH="$HOME/.local/bin:$PATH" login --browser bir URL yazar, ama içindeki dönüş adresi onu yazan makinenin kendi loopback adresini gösterir. O URL'yi başka bir makinede açmak oturumu orada açar ve anahtar hiçbir yere ulaşmaz. SSH üzerinde bir portu yönlendirip --port ile verin ya da anahtarı --stdin ile yapıştırın; ikisi de yukarıda:
shogidojo login --stdin