user12094: What is the best way to go through a database of my games and have the computer generate a FEN string as well as the next move any time I make an error greater than, say, a minor piece loss?
I've looked at SCID a bit and am not sure if I can do it there. I also doubt I could do it with stockfish on the command line. Pointers?

user825: You may want to do it yourself. Please take a look at a PGN annotation project on Github:

https://github.com/fsmosca/chess-artist

The source code is easy to follow.

To get the engine evaluation, you have:


engBestMove, engBestScore, complexityNumber, moveChanges, pvLine = self.GetSearchScoreBeforeMove(gameNode.board().fen(), side)


To check whether a move you play is a blunder:


if abs(engBestScore) > 3.0:


To print FEN:


fen = gameNode.board().fen()


To print FEN and whatever you want to the console, follow the implementation in:


def WriteNotation(self, side, fmvn, sanMove, bookMove, posScore,
                        isGameOver, engMove, engScore, complexityNumber,
                        moveChanges, pvLine, threatMove):


12094: <p>What is the best way to go through a database of my games and have the computer generate a FEN string as well as the next move any time I make an error greater than, say, a minor piece loss?</p>

<p>I've looked at SCID a bit and am not sure if I can do it there. I also doubt I could do it with stockfish on the command line. Pointers?</p>
 825: <p>You may want to do it yourself. Please take a look at a PGN annotation project on Github:</p>

<ul>
<li><a href="https://github.com/fsmosca/chess-artist" rel="nofollow noreferrer">https://github.com/fsmosca/chess-artist</a></li>
</ul>

<p>The source code is easy to follow.</p>

<ul>
<li>To get the engine evaluation, you have:</li>
</ul>

<blockquote>
  <p>engBestMove, engBestScore, complexityNumber, moveChanges, pvLine = self.GetSearchScoreBeforeMove(gameNode.board().fen(), side)</p>
</blockquote>

<ul>
<li>To check whether a move you play is a blunder:</li>
</ul>

<blockquote>
  <p>if abs(engBestScore) > 3.0:</p>
</blockquote>

<ul>
<li>To print FEN:</li>
</ul>

<blockquote>
  <p>fen = gameNode.board().fen()</p>
</blockquote>

<ul>
<li>To print FEN and whatever you want to the console, follow the implementation in:</li>
</ul>

<blockquote>
  <p>def WriteNotation(self, side, fmvn, sanMove, bookMove, posScore,
                        isGameOver, engMove, engScore, complexityNumber,
                        moveChanges, pvLine, threatMove):</p>
</blockquote>
