diff --git a/builder/tools.py b/builder/tools.py
index 07349c4..f196f9a 100644
--- a/builder/tools.py
+++ b/builder/tools.py
@@ -66,7 +66,7 @@ def output_story(story: ActionGroup, filename: str, is_action_data: bool=False,
         is_info_data: bool=False,
         is_out_as_file: bool=False, is_out_chars: bool=False,
         pri_filter: int=Action.MIN_PRIORITY,
-        is_debug: bool=False):
+        is_debug: bool=False): # pragma: no cover
     '''Output a story.
 
     Args:
@@ -99,7 +99,8 @@ def output_story(story: ActionGroup, filename: str, is_action_data: bool=False,
         ret = _output_story_to_file(
                 story_data, filename, suffix, is_debug)
         if is_info_data:
-            _output_story_to_file(["info data", "wip"],
+            _output_story_to_file(
+                    _story_info_data_converted(story, is_debug),
                     filename, "_i", is_debug)
         return ret
     else:
@@ -108,7 +109,8 @@ def output_story(story: ActionGroup, filename: str, is_action_data: bool=False,
             story_data += _story_flags_info_converted(story)
         ret =  _output_story_to_console(story_data, is_debug)
         if is_info_data:
-            _output_story_to_console(["info data", "wip"],
+            _output_story_to_console(
+                    _story_info_data_converted(story, is_debug),
                     is_debug)
         return ret
 
@@ -522,8 +524,9 @@ def _story_info_data_converted(story: ActionGroup, is_debug: bool) -> list:
     assert_isclass(story, ActionGroup)
     assert_isbool(is_debug)
 
-    flags = _story_flags_info_converted(story)
-    return ["## Flags\n"] + flags
+    chars = ["## Characters\n", "- Total: {}".format(_count_descriptions(story))]
+    flags = ["## Flags\n"] +  _story_flags_info_converted(story)
+    return chars + flags
 
 
 def _story_title_of(act: TagAction, level: int) -> str:

Implement: info output
No output currently
===

**Description**
現在infoは出力内容がないので、そこを修正

diff --git a/tests/test_tools.py b/tests/test_tools.py
index 0dbddb0..10f0880 100644
--- a/tests/test_tools.py
+++ b/tests/test_tools.py
@@ -486,6 +486,24 @@ class PrivateMethodsTest(unittest.TestCase):
             with self.subTest(v=v, expected=expected):
                 self.assertEqual(tools._story_flags_info_converted(v), expected)
 
+    def test_story_info_data_converted(self):
+        data = [
+                (self.ma.story("test",
+                    self.taro.be(Flag("apple"))),
+                    False,
+                    ["## Characters\n", "- Total: 0",
+                        "## Flags\n", "[apple]:apple"]),
+                (self.ma.story("test",
+                    self.taro.be().d("test apple")),
+                    False,
+                    ["## Characters\n", "- Total: 9",
+                        "## Flags\n"]),
+                ]
+
+        for v, isdbg, expected in data:
+            with self.subTest(v=v, isdbg=isdbg, expected=expected):
+                self.assertEqual(tools._story_info_data_converted(v, isdbg), expected)
+
     def test_story_title_of(self):
         ma = Master('test')
 

pip install -e .
parse_log_pytest
pytest
pytest
3.9
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
exceptiongroup @ file:///croot/exceptiongroup_1706031385326/work
iniconfig @ file:///home/linux1/recipes/ci/iniconfig_1610983019677/work
packaging @ file:///croot/packaging_1734472117206/work
pluggy @ file:///croot/pluggy_1733169602837/work
pytest @ file:///croot/pytest_1738938843180/work
-e git+https://github.com/nagisc007/storybuilder.git@2a384c6fc03336ac50edb24e2281ed3b8529bab6#egg=StoryBuilder
tomli @ file:///opt/conda/conda-bld/tomli_1657175507142/work

name: storybuilder
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - exceptiongroup=1.2.0=py39h06a4308_0
  - iniconfig=1.1.1=pyhd3eb1b0_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=3.0.16=h5eee18b_0
  - packaging=24.2=py39h06a4308_0
  - pip=25.0=py39h06a4308_0
  - pluggy=1.5.0=py39h06a4308_0
  - pytest=8.3.4=py39h06a4308_0
  - python=3.9.21=he870216_1
  - readline=8.2=h5eee18b_0
  - setuptools=75.8.0=py39h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - tomli=2.0.1=py39h06a4308_0
  - tzdata=2025a=h04d1e81_0
  - wheel=0.45.1=py39h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
prefix: /opt/conda/envs/storybuilder

tests/test_tools.py::PrivateMethodsTest::test_story_info_data_converted
tests/test_tools.py::PublicMethodsTest::test_output_info tests/test_tools.py::PrivateMethodsTest::test_action_info_as_eng tests/test_tools.py::PrivateMethodsTest::test_action_info_as_jpn tests/test_tools.py::PrivateMethodsTest::test_action_of_by_tag tests/test_tools.py::PrivateMethodsTest::test_action_of_by_type tests/test_tools.py::PrivateMethodsTest::test_break_symbol_of tests/test_tools.py::PrivateMethodsTest::test_comment_of tests/test_tools.py::PrivateMethodsTest::test_count_desc_at_action tests/test_tools.py::PrivateMethodsTest::test_count_desc_in_group tests/test_tools.py::PrivateMethodsTest::test_count_descriptions tests/test_tools.py::PrivateMethodsTest::test_desc_excepted_symbols tests/test_tools.py::PrivateMethodsTest::test_desc_head_of tests/test_tools.py::PrivateMethodsTest::test_desc_str_replaced_tag tests/test_tools.py::PrivateMethodsTest::test_description_of_by_tag tests/test_tools.py::PrivateMethodsTest::test_description_of_by_type tests/test_tools.py::PrivateMethodsTest::test_extra_chopped tests/test_tools.py::PrivateMethodsTest::test_flag_info_of tests/test_tools.py::PrivateMethodsTest::test_flags_if tests/test_tools.py::PrivateMethodsTest::test_hr_of tests/test_tools.py::PrivateMethodsTest::test_list_head_inserted tests/test_tools.py::PrivateMethodsTest::test_output_story_to_console tests/test_tools.py::PrivateMethodsTest::test_output_story_to_file tests/test_tools.py::PrivateMethodsTest::test_output_with_linenumber tests/test_tools.py::PrivateMethodsTest::test_scene_title_of tests/test_tools.py::PrivateMethodsTest::test_story_converted_as_action tests/test_tools.py::PrivateMethodsTest::test_story_converted_as_action_in_group tests/test_tools.py::PrivateMethodsTest::test_story_converted_as_description tests/test_tools.py::PrivateMethodsTest::test_story_converted_as_description_in_group tests/test_tools.py::PrivateMethodsTest::test_story_data_converted tests/test_tools.py::PrivateMethodsTest::test_story_flags_info_converted tests/test_tools.py::PrivateMethodsTest::test_story_title_of tests/test_tools.py::PrivateMethodsTest::test_test_head_if
builder/tools.py
builder/tools.py