| name | emotion-curve-feedback |
| description | Emotion Curve Feedback â Multi-Persona Emotional Journey Diagnostics for any sequential content. Simulate 2-4 audience personas advancing through the content unit by unit (slide, chapter/section, scroll block), score each unit's emotion on a -5..+5 scale per persona, render the smooth overlaid emotion curves with a matplotlib script, then read the valleys (where the content loses people), single-persona dips (persona conflict), and the landing height (how energized each persona is at the close). Turns those into priority-ordered fixes. Works on slide decks, articles, papers, landing pages, recruitment/donation pages, proposals, long announcements. Use when you want to evaluate content by the AUDIENCE's lived experience rather than the author's intent, or to find where it goes cold. This is the diagnostic counterpart to narrative-heat-engineering (NHE). Triggers: ãææ
æ²ç·ã§èšºæããŠããã©ã®ã¹ã©ã€ã/ã»ã¯ã·ã§ã³ã§å·ãããèŠãŠãããã«ãœãå¥ã«è©äŸ¡ããŠããè°·ãç¹å®ããŠã. |
Emotion Curve FeedbackïŒææ
æ²ç·ãã£ãŒãããã¯ïŒ
Multi-Persona Emotional Journey Diagnostics
ãäœãåŽã®ç±éèšèšïŒnarrative-heat-engineering / NHEïŒãã«å¯Ÿããã蚺æåŽã®æ¹æ³è«ã
æŠèŠ
é çªã«èªãŸããã»èŠãããã³ã³ãã³ãããè€æ°ãã«ãœãããåºéã1ã€ãã€é²ãã§äœéšããŠããããã®ãšããŠã·ãã¥ã¬ãŒãããååºéã®ææ
ã ±ã¹ã³ã¢ïŒ-5ã+5ïŒ ã§æ°å€åããŠææ
æ²ç·ã«ãããæ²ç·ã®è°·ãšçå°ã®åŒ±ããããã®ãŸãŸæ¹åã¬ãã¬ããžã«ãªãã
ãã€äœ¿ããïŒé©çšå¯Ÿè±¡ãšåºéã®åäœïŒ
æžãæã®æå³ã§ã¯ãªããèãæã®äœéšã§ã³ã³ãã³ããè©äŸ¡ããããšãïŒ
| ã³ã³ãã³ã | åºéã®åäœ |
|---|
| ããã / ææ¡ / ç ç©¶çºè¡š / æ¡çš / å¯ä»ããã | ã¹ã©ã€ã1æ |
| è«æã»ç³è«æžã»ææ¡æž | ç« ã»ç¯ |
| WebããŒãžã»LPã»æ¡çšããŒãž | ã¹ã¯ããŒã«ããã㯠|
| ã¡ãŒã«ã»é·æåç¥ã»ãã€ãŒãã¹ã¬ãã | 段èœã»ãã¹ã |
以äžãæ¬æã®ãåºéãã¯äžè¡šã®åäœãæããããããªãã¹ã©ã€ã1æãããã©ã«ãã
äžæ žãšãªã3åå
- 1ã³ã³ãã³ã = è€æ°ã®éèªäœéšã å¹³åçãªèãæã¯ååšããªããåããã®ã人ã«ãã£ãŠéãã¢ãŒã¯ãæãã
- ææ
ã¯åºéããšã«ã¹ã³ã¢åã§ããã ç¹ãã€ãªããšæ²ç·ã«ãªããåŸé
ïŒäžäžã®å€åïŒãæå³ãæã€ã
- è°·ãšçå°ã®åŒ±ã = æ¹åç¹ã ãã©ãã§å·ãããããæåŸã«åããããªãããããå ç¹ããã瀺åãæã€ã
ã¯ãŒã¯ãããŒïŒStep 0ã6ïŒ
Step 0 â åºéã«åè§£ãã
ã³ã³ãã³ããé åºããåºéã«å²ãã10ã15åºéãæ±ããããããããæšªè»žã«ãªããåºéæ°ãå€ãå Žåã¯ãæå³ã®ãŸãšãŸãã§æããŠããã
ãããããã¯ã®äŸïŒ
[0] ã¿ã€ãã«ïŒããã¯ïŒ
[1] åé¡æèµ·ã»çŸç¶
[2] 解決çã»ææ¡
[3] æ ¹æ ã»å®çžŸ
[4] æªæ¥ã»åžå Ž
[5] ã¯ããŒãžã³ã°ã»CTA
Step 1 â ãã«ãœãã2ã4人å®çŸ©ãã
åãã«ãœãã«ãæäœãã®3ã€ãææåããïŒ
- åæ©ïŒäœã確ããã«æ¥ããïŒ
- å€æè»žïŒäœã§è¯ãæªããæ±ºãããïŒ
- é¢è±ããªã¬ïŒäœããããšå·ãã/æ··ä¹±ãããïŒ
â ããã§è³ªã決ãŸããææ§ãªãã«ãœãïŒææ§ãªèšºæã
| ã³ã³ãã³ãã¿ã€ã | æšå¥šãã«ãœãäŸ |
|---|
| ããã/ææ¡ | æè³å®¶ãããŒãããŒåè£ãæè¡å¯©æ»å¡ãæççã»ãªã¹ã¯åé¿å |
| ç ç©¶çºè¡šã»è«æ | ååéå°éå®¶ãç°åéå¿çšå¿åãæ¿çã»å®åæ
åœãäžè¬ã»æé€å¿å |
| æ¡çš | å³å¿ååã芳æã»æ
éåãç«¶ååšç±ã»åŒãæãåãæ°åã»æªçµéšå |
| å¯ä»/æ¯æŽ | ç±å¿ãµããŒã¿ãŒãåèŠã®åæå±€ãå¹çæ§ã»å®çžŸéèŠãé¢ä¿æ§ã»ä¿¡é ŒéèŠ |
| 補å玹ä»ã»LP | åèŠã»å¥œå¥å¿åãæ¯èŒæ€èšåãæè¡ç詳现åãäŸ¡æ Œã»ROIéèŠå |
| åç¥ã»ãã€ãŒã | æ¥çåå¿è
ã忥è
ã»æ
å ±éãæè³å®¶ã»çµå¶å±€ãäžè¬èªè
|
Step 2 â ææ
ã¹ã±ãŒã«ã決ãã
-5ïŒåŒ·ãéåæã»é¢è±ãããïŒã 0ïŒäžç«ïŒã +5ïŒåã®ããã»åãããïŒãå
šãã«ãœãã§åäžã¹ã±ãŒã«ã䜿ãã
| ã¹ã³ã¢ | ææ
ç¶æ
|
|---|
| +5 | 匷ãå
±æã»è奮ã»çŽåŸ |
| +3 | å
±æã»èå³ã»çè§£ |
| +1 | ããããªå¥œå°è±¡ |
| 0 | ç¡é¢å¿ã»äžç« |
| -1 | ããããªéåæ |
| -3 | æ··ä¹±ã»å€±æã»äžä¿¡æ |
| -5 | 匷ãæåŠã»æãã»è±èœ |
Step 3 â ååºé à åãã«ãœãã«ã¹ã³ã¢ïŒäžè¡çç±
ã¹ã³ã¢ã ãã§ãªãããªãäžäžãããããå¿
ãåºéå
ã®èªå¥ã»èŠçŽ ã«çŽä»ããããããæ¹åæ¡ã®çŽ ã«ãªãã
éèŠïŒ
- ã¹ã³ã¢ã¯ããã®åºéãèŠãçŽåŸã®ææ
ã
- éå»åºéã®çޝç©ã§ã¯ãªããååºéåäœã®ææ
å€åãèšé²
- ãã ãé£ç¶ããäœäžã¯ãèç©çãªäžæºããšããŠèšé²
Step 4 â æ»ãããªææ
æ²ç·ã°ã©ããæã
generate_emotion_curve.py ã¹ã¯ãªããã䜿çšããŠã°ã©ããæç»ããã人æ°åã®æ»ãããªæ²ç·ãéããŠã次ã®4ã€ãèªãïŒ
- å
±éã®å±±ïŒå
šå¡ãäžããïŒæå€§ã®è³ç£ïŒ
- å
±éã®è°·ïŒå
šå¡ãäžããïŒæåªå
ã§ä¿®æ£ããåºéïŒ
- åç¬ã®è°·ïŒç¹å®ãã«ãœãã ãèœã¡ãïŒãã«ãœãè¡çªïŒ
- çå°ç¹ã®é«ãïŒæåŸã®åºéã§å人ã髿ããŠãããïŒ
uv run --with matplotlib,numpy,scipy python3 \
scripts/generate_emotion_curve.py /tmp/emotion_data.json /tmp/emotion_curve.png
ïŒãã¹ã¯ãã®ã¹ãã«ã®ãã£ã¬ã¯ããªåºæºãuv ãç¡ãç°å¢ã§ã¯ pip install matplotlib numpy scipy ã®äžã§ python3 scripts/generate_emotion_curve.py <data.json> <out.png>ãåºåãã¹ãçç¥ãããšã«ã¬ã³ããã£ã¬ã¯ããªã® emotion_curve.png ã«ä¿åãããïŒ
JSONããŒã¿åœ¢åŒïŒ
{
"title": "ææ
æ²ç·åæ",
"x_label": "åºé",
"y_label": "ææ
ã¹ã³ã¢ (+5 ã -5)",
"sections": ["ã¿ã€ãã«", "åé¡", "解決ç", "å®çžŸ", "æªæ¥", "CTA"],
"personas": [
{
"name": "æè³å®¶A",
"scores": [2, -3, 1, 3, 4, 2],
"color": "#E74C3C"
},
{
"name"
Step 5 â 蚺æãã¿ãŒã³ãåœãŠã
ã°ã©ããã以äžã®ãã¿ãŒã³ãèªã¿åãïŒ
| ãã¿ãŒã³å | ç¹åŸŽ | æå³ |
|---|
| ã¢ãããŒã³ | å
šåºéã§ã»ãŒåãã¹ã³ã¢ | ææ
åºæ¿ã匱ã |
| æ³¢å | äžäžãæ¿ãã | èå³ãåŒããä¿¡é Œæãäžå®å® |
| äžéå | åºç€é«âçµç€äœ | åŸåã§æåŸ
ãè£åãæ§é |
| äžæå | åºç€äœâçµç€é« | æ¹åã¹ããŒãªãŒã ãåºç€é¢è±ãªã¹ã¯ |
| Våå埩 | æ·±ãè°·ããæ¥å埩 | è¡æçã ãå埩åã®èšŒ |
| éVå | 髿åŸã«æ¥èœ | çŽæéå€ã»æåŸ
ããºã¬ |
| ã¯ãã¹ïŒäº€å·®ïŒ | è€æ°ãã«ãœãã®æ²ç·ã亀差 | åãåºéã人ã«ãã£ãŠéã䟡å€ã«ãªã |
è°·ïŒValleyïŒã®ç¹å®
- å
±éè°·ïŒå
šãã«ãœããŸãã¯å€§å€æ°ãã¹ã³ã¢äœäžã瀺ããåºé
- åå¥è°·ïŒç¹å®ãã«ãœãã®ã¿ã倧å¹
ã«äœäžããåºé
- åå åæïŒãªãããã§ææ
ãäœäžãããïŒ
- å°éçšèªéå€ïŒæåãå€ãããïŒ
- æåŸ
ãšå
容ã®ä¹é¢ïŒ
- æ ¹æ äžè¶³ïŒ
- ããŒã³ã»ãã¶ã€ã³ã®äžäžèŽïŒ
çå°ïŒLandingïŒã®è©äŸ¡
- æçµåºéã®å¹³åã¹ã³ã¢ïŒå
šäœã®æ®åå°è±¡
- çå°ã®é«äœïŒé«çå°ïŒ+å¹³åïŒïŒå¥œå°è±¡ã§çµäºãäœçå°ïŒ-å¹³åïŒïŒãã¬ãã£ãå°è±¡ã§çµäº
- çå°ã®ã°ãã€ãïŒåãã«ãœãéã®æçµå°è±¡ã®å·®ã倧ããïŒã¡ãã»ãŒãžã®å±ãæ¹ãäžåäž
Step 6 â æ¹åæ¡ãåªå
床ä»ã
åªå
床 = è°·ã®æ·±ã à ãã®ãã«ãœãã®éèŠåºŠãåºæ¬é åºïŒ
- å
±éã®è°·
- éèŠãã«ãœãã®åç¬è°·
- çå°ïŒã¯ããŒãžã³ã°ïŒã®åŒ±ã
ã¢ãŠããããæ§æïŒ
1. ææ
æ²ç·ãã£ãŒãïŒæ»ãããªæ²ç·ã°ã©ãç»åïŒ
2. ãã«ãœãå¥ã¢ãŒã¯ïŒåºéããšã®äžè¡çç±ïŒæé«å°éç¹/æå€§ã®è°·/èŠçµãã£ãåŸã®å°è±¡ïŒ
3. æ¹åæ¡ïŒåªå
床é ïŒ
- ãã¿ãŒã³åïŒåŠæ¹ïŒå·®åïŒã³ããŒ/ã¬ã€ã¢ãŠã/é åºã®å€æŽïŒ
4. è£åãæ¹æ³ïŒæšå®ãå®ããŒã¿ã§æ€èšŒïŒå®éã®çºè¡š/å
¬éã§ã®åå¿ã»èŠç·ã»è³ªçãé¢è±ã®ã¿ã€ãã³ã°ïŒ
æ¹åã®åŠæ¹ãã³ã³ãã³ãå
šäœã®ãã©ãã£ãã«åæ ãããšã㯠narrative-heat-engineering ã¹ãã«ãïŒãããã®å ŽåïŒå®éã®1æã®ã¹ã©ã€ãã«åæ ãããšã㯠slide ã¹ãã«ã«æž¡ãã
ã¹ã³ã¢ãªã³ã°ã®ã³ãïŒãã¬ãæžããïŒ
- 絶察å€ããåŸé
ãèŠãã ã+3ã+4ãããããäžãã£ããäžãã£ããã»ã©ãã§ããéèŠ
- åäžãã«ãœãå
ã®çžå¯Ÿã§èªãã ãã«ãœãéã§ã¹ã³ã¢ã®é«ãã¯æ¯èŒããªãïŒæ§æ ŒãéãïŒ
- æ ¹æ ã¯å¿
ãåºéå
ã®èŠçŽ ã«çŽä»ãã çŽä»ããªãã¹ã³ã¢ã¯äž»èгãšããŠå²ãåŒã
- æççãã«ãœãã¯é«æãã«ããã®ãæ£åžžã å±±ãäœããŠãè°·ãæµ
ããã°æå
- è¿·ã£ããäžç«(0)å¯ãã«ã å±±ãšè°·ãäœããããªã
ã¹ã¯ãªãã
generate_emotion_curve.pyïŒscripts/ïŒ
matplotlib + numpy + scipy ã䜿çšããŠæ»ãããªæ²ç·ã®ææ
æ²ç·ã°ã©ããçæããã
- 3次ã¹ãã©ã€ã³è£éïŒ
scipy.interpolate.make_interp_splineïŒã§ããŒã¿ãã€ã³ãéãæ»ããã«æ¥ç¶
- å
ã®ããŒã¿ãã€ã³ãã«ããŒã«ãŒãšæ°å€ã©ãã«ã衚瀺
- è°·ãšçå°ã®åºéãè²ä»ãã§ãã€ã©ã€ã
å
¥å: JSONãã¡ã€ã«ïŒäžèšåœ¢åŒïŒ
åºå: PNGç»åïŒããã©ã«ãã¯ã«ã¬ã³ããã£ã¬ã¯ããªã® emotion_curve.pngã第2åŒæ°ã§ãã¹æå®å¯ïŒ
Pitfalls
- ã¹ã³ã¢ã®äž»èгæ§ïŒLLMãæšå®ããææ
ã¹ã³ã¢ã¯æšæž¬ã«éããªããè€æ°ãã«ãœãã§å®¢èгæ§ãæ
ä¿ããããå®éã®åå¿ã¯å¥é芳å¯ãå¿
èŠ
- ãã«ãœãéžå®ãçµè«ã®å€§åãæ±ºããïŒçãçžæãšãºã¬ããã«ãœãã§èšºæããŠãæå³ããªã
- 確蚌ãã€ã¢ã¹ã«æ³šæïŒèªåã奜ããªåºéãé«ãä»ããã¡ãæ ¹æ ã®èŠçŽ ãžã®çŽä»ããæ¯æ¢ã
- LLMã«ä»£è¡ãããå ŽåãïŒãã«ãœãå®çŸ©ãšã¹ã±ãŒã«ã¯äººãåºå®ãã
- åºéåå²ã®ç²åºŠïŒçްãããããšãã€ãºãå¢ããç²ããããšç¹åŸŽãæ¶ããããããã¯ã¹ã©ã€ãåäœãåºæ¬ãé·ããã®ã¯3ã7åºéã«æãããšèªã¿ããã
- æ¥æ¬èªãã©ã³ãïŒmatplotlibã§CJKãã©ã³ããèŠã€ãããªããšã©ãã«ãè±è
ïŒâ¡ïŒã«ãªããã¹ã¯ãªããã¯ååãªã¹ãïŒ
Noto Sans CJK JP ãªã©ïŒã§ãã©ãŒã«ããã¯ããã詳现㯠references/matplotlib-cjk-fonts.md
- ã°ã©ãçæã®äŸåïŒ
uv run --with matplotlib,numpy,scipy ããpip install matplotlib numpy scipy
ã³ããçšãã³ãã¬ãŒã
ãã«ãœãå®çŸ©
åå/圹å²ïŒ
åæ©ïŒäœã確ããã«æ¥ããïŒïŒ
å€æè»žïŒ
é¢è±ããªã¬ïŒ
ã¹ã³ã¢è¡šïŒåºéåäœïŒ
åºé | ãã«ãœãA | Açç± | ãã«ãœãB | Bçç± | ãã«ãœãC | Cçç±
00 ã¿ã€ãã« | +1 | | +2 | | +0 |
01 åé¡ | ...
æ¹åæ¡
è°·ã®åºéïŒ
ãã¿ãŒã³ïŒ
圱é¿ãåãããã«ãœãïŒéèŠåºŠïŒ
åŠæ¹ïŒå·®åã³ããŒ/ã¬ã€ã¢ãŠã/é åºã®å€æŽïŒïŒ
åªå
床ïŒè°·ã®æ·±ãÃéèŠåºŠïŒïŒ
飿ºã¹ãã«
- narrative-heat-engineeringïŒNHEïŒïŒãäœãåŽã®ç±éèšèšããšã蚺æåŽã®ææ
æ²ç·ãã¯å¯Ÿã«ãªãæ¹æ³è«ãNHEã§æžããã³ã³ãã³ãã®ææ
æ²ç·ã蚺æããç±éãäžããè°·ãç¹å®ããŠæ¹åãµã€ã¯ã«ãåã
- slideïŒã¹ã©ã€ããããã®å ŽåïŒïŒèšºæã§åºãåŠæ¹ãå®éã®1æã®ã¹ã©ã€ãã«åæ ãã
- 詳ãã蚺æãã¿ãŒã³ã»ãã«ãœãåã»ãã³ãã¬ãŒãã¯
references/patterns-and-templates.md