Variable-length excerpts possible?

I once create a simple getFirstPara function which you could adapt:

<?php 
    function getFirstPara($string){
        $start = strpos($string, '<p>');
        $string = substr($string,$start, strpos($string, "</p>")+4);
        return $string;
    }
?>

In your markdown, you could insert a comment

<!-- more -->

and then get everything before that comment

<?php 
    function getExcerpt($string){
        $start = strpos($string, '<p>');
        $string = substr($string,$start, strpos($string, "<!-- more -->"));
        return $string;
    }
?>

Then in your template

<?php echo getExcerpt($page->text()->kt()) ?>

The downside is, that this function does not output anything if the read more tag is missing but you could extend this further. [Edit] Also, anything before the first opening p-element will be discarded as well.

[Edit:] You may also have a look at this post that uses explode for an alternative method https://www.texniq.de/en/blog/kirby-cms-split-long-posts-into-pages (needs to be adapted for the current use case though)

[Edit] An alternative would be having a separate excerpt field for total control of the text that appears as an excerpt.