kokoro-slide 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +91 -0
- package/README.md +69 -0
- package/dist/cli.js +270 -0
- package/package.json +31 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
Required Notice: Copyright 2026 Kokoro OS / 千田正憲 (Masanori Chida) (https://usekokoro.com)
|
|
2
|
+
|
|
3
|
+
# PolyForm Shield License 1.0.0
|
|
4
|
+
|
|
5
|
+
<https://polyformproject.org/licenses/shield/1.0.0>
|
|
6
|
+
|
|
7
|
+
## Acceptance
|
|
8
|
+
|
|
9
|
+
In order to get any license under these terms, you must agree to them as both strict obligations and conditions to all your licenses.
|
|
10
|
+
|
|
11
|
+
## Copyright License
|
|
12
|
+
|
|
13
|
+
The licensor grants you a copyright license for the software to do everything you might do with the software that would otherwise infringe the licensor's copyright in it for any permitted purpose. However, you may only distribute the software according to [Distribution License](#distribution-license) and make changes or new works based on the software according to [Changes and New Works License](#changes-and-new-works-license).
|
|
14
|
+
|
|
15
|
+
## Distribution License
|
|
16
|
+
|
|
17
|
+
The licensor grants you an additional copyright license to distribute copies of the software. Your license to distribute covers distributing the software with changes and new works permitted by [Changes and New Works License](#changes-and-new-works-license).
|
|
18
|
+
|
|
19
|
+
## Notices
|
|
20
|
+
|
|
21
|
+
You must ensure that anyone who gets a copy of any part of the software from you also gets a copy of these terms or the URL for them above, as well as copies of any plain-text lines beginning with `Required Notice:` that the licensor provided with the software. For example:
|
|
22
|
+
|
|
23
|
+
> Required Notice: Copyright Yoyodyne, Inc. (http://example.com)
|
|
24
|
+
|
|
25
|
+
## Changes and New Works License
|
|
26
|
+
|
|
27
|
+
The licensor grants you an additional copyright license to make changes and new works based on the software for any permitted purpose.
|
|
28
|
+
|
|
29
|
+
## Patent License
|
|
30
|
+
|
|
31
|
+
The licensor grants you a patent license for the software that covers patent claims the licensor can license, or becomes able to license, that you would infringe by using the software.
|
|
32
|
+
|
|
33
|
+
## Noncompete
|
|
34
|
+
|
|
35
|
+
Any purpose is a permitted purpose, except for providing any product that competes with the software or any product the licensor or any of its affiliates provides using the software.
|
|
36
|
+
|
|
37
|
+
## Competition
|
|
38
|
+
|
|
39
|
+
Goods and services compete even when they provide functionality through different kinds of interfaces or for different technical platforms. Applications can compete with services, libraries with plugins, frameworks with development tools, and so on, even if they're written in different programming languages or for different computer architectures. Goods and services compete even when provided free of charge. If you market a product as a practical substitute for the software or another product, it definitely competes.
|
|
40
|
+
|
|
41
|
+
## New Products
|
|
42
|
+
|
|
43
|
+
If you are using the software to provide a product that does not compete, but the licensor or any of its affiliates brings your product into competition by providing a new version of the software or another product using the software, you may continue using versions of the software available under these terms beforehand to provide your competing product, but not any later versions.
|
|
44
|
+
|
|
45
|
+
## Discontinued Products
|
|
46
|
+
|
|
47
|
+
You may begin using the software to compete with a product or service that the licensor or any of its affiliates has stopped providing, unless the licensor includes a plain-text line beginning with `Licensor Line of Business:` with the software that mentions that line of business. For example:
|
|
48
|
+
|
|
49
|
+
> Licensor Line of Business: YoyodyneCMS Content Management System (http://example.com/cms)
|
|
50
|
+
|
|
51
|
+
## Sales of Business
|
|
52
|
+
|
|
53
|
+
If the licensor or any of its affiliates sells a line of business developing the software or using the software to provide a product, the buyer can also enforce [Noncompete](#noncompete) for that product.
|
|
54
|
+
|
|
55
|
+
## Fair Use
|
|
56
|
+
|
|
57
|
+
You may have "fair use" rights for the software under the law. These terms do not limit them.
|
|
58
|
+
|
|
59
|
+
## No Other Rights
|
|
60
|
+
|
|
61
|
+
These terms do not allow you to sublicense or transfer any of your licenses to anyone else, or prevent the licensor from granting licenses to anyone else. These terms do not imply any other licenses.
|
|
62
|
+
|
|
63
|
+
## Patent Defense
|
|
64
|
+
|
|
65
|
+
If you make any written claim that the software infringes or contributes to infringement of any patent, your patent license for the software granted under these terms ends immediately. If your company makes such a claim, your patent license ends immediately for work on behalf of your company.
|
|
66
|
+
|
|
67
|
+
## Violations
|
|
68
|
+
|
|
69
|
+
The first time you are notified in writing that you have violated any of these terms, or done anything with the software not covered by your licenses, your licenses can nonetheless continue if you come into full compliance with these terms, and take practical steps to correct past violations, within 32 days of receiving notice. Otherwise, all your licenses end immediately.
|
|
70
|
+
|
|
71
|
+
## No Liability
|
|
72
|
+
|
|
73
|
+
***As far as the law allows, the software comes as is, without any warranty or condition, and the licensor will not be liable to you for any damages arising out of these terms or the use or nature of the software, under any kind of legal claim.***
|
|
74
|
+
|
|
75
|
+
## Definitions
|
|
76
|
+
|
|
77
|
+
The **licensor** is the individual or entity offering these terms, and the **software** is the software the licensor makes available under these terms.
|
|
78
|
+
|
|
79
|
+
A **product** can be a good or service, or a combination of them.
|
|
80
|
+
|
|
81
|
+
**You** refers to the individual or entity agreeing to these terms.
|
|
82
|
+
|
|
83
|
+
**Your company** is any legal entity, sole proprietorship, or other kind of organization that you work for, plus all its affiliates.
|
|
84
|
+
|
|
85
|
+
**Affiliates** means the other organizations than an organization has control over, is under the control of, or is under common control with.
|
|
86
|
+
|
|
87
|
+
**Control** means ownership of substantially all the assets of an entity, or the power to direct its management and policies by vote, contract, or otherwise. Control can be direct or indirect.
|
|
88
|
+
|
|
89
|
+
**Your licenses** are all the licenses granted to you for the software under these terms.
|
|
90
|
+
|
|
91
|
+
**Use** means anything you do with the software requiring one of your licenses.
|
package/README.md
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# kokoro-slide
|
|
2
|
+
|
|
3
|
+
**Turn what you want to get across into a 6-slide talk, in Markdown — with what to say in the speaker notes.** Open it with [Marp](https://marp.app/) to see it as slides.
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
export ANTHROPIC_API_KEY=sk-ant-...
|
|
7
|
+
npx kokoro-slide "a pitch for a small bakery using local wheat, for families" # writes kokoro-slide.md
|
|
8
|
+
npx kokoro-slide notes.md # writes notes.slides.md
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
### Easiest: ask your AI to run it
|
|
12
|
+
|
|
13
|
+
No terminal skills needed. If you work with an AI coding tool (Claude Code etc.), ask it:
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
Run npx kokoro-slide notes.md in this folder and show me the result.
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
**Needs your Anthropic API key on your machine** (`ANTHROPIC_API_KEY`). Set it once in your system's environment variables, then restart your AI tool — Windows: search "environment variables" in Settings; macOS/Linux: add `export ANTHROPIC_API_KEY=...` to `~/.zshrc` or `~/.bashrc`. ★Do not paste your key into the AI chat — it stays in the conversation history.
|
|
20
|
+
|
|
21
|
+
The commands above are for running it yourself in a terminal.
|
|
22
|
+
|
|
23
|
+
- **Free, no sign-up.** Runs on *your* Anthropic API key (Claude Haiku); AI costs are billed to that key.
|
|
24
|
+
- **One message per slide.** Six slides in a fixed order: title, problem, solution, value, the point in one line, next step. Each slide carries only a few words; what to say goes in the speaker notes.
|
|
25
|
+
- **See it as slides:** open the `.md` in VS Code with the **Marp for VS Code** extension and show the preview. What to say is written in `<!-- -->` comments in the `.md`; they are not shown in the preview, and Marp turns them into speaker notes when you export.
|
|
26
|
+
- **It does not invent quietly.** If you give it nothing to say (just "hello"), you get `[ ]` blanks to fill in. If the AI added a date or time that was not in your text, it lists it for you to check.
|
|
27
|
+
- The slides follow your language. Text that contains instructions to an AI (such as a spec) is read as material, not followed.
|
|
28
|
+
- Your text goes through the Kokoro OS server to Anthropic and is **not stored**. Up to 60,000 characters; 60 requests per 10 minutes.
|
|
29
|
+
|
|
30
|
+
Options: `<file or "text">` `--out name.md` `--yes` `--lang ja|en`
|
|
31
|
+
|
|
32
|
+
**Related:** decide what to build with [`kokoro-baton`](https://www.npmjs.com/package/kokoro-baton); write documents with [`kokoro-writer`](https://www.npmjs.com/package/kokoro-writer); make tables with [`kokoro-kami`](https://www.npmjs.com/package/kokoro-kami); check what you built with [`kokoro-aegis`](https://www.npmjs.com/package/kokoro-aegis).
|
|
33
|
+
|
|
34
|
+
## License
|
|
35
|
+
|
|
36
|
+
[PolyForm Shield 1.0.0](https://polyformproject.org/licenses/shield/1.0.0) — free to use for any purpose, including at work and commercially. You may not use it to build a product that competes with it.
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## 日本語
|
|
41
|
+
|
|
42
|
+
**伝えたいことを、6 枚のスライド(Markdown)にする道具です。** 話す要点は発表者ノートに入ります。[Marp](https://marp.app/) で開くとスライドとして見えます。
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
npx kokoro-slide "地元の小麦で作るパン屋の開業プラン。家族連れに来てほしい" # kokoro-slide.md ができる
|
|
46
|
+
npx kokoro-slide メモ.md # メモ.slides.md ができる
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### いちばん簡単な使い方:AI に頼む
|
|
50
|
+
|
|
51
|
+
ターミナルの操作が分からなくても使えます。Claude Code などの AI と一緒に作っているなら、その AI にこう頼んでください。
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
このフォルダで npx kokoro-slide メモ.md を実行して、できたものを見せてください。
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
**あなたの Anthropic の API キーが、パソコンに入っている必要があります**(`ANTHROPIC_API_KEY`)。一度だけ入れておき、AI の道具を開き直してください。Windows:設定で「環境変数」と検索 →「アカウントの環境変数を編集」で新しく足す。Mac:`~/.zshrc` に `export ANTHROPIC_API_KEY=...` を足す。★キーを AI との会話に貼らないでください(会話の記録に残ります)。
|
|
58
|
+
|
|
59
|
+
上のコマンドは、ターミナルで自分で打つ人向けです。
|
|
60
|
+
|
|
61
|
+
- **無料・登録なし。** あなたのキー(Claude Haiku)で動き、AI の費用はそのキーに付きます。
|
|
62
|
+
- **1 枚 1 メッセージ。** 表紙・課題・解決策・提供価値・一言でいうと・次のステップの 6 枚です。スライドに載せる言葉は少なく、話すことは発表者ノートに入れます。
|
|
63
|
+
- **スライドとして見るには:** VS Code に拡張機能 **Marp for VS Code** を入れて `.md` を開き、プレビューを出してください。話す要点は `.md` の中の `<!-- -->` に書いてあります。プレビューには出ませんが、Marp で書き出すと発表者ノートになります。
|
|
64
|
+
- **黙って作り話をしません。** 伝えたいことが書いていない(「こんにちは」だけなど)ときは、`[ ]` の空欄にします。あなたの文章に無い日時を AI が書き足したときは「確かめてください」と並べます。
|
|
65
|
+
- 入れた文章の言葉でスライドを作ります。AI への指示が書いてある文章(仕様書など)も、指示には従わず、材料として読みます。
|
|
66
|
+
- 文章は Kokoro OS のサーバーを通って Anthropic に送られ、**保存はしません。** 60,000 字まで・10 分に 60 回までです。
|
|
67
|
+
- **PowerPoint で欲しいとき**は、Kokoro OS の画面の Slide で書き出せます(Plus)。この道具が出すのは中身(.md)だけです。
|
|
68
|
+
|
|
69
|
+
**使ってよい範囲**:PolyForm Shield 1.0.0。仕事でも商売でも自由に使えます。これと競合する製品を作るために使うことはできません。
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";var R=Object.create;var P=Object.defineProperty;var H=Object.getOwnPropertyDescriptor;var W=Object.getOwnPropertyNames;var F=Object.getPrototypeOf,L=Object.prototype.hasOwnProperty;var B=(n,e,o,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of W(e))!L.call(n,r)&&r!==o&&P(n,r,{get:()=>e[r],enumerable:!(i=H(e,r))||i.enumerable});return n};var K=(n,e,o)=>(o=n!=null?R(F(n)):{},B(e||!n||!n.__esModule?P(o,"default",{value:n,enumerable:!0}):o,n));var d=K(require("node:fs")),u=K(require("node:path")),Y=K(require("node:readline")),g=require("node:process");var I=n=>process.env[n]?.trim()||"";function T(n){let e=I("KOKORO_API_KEY"),o=I("ANTHROPIC_API_KEY");return e&&o?{\u7A2E\u985E:"\u81EA\u524D\uFF0BKokoro",\u898B\u51FA\u3057:{"x-kokoro-api-key":e,"x-anthropic-api-key":o}}:e&&n==="Kokoro\u3082"?{\u7A2E\u985E:"Kokoro",\u898B\u51FA\u3057:{"x-kokoro-api-key":e}}:o?{\u7A2E\u985E:"\u81EA\u524D",\u898B\u51FA\u3057:{"x-anthropic-api-key":o}}:null}function _(n,e){let o=!!I("KOKORO_API_KEY"),i=!!I("ANTHROPIC_API_KEY");return n==="\u81EA\u524D\u3060\u3051"&&o&&!i?e==="en"?"This step does not accept a Kokoro key alone yet. Also set your own Anthropic key in ANTHROPIC_API_KEY and run again (AI costs go to that key; a fee is taken from your Kokoro balance).":"\u3053\u306E\u6BB5\u306F\u3001\u307E\u3060 Kokoro \u306E\u30AD\u30FC\u3060\u3051\u3067\u306F\u52D5\u304D\u307E\u305B\u3093\u3002\u3054\u81EA\u5206\u306E Anthropic \u306E\u30AD\u30FC\u3082 ANTHROPIC_API_KEY \u306B\u5165\u308C\u3066\u304B\u3089\u3001\u3082\u3046\u4E00\u5EA6\u52D5\u304B\u3057\u3066\u304F\u3060\u3055\u3044\uFF08AI \u306E\u8CBB\u7528\u306F\u305D\u306E\u30AD\u30FC\u306B\u3001\u624B\u6570\u6599\u306F Kokoro \u306E\u6B8B\u9AD8\u304B\u3089\uFF09\u3002":e==="en"?"No key found. Set ANTHROPIC_API_KEY (your own Anthropic key; AI costs go to that key, Kokoro OS charges nothing), then run again.":"\u30AD\u30FC\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002ANTHROPIC_API_KEY\uFF08\u3054\u81EA\u5206\u306E Anthropic \u306E\u30AD\u30FC\u30FBAI \u306E\u8CBB\u7528\u306F\u305D\u306E\u30AD\u30FC\u306B\u4ED8\u304D\u3001Kokoro OS \u306F\u6599\u91D1\u3092\u3044\u305F\u3060\u304D\u307E\u305B\u3093\uFF09\u3092\u5165\u308C\u3066\u304B\u3089\u3001\u3082\u3046\u4E00\u5EA6\u52D5\u304B\u3057\u3066\u304F\u3060\u3055\u3044\u3002"}function O(n,e){return n.\u7A2E\u985E==="Kokoro"?e==="en"?"Paying with your Kokoro key (AI costs from your Kokoro balance). To pay AI costs with your own Anthropic key, also set ANTHROPIC_API_KEY.":"Kokoro \u306E\u30AD\u30FC\u3067\u6255\u3044\u307E\u3059\uFF08AI \u306E\u8CBB\u7528\u3082 Kokoro \u306E\u6B8B\u9AD8\u304B\u3089\uFF09\u3002AI \u306E\u8CBB\u7528\u3092\u3054\u81EA\u5206\u306E Anthropic \u306E\u30AD\u30FC\u3067\u6255\u3046\u3068\u304D\u306F\u3001ANTHROPIC_API_KEY \u3082\u5165\u308C\u3066\u304F\u3060\u3055\u3044\u3002":n.\u7A2E\u985E==="\u81EA\u524D\uFF0BKokoro"?e==="en"?"AI costs go to your Anthropic key (ANTHROPIC_API_KEY). If a Kokoro fee applies, it is taken from your Kokoro balance (KOKORO_API_KEY) and shown after each call.":"AI \u306E\u8CBB\u7528\u306F\u3054\u81EA\u5206\u306E Anthropic \u306E\u30AD\u30FC\uFF08ANTHROPIC_API_KEY\uFF09\u306B\u4ED8\u304D\u307E\u3059\u3002Kokoro \u306E\u624B\u6570\u6599\u304C\u304B\u304B\u308B\u3068\u304D\u306F\u3001Kokoro \u306E\u6B8B\u9AD8\uFF08KOKORO_API_KEY\uFF09\u304B\u3089\u5F15\u3044\u3066\u3001\u547C\u3076\u305F\u3073\u306B\u984D\u3092\u51FA\u3057\u307E\u3059\u3002":e==="en"?"Paying AI costs with your Anthropic key (ANTHROPIC_API_KEY).":"AI \u306E\u8CBB\u7528\u306F\u3001\u3054\u81EA\u5206\u306E Anthropic \u306E\u30AD\u30FC\uFF08ANTHROPIC_API_KEY\uFF09\u3067\u6255\u3044\u307E\u3059\u3002"}function C(n,e){let o=n?.billing;if(!o||typeof o.charged_yen!="number")return null;let i=r=>r.toLocaleString(e==="en"?"en-US":"ja-JP",{maximumFractionDigits:2});return e==="en"?`This call: \xA5${i(o.charged_yen)} \xB7 Kokoro balance: \xA5${i(o.balance_yen??0)}`:`\u3053\u306E\u56DE ${i(o.charged_yen)} \u5186 \u30FB Kokoro \u306E\u6B8B\u9AD8 ${i(o.balance_yen??0)} \u5186`}var M={slide:{ja:{\u983C\u307F:"\u6307\u793A\u66F8 kokoro-spec.md\uFF08\u4E0A\u304B\u3089\u898B\u4E0B\u308D\u3059\u751F\u304D\u6B8B\u308A\u30A2\u30AF\u30B7\u30E7\u30F3\u30B2\u30FC\u30E0\u30FB\u7D04 3 \u4E07\u5B57\uFF09",markdown:`---
|
|
3
|
+
marp: true
|
|
4
|
+
paginate: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# \u6575\u304C\u8FEB\u3063\u3066\u304F\u308B\uFF0C\u6B66\u5668\u3092\u9078\u3093\u3067\u6483\u3064
|
|
8
|
+
|
|
9
|
+
\u4E0A\u304B\u3089\u898B\u4E0B\u308D\u3059\u30A2\u30AF\u30B7\u30E7\u30F3\u30B2\u30FC\u30E0\u3002\u6B66\u5668\u3092\u9078\u3093\u3067\u6575\u3092\u5012\u3059\uFF0C\u3067\u304D\u308B\u3060\u3051\u9577\u304F\u751F\u304D\u6B8B\u308B\u3002\u30D6\u30E9\u30A6\u30B6\u3067 1 \u679A\u306E HTML \u3067\u904A\u3079\u308B\u3002
|
|
10
|
+
|
|
11
|
+
<!--
|
|
12
|
+
\u3053\u306E\u30B2\u30FC\u30E0\u306E\u6838\u306F\u300C\u6B66\u5668\u3054\u3068\u306B\u7570\u306A\u308B\u653B\u6483\u7BC4\u56F2\u3068\u653B\u6483\u901F\u5EA6\u3067\uFF0C\u6575\u3092\u5012\u3059\u6C17\u6301\u3061\u3088\u3055\u300D\u3067\u3059\u3002\u898B\u305F\u76EE\u3067\u306F\u306A\u304F\uFF0C\u305D\u306E\u624B\u89E6\u308A\u3092\u6700\u521D\u306B\u5B8C\u6210\u3055\u305B\u307E\u3059\u3002
|
|
13
|
+
-->
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## \u6B66\u5668\u3092\u9078\u3093\u3067\u3082\uFF0C\u5B9F\u611F\u304C\u7121\u3044
|
|
18
|
+
|
|
19
|
+
\u77ED\u5263\u30FB\u65A7\u30FB\u5F13 \u2015\u2015 \u9078\u3093\u3060\u6B66\u5668\u3067\uFF0C\u672C\u5F53\u306B\u4F55\u304C\u5909\u308F\u3063\u3066\u3044\u308B\u306E\u304B\u5206\u304B\u3089\u306A\u3044\u3002\u6575\u3092\u5012\u3059\u307E\u3067\u306E\u6D41\u308C\u304C\u9055\u3046\u3053\u3068\u3092\uFF0C\u4F53\u3067\u611F\u3058\u305F\u3044\u3002
|
|
20
|
+
|
|
21
|
+
<!--
|
|
22
|
+
\u3044\u307E\u8003\u3048\u3066\u3044\u308B\u306E\u306F\u300C\u653B\u6483\u7BC4\u56F2\u3068\u653B\u6483\u901F\u5EA6\u306F\u9055\u3046\u300D\u3068\u3044\u3046\u4ED5\u69D8\u3067\u3059\u3002\u3051\u308C\u3069\u3082\uFF0C\u305D\u308C\u304C\u753B\u9762\u3067\u660E\u78BA\u306B\u898B\u3048\u3066\uFF0C\u89E6\u3063\u305F\u3068\u304D\u9055\u3046\u624B\u89E6\u308A\u306B\u306A\u3063\u3066\u3044\u306A\u3051\u308C\u3070\uFF0C\u9078\u3093\u3060\u610F\u5473\u304C\u3042\u308A\u307E\u305B\u3093\u3002
|
|
23
|
+
-->
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## 3 \u7A2E\u985E\u306E\u6B66\u5668\u3092\u4F5C\u308B\u3002\u7BC4\u56F2\u3082\u901F\u3055\u3082\uFF0C\u5927\u304D\u304F\u7570\u306A\u308B
|
|
28
|
+
|
|
29
|
+
\u77ED\u5263\uFF1A\u7BC4\u56F2 50px\u30FB\u653B\u6483 1 \u79D2 / \u65A7\uFF1A\u7BC4\u56F2 100px\u30FB\u653B\u6483 1.5 \u79D2 / \u5F13\uFF1A\u7BC4\u56F2 150px\u30FB\u653B\u6483 0.5 \u79D2\u3002\u9078\u3093\u3060\u3068\u304D\uFF0C\u305D\u306E\u5DEE\u304C\u5206\u304B\u308B\u3088\u3046\u306B\u3002
|
|
30
|
+
|
|
31
|
+
<!--
|
|
32
|
+
\u91CD\u8981\u306A\u306E\u306F\u300C\u5DEE\u304C\u5927\u304D\u3044\u300D\u3053\u3068\u3067\u3059\u3002\u534A\u5F84\u306E\u9055\u3044\uFF0C\u6575\u304C\u6D88\u3048\u308B\u307E\u3067\u306E\u6642\u9593\uFF0C\u653B\u6483\u304C\u5F53\u305F\u308B\u30DA\u30FC\u30B9 \u2015\u2015 \u3059\u3079\u3066\u3092\u904A\u3093\u3067\u3044\u308B\u9593\u305A\u3063\u3068\u898B\u3048\u308B\u5F62\u3067\u51FA\u3057\u307E\u3059\u3002\u30B2\u30FC\u30E0\u958B\u59CB\u6642\u306B\u9078\u3093\u3060\u6B66\u5668\u306E\u60C5\u5831\u3092\u53F3\u4E0A\u306B\u5E38\u6642\u8868\u793A\u3002
|
|
33
|
+
-->
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## \u6575\u306E\u6D41\u308C\u306B\u5408\u308F\u305B\u3066\uFF0C\u6B66\u5668\u3092\u4F7F\u3044\u5206\u3051\u305F\u304F\u306A\u308B
|
|
38
|
+
|
|
39
|
+
\u6575\u306E\u6570\u304C\u5897\u3048\u308B\uFF0C\u6575\u306E\u901F\u3055\u304C\u4E0A\u304C\u308B\u3002\u305D\u308C\u306B\u5BFE\u3057\u3066\u300C\u3053\u306E\u6B66\u5668\u306A\u3089\u300D\u300C\u4ECA\u306A\u3089\u300D\u3068\uFF0C\u5224\u65AD\u3057\u3066\u9078\u3076\u9762\u767D\u3055\u3002\u6642\u9593\u304C\u7D4C\u3064\u306B\u3064\u308C\u96E3\u3057\u304F\u306A\u308B\u4E2D\u3067\uFF0C\u751F\u304D\u6B8B\u308B\u5FEB\u611F\u3002
|
|
40
|
+
|
|
41
|
+
<!--
|
|
42
|
+
\u904A\u3073\u306A\u304C\u3089\u300C\u7BC4\u56F2\u306E\u5E83\u3055\u304C\u6709\u5229\u306A\u5C40\u9762\u300D\u300C\u901F\u3055\u304C\u5FC5\u8981\u306A\u5C40\u9762\u300D\u304C\u81EA\u7136\u306B\u51FA\u3066\u304F\u308B\u3088\u3046\u306B\u8A2D\u8A08\u3057\u307E\u3059\u3002\u96E3\u6613\u5EA6\u306F 30 \u79D2\u3054\u3068\uFF0C\u307E\u305F\u306F\u6575\u306E\u6570\u3067\u6BB5\u968E\u7684\u306B\u4E0A\u3052\u3066\u3044\u304F\u3002\u6575\u306F\u5168\u65B9\u5411\u304B\u3089\u51FA\u73FE\u3057\uFF0C2\uFF5E3 \u7A2E\u985E\u304C\u7570\u306A\u308B\u901F\u3055\u3067\u8FEB\u3063\u3066\u304F\u308B\u3002
|
|
43
|
+
-->
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## \u9078\u3093\u3060\u6B66\u5668\u304C\uFF0C\u672C\u5F53\u306B\u9055\u3046\u3002\u305D\u308C\u304C\u6C17\u6301\u3061\u3044\u3044
|
|
48
|
+
|
|
49
|
+
\u30AD\u30FC\u30DC\u30FC\u30C9\u3067\u52D5\u304F\uFF0C\u6575\u306B\u8FD1\u3065\u304F\u3068\u81EA\u52D5\u3067\u653B\u6483\u3002HP \u304C\u6E1B\u3063\u3066\u30B2\u30FC\u30E0\u30AA\u30FC\u30D0\u30FC\u3002\u6642\u9593\u304C\u51FA\u3066\u3044\u308B\u3002 \u2015\u2015 \u5168\u90E8\u304C\u6B66\u5668\u306E\u9078\u629E\u306B\u3064\u306A\u304C\u308B\u3002
|
|
50
|
+
|
|
51
|
+
<!--
|
|
52
|
+
\u6700\u5F8C\u306B\u899A\u3048\u3066\u307B\u3057\u3044\u306E\u306F\u300C\u898B\u305F\u76EE\u3067\u306F\u306A\u304F\uFF0C\u624B\u89E6\u308A\u3092\u5B8C\u6210\u3055\u305B\u308B\u300D\u3068\u3044\u3046\u3053\u3068\u3067\u3059\u3002\u6B66\u5668\u3092\u9078\u3093\u3060\u77AC\u9593\u304B\u3089\uFF0C\u6575\u3068\u306E\u8DDD\u96E2\u306E\u53D6\u308A\u65B9\u30FB\u6575\u304C\u6D88\u3048\u308B\u30B9\u30D4\u30FC\u30C9\u30FB\u6B21\u306E\u6575\u307E\u3067\u306E\u9593\u9694 \u2015\u2015 \u5168\u90E8\u304C\u9055\u3046\u3002\u305D\u306E\u9055\u3044\u3092\u904A\u3093\u3067\u3044\u3066\u81EA\u7136\u306B\u611F\u3058\u3089\u308C\u308B\u3053\u3068\u3002
|
|
53
|
+
-->
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## \u307E\u305A\u6700\u5C0F\u7248\u3067\u8A66\u3059\u3002\u898B\u305F\u76EE\u306F\u5F8C\u56DE\u3057
|
|
58
|
+
|
|
59
|
+
\u7B2C 1 \u6BB5\u968E\uFF1A\u30B3\u30A2\u3060\u3051\u4F5C\u308B\u3002UI \u306F\u78E8\u304B\u306A\u3044\u3002\u624B\u89E6\u308A\u304C\u5B8C\u6210\u3057\u305F\u3089\u898B\u305B\u3066\u304F\u3060\u3055\u3044\u3002\u305D\u3053\u304B\u3089\u76F4\u3057\u307E\u3059\u3002
|
|
60
|
+
|
|
61
|
+
<!--
|
|
62
|
+
\u8272\u3092\u5857\u308B\u30FB\u80CC\u666F\u3092\u4F5C\u308B \u2015\u2015 \u305D\u308C\u306F\u5168\u90E8\u3042\u3068\u3067\u3059\u3002\u3044\u307E\u5927\u4E8B\u306A\u306E\u306F\u300C\u6575\u3092\u5012\u3059\u3053\u3068\u306E\u6C17\u6301\u3061\u3088\u3055\u300D\u3060\u3051\u3002\u305D\u308C\u304C\u5B9F\u73FE\u3067\u304D\u305F\u3089\uFF0C\u6B21\u306E\u6BB5\u968E\u306B\u9032\u307F\u307E\u3059\u3002
|
|
63
|
+
-->
|
|
64
|
+
`},en:{\u983C\u307F:"Announcement for next week's study session. Topic: how to build a simple household budget app. Thursday 7pm, online, free, beginners welcome.",markdown:`---
|
|
65
|
+
marp: true
|
|
66
|
+
paginate: true
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
# Build Your First Budget App
|
|
70
|
+
|
|
71
|
+
Next Thursday \xB7 7pm \xB7 Online \xB7 Free
|
|
72
|
+
|
|
73
|
+
<!--
|
|
74
|
+
We're hosting a hands-on session next week where you'll learn to build a simple budget app from scratch. No coding experience needed\u2014if you can follow along, you're in. It's a short evening, but you'll walk away with working code.
|
|
75
|
+
-->
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## Why This Matters
|
|
80
|
+
|
|
81
|
+
Managing money feels complicated. Apps exist, but how do they work?
|
|
82
|
+
|
|
83
|
+
<!--
|
|
84
|
+
Most people use budget apps but never look under the hood. This session flips that: you'll see the mechanics yourself, understand how data flows, and realize it's not magic\u2014just logic.
|
|
85
|
+
-->
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## What We'll Build
|
|
90
|
+
|
|
91
|
+
A working budget app \xB7 Input income & expenses \xB7 See your balance
|
|
92
|
+
|
|
93
|
+
<!--
|
|
94
|
+
We'll code a simple app that takes income and spending, stores it, and shows your current balance. Step by step, no jumping around. You'll have real, runnable code by the end.
|
|
95
|
+
-->
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## What You Get
|
|
100
|
+
|
|
101
|
+
Working knowledge of app basics \xB7 Confidence to build more
|
|
102
|
+
|
|
103
|
+
<!--
|
|
104
|
+
You'll understand how apps store and display data. That foundation opens doors to learning more complex apps later. Plus, you can show it to friends or use it yourself.
|
|
105
|
+
-->
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## One Word
|
|
110
|
+
|
|
111
|
+
Learn by making, not by watching.
|
|
112
|
+
|
|
113
|
+
<!--
|
|
114
|
+
This isn't a lecture. You'll write code and see it work in real time. That's how it sticks\u2014and how you actually learn.
|
|
115
|
+
-->
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## Join Us
|
|
120
|
+
|
|
121
|
+
Thursday 7pm \xB7 Sign up now \xB7 Bring a laptop
|
|
122
|
+
|
|
123
|
+
<!--
|
|
124
|
+
It's free, online, and open to everyone. All you need is a device and curiosity. See you there.
|
|
125
|
+
-->
|
|
126
|
+
`}},kami:{ja:{\u983C\u307F:"\u308A\u3093\u3054\u30FB\u307F\u304B\u3093\u30FB\u30D0\u30CA\u30CA\u306E\u6804\u990A\uFF08100g \u3042\u305F\u308A\u306E\u30AB\u30ED\u30EA\u30FC\u30FB\u30D3\u30BF\u30DF\u30F3 C\u30FB\u98DF\u7269\u7E4A\u7DAD\uFF09\u3092\u6BD4\u3079\u308B",markdown:`# \u679C\u7269\u306E\u6804\u990A\u6BD4\u8F03\uFF08100g \u3042\u305F\u308A\uFF09
|
|
127
|
+
|
|
128
|
+
\u308A\u3093\u3054\u30FB\u307F\u304B\u3093\u30FB\u30D0\u30CA\u30CA\u306E100g \u3042\u305F\u308A\u306E\u30AB\u30ED\u30EA\u30FC\u30FB\u30D3\u30BF\u30DF\u30F3 C\u30FB\u98DF\u7269\u7E4A\u7DAD\u3092\u6BD4\u8F03\u3057\u305F\u8868\u3002
|
|
129
|
+
|
|
130
|
+
| \u679C\u7269 | \u30AB\u30ED\u30EA\u30FC\uFF08kcal\uFF09 | \u30D3\u30BF\u30DF\u30F3 C\uFF08mg\uFF09 | \u98DF\u7269\u7E4A\u7DAD\uFF08g\uFF09 |
|
|
131
|
+
| --- | --- | --- | --- |
|
|
132
|
+
| \u308A\u3093\u3054 | 61 | 4 | 1.5 |
|
|
133
|
+
| \u307F\u304B\u3093 | 45 | 33 | 1.6 |
|
|
134
|
+
| \u30D0\u30CA\u30CA | 89 | 16 | 1.1 |
|
|
135
|
+
`,csv:`\u679C\u7269,\u30AB\u30ED\u30EA\u30FC\uFF08kcal\uFF09,\u30D3\u30BF\u30DF\u30F3 C\uFF08mg\uFF09,\u98DF\u7269\u7E4A\u7DAD\uFF08g\uFF09\r
|
|
136
|
+
\u308A\u3093\u3054,61,4,1.5\r
|
|
137
|
+
\u307F\u304B\u3093,45,33,1.6\r
|
|
138
|
+
\u30D0\u30CA\u30CA,89,16,1.1\r
|
|
139
|
+
`},en:{\u983C\u307F:"Compare apples, oranges and bananas: calories, vitamin C and fiber per 100 g",markdown:`# Nutritional Comparison of Apples, Oranges, and Bananas
|
|
140
|
+
|
|
141
|
+
Nutritional content per 100g for three common fruits. Bananas are highest in calories, oranges excel in vitamin C, and all three provide similar fiber content.
|
|
142
|
+
|
|
143
|
+
| Fruit | Calories (kcal) | Vitamin C (mg) | Fiber (g) |
|
|
144
|
+
| --- | --- | --- | --- |
|
|
145
|
+
| Apple | 52 | 5.7 | 2.4 |
|
|
146
|
+
| Orange | 47 | 53.2 | 2.4 |
|
|
147
|
+
| Banana | 89 | 8.7 | 2.6 |
|
|
148
|
+
|
|
149
|
+
**How columns were worked out**
|
|
150
|
+
|
|
151
|
+
- Calories (kcal): per 100g
|
|
152
|
+
- Vitamin C (mg): per 100g
|
|
153
|
+
- Fiber (g): per 100g
|
|
154
|
+
`,csv:`Fruit,Calories (kcal),Vitamin C (mg),Fiber (g)\r
|
|
155
|
+
Apple,52,5.7,2.4\r
|
|
156
|
+
Orange,47,53.2,2.4\r
|
|
157
|
+
Banana,89,8.7,2.6\r
|
|
158
|
+
`}},writer:{ja:{\u983C\u307F:"\u6765\u9031\u306E\u5B9A\u4F8B\u306F\u6728\u66DC15\u6642\u304B\u3089\u3002\u8B70\u984C\u306F\u3075\u305F\u3064\u3002\u65B0\u3057\u3044\u30A2\u30D7\u30EA\u306E\u540D\u524D\u30923\u6848\u304B\u3089\u6C7A\u3081\u308B\u3053\u3068\u3001\u516C\u958B\u65E5\u3092\u6C7A\u3081\u308B\u3053\u3068\u3002\u516C\u958B\u65E5\u306F11\u6708\u4E2D\u65EC\u3067\u8ABF\u6574\u4E2D\u3002\u5C71\u7530\u3055\u3093\u304C\u540D\u524D\u306E\u6848\u3092\u307E\u3068\u3081\u3066\u304F\u308B\u3002\uFF08--format minutes\uFF09",markdown:`# \u6765\u9031\u306E\u5B9A\u4F8B \u8B70\u4E8B\u9332
|
|
159
|
+
|
|
160
|
+
### \u57FA\u672C\u60C5\u5831
|
|
161
|
+
|
|
162
|
+
\u65E5\u6642\uFF1A\u6765\u9031\u6728\u66DC15\u6642
|
|
163
|
+
|
|
164
|
+
\u5834\u6240\uFF1A[\u8981\u8FFD\u8A18: \u958B\u50AC\u5834\u6240]
|
|
165
|
+
|
|
166
|
+
\u51FA\u5E2D\u8005\uFF1A[\u8981\u8FFD\u8A18: \u51FA\u5E2D\u8005\u540D]
|
|
167
|
+
|
|
168
|
+
\u8A18\u9332\u8005\uFF1A[\u8981\u8FFD\u8A18: \u8A18\u9332\u8005\u540D]
|
|
169
|
+
|
|
170
|
+
## \u8B70\u984C
|
|
171
|
+
|
|
172
|
+
1. \u65B0\u3057\u3044\u30A2\u30D7\u30EA\u306E\u540D\u524D\u30923\u6848\u304B\u3089\u6C7A\u3081\u308B\u3053\u3068
|
|
173
|
+
2. \u516C\u958B\u65E5\u3092\u6C7A\u3081\u308B\u3053\u3068
|
|
174
|
+
|
|
175
|
+
### \u8B70\u984C1: \u65B0\u3057\u3044\u30A2\u30D7\u30EA\u306E\u540D\u524D\u30923\u6848\u304B\u3089\u6C7A\u3081\u308B\u3053\u3068
|
|
176
|
+
|
|
177
|
+
\u5C71\u7530\u3055\u3093\u304C\u540D\u524D\u306E\u6848\u3092\u307E\u3068\u3081\u3066\u304F\u308B\u3002
|
|
178
|
+
|
|
179
|
+
### \u8B70\u984C2: \u516C\u958B\u65E5\u3092\u6C7A\u3081\u308B\u3053\u3068
|
|
180
|
+
|
|
181
|
+
\u516C\u958B\u65E5\u306F11\u6708\u4E2D\u65EC\u3067\u8ABF\u6574\u4E2D\u3002
|
|
182
|
+
|
|
183
|
+
## \u30A2\u30AF\u30B7\u30E7\u30F3\u30A2\u30A4\u30C6\u30E0
|
|
184
|
+
|
|
185
|
+
- \u5C71\u7530\u3055\u3093 / \u65B0\u3057\u3044\u30A2\u30D7\u30EA\u306E\u540D\u524D\u306E\u6848\u3092\u307E\u3068\u3081\u308B / \u6765\u9031\u6728\u66DC15\u6642\u307E\u3067\u306B
|
|
186
|
+
`},en:{\u983C\u307F:"Next weekly meeting is Thursday at 3pm. Two topics: pick the new app name from three ideas, and set the launch date. Launch is being planned for mid-November. Yamada will bring the name ideas. (--format minutes)",markdown:`# Weekly Meeting
|
|
187
|
+
|
|
188
|
+
### Basic Information
|
|
189
|
+
|
|
190
|
+
Date: Thursday at 3pm
|
|
191
|
+
|
|
192
|
+
Attendees: [\u8981\u8FFD\u8A18: \u51FA\u5E2D\u8005\u540D]
|
|
193
|
+
|
|
194
|
+
Recorder: [\u8981\u8FFD\u8A18: \u8A18\u9332\u8005\u540D]
|
|
195
|
+
|
|
196
|
+
## Agenda
|
|
197
|
+
|
|
198
|
+
1. Pick the new app name from three ideas
|
|
199
|
+
2. Set the launch date
|
|
200
|
+
|
|
201
|
+
### Topic 1: Pick the new app name from three ideas
|
|
202
|
+
|
|
203
|
+
Yamada will bring the name ideas.
|
|
204
|
+
|
|
205
|
+
### Topic 2: Set the launch date
|
|
206
|
+
|
|
207
|
+
Launch is being planned for mid-November.
|
|
208
|
+
|
|
209
|
+
## Action Items
|
|
210
|
+
|
|
211
|
+
- Yamada: Bring the name ideas to Thursday meeting
|
|
212
|
+
|
|
213
|
+
### Next Meeting
|
|
214
|
+
|
|
215
|
+
Thursday at 3pm
|
|
216
|
+
`}},baton:{ja:{\u983C\u307F:"\u4E0A\u304B\u3089\u898B\u4E0B\u308D\u3059\u30A2\u30AF\u30B7\u30E7\u30F3\u30B2\u30FC\u30E0\u3002\u8FEB\u3063\u3066\u304F\u308B\u6575\u3092\u5012\u3057\u306A\u304C\u3089\u3001\u3067\u304D\u308B\u3060\u3051\u9577\u304F\u751F\u304D\u6B8B\u308B\u3002\u6700\u521D\u306B\u6B66\u5668\u3092\u9078\u3079\u308B\u3002\u30D6\u30E9\u30A6\u30B6\u3067\u904A\u3079\u308B 1 \u679A\u306E HTML \u3067\u4F5C\u308A\u305F\u3044\u3002\uFF08\u3053\u306E\u3042\u3068\u554F\u3044\u306B 3 \u56DE\u7B54\u3048\u3066\u3001\u5408\u683C\u306E\u6848\u3092\u9078\u3093\u3060\uFF09",markdown:`# \u4F5C\u3063\u3066\u307B\u3057\u3044\u3082\u306E
|
|
217
|
+
|
|
218
|
+
\u4E0A\u304B\u3089\u898B\u4E0B\u308D\u3059\u30A2\u30AF\u30B7\u30E7\u30F3\u30B2\u30FC\u30E0\u3002\u8FEB\u3063\u3066\u304F\u308B\u6575\u3092\u5012\u3057\u306A\u304C\u3089\u3001\u3067\u304D\u308B\u3060\u3051\u9577\u304F\u751F\u304D\u6B8B\u308B\u3002\u6700\u521D\u306B\u6B66\u5668\u3092\u9078\u3079\u308B\u3002\u30D6\u30E9\u30A6\u30B6\u3067\u904A\u3079\u308B 1 \u679A\u306E HTML \u3067\u4F5C\u308A\u305F\u3044\u3002
|
|
219
|
+
|
|
220
|
+
## \u2605\u3053\u308C\u304C\u3067\u304D\u305F\u3089\u5408\u683C
|
|
221
|
+
|
|
222
|
+
\u77ED\u5263\u30FB\u65A7\u30FB\u5F13\u306E 3 \u3064\u306E\u6B66\u5668\u304B\u3089\u9078\u3093\u3067\u3001\u305D\u308C\u305E\u308C\u306E\u653B\u6483\u7BC4\u56F2\u3068\u653B\u6483\u901F\u5EA6\u306E\u9055\u3044\u3092\u611F\u3058\u306A\u304C\u3089\u6575\u3092\u5012\u3059\u3002\u6642\u9593\u304C\u7D4C\u3064\u306B\u3064\u308C\u3001\u6575\u304C\u5897\u3048\u3066\u901F\u304F\u306A\u308B\u3002
|
|
223
|
+
|
|
224
|
+
\u203B\u3053\u306E\u4E00\u6587\u306F\u3001Baton \u304C\u51FA\u3057\u305F\u6848\u304B\u3089\u9078\u3093\u3060\u3082\u306E\u3067\u3059\u3002
|
|
225
|
+
|
|
226
|
+
\u2605**\u3053\u308C\u304C\u3001\u3053\u306E\u9053\u5177\u306E\u3044\u3061\u3070\u3093\u5927\u4E8B\u306A\u3068\u3053\u308D\u3067\u3059\u3002**
|
|
227
|
+
\u3053\u3053\u304C\u6C17\u6301\u3061\u3088\u304F\u52D5\u304F\u307E\u3067\u306F\u3001\u307B\u304B\u3092\u4F5C\u308A\u8FBC\u307E\u306A\u3044\u3067\u304F\u3060\u3055\u3044\u3002
|
|
228
|
+
|
|
229
|
+
## \u524D\u63D0 \u2015 \u4F7F\u3046\u4EBA\u30FB\u5834\u9762\uFF08\u89E6\u3063\u3066\u78BA\u304B\u3081\u308B\u884C\u3067\u306F\u3042\u308A\u307E\u305B\u3093\uFF09
|
|
230
|
+
|
|
231
|
+
**\u8AB0\u304C\u30FB\u3069\u3093\u306A\u5834\u9762\u3067\u30FB\u3069\u308C\u304F\u3089\u3044\u4F7F\u3046\u304B\u3002**\u4F5C\u308A\u65B9\u3092\u6C7A\u3081\u308B\u624B\u304C\u304B\u308A\u306B\u3057\u3066\u304F\u3060\u3055\u3044\u3002
|
|
232
|
+
\u30A2\u30D7\u30EA\u3092\u89E6\u3063\u3066\u3082\u78BA\u304B\u3081\u3088\u3046\u304C\u306A\u3044\u306E\u3067\u3001\u78BA\u304B\u3081\u308B\u8868\u306B\u306F\u8F09\u305B\u307E\u305B\u3093\u3002
|
|
233
|
+
|
|
234
|
+
- \u753B\u9762\u306E\u5927\u304D\u3055\u306F\u3001\u3069\u306E\u304F\u3089\u3044\u3092\u60F3\u5B9A\u3057\u3066\u3044\u307E\u3059\u304B: **\u30D1\u30BD\u30B3\u30F3\u306E\u753B\u9762\uFF08\u5E45 800px \u4EE5\u4E0A\uFF09**
|
|
235
|
+
- \u6575\u306E\u7A2E\u985E\u306F\u4F55\u7A2E\u985E\u3044\u307E\u3059\u304B: **2\uFF5E3\u7A2E\u985E**
|
|
236
|
+
|
|
237
|
+
## \u6C7A\u307E\u3063\u3066\u3044\u308B\u3053\u3068 \u2015 \u30B3\u30A2\uFF08\u4F53\u9A13\uFF09
|
|
238
|
+
|
|
239
|
+
**\u3053\u306E\u9053\u5177\u3092\u4F7F\u3063\u3066\u3044\u308B\u3001\u3044\u3061\u3070\u3093\u77ED\u3044\u6642\u9593\u306B\u8D77\u304D\u308B\u3053\u3068\u3002**
|
|
240
|
+
\u307E\u305A\u3053\u3053\u3060\u3051\u3092\u4F5C\u308A\u307E\u3059\u3002
|
|
241
|
+
|
|
242
|
+
- \u6575\u306F\u3069\u306E\u30DA\u30FC\u30B9\u3067\u8FEB\u3063\u3066\u304D\u307E\u3059\u304B: **\u6642\u9593\u7D4C\u904E\u3068\u3068\u3082\u306B\u3001\u6BB5\u968E\u7684\u306B\u96E3\u3057\u304F\u306A\u308B**
|
|
243
|
+
- \u6575\u3092\u5012\u3059\u306B\u306F\u3001\u3069\u3046\u64CD\u4F5C\u3057\u307E\u3059\u304B: **\u6575\u306B\u8FD1\u3065\u304F\u3068\u81EA\u52D5\u3067\u653B\u6483\u3059\u308B**
|
|
244
|
+
- \u653B\u6483\u306E\u7BC4\u56F2\u306F\u3001\u3069\u306E\u6B66\u5668\u3092\u9078\u3093\u3067\u3082\u540C\u3058\u3067\u3059\u304B: **\u9078\u3093\u3060\u6B66\u5668\u3067\u7BC4\u56F2\u304C\u5909\u308F\u308B**
|
|
245
|
+
- \u30D7\u30EC\u30A4\u30E4\u30FC\u304C\u6575\u306B\u5F53\u305F\u308B\u3068\u3069\u3046\u306A\u308A\u307E\u3059\u304B: **\u5F53\u305F\u308B\u305F\u3073\u306BHP \u304C\u6E1B\u308A\u30010 \u306B\u306A\u308B\u3068\u30B2\u30FC\u30E0\u30AA\u30FC\u30D0\u30FC**
|
|
246
|
+
- \u30B2\u30FC\u30E0\u30AA\u30FC\u30D0\u30FC\u306B\u306A\u3063\u305F\u3089\u3001\u6B21\u306F\u4F55\u304C\u3067\u304D\u307E\u3059\u304B: **\u3082\u3046\u4E00\u5EA6\u3001\u6B66\u5668\u3092\u9078\u3093\u3067\u304B\u3089\u518D\u30B9\u30BF\u30FC\u30C8**
|
|
247
|
+
- \u30B9\u30B3\u30A2\uFF08\u751F\u304D\u6B8B\u3063\u305F\u6642\u9593\u3084\u30B9\u30B3\u30A2\uFF09\u3092\u753B\u9762\u306B\u8868\u793A\u3057\u307E\u3059\u304B: **\u5E38\u306B\u8868\u793A\u3059\u308B**
|
|
248
|
+
- \u30AD\u30FC\u64CD\u4F5C\u3068\u30DE\u30A6\u30B9\u64CD\u4F5C\u3001\u3069\u3061\u3089\u3067\u52D5\u304B\u3057\u307E\u3059\u304B: **\u30AD\u30FC\u30DC\u30FC\u30C9\uFF08\u77E2\u5370\u30AD\u30FC\u3084 WASD\uFF09**
|
|
249
|
+
- \u6B66\u5668\u306E\u9055\u3044\u306F\u3001\u653B\u6483\u7BC4\u56F2\u3060\u3051\u3067\u3059\u304B: **\u7BC4\u56F2\u3068\u3001\u6575\u3092\u5012\u3059\u901F\u3055\uFF08\u653B\u6483\u529B\uFF09\u3082\u9055\u3046**
|
|
250
|
+
- \u6575\u306F\u4F55\u65B9\u5411\u304B\u3089\u8FEB\u3063\u3066\u304D\u307E\u3059\u304B: **\u753B\u9762\u306E\u5168\u65B9\u5411\u304B\u3089**
|
|
251
|
+
- \u6575\u304C\u5012\u3055\u308C\u305F\u3068\u304D\u3001\u6575\u306E\u4F53\u304C\u6D88\u3048\u308B\u307E\u3067\u306E\u6642\u9593\u306F: **\u5C11\u3057\u6B8B\u3063\u3066\u304B\u3089\u6D88\u3048\u308B\uFF080.5\u79D2\u306A\u3069\uFF09**
|
|
252
|
+
- \u6575\u306F\u3059\u3079\u3066\u540C\u3058\u901F\u3055\u3067\u8FEB\u3063\u3066\u304D\u307E\u3059\u304B: **\u6575\u306E\u7A2E\u985E\u3067\u901F\u3055\u304C\u9055\u3046**
|
|
253
|
+
- \u30B2\u30FC\u30E0\u3092\u4E00\u6642\u505C\u6B62\u3067\u304D\u307E\u3059\u304B: **\u30AD\u30FC\u3092\u62BC\u3059\u3068\u4E00\u6642\u505C\u6B62\u3067\u304D\u308B**
|
|
254
|
+
- \u96E3\u3057\u304F\u306A\u308B\u30DA\u30FC\u30B9\u306F\u3001\u3069\u306E\u304F\u3089\u3044\u306E\u901F\u3055\u3067\u3059\u304B: **30\u79D2\u3054\u3068\u3001\u307E\u305F\u306F\u6575\u306E\u6570\u3067\u6BB5\u968E\u7684\u306B**
|
|
255
|
+
- \u6B66\u5668\u306F\u4F55\u7A2E\u985E\u304B\u3089\u9078\u3079\u307E\u3059\u304B: **3\u7A2E\u985E**
|
|
256
|
+
- \u30B2\u30FC\u30E0\u958B\u59CB\u6642\u306B\u3001\u9078\u3093\u3060\u6B66\u5668\u306E\u60C5\u5831\uFF08\u7BC4\u56F2\u3084\u653B\u6483\u529B\uFF09\u3092\u753B\u9762\u306B\u8868\u793A\u3057\u307E\u3059\u304B: **\u8868\u793A\u3059\u308B**
|
|
257
|
+
- \u6575\u304C\u540C\u6642\u306B\u753B\u9762\u4E0A\u306B\u4F55\u4F53\u304F\u3089\u3044\u3044\u307E\u3059\u304B: **\u6570\u5341\u4F53\u4EE5\u4E0A**
|
|
258
|
+
- \u96E3\u6613\u5EA6\u304C\u4E0A\u304C\u308B\u3068\u304D\u3001\u6575\u306E\u6570\u3092\u5897\u3084\u3057\u307E\u3059\u304B\u3001\u6575\u306E\u30B9\u30D4\u30FC\u30C9\u3092\u4E0A\u3052\u307E\u3059\u304B\u3001\u305D\u308C\u3068\u3082\u4E21\u65B9\u3067\u3059\u304B: **\u4E21\u65B9\u5897\u3084\u3059**
|
|
259
|
+
- \u6B66\u5668\u3054\u3068\u306E\u653B\u6483\u7BC4\u56F2\u306E\u9055\u3044\u3092\u3001\u6570\u5B57\u3067\u6559\u3048\u3066\u3082\u3089\u3048\u307E\u3059\u304B\uFF08\u4F8B\uFF1A\u5E83\u3044\uFF1D\u534A\u5F84100px\u3001\u72ED\u3044\uFF1D\u534A\u5F8450px\uFF09: **\u5927\u304D\u304F\u7570\u306A\u308B\uFF08\u4F8B\uFF1A\u534A\u5F8450px vs 100px\uFF09**
|
|
260
|
+
- \u6B66\u5668\u306E\u653B\u6483\u901F\u5EA6\uFF08\u6575\u3092\u5012\u3059\u307E\u3067\u306E\u6642\u9593\uFF09\u306E\u9055\u3044\u3092\u3001\u6570\u5B57\u3067\u6559\u3048\u3066\u3082\u3089\u3048\u307E\u3059\u304B: **\u901F\u3044\u6B66\u5668\u306F0.5\u79D2\u3001\u9045\u3044\u6B66\u5668\u306F1\u79D2\u306A\u3069\u3001\u660E\u78BA\u306B\u7570\u306A\u308B**
|
|
261
|
+
- \u30B2\u30FC\u30E0\u753B\u9762\u306E\u80CC\u666F\u306F\u3001\u4F55\u304B\u8868\u793A\u3057\u307E\u3059\u304B\uFF08\u4F8B\uFF1A\u30B0\u30EA\u30C3\u30C9\u3001\u5730\u9762\u306E\u30C6\u30AF\u30B9\u30C1\u30E3\u3001\u4F55\u3082\u306A\u3044\uFF09: **\u30B0\u30EA\u30C3\u30C9\u3084\u5E8A\u306E\u30C6\u30AF\u30B9\u30C1\u30E3\u3092\u8868\u793A**
|
|
262
|
+
|
|
263
|
+
\uFF08\u3053\u3053\u307E\u3067\u304C\u629C\u7C8B\u3067\u3059\u3002\u5B9F\u7269\u306B\u306F\u3001\u3053\u306E\u3042\u3068\u300C\u307E\u3060\u6C7A\u307E\u3063\u3066\u3044\u306A\u3044\u3053\u3068\u300D\u300C\u8ABF\u6574\u3059\u308B\u6570\u306E\u7F6E\u304D\u5834\u6240\u300D\u300C\u4F5C\u308B\u9806\u756A\u300D\u300C\u78BA\u304B\u3081\u65B9\u300D\u306A\u3069\u306E\u7BC0\u304C\u7D9A\u304D\u307E\u3059\u3002\uFF09
|
|
264
|
+
`}}};function D(n,e){let o=M[n];return{\u898B\u672C:o[e]??o.ja,\u8A00\u8449:o[e]?e:"ja"}}function $(n,e,o,i,r){return i==="en"?["This is a SAMPLE. No AI was run, nothing was sent, and it cost nothing.",`Request used for this sample: ${e}`,...r?["(This sample is only available in Japanese.)"]:[],`Wrote: ${o.join(", ")}`,`To make your own, set ANTHROPIC_API_KEY (your own Anthropic key) and run: ${n.en}`].join(`
|
|
265
|
+
`):["\u3053\u308C\u306F\u898B\u672C\u3067\u3059\u3002AI \u306F\u52D5\u3044\u3066\u3044\u307E\u305B\u3093\uFF08\u3069\u3053\u306B\u3082\u9001\u3063\u3066\u3044\u307E\u305B\u3093\u30FB\u8CBB\u7528 0\uFF09\u3002",`\u3053\u306E\u898B\u672C\u306E\u983C\u307F: ${e}`,`\u66F8\u3044\u305F\u30D5\u30A1\u30A4\u30EB: ${o.join("\u3001")}`,`\u81EA\u5206\u306E\u983C\u307F\u3067\u4F5C\u308B\u3068\u304D\u306F\u3001ANTHROPIC_API_KEY\uFF08\u3054\u81EA\u5206\u306E Anthropic \u306E\u30AD\u30FC\uFF09\u3092\u5165\u308C\u3066\u304B\u3089: ${n.ja}`].join(`
|
|
266
|
+
`)}function v(n,e,o,i){let{\u898B\u672C:r,\u8A00\u8449:m}=D(n,e),b=n==="baton"?"kokoro-spec":`kokoro-${n}`,k=e==="en"?"-sample":"\uFF08\u898B\u672C\uFF09",f=h=>{let t=`${b}${k}${h}`;for(let s=2;i(t);s+=1)t=`${b}${k}-${s}${h}`;return t},l=[],y=f(".md");if(o(y,r.markdown),l.push(y),r.csv){let h=f(".csv");o(h,"\uFEFF"+r.csv),l.push(h)}return{\u66F8\u3044\u305F:l,\u898B\u672C:r,\u65E5\u672C\u8A9E\u3060\u3051:m!==e}}function S(n,e){return e==="en"?`To see a sample first (no key, no cost): ${n} --demo`:`\u307E\u305A\u898B\u672C\u3092\u898B\u308B\u3068\u304D\u306F\uFF08\u30AD\u30FC\u4E0D\u8981\u30FB\u8CBB\u7528 0\uFF09: ${n} --demo`}var j="0.1.1",V=(process.env.KOKORO_API_BASE||"https://usekokoro.com").replace(/\/+$/,""),c=(()=>{let n=process.argv.indexOf("--lang"),e=n>=0?process.argv[n+1]:"";return e==="ja"||e==="en"?e:(process.env.LANG||process.env.LC_ALL||Intl.DateTimeFormat().resolvedOptions().locale||"").toLowerCase().startsWith("ja")?"ja":"en"})(),p={ja:{\u4F55\u3082\u7121\u3044:'\u4F1D\u3048\u305F\u3044\u3053\u3068\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u30D5\u30A1\u30A4\u30EB\u306E\u540D\u524D\u304B\u3001"\u4F1D\u3048\u305F\u3044\u3053\u3068" \u3092\u6E21\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u4F8B: npx kokoro-slide "\u5730\u5143\u306E\u5C0F\u9EA6\u3067\u4F5C\u308B\u30D1\u30F3\u5C4B\u306E\u4F01\u753B"\uFF09\u3002',\u4F5C\u308A\u4E2D:"\u30B9\u30E9\u30A4\u30C9\u3092\u4F5C\u3063\u3066\u3044\u307E\u3059\u2026",\u4E0A\u66F8\u304D:n=>`${n} \u306F\u3082\u3046\u3042\u308A\u307E\u3059\u3002\u4E0A\u66F8\u304D\u3057\u307E\u3059\u304B\uFF1F [y/n] `,\u3084\u3081\u305F:"\u66F8\u304D\u51FA\u3057\u307E\u305B\u3093\u3067\u3057\u305F\u3002",\u66F8\u3044\u305F:(n,e)=>`\u66F8\u304D\u307E\u3057\u305F: ${n}\uFF08${e} \u679A\uFF09`,\u898B\u65B9:"VS Code \u306B\u62E1\u5F35\u6A5F\u80FD\u300CMarp for VS Code\u300D\u3092\u5165\u308C\u3066\u958B\u304D\u3001\u30D7\u30EC\u30D3\u30E5\u30FC\u3092\u51FA\u3059\u3068\u30B9\u30E9\u30A4\u30C9\u3068\u3057\u3066\u898B\u3048\u307E\u3059\u3002\u8A71\u3059\u8981\u70B9\u306F\u3001.md \u306E\u4E2D\u306E <!-- --> \u306B\u66F8\u3044\u3066\u3042\u308A\u307E\u3059\uFF08\u30D7\u30EC\u30D3\u30E5\u30FC\u306B\u306F\u51FA\u307E\u305B\u3093\uFF09\u3002",\u7A7A\u6B04:n=>`\u2605\uFF3B\u3000\uFF3D \u306E\u6240\uFF08${n} \u304B\u6240\uFF09\u306F\u7A7A\u6B04\u3067\u3059\u3002\u4F1D\u3048\u305F\u3044\u3053\u3068\u3092\u66F8\u304D\u8DB3\u3057\u3066\u304B\u3089\u4F7F\u3063\u3066\u304F\u3060\u3055\u3044\u3002`,\u65E5\u6642:"\u2605\u78BA\u304B\u3081\u3066\u304F\u3060\u3055\u3044\uFF08\u4F1D\u3048\u305F\u3044\u3053\u3068\u306B\u7121\u3044\u65E5\u6642\u3092\u3001AI \u304C\u66F8\u304D\u8DB3\u3057\u3066\u3044\u307E\u3059\uFF09:",\u5931\u6557:n=>`\u6B62\u307E\u308A\u307E\u3057\u305F: ${n}`,\u4F7F\u3044\u65B9:'\u4F7F\u3044\u65B9: npx kokoro-slide <\u30D5\u30A1\u30A4\u30EB \u307E\u305F\u306F "\u4F1D\u3048\u305F\u3044\u3053\u3068"> [--out \u540D\u524D.md] [--yes] [--lang ja|en]'},en:{\u4F55\u3082\u7121\u3044:'Nothing to present. Pass a file name or "what you want to get across" (e.g. npx kokoro-slide "a pitch for a bakery using local wheat").',\u4F5C\u308A\u4E2D:"Making the slides\u2026",\u4E0A\u66F8\u304D:n=>`${n} already exists. Overwrite? [y/n] `,\u3084\u3081\u305F:"Nothing was written.",\u66F8\u3044\u305F:(n,e)=>`Written: ${n} (${e} slides)`,\u898B\u65B9:'Open it in VS Code with the "Marp for VS Code" extension and show the preview to see it as slides. What to say is written in the <!-- --> comments in the .md (not shown in the preview).',\u7A7A\u6B04:n=>`\u2605The [ ] parts (${n}) are blanks. Fill in what you want to say before using it.`,\u65E5\u6642:"\u2605Please check (the AI added dates or times that were not in your text):",\u5931\u6557:n=>`Stopped: ${n}`,\u4F7F\u3044\u65B9:'Usage: npx kokoro-slide <file or "what you want to get across"> [--out name.md] [--yes] [--lang ja|en]'}}[c];async function J(){let n=process.argv.slice(2);if(n.includes("--version")||n.includes("-v")){console.log(j);return}if(n.includes("--help")||n.includes("-h")||!n.length){console.log(p.\u4F7F\u3044\u65B9);return}if(n.includes("--demo")){let t=v("slide",c,(s,a)=>d.default.writeFileSync(s,a),s=>d.default.existsSync(s));console.log($({ja:'npx kokoro-slide "\u4F1D\u3048\u305F\u3044\u3053\u3068"',en:'npx kokoro-slide "what you want to get across"'},t.\u898B\u672C.\u983C\u307F,t.\u66F8\u3044\u305F,c,t.\u65E5\u672C\u8A9E\u3060\u3051));return}let e=T("Kokoro\u3082");e||(console.error(_("Kokoro\u3082",c)),console.error(S("npx kokoro-slide",c)),process.exit(1));let o=new Set(["--out","--lang"].map(t=>n.indexOf(t)+1).filter(t=>t>0)),i=t=>n.includes(t)?n[n.indexOf(t)+1]:void 0,r=n.filter((t,s)=>!t.startsWith("--")&&!o.has(s)).join(" ").trim();r||(console.error(p.\u4F55\u3082\u7121\u3044),process.exit(1));let m=d.default.existsSync(r)&&d.default.statSync(r).isFile()?u.default.resolve(r):null,b=m?d.default.readFileSync(m,"utf8"):r,k=Y.default.createInterface({input:g.stdin,output:g.stdout,terminal:!!g.stdin.isTTY}),f=[],l=null,y=!1;k.on("line",t=>{if(l){let s=l;l=null,s(t)}else f.push(t)}),k.on("close",()=>{if(y=!0,l){let t=l;l=null,t(null)}});let h=t=>new Promise((s,a)=>{if(g.stdout.write(t),g.stdin.isTTY||g.stdout.write(`
|
|
267
|
+
`),f.length){s(f.shift());return}if(y){a(new Error(c==="en"?"input ended":"\u5165\u529B\u304C\u7D42\u308F\u308A\u307E\u3057\u305F"));return}l=w=>w===null?a(new Error(c==="en"?"input ended":"\u5165\u529B\u304C\u7D42\u308F\u308A\u307E\u3057\u305F")):s(w)});try{let t=u.default.resolve(i("--out")??(m?u.default.join(u.default.dirname(m),`${u.default.parse(m).name}.slides.md`):"kokoro-slide.md"));if(d.default.existsSync(t)){if(n.includes("--yes")){let{dir:A,name:N,ext:E}=u.default.parse(t);for(let x=2;d.default.existsSync(t);x+=1)t=u.default.join(A,`${N}-${x}${E}`)}else if(!(await h(p.\u4E0A\u66F8\u304D(t))).trim().toLowerCase().startsWith("y")){console.log(p.\u3084\u3081\u305F);return}}console.log(O(e,c)),console.log(p.\u4F5C\u308A\u4E2D);let s=await fetch(`${V}/api/v1/slide`,{method:"POST",headers:{"Content-Type":"application/json",...e.\u898B\u51FA\u3057,"user-agent":`kokoro-slide/${j}`},body:JSON.stringify({text:b,lang:c}),signal:AbortSignal.timeout(9e4)}),a=await s.json().catch(()=>({}));if(!s.ok||!a.markdown){let A=typeof a.error=="string"?a.error:a.error?.message;throw new Error(A||`HTTP ${s.status}`)}d.default.writeFileSync(t,a.markdown),console.log(`
|
|
268
|
+
`+p.\u66F8\u3044\u305F(t,a.slides?.length??0));let w=C(a,c);w&&console.log(w),console.log(p.\u898B\u65B9),a.blanks&&console.log(`
|
|
269
|
+
`+p.\u7A7A\u6B04(a.blanks)),a.addedDates?.length&&(console.log(`
|
|
270
|
+
`+p.\u65E5\u6642),a.addedDates.forEach(A=>console.log(` \u30FB${A}`)))}finally{k.close()}}J().catch(n=>{console.error(p.\u5931\u6557(n instanceof Error?n.message:String(n))),process.exit(1)});
|
package/package.json
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "kokoro-slide",
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"description": "Turn what you want to get across into a 6-slide talk (Markdown you can open with Marp), with speaker notes, from your terminal. Uses your own Anthropic API key.",
|
|
5
|
+
"homepage": "https://github.com/xmichinokux/kokoro-os-tools#readme",
|
|
6
|
+
"bin": {
|
|
7
|
+
"kokoro-slide": "dist/cli.js"
|
|
8
|
+
},
|
|
9
|
+
"files": [
|
|
10
|
+
"dist/cli.js",
|
|
11
|
+
"README.md",
|
|
12
|
+
"LICENSE"
|
|
13
|
+
],
|
|
14
|
+
"engines": {
|
|
15
|
+
"node": ">=22"
|
|
16
|
+
},
|
|
17
|
+
"keywords": [
|
|
18
|
+
"slides",
|
|
19
|
+
"presentation",
|
|
20
|
+
"marp",
|
|
21
|
+
"markdown",
|
|
22
|
+
"speaker-notes",
|
|
23
|
+
"kokoro-os"
|
|
24
|
+
],
|
|
25
|
+
"license": "PolyForm-Shield-1.0.0",
|
|
26
|
+
"author": "Masanori Chida (Kokoro OS)",
|
|
27
|
+
"scripts": {
|
|
28
|
+
"build": "node build.mjs",
|
|
29
|
+
"prepublishOnly": "node build.mjs"
|
|
30
|
+
}
|
|
31
|
+
}
|