Secret Ninja Blog

Support Engineering Manager してます

Zendesk Guideのコマンドラインツールzengを作った。

TDでは、サポートのチケット管理とヘルプセンターにZendeskを利用しています。 ヘルプセンターのZendesk Guideの管理UIでは、記事の一覧が多くなった時に記事が探しにくかったり、生のコンテンツのダウンロードができなかったり、と色々改善の余地が大いにあります。 ただ、Zendesk GuideではAPIが提供されており、いろんな操作ができるようになっています。

Help Center API - Help Center API - Zendesk Developer Portal

なので、Zendesk GuideのCLIを作ってみました。

github.com

初めてGoを書いたので、色々雑なところもありますが、とりあえず下記ができるようになっています。

  • Article / Section / Categoryの一覧取得
  • Article Previewの閲覧(プレビューページに飛ぶだけ)
  • Article の一括ダウンロード

現在はできないが、今後やりたいこととしては下記。

  • ローカルにあるArticle記事からのZendesk Guideへのアップデート・新規作成
  • Markdown / HTML への相互変換
  • Article 検索
  • その他、labelなどのメタ情報の更新
  • Zendesk OAuthへの対応

簡単に使い方も紹介します

インストール方法

Macの場合は、下記にてインストールします。

$ brew tap toru-takahashi/zeng
$ brew install zeng

使い方

ログイン

zeng configureコマンドで最初に認証情報を設定します。今の所、パスワード認証かAPIKEY認証が利用できます。2 Factor Authenticationを導入している場合は、APIKEYを使う必要があります。

$ zeng configure
Using config file: /Users/takahashi/.zeng.yaml
What is Zendesk Subdomain (subdomain.zendesk.com)?
Enter a value: yourcompany

What is your Zendesk Email?
Enter a value: sample@sample.com

What is your default locale?
Enter a value (Default is en-us):

How do you prefer to acccess to Zendesk?

1. password
2. apikey

Enter a number (Default is 1): 1

What is your Zendesk password?
Enter a value: **************

Article 一覧表示

ZendeskのArticleの一覧やSectionの一覧取得が可能です。

zeng list (article|section|category)といったコマンドで可能です。オプションで件数制限などもできます。

Articleのコンテンツダウンロード

zeng get article <article_id>を指定するとカレントディレクトにフォルダを作成し、コンテンツのhtmlと関連するメタ情報のymlファイルを生成します。 htmlを直接編集したりできるので便利です。そのうちそのままhtmlのコンテンツをアップデートできるようにするつもりです。 また、get sectionなどでセクション以下のコンテンツを全て取得したりすることができます。なので、バックアップ目的で簡単に保存できるようになります。

$ zeng get article 10007758874
Using config file: /Users/takahashi/.zeng.yaml
Info: Request to https://treasuredata.zendesk.com/api/v2/help_center/en-us/articles/10007758874.json
Exported article to a_10007758874/a_10007758874_en-us_Predicting Profile.html
Exported metadata to a_10007758874/meta_10007758874_en-us.html

ArticleのPreview

まだArticleのアップデートができないのであまり意味がないですが、article idを指定するとPreview表示を行います。

まとめ

CLIを作ってとりあえず0.0.1をリリースしてみました。 が、まだ全然手元で動かしていないので、こういう使い方がしたいとか、こういう機能がほしいとかあればおしえてください。