Is there a way to scan the blockchain for all payment id's that are actually messages when converted from hex to ascii? This would be an interesting use case of marking transactions you want public as a message. How would one go about doing this?
There is a function in BlockchainDB which iterates through all transactions: for_all_transactions. Call this with a function which extracts the payment id (see find_tx_extra_field_by_type and get_payment_id_from_tx_extra_nonce), and scan its bytes for suitability (isprint).